:root{--primary: #6b7280;--accent: #9ca3af;--bg: #f5f5f5;--surface: #ffffff;--text: #1a1a1a;--text-muted: #6b6b6b;--border: rgba(0, 0, 0, .08);--bg-top: color-mix(in srgb, var(--primary) 12%, white);--bg-bottom: color-mix(in srgb, var(--primary) 26%, white);--glass-fill: rgba(255, 255, 255, .55);--glass-fill-strong: rgba(255, 255, 255, .72);--glass-border: rgba(255, 255, 255, .7);--glass-blur: 20px;--glass-shadow: 0 8px 32px rgba(31, 72, 153, .12);--r-card: 20px;--r-btn: 14px;--fs-hero: 32px;--fs-num: 20px;--fs-title: 16px;--fs-body: 14px;--fs-label: 12px;--fs-note: 11px;--bar-track: rgba(15, 23, 42, .07);--bar-reached: color-mix(in srgb, var(--primary) 78%, white);--bar-near: #f0b45c;--bar-far: #e79a94}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}input,select,textarea,button,a{font-size:16px}body{margin:0;font-family:system-ui,Segoe UI,Hiragino Sans,Roboto,sans-serif;background:linear-gradient(180deg,var(--bg-top) 0%,var(--bg-bottom) 100%);background-attachment:fixed;color:var(--text);overscroll-behavior-y:none}#root{display:flex;justify-content:center;min-height:100svh}.app-shell{width:100%;max-width:480px;min-height:100svh;display:flex;flex-direction:column;background:transparent;box-shadow:none}.glass{background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-card);box-shadow:var(--glass-shadow)}.app-header{flex:0 0 auto;padding:calc(16px + env(safe-area-inset-top)) 20px 16px;background:var(--primary);color:#fff}.app-header h1{margin:0;font-size:20px;font-weight:700}.app-content{flex:1 1 auto;min-height:0;padding:20px;padding-bottom:calc(72px + env(safe-area-inset-bottom));overflow-y:auto;display:flex;flex-direction:column}.subscreen{display:flex;flex-direction:column;gap:16px}.subscreen-back-btn{align-self:flex-start;padding:8px 4px;border:none;background:none;font:inherit;font-weight:600;color:var(--primary);cursor:pointer}.tab-bar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;display:flex;background:var(--glass-fill-strong);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border-top:1px solid var(--glass-border);box-shadow:0 -6px 24px #1f489914;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}.tab-bar-item{flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:2px;border:none;background:none;padding:6px 2px;font:inherit;color:var(--text-muted);cursor:pointer}.tab-bar-item.is-active{color:var(--primary)}.tab-bar-icon{font-size:20px;line-height:1}.tab-bar-label{font-size:11px}.onboarding-preset-list{display:flex;flex-wrap:wrap;gap:8px}.onboarding-preset-btn{padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;cursor:pointer}.onboarding-preset-btn.is-selected{background:var(--primary);border-color:var(--primary);color:#fff}.onboarding-error{margin:0;color:#d9534f;font-size:13px}.onb{display:flex;flex-direction:column;gap:12px;min-height:100%;padding:12px 0 24px}.onb-progress{height:5px;border-radius:3px;background:var(--bar-track);overflow:hidden}.onb-progress span{display:block;height:100%;background:var(--accent);transition:width .25s ease}.onb-log{display:flex;flex-direction:column;gap:10px}.onb-teacher{display:flex;gap:8px;align-items:flex-start}.onb-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0}.onb-bubbles{display:flex;flex-direction:column;gap:6px;min-width:0}.onb-bubble{margin:0;padding:10px 12px;border-radius:16px 16px 16px 4px;background:var(--glass-fill-strong);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);font-size:var(--fs-body);line-height:1.6;animation:onb-in .2s ease-out}.onb-me{align-self:flex-end;max-width:80%;margin:0;padding:8px 12px;border-radius:16px 16px 4px;background:var(--primary);color:#fff;font-size:var(--fs-body);animation:onb-in .2s ease-out}.onb-answer{display:flex;flex-direction:column;gap:8px;margin-top:auto}.onb-form{display:flex;gap:8px}.onb-form input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r-btn);font-size:16px;background:var(--surface)}.onb-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.onb-chip{padding:8px 14px;border-radius:999px;border:1px solid var(--primary);background:var(--surface);color:var(--primary);font-size:var(--fs-body);font-weight:600}.onb-chip.is-skip{border-color:var(--border);color:var(--text-muted)}.onb-primary{padding:10px 16px;border:none;border-radius:var(--r-btn);background:var(--primary);color:#fff;font-weight:700}.onb-back{align-self:flex-start;border:none;background:none;color:var(--text-muted);font-size:var(--fs-label);text-decoration:underline;padding:4px 0}.onb-error{margin:0;color:#c0392b;font-size:var(--fs-label)}.onb-card{padding:12px}.onb-card .scores-form{margin:0}@keyframes onb-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.onb-bubble,.onb-me{animation:none}.onb-progress span{transition:none}}.scores{display:flex;flex-direction:column;gap:28px}.scores h2{margin:0 0 12px;font-size:18px}.scores-form{display:flex;flex-direction:column;gap:14px}.scores-field{display:flex;flex-direction:column;gap:6px}.scores-field input,.scores-field select{padding:10px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:16px;color:var(--text);background:var(--surface)}.scores-ocr-file-input{display:none}.scores-ocr-btn{padding:12px 16px;border:1px dashed var(--primary);border-radius:8px;background:var(--surface);color:var(--primary);font:inherit;font-weight:600;cursor:pointer}.scores-ocr-btn:disabled{opacity:.5;cursor:not-allowed}.scores-ocr-note{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:var(--text-muted);font-size:13px;line-height:1.6}.scores-ocr-limit-message{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:#d9534f;font-size:13px}.scores-ocr-limit-message p{margin:0}.scores-ocr-limit-settings-btn{margin-top:8px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.scores-ocr-error{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.scores-ocr-error-message{margin:0;color:#d9534f;font-size:13px}.scores-ocr-error-actions{display:flex;gap:8px}.scores-ocr-retry-btn,.scores-ocr-pick-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.scores-ocr-retry-btn:disabled,.scores-ocr-pick-btn:disabled{opacity:.5;cursor:not-allowed}.scores-submit-btn{margin-top:4px;padding:12px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.scores-empty{color:var(--text-muted);font-size:14px}.trend-chart{margin-bottom:16px}.trend-chart-empty{color:var(--text-muted);font-size:14px;margin-bottom:16px}.trend-chart-note{margin:4px 0 0;font-size:var(--fs-note);color:var(--text-muted);text-align:center}.unit-heatmap-empty{color:var(--text-muted);font-size:14px;margin:0 0 16px}.unit-heatmap-wrap{overflow-x:auto;margin:0}.unit-heatmap{border-collapse:separate;border-spacing:2px;width:100%;font-size:13px}.unit-heatmap th,.unit-heatmap td{padding:0;text-align:center;white-space:nowrap}.unit-heatmap thead th{color:var(--text-muted);font-weight:600;font-size:var(--fs-label);padding:0 4px 2px}.unit-heatmap-corner{background:transparent}.unit-heatmap-row-head{text-align:left;color:var(--text);font-weight:600;font-size:var(--fs-label);padding:0 8px 0 2px;max-width:7.5em;overflow:hidden;text-overflow:ellipsis}.unit-heatmap-cell{position:relative;height:26px;min-width:54px;border-radius:6px;background:var(--bar-track);overflow:hidden}.unit-heatmap-cell.is-empty{background:transparent;box-shadow:inset 0 0 0 1px var(--border)}.unit-heatmap-bar{position:absolute;left:0;top:0;bottom:0;border-radius:6px 0 0 6px}.unit-heatmap-bar.is-good{background:var(--bar-reached)}.unit-heatmap-bar.is-mid{background:var(--bar-near)}.unit-heatmap-bar.is-low{background:var(--bar-far)}.unit-heatmap-value{position:relative;display:block;line-height:26px;font-weight:700;font-size:var(--fs-label);color:var(--text)}.unit-heatmap-cell.is-empty .unit-heatmap-value{color:var(--text-muted);font-weight:500}.unit-heatmap-note{margin:0;font-size:var(--fs-note);color:var(--text-muted);line-height:1.6}.scores-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.scores-form-section,.scores-history-section,.schedule-card{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-card);box-shadow:var(--glass-shadow)}.scores-list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--glass-border);border-radius:12px;background:#ffffff80}.scores-list-main{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:13px;color:var(--text)}.scores-list-date{color:var(--text-muted)}.scores-list-provider{font-weight:600}.scores-delete-btn{flex:0 0 auto;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:#d9534f;font:inherit;font-size:12px;cursor:pointer}.missions{display:flex;flex-direction:column;gap:16px;padding:16px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-card);box-shadow:var(--glass-shadow)}.missions h2{margin:0;font-size:var(--fs-title)}.missions-form{display:flex;gap:8px}.missions-form input{flex:1 1 auto;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:16px;color:var(--text);background:var(--surface)}.missions-add-btn{flex:0 0 auto;padding:10px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.missions-progress{margin:0;font-size:var(--fs-body);color:var(--text-muted)}.missions-empty{color:var(--text-muted);font-size:14px}.missions-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.missions-list-item{display:flex}.missions-item-btn{flex:1 1 auto;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--glass-border);border-radius:12px;background:#ffffff80;font:inherit;color:var(--text);text-align:left;cursor:pointer}.missions-item-check{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--border);border-radius:6px;color:var(--primary);font-weight:700}.missions-item-btn.is-done .missions-item-check{background:var(--primary);border-color:var(--primary);color:#fff}.missions-item-btn.is-done .missions-item-title{text-decoration:line-through;color:var(--text-muted)}.missions-ai-row{display:flex;align-items:center;gap:10px}.missions-ai-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--glass-border);border-radius:999px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));color:var(--text);font:inherit;font-size:13px;font-weight:700;cursor:pointer}.missions-ai-btn:disabled{opacity:.5;cursor:not-allowed}.missions-ai-thinking{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.missions-ai-thinking-img{width:24px;height:24px;object-fit:contain;animation:missions-ai-thinking-pulse 1.2s ease-in-out infinite}@keyframes missions-ai-thinking-pulse{0%,to{opacity:.5;transform:scale(.94)}50%{opacity:1;transform:scale(1.04)}}.missions-ai-limit-message{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:#d9534f;font-size:13px}.missions-ai-limit-message p{margin:0}.missions-ai-limit-settings-btn{margin-top:8px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.missions-ai-error{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.missions-ai-error-message{margin:0;color:#d9534f;font-size:13px}.missions-ai-retry-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.missions-ai-retry-btn:disabled{opacity:.5;cursor:not-allowed}.missions-ai-suggestions{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--glass-border);border-radius:var(--r-card);background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow)}.missions-ai-suggestions-header{display:flex;align-items:center;justify-content:space-between}.missions-ai-suggestions-title{font-size:12px;font-weight:700;color:var(--text-muted)}.missions-ai-close-btn{padding:0;width:22px;height:22px;border:none;border-radius:50%;background:#00000014;color:var(--text-muted);font-size:14px;line-height:1;cursor:pointer}.missions-ai-chip-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.missions-ai-chip{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--glass-border);border-radius:12px;background:#ffffff80}.missions-ai-chip-text{flex:1 1 auto;font-size:14px;color:var(--text)}.missions-ai-chip-add{flex:0 0 auto;width:28px;height:28px;border:none;border-radius:50%;background:var(--primary);color:#fff;font-size:16px;font-weight:700;line-height:1;cursor:pointer}.missions-ai-addall-btn{padding:10px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:700;font-size:13px;cursor:pointer}.missions-progress-row{display:flex;align-items:center;gap:12px;margin:-4px 0 0}.missions-mascot-block{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px}.missions-mascot{width:72px;height:72px;object-fit:contain}.missions-mascot-caption{font-size:11px;font-weight:600;color:var(--text-muted)}.missions-progress-row .missions-progress{margin:0}.missions-celebration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0000008c;cursor:pointer;padding:24px}.missions-celebration-content{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.missions-celebration-mascot{width:200px;height:200px;object-fit:contain;animation:missions-celebration-pop .6s cubic-bezier(.34,1.56,.64,1)}@keyframes missions-celebration-pop{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.1);opacity:1}80%{transform:scale(.95)}to{transform:scale(1)}}.missions-celebration-text{margin:0;max-width:280px;color:#fff;font-size:16px;font-weight:700;line-height:1.5}.chat{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0}.chat-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.chat-header h2{margin:0;font-size:18px}.chat-remaining-badge{flex:0 0 auto;padding:4px 10px;border-radius:999px;background:var(--bg);color:var(--text-muted);font-size:12px;font-weight:600;white-space:nowrap}.chat-messages{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:10px;overflow-y:auto;padding:4px 2px}.chat-empty-state{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:12px 0}.chat-empty-hero{max-height:120px;max-width:100%;border-radius:12px;object-fit:contain}.chat-empty{margin:0;color:var(--text-muted);font-size:14px}.chat-bubble-row{display:flex;align-items:flex-end;gap:6px}.chat-bubble-avatar{flex:0 0 auto;width:32px;height:32px;border-radius:50%;object-fit:cover}.chat-bubble-row-user{justify-content:flex-end}.chat-bubble-row-assistant{justify-content:flex-start}.chat-bubble{max-width:78%;padding:10px 14px;border-radius:16px;font-size:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.chat-bubble-user{background:var(--primary);color:#fff;border-bottom-right-radius:4px}.chat-bubble-assistant{background:var(--bg);color:var(--text);border-bottom-left-radius:4px}.chat-bubble-loading{color:var(--text-muted);font-style:italic}.md-body{display:flex;flex-direction:column;gap:8px;white-space:normal}.md-body .md-p,.md-body .md-heading{margin:0}.md-body .md-heading{font-weight:700}.md-body .md-list{margin:0;padding-left:1.5em;display:flex;flex-direction:column;gap:2px}.md-body .md-hr{border:none;border-top:1px solid var(--border);margin:2px 0}.md-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em;background:#0000000f;padding:1px 5px;border-radius:6px}.chat-error{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.chat-error p{margin:0;font-size:13px;color:#d9534f}.chat-retry-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.chat-limit-message{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:#d9534f;font-size:13px}.chat-limit-message p{margin:0}.chat-limit-settings-btn{margin-top:8px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.chat-input-form{flex:0 0 auto;display:flex;gap:8px}.chat-input-form input{flex:1 1 auto;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:16px;color:var(--text);background:var(--surface)}.chat-input-form input:disabled{opacity:.6}.chat-send-btn{flex:0 0 auto;padding:10px 18px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.home{display:flex;flex-direction:column;gap:16px}.home-sensei{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:16px;background:#ffffff6b;border:1px solid rgba(255,255,255,.55)}.home-sensei-avatar{flex:0 0 auto;width:40px;height:40px;border-radius:50%;object-fit:cover}.home-sensei-body{flex:1 1 auto;min-width:0}.home-sensei-who{display:flex;align-items:center;gap:6px;margin-bottom:2px}.home-sensei-who b{font-size:var(--fs-label)}.home-sensei-who span{font-size:10px;color:var(--text-muted);background:#fff9;border:1px solid var(--glass-border);padding:1px 7px;border-radius:999px}.home-sensei-body p{margin:0;font-size:13px;line-height:1.6;color:var(--text-muted)}.home-trend,.home-subjects,.home-heatmap{padding:16px;display:flex;flex-direction:column;gap:10px}.home-trend-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.home-trend-head h2,.home-subjects h2,.home-heatmap h2{margin:0;font-size:var(--fs-title)}.home-trend-meta{font-size:var(--fs-note);color:var(--text-muted);font-weight:600;white-space:nowrap}.home-trend-chips{display:flex;gap:6px;flex-wrap:wrap}.home-chip{flex:0 0 auto;padding:6px 13px;border-radius:999px;border:1px solid transparent;background:#ffffff80;color:var(--text-muted);font:inherit;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}.home-chip.is-active{background:var(--primary);color:#fff}.home-quick-actions{display:flex;gap:10px}.home-quick-btn{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:8px;height:50px;border:none;border-radius:var(--r-btn);background:linear-gradient(135deg,var(--primary),color-mix(in srgb,var(--primary) 70%,black));color:#fff;font:inherit;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 8px 18px #1f48992e}.home .missions{margin:0}.next-event-card{padding:16px;display:flex;flex-direction:column;gap:10px;cursor:pointer;text-align:left}.next-event-card-title{margin:0;font-size:var(--fs-title)}.next-event-card-list{margin:0}.next-event-link{align-self:flex-start;padding:4px 0;border:none;background:none;color:var(--primary);font:inherit;font-size:13px;font-weight:600;text-decoration:underline;cursor:pointer}.settings{display:flex;flex-direction:column;gap:20px}.settings-hub-group{margin:0 0 20px}.settings-hub-group-title{margin:0 0 6px 4px;font-size:12px;font-weight:600;color:var(--text-muted)}.settings-hub-card{border-radius:14px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);box-shadow:var(--glass-shadow);overflow:hidden}.settings-hub-row{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:12px 14px;background:none;border:0;border-bottom:1px solid var(--border);text-align:left;font:inherit;color:var(--text);cursor:pointer}.settings-hub-card>:last-child{border-bottom:0}.settings-hub-label{flex:0 0 auto;font-size:15px}.settings-hub-value{flex:1 1 auto;min-width:0;text-align:right;font-size:13px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-hub-chevron{flex:0 0 auto;margin-left:auto;color:var(--text-muted);font-size:18px}.settings-hub-row.is-danger .settings-hub-label{color:#b91c1c}.settings-hub-toggle{padding:4px 14px;border-bottom:1px solid var(--border)}.settings-page-head{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.settings-page-back{align-self:flex-start;background:none;border:0;padding:4px 0;font:inherit;font-size:14px;color:var(--primary);cursor:pointer}.settings-page-title{margin:0;font-size:20px}.settings-section{display:flex;flex-direction:column;gap:10px;padding:18px 16px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--r-card);box-shadow:var(--glass-shadow)}.settings-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.settings-section h2{margin:0;font-size:17px;font-weight:700;letter-spacing:.01em}.settings-status-chip{flex:0 0 auto;padding:3px 10px;border-radius:999px;background:color-mix(in srgb,var(--primary) 12%,white);color:color-mix(in srgb,var(--primary) 75%,black);font-size:12px;font-weight:600;white-space:nowrap}.settings-section-lead{margin:-2px 0 0;font-size:12px;line-height:1.7;color:var(--text-muted)}.settings-section-body{display:flex;flex-direction:column;gap:16px;margin-top:2px}.settings-group{display:flex;flex-direction:column;gap:14px;padding-top:4px}.settings-group+.settings-group{padding-top:16px;border-top:1px solid var(--border)}.settings-group-title{margin:0;font-size:13px;font-weight:700;color:color-mix(in srgb,var(--primary) 70%,black)}.settings-group-note{margin:-8px 0 0;font-size:12px;line-height:1.7;color:var(--text-muted)}.settings-row{display:flex;flex-direction:column;gap:10px}.settings-row+.settings-row{padding-top:16px;border-top:1px solid var(--border)}.settings-row-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.settings-row-title{margin:0;font-size:14px;font-weight:700}.settings-form{display:flex;flex-direction:column;gap:0}.settings-form-actions{display:flex;flex-direction:column;gap:8px;margin-top:18px}.settings-field{display:flex;flex-direction:column;gap:8px}.settings-field>span:first-child{font-size:14px;font-weight:600}.settings-field input{padding:10px 12px;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:16px;color:var(--text);background:var(--surface)}.settings-field input:focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 60%,white);outline-offset:1px}.settings-saved-message{margin:0;color:var(--primary);font-size:13px;font-weight:600}.settings-save-btn{padding:12px 16px;border:none;border-radius:var(--r-btn);background:var(--primary);color:#fff;font:inherit;font-weight:700;cursor:pointer}.settings-save-btn:disabled{opacity:.5;cursor:not-allowed}.settings-toggle{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;cursor:pointer}.settings-toggle-text{display:flex;flex-direction:column;gap:4px;min-width:0}.settings-toggle-label{font-size:14px;font-weight:600;line-height:1.5}.settings-toggle-note{font-size:12px;line-height:1.6;color:var(--text-muted)}.settings-switch{flex:0 0 auto;-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;width:46px;height:28px;margin:2px 0 0;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--text-muted) 22%,white);transition:background .15s ease;cursor:pointer}.settings-switch:after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:999px;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s ease}.settings-switch:checked{background:var(--primary);border-color:var(--primary)}.settings-switch:checked:after{transform:translate(18px)}.settings-switch:focus-visible{outline:2px solid color-mix(in srgb,var(--primary) 60%,white);outline-offset:2px}.settings-inline-field{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600}.settings-reminder-time{padding:8px 12px;border:1px solid var(--border);border-radius:10px;font:inherit;font-size:16px;font-weight:600;color:var(--text);background:var(--surface)}.settings-plan-card{display:flex;flex-direction:column;gap:8px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.settings-plan-price-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.settings-plan-name{font-size:14px;font-weight:700;color:var(--text)}.settings-plan-price{font-size:17px;font-weight:800;color:var(--primary);white-space:nowrap}.settings-plan-desc{margin:0;font-size:12px;line-height:1.7;color:var(--text-muted)}.settings-plan-note{margin:0;font-size:12px;color:var(--text-muted)}.settings-plan-warning{margin:0;padding:10px 12px;border-radius:10px;background:#d9770624;border:1px solid rgba(217,119,6,.45);color:#7c2d12;font-size:12px;line-height:1.7}.settings-plan-legal{display:flex;flex-direction:column}.settings-reminder-note{margin:0;font-size:12px;line-height:1.7;color:var(--text-muted)}.settings-reminder-denied{color:#b45309;font-weight:600}.settings-link{display:block;width:100%;padding:10px 0;border:none;background:none;color:var(--primary);font-size:15px;font-weight:600;text-align:left;text-decoration:none;cursor:pointer}.settings-link+.settings-link{border-top:1px solid var(--border)}.settings-account-card{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--glass-fill-strong)}.settings-account-label{font-size:11px;font-weight:600;color:var(--text-muted)}.settings-account-email{margin:0;font-size:15px;font-weight:700;color:var(--text);overflow-wrap:anywhere}.settings-sync-status{display:flex;align-items:center;gap:6px;margin:2px 0 0;font-size:12px;color:var(--text-muted)}.settings-sync-status:before{content:"";width:7px;height:7px;border-radius:999px;background:#16a34a}.settings-sync-status.is-waiting:before{background:#d97706}.settings-logout-btn{align-self:flex-start;padding:10px 18px;border:1px solid var(--border);border-radius:var(--r-btn);background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.settings-sync-auth{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:12px;border:1px solid #f0c987;border-radius:12px;background:#fffaf0}.settings-sync-auth-note{margin:0;font-size:13px;line-height:1.7;color:var(--text)}.settings-section-footer{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:4px;padding-top:12px;border-top:1px solid var(--border)}.settings-delete-account-btn{padding:2px 0;border:none;background:none;color:#b91c1c;font:inherit;font-size:13px;font-weight:600;text-decoration:underline;cursor:pointer}.settings-delete-account-btn:disabled{opacity:.6;cursor:default}.settings-delete-account-error{margin:4px 0 0;color:#b91c1c;font-size:13px}.settings-section-danger{background:#fff6;border-color:#b91c1c40;box-shadow:none}.settings-section-danger h2{font-size:15px;color:#a3312c}.settings-delete-btn{align-self:flex-start;padding:11px 18px;border:1px solid rgba(185,28,28,.5);border-radius:var(--r-btn);background:transparent;color:#a3312c;font:inherit;font-size:14px;font-weight:600;cursor:pointer}.settings-delete-btn:disabled{opacity:.6;cursor:default}.drills{display:flex;flex-direction:column;gap:28px}.drills-section{display:flex;flex-direction:column;gap:12px}.drills-section h2{margin:0;font-size:18px}.drills-hint{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:var(--text-muted);font-size:13px;line-height:1.6}.drills-limit-message{margin:0;padding:10px 12px;border-radius:8px;background:var(--bg);color:#d9534f;font-size:13px}.drills-limit-message p{margin:0}.drills-limit-settings-btn{margin-top:8px;padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.drills-error{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.drills-error-message{margin:0;color:#d9534f;font-size:13px}.drills-retry-btn{padding:6px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.drills-retry-btn:disabled{opacity:.5;cursor:not-allowed}.drills-empty{margin:0;color:var(--text-muted);font-size:14px}.drills-unit-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.drills-unit-item{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--glass-border);border-radius:var(--r-card);background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow)}.drills-unit-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.drills-unit-subject{font-size:12px;font-weight:600;color:var(--text-muted)}.drills-unit-name{font-size:16px;font-weight:700}.drills-unit-desc{font-size:12px;color:var(--text-muted)}.drills-level-chips{display:flex;gap:8px}.drills-level-chip{flex:1 1 0;padding:8px 0;border:none;border-radius:999px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;text-align:center}.drills-level-chip:disabled{opacity:.5;cursor:not-allowed}.drills-level-chip-basic{background:#e6f4ea;color:#1e7d32}.drills-level-chip-standard{background:#e3f0fc;color:#1565c0}.drills-level-chip-exam{background:#fdeaea;color:#c62828}.drills-workbook-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.drills-workbook-item{display:flex;align-items:center;gap:8px}.drills-workbook-main{flex:1 1 auto;display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--glass-border);border-radius:12px;background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow);font:inherit;color:var(--text);text-align:left;cursor:pointer;min-width:0}.drills-workbook-subject{font-size:14px;font-weight:600;flex:1 1 auto;min-width:0}.drills-workbook-level{flex:0 0 auto;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:700}.drills-level-badge-basic{background:#e6f4ea;color:#1e7d32}.drills-level-badge-standard{background:#e3f0fc;color:#1565c0}.drills-level-badge-exam{background:#fdeaea;color:#c62828}.drills-workbook-date{flex:0 0 auto;font-size:12px;color:var(--text-muted)}.drills-delete-btn{flex:0 0 auto;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:#d9534f;font:inherit;font-size:12px;cursor:pointer}.workbook-viewer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:#0000008c}.workbook-viewer-content{width:100%;max-width:480px;max-height:92svh;display:flex;flex-direction:column;background:var(--surface);border-radius:16px 16px 0 0;overflow:hidden}.workbook-viewer-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.workbook-viewer-title h2{margin:0 0 4px;font-size:16px}.workbook-viewer-meta{margin:0;font-size:12px;color:var(--text-muted)}.workbook-viewer-close-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.workbook-viewer-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px}.workbook-viewer-text{margin:0 0 16px;white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.7}.workbook-viewer-footer{flex:0 0 auto;display:flex;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}.workbook-viewer-toggle-btn{flex:1 1 auto;padding:12px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.workbook-viewer-print-btn{flex:0 0 auto;padding:12px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.auth-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:#0000008c;padding:0}.auth-modal-content{width:100%;max-width:480px;max-height:92svh;display:flex;flex-direction:column;border-radius:16px 16px 0 0;overflow:hidden;background:var(--glass-fill-strong)}.auth-modal-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.auth-modal-title{margin:0;font-size:16px;font-weight:700;color:var(--text)}.auth-modal-close-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.auth-modal-form{display:flex;flex-direction:column;gap:16px;padding:16px;overflow-y:auto}.auth-modal-info{margin:0;padding:12px 16px;color:#2f9e5c;background:#2f9e5c1f;border-radius:8px;font-size:13px;line-height:1.5}.auth-modal-submit-btn{margin-top:4px}.auth-modal-secondary-actions{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:4px}.auth-modal-text-btn{padding:4px;border:none;background:none;color:var(--primary);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.auth-modal-text-btn:disabled{color:var(--text-muted);cursor:not-allowed}.login{gap:16px;padding-bottom:calc(24px + env(safe-area-inset-bottom))}.login-intro{display:flex;flex-direction:column;gap:12px;padding:20px}.login-hero-img{display:block;max-height:140px;max-width:100%;margin:0 auto;border-radius:16px;object-fit:contain}.login-title{margin:0;font-size:18px;font-weight:700;color:var(--text);text-align:center}.login-lead{margin:0;font-size:14px;line-height:1.6;color:var(--text)}.login-benefits{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:13px;line-height:1.6;color:var(--text)}.login-note{margin:0;font-size:13px;line-height:1.6;color:var(--text-muted)}.login-form-card{overflow:hidden}.login-legal{margin:0;font-size:12px;line-height:1.6;color:var(--text-muted);text-align:center}.login-legal a{color:var(--primary);font-weight:600}.app-splash{align-items:center;justify-content:center}.app-splash-note{margin:0;color:var(--text-muted);font-size:14px}.app-lock-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:flex;align-items:center;justify-content:center;background:var(--bg)}.app-lock-content{display:flex;flex-direction:column;align-items:center;gap:16px;padding:32px;border-radius:24px;max-width:320px;width:100%}.app-lock-avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;box-shadow:var(--glass-shadow)}.app-lock-appname{margin:0;font-size:18px;font-weight:700;color:var(--text)}.app-lock-unlock-btn{width:100%}.ocr-confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:#0000008c}.ocr-confirm-content{width:100%;max-width:480px;max-height:92svh;display:flex;flex-direction:column;border-radius:16px 16px 0 0;overflow:hidden;background:var(--glass-fill-strong)}.ocr-confirm-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.ocr-confirm-header h2{margin:0;font-size:16px}.ocr-confirm-close-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.ocr-confirm-form{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.ocr-confirm-meta{flex:0 0 auto;display:flex;flex-direction:column;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.ocr-confirm-row-list{flex:1 1 auto;min-height:0;overflow-y:auto;list-style:none;margin:0;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.ocr-confirm-row{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--glass-border);border-radius:12px;background:#ffffff80}.ocr-confirm-row.has-error{border-color:#d9534f;background:#d9534f14}.ocr-confirm-row-top{display:flex;align-items:flex-start;gap:10px}.ocr-confirm-row-error-text{margin:0;padding-left:30px;color:#d9534f;font-size:12px;line-height:1.5}.ocr-confirm-row-check{flex:0 0 auto;padding-top:10px}.ocr-confirm-row-check input{width:20px;height:20px}.ocr-confirm-row-fields{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.ocr-confirm-row-field{display:flex;flex-direction:column;gap:4px;flex:1 1 100px;min-width:90px;font-size:12px;color:var(--text-muted)}.ocr-confirm-row-field-unit{flex-basis:100%}.ocr-confirm-row-field input,.ocr-confirm-row-field select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:15px;color:var(--text);background:var(--surface)}.ocr-confirm-row-field input:disabled,.ocr-confirm-row-field select:disabled{opacity:.5}.ocr-confirm-footer{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}.ocr-confirm-submit-btn{padding:12px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.ocr-confirm-submit-btn:disabled{opacity:.5;cursor:not-allowed}.ocr-confirm-footer-secondary{display:flex;gap:10px}.ocr-confirm-retake-btn,.ocr-confirm-cancel-btn{flex:1 1 auto;padding:10px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.schedule-confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:#0000008c}.schedule-confirm-content{width:100%;max-width:480px;max-height:92svh;display:flex;flex-direction:column;border-radius:16px 16px 0 0;overflow:hidden;background:var(--glass-fill-strong)}.schedule-confirm-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.schedule-confirm-header h2{margin:0;font-size:16px}.schedule-confirm-close-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.schedule-confirm-form{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.schedule-confirm-year{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:16px;border-bottom:1px solid var(--border)}.schedule-confirm-year-note{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}.schedule-confirm-year-control{display:flex;align-items:center;justify-content:center;gap:20px}.schedule-confirm-year-btn{flex:0 0 auto;width:44px;height:44px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:20px;font-weight:700;cursor:pointer}.schedule-confirm-year-btn:disabled{opacity:.5;cursor:not-allowed}.schedule-confirm-year-value{min-width:72px;text-align:center;font-size:24px;font-weight:700}.schedule-confirm-row-list{flex:1 1 auto;min-height:0;overflow-y:auto;list-style:none;margin:0;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.schedule-confirm-row{display:flex;flex-direction:column;gap:8px;padding:12px;border:1px solid var(--glass-border);border-radius:12px;background:#ffffff80}.schedule-confirm-row.has-error{border-color:#d9534f;background:#d9534f14}.schedule-confirm-row-top{display:flex;align-items:flex-start;gap:10px}.schedule-confirm-row-error-text{margin:0;padding-left:30px;color:#d9534f;font-size:12px;line-height:1.5}.schedule-confirm-row-check{flex:0 0 auto;padding-top:10px}.schedule-confirm-row-check input{width:20px;height:20px}.schedule-confirm-row-summary{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:8px 4px;border:none;background:none;text-align:left;font:inherit;color:var(--text);cursor:pointer}.schedule-confirm-row-summary-title{font-size:15px;font-weight:600}.schedule-confirm-row-summary-meta{font-size:12px;color:var(--text-muted)}.schedule-confirm-row-badges{display:flex;flex-wrap:wrap;gap:6px}.schedule-confirm-badge{padding:2px 8px;border-radius:999px;background:var(--surface);border:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text-muted);white-space:nowrap}.schedule-confirm-badge-warn{border-color:#d9534f;color:#d9534f}.schedule-confirm-row-fields{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;gap:8px}.schedule-confirm-row-field{display:flex;flex-direction:column;gap:4px;flex:1 1 100px;min-width:90px;font-size:12px;color:var(--text-muted)}.schedule-confirm-row-field-title,.schedule-confirm-row-field-memo{flex-basis:100%}.schedule-confirm-row-field input,.schedule-confirm-row-field select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font:inherit;font-size:15px;color:var(--text);background:var(--surface)}.schedule-confirm-row-field input:disabled,.schedule-confirm-row-field select:disabled{opacity:.5}.schedule-confirm-row-collapse-btn{flex-basis:100%;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.schedule-confirm-footer{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}.schedule-confirm-submit-btn{padding:12px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.schedule-confirm-submit-btn:disabled{opacity:.5;cursor:not-allowed}.schedule-confirm-cancel-btn{padding:10px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.subscribe-confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;background:#0000008c}.subscribe-confirm-content{width:100%;max-width:480px;max-height:92svh;display:flex;flex-direction:column;border-radius:16px 16px 0 0;overflow:hidden;background:var(--glass-fill-strong)}.subscribe-confirm-header{flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.subscribe-confirm-header h2{margin:0;font-size:16px}.subscribe-confirm-close-btn{flex:0 0 auto;padding:8px 14px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.subscribe-confirm-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px}.subscribe-confirm-table{margin:0;display:flex;flex-direction:column;gap:10px}.subscribe-confirm-row{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;border-bottom:1px solid var(--border)}.subscribe-confirm-row dt{font-size:12px;font-weight:600;color:var(--text-muted)}.subscribe-confirm-row dd{margin:0;font-size:14px;line-height:1.6;color:var(--text)}.subscribe-confirm-note{margin:0;font-size:12px;line-height:1.6;color:var(--text-muted)}.subscribe-confirm-legal-link{align-self:flex-start;padding:2px 0;border:none;background:none;color:var(--primary);font:inherit;font-size:13px;font-weight:600;text-decoration:underline;cursor:pointer}.subscribe-confirm-footer{flex:0 0 auto;display:flex;flex-direction:column;gap:10px;padding:12px 16px;border-top:1px solid var(--border)}.subscribe-confirm-proceed-btn{padding:12px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.subscribe-confirm-proceed-btn:disabled{opacity:.5;cursor:not-allowed}.subscribe-confirm-cancel-btn{padding:10px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.tokushoho-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2500;display:flex;justify-content:center;background:var(--bg)}.tokushoho-content{width:100%;max-width:480px;min-height:100svh;display:flex;flex-direction:column;background:var(--bg)}.tokushoho-header{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 20px 12px;background:var(--primary);color:#fff}.tokushoho-header h2{margin:0;flex:1 1 auto;font-size:16px}.tokushoho-back-btn{flex:0 0 auto;padding:6px 4px;border:none;background:none;font:inherit;font-weight:600;color:#fff;cursor:pointer}.tokushoho-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px;padding-bottom:calc(32px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.tokushoho-table{margin:0;display:flex;flex-direction:column;gap:12px}.tokushoho-row{display:flex;flex-direction:column;gap:4px;padding-bottom:12px;border-bottom:1px solid var(--border)}.tokushoho-row dt{font-size:12px;font-weight:600;color:var(--text-muted)}.tokushoho-row dd{margin:0;font-size:14px;line-height:1.7;color:var(--text);overflow-wrap:break-word;word-break:break-word}.tokushoho-note{margin:0;font-size:12px;line-height:1.6;color:var(--text-muted)}.schedule-add-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-add-header h2{margin:0}.schedule-row-form{display:flex;flex-direction:column;gap:10px}.schedule-row-form-actions{display:flex;gap:8px}.schedule-row-error-text{margin:0;color:#d9534f;font-size:12px;line-height:1.5}.schedule-row-editing{display:block}.schedule-row-actions{flex:0 0 auto;display:flex;gap:8px}.schedule-list-meta{color:var(--text-muted)}.schedule-confirm-badge-ongoing{border-color:var(--primary);color:var(--primary)}.schedule-past{display:flex;flex-direction:column;gap:8px;margin-top:8px}.lab{display:flex;flex-direction:column;gap:16px}.lab-intro{margin:0;color:var(--text-muted);font-size:13px;line-height:1.6}.lab-filter-chips{display:flex;flex-wrap:wrap;gap:8px}.lab-filter-chip{display:flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.lab-filter-chip.is-active{background:var(--primary);border-color:var(--primary);color:#fff}.lab-filter-count{font-size:11px;opacity:.75}.lab-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.lab-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;min-height:88px;padding:14px;border:1px solid var(--glass-border);border-radius:var(--r-card);background:var(--glass-fill);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));box-shadow:var(--glass-shadow);text-align:left;font:inherit;cursor:pointer}.lab-card-badge{padding:3px 8px;border-radius:999px;font-size:11px;font-weight:700;color:#fff}.lab-card-badge.lab-badge-physics{background:#3b82f6}.lab-card-badge.lab-badge-chemistry{background:#10b981}.lab-card-badge.lab-badge-biology{background:#f59e0b}.lab-card-badge.lab-badge-earth{background:#8b5cf6}.lab-card-badge.lab-badge-math{background:#ec4899}.lab-card-title{font-size:14px;font-weight:600;line-height:1.4}.lab-viewer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;flex-direction:column;background:var(--surface)}.lab-viewer-topbar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.lab-viewer-back-btn{flex:0 0 auto;padding:8px 10px;border:none;background:none;font:inherit;font-weight:600;color:var(--primary);cursor:pointer;white-space:nowrap}.lab-viewer-title{flex:1 1 auto;min-width:0;margin:0;font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lab-viewer-frame{flex:1 1 auto;min-height:0;width:100%;border:none;display:block}.home-note{margin:0;color:var(--text-muted);font-size:var(--fs-note);line-height:1.8}.home-section-note{margin:-4px 0 0;font-size:var(--fs-note);font-weight:600;color:var(--text-muted)}.scores-scale-field{gap:8px}.scores-scale-note{margin:0;color:var(--text-muted);font-size:12px;line-height:1.6}.ocr-confirm-scale{gap:8px}.scores-list-scale{padding:1px 8px;border-radius:999px;background:#94a3b82e;color:var(--text-muted);font-size:12px;font-weight:600}.scores-list-deviation{font-weight:600}.scores-list-source{color:var(--text-muted);font-size:12px}.scores-list-unconverted{padding:1px 8px;border-radius:999px;background:#eab30829;color:var(--text-muted);font-size:11px;font-weight:600}.scores-scale-caveat{margin:-4px 0 8px;color:var(--text-muted);font-size:12px;line-height:1.6}.home-hero{position:relative;padding:16px 16px 14px;display:flex;flex-direction:column;gap:12px;border-radius:var(--r-card);border:1px solid color-mix(in srgb,var(--primary) 24%,white);background:linear-gradient(158deg,color-mix(in srgb,var(--primary) 17%,white),color-mix(in srgb,var(--primary) 7%,white) 52%,#fffffff0);box-shadow:0 14px 30px color-mix(in srgb,var(--primary) 20%,transparent)}.home-hero.is-compact{gap:10px}.hero-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.hero-head-text{min-width:0}.hero-head h2{margin:0;font-size:var(--fs-title);letter-spacing:.01em}.hero-school{margin:3px 0 0;font-size:var(--fs-label);font-weight:600;color:color-mix(in srgb,var(--primary) 72%,black);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-countdown{flex:0 0 auto;margin-top:1px;font-size:var(--fs-note);font-weight:600;color:var(--text-muted);white-space:nowrap}.hero-now{display:flex;flex-direction:column;gap:2px}.hero-now-label{font-size:var(--fs-label);font-weight:600;color:var(--text-muted)}.hero-now-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}.hero-now-value{font-size:var(--fs-hero);font-weight:800;line-height:1.05;letter-spacing:-.03em;color:var(--text)}.hero-now-growth{font-size:var(--fs-label);font-weight:700;color:#15803d;background:#22c55e29;padding:3px 9px;border-radius:999px;white-space:nowrap}.hero-track-wrap{padding:0 28px}.hero-track{position:relative;height:10px;margin:26px 0 30px;border-radius:999px;background:#ffffffb8;box-shadow:inset 0 0 0 1px #0000000f}.hero-track-fill{position:absolute;top:0;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--primary) 45%,white),var(--primary))}.hero-track-fill.is-down{background:#94a3b899}.hero-track-start,.hero-track-goal{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);background:#fff;box-shadow:inset 0 0 0 2px #64748b8c}.hero-track-goal{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--primary) 70%,black)}.hero-track-goal.is-reached{background:#15803d;box-shadow:inset 0 0 0 2px #15803d}.hero-track-marker{position:absolute;top:50%;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);background:var(--primary);border:3px solid #fff;box-shadow:0 2px 6px #0000002e}.hero-track-now{position:absolute;top:-22px;transform:translate(-50%);font-size:var(--fs-note);font-weight:700;color:color-mix(in srgb,var(--primary) 75%,black);white-space:nowrap}.hero-track.is-stacked{margin-bottom:48px}.hero-track-cap{position:absolute;top:17px;transform:translate(-50%);font-size:var(--fs-note);font-weight:600;color:var(--text-muted);white-space:nowrap}.hero-track-cap.is-lower{top:35px}.hero-gap{margin:0;font-size:var(--fs-body);font-weight:700;color:color-mix(in srgb,var(--primary) 78%,black)}.hero-gap.is-reached{color:#15803d}.hero-line{margin:0;font-size:13px;line-height:1.7;color:var(--text-muted)}.hero-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.hero-chip{font-size:var(--fs-label);font-weight:700;color:color-mix(in srgb,var(--primary) 72%,black);background:#ffffffbf;border:1px solid rgba(255,255,255,.9);padding:5px 11px;border-radius:999px;white-space:nowrap}.hero-chip.is-up{color:#15803d;background:#22c55e29;border-color:transparent}.hero-chip.is-down{color:#b45309;background:#f59e0b29;border-color:transparent}.hero-cta{align-self:flex-start;min-height:44px;padding:11px 18px;border:none;border-radius:var(--r-btn);background:var(--primary);color:#fff;font:inherit;font-size:13px;font-weight:700;cursor:pointer}.hero-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-top:2px;padding-top:10px;border-top:1px solid rgba(255,255,255,.75)}.hero-note{flex:1 1 auto;margin:0;font-size:var(--fs-note);line-height:1.65;color:var(--text-muted)}.hero-foot-notes{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}.hero-more{flex:0 0 auto;min-height:44px;padding:6px 2px;border:none;background:none;font:inherit;font-size:13px;font-weight:700;color:color-mix(in srgb,var(--primary) 80%,black);cursor:pointer;white-space:nowrap}.roadmap{display:flex;flex-direction:column;gap:14px}.roadmap-section{padding:16px;display:flex;flex-direction:column;gap:8px}.roadmap-section h3{margin:0;font-size:var(--fs-title)}.roadmap-section.is-quiet{background:#ffffff6b;box-shadow:none}.roadmap-section.is-quiet h3{font-size:var(--fs-body);color:var(--text-muted)}.roadmap-line{margin:0;font-size:var(--fs-body);line-height:1.7;color:var(--text-muted)}.roadmap-strong{margin:0;font-size:var(--fs-body);font-weight:700;line-height:1.6;color:color-mix(in srgb,var(--primary) 78%,black)}.roadmap-inline-note,.roadmap-note{font-size:var(--fs-note);line-height:1.6;color:var(--text-muted)}.roadmap-note{margin:0}.roadmap-cta{align-self:flex-start;min-height:44px;padding:11px 18px;border:none;border-radius:var(--r-btn);background:var(--primary);color:#fff;font:inherit;font-size:var(--fs-body);font-weight:700;cursor:pointer}.roadmap-weak{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.roadmap-weak-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:#ffffff73;font-size:var(--fs-body)}.roadmap-weak-unit{flex:1 1 auto;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roadmap-disclaimer{margin:0 0 8px;padding:10px 12px;border-radius:10px;background:var(--glass-fill);border:1px solid var(--glass-border);color:var(--text-muted);font-size:var(--fs-note);line-height:1.7}.roadmap-disclaimer-mixed{display:block;margin-top:6px}.settings-field-note{font-size:11px;line-height:1.6;color:var(--text-muted);font-weight:400}.subject-bars{display:flex;flex-direction:column;gap:8px}.subject-bar-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}.subject-bar-row{display:grid;grid-template-columns:2.7em 1fr 2.6em;align-items:center;gap:8px}.subject-bar-name{font-size:var(--fs-label);font-weight:700;color:var(--text)}.subject-bar-track{position:relative;height:14px;border-radius:7px;background:var(--bar-track);overflow:hidden}.subject-bar-track.is-empty{background:transparent;box-shadow:inset 0 0 0 1px var(--border)}.subject-bar-fill{position:absolute;left:0;top:0;bottom:0;border-radius:7px 0 0 7px}.subject-bar-fill.is-reached,.subject-bar-fill.is-good{background:var(--bar-reached)}.subject-bar-fill.is-near,.subject-bar-fill.is-mid{background:var(--bar-near)}.subject-bar-fill.is-far,.subject-bar-fill.is-low{background:var(--bar-far)}.subject-bar-goal{position:absolute;top:-1px;bottom:-1px;width:2px;margin-left:-1px;border-radius:1px;background:color-mix(in srgb,var(--text) 55%,transparent)}.subject-bar-value{font-size:var(--fs-label);font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.subject-bars.has-gap .subject-bar-row{grid-template-columns:2.7em 1fr 2.6em 4.8em}.subject-bar-gap{font-size:var(--fs-note);font-weight:700;text-align:right;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}.subject-bar-gap.is-reached{color:#15803d}.subject-bar-value.is-empty{color:var(--text-muted);font-weight:500}.subject-bar-scale{margin:0;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:var(--fs-note);color:var(--text-muted)}.subject-bar-legend{display:inline-flex;align-items:center;gap:4px;font-weight:600}.subject-bar-legend:before{content:"";width:2px;height:10px;border-radius:1px;background:color-mix(in srgb,var(--text) 55%,transparent)}@media (min-width: 768px){.app-shell,.tab-bar{max-width:900px}.workbook-viewer-content,.auth-modal-content,.ocr-confirm-content,.schedule-confirm-content,.subscribe-confirm-content{max-width:640px}}.sample{position:relative}.sample-body{filter:blur(6px);opacity:.55;pointer-events:none;-webkit-user-select:none;user-select:none}.home-hero .sample-body{filter:blur(9px)}.sample-badge{position:absolute;top:0;right:0;z-index:1;padding:1px 6px;border-radius:4px;background:#9aa6b2;color:#fff;font-size:var(--fs-note);font-weight:800}.sample-caption{margin:8px 0 0;font-size:13px;line-height:1.7;color:var(--text-muted)}.first-score-actions{display:flex;flex-direction:column;gap:8px;margin-top:10px}.hero-cta.is-sub{background:var(--surface);color:var(--primary);border:1.5px solid var(--primary)}.first-score-error p{margin:0 0 6px;font-size:var(--fs-label);color:#c0392b}.school-picker{display:flex;flex-direction:column;gap:8px}.school-picker input[type=search]{width:100%;box-sizing:border-box;padding:10px 12px;font-size:16px;border:1px solid #d6dde5;border-radius:10px;background:#fff}.school-picker-results{list-style:none;margin:0;padding:0;border-radius:12px;overflow:hidden;background:#ffffffe6;border:1px solid rgba(0,0,0,.06)}.school-picker-results.is-browse{max-height:50vh;overflow-y:auto}.school-picker-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:10px 12px;border:0;border-bottom:1px solid rgba(0,0,0,.05);background:transparent;text-align:left;font:inherit;cursor:pointer}.school-picker-option:active{background:#0000000a}.school-picker-name{font-weight:700}.school-picker-meta{font-size:12px;color:#6b7785}.school-picker-empty{padding:10px 12px;font-size:13px;color:#6b7785}.school-picker-prefs{display:flex;flex-wrap:wrap;gap:6px}.school-picker-prefs .onb-chip.is-on{background:var(--primary);color:#fff;border-color:var(--primary)}.school-picker-manual{align-self:flex-start;padding:6px 0;border:0;background:transparent;color:var(--primary);font:inherit;font-size:13px;text-decoration:underline;cursor:pointer}.schools{display:flex;flex-direction:column;gap:12px;padding-bottom:24px}.schools-title{margin:0;font-size:20px}.schools-lead,.schools-note,.schools-reference,.schools-disclaimer{margin:0;font-size:13px;color:#5b6673;line-height:1.6}.schools-reference{padding:10px 12px;border-radius:10px;background:#fff7e6;color:#7a5a12}.schools-notice{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:10px;background:#eaf3ff}.schools-notice p{margin:0;flex:1;font-size:13px;line-height:1.6}.schools-notice button{border:0;background:transparent;color:var(--primary);font:inherit;font-size:13px;white-space:nowrap;cursor:pointer}.schools-card,.schools-add,.schools-timeline{padding:14px;display:flex;flex-direction:column;gap:10px}.schools-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px}.schools-card-head h3,.schools-add h3,.schools-timeline h3{margin:0;font-size:16px}.schools-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#e9eef4;color:#5b6673}.schools-badge.is-first{background:var(--primary);color:#fff}.schools-meta{width:100%;font-size:12px;color:#6b7785}.schools-rounds{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.schools-round{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.schools-round input{width:20px;height:20px;margin-top:2px;flex-shrink:0}.schools-round-body{display:flex;flex-direction:column;gap:2px;min-width:0}.schools-round-main{font-size:14px}.schools-round-sub,.schools-source{font-size:12px;color:#6b7785}.schools-lastyear{font-size:12px;color:#9a6a00}.schools-orphan-note{color:#9b2c20}.schools-target-btn{align-self:flex-start;padding:8px 12px;border:1px solid var(--primary);border-radius:10px;background:#fff;color:var(--primary);font:inherit;font-size:13px;font-weight:700;cursor:pointer}.schools-card-actions{display:flex;gap:16px;justify-content:flex-end}.schools-text-btn{border:0;background:transparent;padding:4px 0;color:var(--primary);font:inherit;font-size:13px;cursor:pointer}.schools-text-btn.is-danger{color:#c0392b}.schools-conflicts{padding:10px 12px;border-radius:10px;background:#fdecea}.schools-conflicts p{margin:0;font-size:13px;color:#9b2c20}.schools-timeline ol{margin:0;padding-left:20px;font-size:13px;line-height:1.8}.settings-school-current{margin:0;font-size:14px;font-weight:700}
