:root{color-scheme:light;--accent:#991b1b;--accent-dark:#7f1d1d;--accent-soft:#fee2e2;--accent-pale:#fca5a5;--green:#16a34a;--green-dark:#14532d;--orange:#ea580c;--bg:#f6f6f7;--panel:#ffffff;--panel-2:#f4f4f5;--border:#e4e4e7;--text:#18181b;--muted:#71717a;--danger:#991b1b;--ok:#16a34a;--shadow:0 1px 2px rgba(24,24,27,0.06),0 6px 18px rgba(24,24,27,0.06);--class-1:#7c3aed;--class-2:#2563eb;--class-3:#f59e0b;--class-4:#16a34a}@media (prefers-color-scheme:dark){:root{color-scheme:light}}*{box-sizing:border-box}body,html{padding:0;margin:0;overscroll-behavior-y:none;touch-action:pan-x pan-y}html{-webkit-text-size-adjust:100%}body{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.selectable,[contenteditable=true],input,select,textarea{-webkit-user-select:text;-moz-user-select:text;user-select:text}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-text-size-adjust:100%;overscroll-behavior-y:none}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}.shell{max-width:1200px;margin-inline:auto;padding:16px}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:10px 16px;background:color-mix(in srgb,var(--panel) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.topbar h1{font-size:1rem;margin:0;font-weight:700}.topbar .spacer{flex:1 1}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:14px}.grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start}@media (max-width:900px){.grid{grid-template-columns:minmax(0,1fr)}}.preview-wrap{position:-webkit-sticky;position:sticky;top:68px}.preview-wrap canvas{width:100%;height:auto;display:block;background:#fff;border-radius:10px;border:1px solid var(--border)}label.field{display:block;margin-bottom:10px}label.field>span{display:block;font-size:.8rem;color:var(--muted);margin-bottom:4px;font-weight:600}input[type=number],input[type=text],select{width:100%;padding:8px 10px;border-radius:9px;border:1px solid var(--border);background:var(--panel-2)}input[type=range]{width:100%}.date-field-wrap{position:relative;width:100%}.date-field{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-block-size:42px;padding:8px 12px;border:1px solid var(--border);border-radius:9px;background:var(--panel-2);color:var(--text);font-size:.88rem;font-weight:600;cursor:pointer;touch-action:manipulation;transition:border-color .14s ease,background .14s ease}.date-field:focus-visible,.date-field:hover{border-color:var(--accent)}.date-field svg{flex:0 0 auto;color:var(--accent)}.date-native{position:absolute;inset-block:0;inset-inline-start:0;inline-size:1px;block-size:1px;opacity:0;pointer-events:none;border:0;padding:0}.row{display:flex;gap:10px;flex-wrap:wrap}.row>*{flex:1 1 120px;min-width:0}.check{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:.9rem}.check input{inline-size:18px;block-size:18px;accent-color:var(--accent)}.btn{border:1px solid var(--border);background:var(--panel-2);border-radius:10px;padding:9px 14px;cursor:pointer;font-weight:600}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-dark)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}h2.section{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;margin:18px 0 8px;font-weight:700}.hint,h2.section{color:var(--muted)}.hint{font-size:.78rem;line-height:1.6}.badge{font-size:.72rem;padding:3px 8px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);color:var(--muted);white-space:nowrap}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tabs button{border:1px solid var(--border);background:var(--panel);border-radius:999px;padding:6px 12px;cursor:pointer;font-size:.85rem}.tabs button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}[dir=rtl] .flip-icon{transform:scaleX(-1)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.review-shell,.scan-shell{position:fixed;inset:0;display:flex;flex-direction:column;height:100dvh;overflow:hidden;overscroll-behavior:none}.scan-bar{display:flex;align-items:center;gap:8px;padding:8px 10px;background:#0b1220;color:#e8eefb;position:relative;z-index:3}.scan-bar.app-topbar{background:var(--accent);color:#fff}.scan-bar.app-topbar h1{color:#fff;font-size:1rem;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-chip{padding:3px 9px;border-radius:999px;font-size:.75rem}.batch-chip,.edit-pill{background:rgba(255,255,255,.22);font-weight:700;white-space:nowrap}.edit-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 6px;border:0;border-radius:999px;color:#fff;font-size:.78rem;cursor:pointer}.edit-pill.on{background:#fff;color:var(--accent)}.edit-pill .edit-knob{inline-size:16px;block-size:16px;border-radius:50%;background:rgba(255,255,255,.75);flex:0 0 auto}.edit-pill.on .edit-knob{background:var(--accent)}.menu-value{-webkit-margin-start:auto;margin-inline-start:auto;font-size:.78rem;color:var(--muted);font-weight:700}.scan-title{font-weight:700;font-size:.95rem}.icon-btn{border:0;background:rgba(255,255,255,.12);color:inherit;border-radius:10px;min-width:38px;min-height:38px;font-size:1.1rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.icon-btn.big{min-width:52px;min-height:52px;font-size:1.35rem}.icon-btn[aria-pressed=true]{background:var(--accent);color:#fff}.scan-menu{position:absolute;inset-inline-end:10px;top:54px;z-index:5;min-width:260px;max-height:70vh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:6px}.scan-menu>button{display:block;width:100%;text-align:start;border:0;background:transparent;padding:10px 12px;border-radius:8px;cursor:pointer}.scan-menu>button:hover{background:var(--panel-2)}.menu-group{padding:8px 12px}.menu-label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:6px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:999px;padding:4px 10px;font-size:.78rem;cursor:pointer}.chip-dot{display:inline-block;width:10px;height:10px;border-radius:50%;-webkit-margin-end:6px;margin-inline-end:6px;flex:0 0 auto}.chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.scan-stage{position:relative;flex:1 1;min-height:0;background:#000;overflow:hidden}.scan-video{width:100%;height:100%;object-fit:cover}.scan-error,.scan-video{position:absolute;inset:0}.scan-error{display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;padding:24px;color:#fff;text-align:center}.scan-overlay{position:absolute;inset:0;pointer-events:none}.guide-cutout{position:absolute;border-radius:6px;box-shadow:0 0 0 9999px rgba(0,0,0,.65)}.guide-corner{position:absolute;background:rgba(255,255,255,.35)}.tracker{position:absolute;left:0;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;background:transparent;border:2.5px solid #16a34a;box-sizing:border-box;will-change:transform;opacity:0}.scan-warning{background:rgba(153,27,27,.92);white-space:pre-line}.scan-note,.scan-warning{position:absolute;inset-inline:12px;bottom:auto;padding:8px 12px;border-radius:10px;color:#fff;font-size:.82rem;line-height:1.5;text-align:center;pointer-events:none}.scan-note{background:rgba(14,92,140,.92)}.merge-page{position:fixed;inset:0;z-index:40;background:var(--bg);overflow-y:auto}.merge-kind{font-size:.72rem;font-weight:700;color:rgba(255,255,255,.85)}.merge-stage{position:relative;inline-size:100%;margin:8px 0;border:1px solid var(--border);border-radius:10px;background:#fff;overflow:hidden;touch-action:none}.merge-page-img{inset:0;inline-size:100%;block-size:100%;object-fit:contain}.merge-page-img,.merge-sheet{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.merge-sheet{block-size:auto;cursor:-webkit-grab;cursor:grab;touch-action:none;outline-offset:-1px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.25))}.merge-sheet:active{cursor:-webkit-grabbing;cursor:grabbing}.merge-loading{display:flex;align-items:center;justify-content:center;block-size:100%;color:var(--muted);font-size:.84rem}.merge-controls{display:flex;flex-direction:column;gap:8px;padding:12px 0 20px}.merge-controls .field>span{font-size:.8rem;color:var(--muted)}.student-card{cursor:pointer}.chart-card{margin-top:10px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.chart-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.chart-title{font-size:.86rem;font-weight:800}.chart-trend{padding:2px 8px;border-radius:6px;font-size:.74rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-trend.up{background:rgba(22,163,74,.12);color:#16a34a}.chart-trend.down{background:rgba(220,38,38,.12);color:#dc2626}.chart-detail{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 12px;min-height:34px;margin:8px 0;padding:6px;border-radius:8px;background:var(--panel-2);font-size:.74rem;text-align:center}.chart-detail b{font-weight:800}.score-chart{display:block;width:100%;height:auto}.chart-grid{stroke:var(--border);stroke-width:1}.chart-axis{fill:var(--muted);font-size:9px}.chart-line{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.chart-average{fill:none;stroke:#9ca3af;stroke-width:2;stroke-dasharray:5 4}.chart-dot{cursor:pointer;stroke:#fff;stroke-width:1.5}.chart-legend{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:6px;font-size:.72rem;color:var(--muted)}.chart-legend span{display:flex;align-items:center;gap:6px}.legend-line{display:block;inline-size:16px;block-size:3px;border-radius:2px}.legend-line.dashed{background:repeating-linear-gradient(90deg,#9ca3af 0 5px,transparent 5px 9px)}.chart-stats{display:flex;align-items:center;justify-content:space-evenly;gap:8px;padding:8px;border-radius:8px;font-size:.76rem;color:var(--muted)}.chart-empty,.chart-stats{margin-top:10px;background:var(--panel-2)}.chart-empty{padding:16px;border-radius:12px;text-align:center}.result-row{display:flex;align-items:center;justify-content:space-between;gap:10px;inline-size:100%;margin-top:6px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--panel);text-align:start}.result-body{display:flex;flex-direction:column;min-width:0;font-size:.84rem}.result-body b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-meta{font-size:.72rem;color:var(--muted)}.result-score{flex:0 0 auto;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.scan-banner{position:absolute;inset-inline:12px;bottom:auto;background:rgba(11,18,32,.82);color:#fff;border-radius:10px;padding:10px 12px;font-size:.85rem;line-height:1.5;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.scan-banner.warn{background:rgba(192,57,43,.85)}.scan-busy{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.35)}.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.review-busy{position:absolute;inset:0;z-index:40;flex-direction:column;gap:14px;background:rgba(0,0,0,.45);color:#fff;font-weight:700}.review-busy,.scan-bottom{display:flex;align-items:center;justify-content:center}.scan-bottom{gap:12px;padding:10px 16px 18px;background:#0b1220;color:#e8eefb}.shutter{border:0;border-radius:999px;padding:14px 34px;background:#fff;color:#0b1220;font-weight:700;cursor:pointer}.corner-editor{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;background:#000}.corner-stage{flex:1 1;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px}.corner-canvas{max-inline-size:100%;max-block-size:100%;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:crosshair}.corner-actions{display:flex;flex-direction:column;align-items:center;gap:12px;padding:14px 16px 20px;background:#0b1220}.corner-hint{margin:0;padding:8px 12px;border-radius:12px;background:rgba(0,0,0,.6);color:#fff;font-size:.78rem;font-weight:600;text-align:center}.auto-indicator{font-size:.82rem;color:#9fb3d1;text-align:center;flex:1 1}.counter{font-size:.72rem;color:#6b7f9c;min-width:66px;text-align:end}.review-sheet-wrap{flex:1 1;min-height:0;overflow:hidden;padding:10px;background:#000;display:flex;align-items:center;justify-content:center}.review-sheet-wrap .sheet-canvas{max-width:100%;max-height:100%}.plan-benefits{list-style:none;margin:10px 0;padding:0;display:flex;flex-direction:column;gap:6px}.plan-benefits li{display:flex;align-items:flex-start;gap:6px;font-size:.85rem;line-height:1.4}.plan-benefits li:before{content:"✓";color:var(--accent);font-weight:700}.cloud-file{display:flex;align-items:center;flex-direction:row;text-align:start;gap:8px}.cloud-file>svg{flex:0 0 auto}.cloud-file-text{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0}.cloud-file-name{font-size:.8rem;font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cloud-file-meta{font-size:.62rem;opacity:.7}.sheet-canvas{display:block;width:auto;height:auto;max-width:100%;background:#fff;border-radius:8px}.sheet-canvas.editing{outline:2px solid var(--accent-soft);cursor:crosshair}.review-summary{display:flex;flex-direction:column;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom, 0px));background:var(--accent-soft);border-top:2px solid var(--accent-pale)}.summary-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.summary-label{font-size:.8rem;color:#7f1d1d;font-weight:600;white-space:nowrap}input.summary-name{flex:1 1;min-width:0;block-size:44px;padding:0 10px;border:2px solid #fff;border-radius:10px;background:#fff;font-size:.9rem;font-weight:600;color:inherit;text-overflow:ellipsis}.summary-name-field{display:flex;align-items:center;gap:6px;flex:1 1;min-width:0}.summary-name-arrow{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;inline-size:40px;block-size:44px;padding:0;border:2px solid #fff;border-radius:10px;background:#fff;color:var(--accent);cursor:pointer}.summary-name-arrow:active{background:var(--accent-soft)}.pick-list{display:flex;flex-direction:column;max-block-size:52vh;overflow-y:auto;margin:0 -6px}.pick-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-hint-float{position:fixed;top:62px;inset-inline-end:10px;z-index:60;max-inline-size:min(320px,calc(100vw - 20px));padding:9px 12px;border-radius:10px;background:var(--accent-dark);color:#fff;font-size:.78rem;font-weight:600;line-height:1.5;box-shadow:0 8px 22px rgba(0,0,0,.28);animation:hint-float 4.5s ease forwards;pointer-events:none}@keyframes hint-float{0%{opacity:0;transform:translateY(-6px)}8%{opacity:1;transform:translateY(0)}78%{opacity:1}to{opacity:0}}.countdown-chip{border:0;color:#fff;font:inherit;font-size:.75rem;font-weight:700;cursor:pointer}.summary-score{display:inline-flex;align-items:center;justify-content:center;min-inline-size:140px;block-size:48px;padding:0 14px;border:2px solid #fff;border-radius:10px;background:#fff;font-size:1.2rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;direction:ltr}.edit-hint{margin:0;color:#7f1d1d}.review-panel{gap:12px}.paper-list,.review-panel{display:flex;flex-direction:column}.paper-list{gap:8px}.paper-row{display:flex;align-items:center;gap:8px;padding:8px 10px}.card.selected,.paper-row.selected{outline:2px solid var(--accent)}.paper-open{flex:1 1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-column-gap:10px;column-gap:10px;grid-row-gap:2px;row-gap:2px;border:0;background:transparent;color:inherit;text-align:start;cursor:pointer;padding:0}.paper-head,.paper-open{min-width:0;align-items:center}.paper-head{grid-column:1;grid-row:1;display:flex;gap:8px}.paper-index{flex:0 0 auto;font-weight:700;font-size:.85rem;color:var(--muted)}.paper-name{min-width:0;font-weight:700;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-name-image{flex:0 1 auto;min-inline-size:0;block-size:20px;inline-size:150px;max-inline-size:100%;object-fit:fill;border:1px solid var(--border);border-radius:4px;background:#fff}.paper-meta{grid-column:1;grid-row:2;font-size:.72rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-score-chip{grid-column:2;grid-row:1/span 2;align-self:center;padding:4px 10px;border-radius:10px;font-size:.85rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.paper-selected-tick{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;inline-size:26px;block-size:26px;border-radius:50%;background:var(--accent);color:#fff}.warn-text{color:var(--danger)}.review-actions{display:flex;gap:10px;margin-top:2px}.review-actions .btn{flex:1 1;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px;background:#fff}.review-actions .btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.review-toast{margin:10px 14px 0;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-size:.85rem;color:var(--ok)}.modal-backdrop{z-index:30;background:rgba(11,18,32,.55);padding:18px}.modal-card{max-width:460px;width:100%}a.btn{display:inline-block;text-decoration:none;text-align:center}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app-main{flex:1 1;min-height:0;padding-bottom:calc(74px + env(safe-area-inset-bottom, 0px))}.app-shell.no-tabs .app-main{padding-bottom:0}.app-shell.no-tabs .action-bar{bottom:0;padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))}.app-shell.no-tabs .shell.has-action-bar{padding-bottom:96px}.app-topbar{gap:8px;background:var(--accent);color:#fff;border-bottom:0}.app-topbar h1{color:#fff;font-size:1.15rem;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-topbar .btn{flex:0 0 auto}@media (max-width:400px){.app-topbar h1{font-size:1rem}}.app-topbar .btn{background:rgba(255,255,255,.18);border-color:transparent;color:#fff}.app-topbar .btn.primary{background:var(--accent-soft);color:var(--accent);font-weight:800}.app-topbar .btn:hover{background:rgba(255,255,255,.28)}.app-topbar .btn.primary:hover{background:#fecaca}.icon-btn.light{background:transparent;color:#fff;border:1px solid transparent}.icon-btn.light:hover{background:rgba(255,255,255,.18)}.sheet-backdrop{position:fixed;inset:0;z-index:60;background:rgba(24,24,27,.45);display:flex;align-items:flex-end;justify-content:center;animation:sheet-fade .18s ease-out}.sheet{width:100%;max-width:720px;max-height:88vh;display:flex;flex-direction:column;background:var(--panel);border-radius:18px 18px 0 0;box-shadow:0 -8px 30px rgba(24,24,27,.18);animation:sheet-up .22s ease-out}.sheet-handle{flex:0 0 auto;height:22px;display:flex;align-items:center;justify-content:center;cursor:-webkit-grab;cursor:grab;touch-action:none}.sheet-handle>span{display:block;width:44px;height:4px;border-radius:2px;background:var(--border)}.sheet-body{flex:1 1 auto;overflow:auto;overscroll-behavior:contain;padding:2px 16px calc(18px + env(safe-area-inset-bottom, 0px))}.sheet-body .menu-item:first-child{margin-top:2px}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.sheet,.sheet-backdrop{animation:none}}.bottom-nav{position:fixed;inset-inline:0;bottom:0;z-index:35;display:flex;background:var(--panel);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom,0)}.nav-item{position:relative;flex:1 1;display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:transparent;color:var(--muted);padding:8px 4px 7px;cursor:pointer;font-size:.7rem;font-weight:700;min-height:64px}.nav-item>svg{padding:5px;box-sizing:content-box;border-radius:14px}.nav-item.active{color:var(--accent)}.nav-item.active>svg{background:var(--accent-soft)}@media (min-width:720px){.bottom-nav{position:-webkit-sticky;position:sticky;bottom:0}.app-main{padding-bottom:16px}.nav-item{font-size:.78rem}}.list-empty{color:var(--muted);font-size:.88rem;text-align:center;padding:22px 8px}.item-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--border)}.item-row .grow{flex:1 1;min-width:0}.item-row .title{font-weight:600}.item-row .sub{font-size:.78rem;color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:10px;gap:10px}.stat{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:10px}.stat .label{display:block;font-size:.74rem;color:var(--muted);margin-bottom:4px}.stat .value{font-size:1.2rem;font-weight:700}.card-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}.class-card,.design-card,.exam-card{position:relative;gap:6px}.class-card,.design-card,.exam-card,.stripe{display:flex;flex-direction:column;overflow:hidden}.stripe{position:absolute;inset-inline-start:0;top:calc(12.5% + 9px);bottom:calc(12.5% + 9px);width:6px;border-start-end-radius:6px;border-end-end-radius:6px}.stripe>i{flex:1 1;display:block}.card.exam-card{-webkit-padding-start:18px;padding-inline-start:18px;padding-block:8px 6px;gap:3px}.class-card-main{display:flex;align-items:center;gap:12px;min-width:0}.class-card-main h3{margin:0;font-size:1rem;font-weight:800}.card.class-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;grid-gap:14px;gap:14px;padding:12px 14px;overflow:hidden}.class-tile{align-items:center;flex:0 0 auto;inline-size:44px;block-size:44px;border-radius:8px}.class-card-body,.class-tile{display:flex;justify-content:center}.class-card-body{flex-direction:column;gap:3px;min-width:0}.class-card-body h3{font-size:1rem;font-weight:800}.class-card-body h3,.class-meta{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-meta{font-size:.78rem;color:var(--muted)}.card.class-card>.icon-action{align-self:center}.student-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.card.student-card{display:flex;align-items:center;gap:10px;padding:10px 12px}.student-index{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;inline-size:34px;block-size:34px;border-radius:50%;font-size:.85rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.student-body{flex:1 1;min-width:0}.student-body h3{margin:0 0 2px;font-size:.95rem;font-weight:700}.student-body h3,.student-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-meta{margin:0;font-size:.72rem;color:var(--muted)}.student-meta b{color:var(--text);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.student-pct{flex:0 0 auto;padding:5px 9px;border-radius:8px;font-size:.74rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.student-pct.good{background:#e8f5e9;color:#2e7d32}.student-pct.mid{background:#fff8e1;color:#f57f17}.student-pct.low{background:#ffebee;color:#c62828}.class-badge{border-radius:8px}.menu-item{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--text);padding:12px;border-radius:10px;cursor:pointer;font-size:.88rem;font-weight:600;text-align:start}.menu-item:hover{background:var(--panel-2)}.menu-item .menu-icon,.menu-item.danger{color:var(--accent)}.field-label{margin:12px 0 6px;font-size:.8rem;font-weight:700;color:var(--text)}.tab-bar{display:flex;background:var(--panel);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:56px;z-index:20}.tab{flex:1 1;border:0;background:transparent;color:var(--muted);padding:14px 6px 12px;font-weight:700;font-size:.92rem;cursor:pointer;border-bottom:3px solid transparent}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.segmented{display:flex;gap:8px;margin:4px 0 2px}.seg{flex:1 1;min-height:46px;border:0;border-radius:10px;background:var(--panel-2);color:var(--text);font-weight:700;font-size:.86rem;cursor:pointer;padding:8px 6px}.seg.active{background:var(--accent);color:#fff}.align-row{display:flex;align-items:stretch;height:42px;border:1px solid var(--border);border-radius:8px;overflow:hidden;margin:4px 0 10px}.align-cell{flex:1 1;display:flex;align-items:center;justify-content:center;gap:5px;border:0;background:transparent;color:var(--text-dim);font-size:.78rem;cursor:pointer;padding:0 4px}.align-cell+.align-cell{-webkit-border-start:1px solid var(--border);border-inline-start:1px solid var(--border)}.align-cell.active{background:var(--accent);color:#fff;font-weight:700}.logo-row{display:flex;align-items:center;gap:10px;margin:8px 0}.logo-badge{inline-size:38px;block-size:38px;border-radius:8px;flex:0 0 auto;object-fit:contain;background:var(--panel-2)}.card.report-card{display:block;margin-bottom:12px}.report-head{display:flex;align-items:center;gap:12px}.report-icon{inline-size:38px;block-size:38px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;background:var(--accent-soft);color:var(--accent)}.report-title{font-size:.95rem;font-weight:700;margin:0;line-height:1.35}.report-card .hint{margin:8px 0 12px}input.field-soft{background:var(--accent-soft);border-color:var(--accent-pale)}.toggle-row{display:flex;flex-direction:column;gap:2px;margin-top:6px}.toggle{display:flex;align-items:center;gap:12px;padding:12px 0;cursor:pointer;border-top:1px solid var(--border)}.toggle:first-child{border-top:0}.toggle input{position:absolute;opacity:0;width:0;height:0;margin:0}.toggle-track{position:relative;flex:0 0 auto;width:52px;height:30px;border-radius:999px;background:var(--panel-2);border:2px solid var(--border);transition:background .18s ease,border-color .18s ease}.toggle-track>span{position:absolute;top:2px;inset-inline-start:2px;width:22px;height:22px;border-radius:50%;background:var(--muted);transition:transform .18s ease,background .18s ease}:root{--knob-travel:-22px;--knob-travel-ltr:22px}[dir=ltr]{--knob-travel:22px}.toggle input:checked+.toggle-track{background:var(--accent);border-color:var(--accent)}.toggle input:checked+.toggle-track>span{background:#fff;transform:translateX(var(--knob-travel))}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--accent);outline-offset:2px}.toggle-label{font-size:.95rem;font-weight:600}.stepper-row{justify-content:space-between;gap:12px;padding:10px 0;flex-wrap:wrap}.stepper,.stepper-row{display:flex;align-items:center}.stepper{gap:8px}.stepper button{width:44px;height:44px;border-radius:50%;border:0;background:var(--panel-2);color:var(--accent);font-size:1.3rem;font-weight:700;line-height:1;cursor:pointer}.stepper button:disabled{color:var(--muted);cursor:default}.stepper input{width:92px;height:52px;text-align:center;font-size:1.15rem;font-weight:700;border:1px solid var(--border);border-radius:10px;background:var(--panel);color:var(--text)}.letter-chips{display:flex;gap:8px;flex-wrap:wrap}.letter-chip{min-width:46px;height:46px;border-radius:50%;border:0;background:var(--accent-soft);color:var(--accent);font-size:1.05rem;font-weight:700;cursor:pointer;padding:0 10px}.letter-chip:hover{background:var(--accent-pale)}.class-actions{display:flex;gap:8px;align-items:stretch}.class-actions .btn{flex:1 1;height:44px;justify-content:center;padding:0 6px;font-size:.78rem}.import-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;margin-bottom:12px;background:var(--panel-2);font-size:.8rem;font-weight:700}.import-row,textarea{border:1px solid var(--border);border-radius:10px}textarea{width:100%;padding:10px;background:var(--panel);resize:vertical}.model-tabs{display:flex;gap:8px;margin:10px 0 12px}.model-tab{flex:1 1;height:36px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.model-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.model-tab.add{flex:0 0 44px;color:var(--accent)}.key-row{display:flex;align-items:center;gap:6px;padding:6px 0;border-top:1px solid var(--border);flex-wrap:nowrap}.key-row:first-child{border-top:0}.key-number{flex:0 0 34px;font-size:.76rem;font-weight:700;color:var(--muted)}.key-letters{display:flex;gap:4px;flex:1 1 auto;flex-wrap:nowrap;min-width:0}.key-letter{flex:1 1;min-width:30px;max-width:38px;aspect-ratio:1;block-size:auto;border:2px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:50%;font-weight:700;font-size:.9rem;cursor:pointer;padding:0}.key-letter.active{background:var(--accent);border-color:var(--accent);color:#fff}.key-weight-col{flex:0 0 56px;display:flex;flex-direction:column;align-items:center;gap:2px}.key-weight-label{font-size:.58rem;font-weight:700;color:var(--muted)}.key-weight{inline-size:100%;height:32px;text-align:center;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text)}.essay-block{margin-top:22px;padding:4px 14px;background:var(--panel);border:1px solid var(--border);border-radius:12px}.key-row.essay{padding-inline:0}.key-essay-title{flex:1 1 auto;min-width:0;font-size:.84rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.total-row{display:flex;align-items:center;gap:10px;margin-top:12px;padding:12px 14px;background:var(--panel);border:1px solid var(--border);border-radius:12px;font-size:.92rem;font-weight:700}.total-row b{font-size:1.05rem;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.action-bar{position:fixed;inset-inline:0;bottom:calc(64px + env(safe-area-inset-bottom, 0px));z-index:34;display:flex;gap:10px;align-items:center;padding:10px 16px;background:var(--panel);border-top:1px solid var(--border)}.action-bar .btn{height:46px}.shell.has-action-bar{padding-bottom:140px}.action-bar.flush{bottom:0;padding-bottom:calc(10px + env(safe-area-inset-bottom, 0px))}.designer-shell{max-width:760px;margin-inline:auto}canvas[role=img]{max-width:100%;height:auto}.paper-card{display:flex;flex-direction:column;gap:6px}.paper-image{width:100%;max-width:190px;border:1px solid var(--border);border-radius:8px;background:#fff;align-self:flex-start}.paper-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.paper-image-btn{padding:0;border:0;background:transparent;cursor:pointer;align-self:flex-start;max-width:190px}.bar-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:.82rem}.bar-track{flex:1 1;height:12px;border-radius:6px;background:var(--panel-2);overflow:hidden}.bar-fill{height:100%;border-radius:6px;background:var(--accent)}.bar-fill.good{background:var(--green)}.bar-fill.mid{background:#b45309}.preview-frame{margin-top:10px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:8px;display:flex;justify-content:center;max-height:62vh;overflow:auto}.preview-frame canvas{max-width:100%;height:auto}.check-row{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:.86rem;padding:6px 0}.check-row input{width:18px;height:18px;accent-color:var(--accent)}.swatch-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:10px;gap:10px;justify-items:center}.swatch{width:38px;height:38px;border-radius:50%;border:1px solid rgba(0,0,0,.12);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.swatch[aria-pressed=true]{border:3px solid var(--text)}.swatch-tick{pointer-events:none}.class-1{background:var(--class-1)}.class-2{background:var(--class-2)}.class-3{background:var(--class-3)}.class-4{background:var(--class-4)}.exam-card-head{display:flex;align-items:center;gap:8px;justify-content:space-between}.exam-card-head .icon-action{inline-size:28px;block-size:28px;padding:0;align-items:center;justify-content:center}.exam-card .sub{line-height:1.35}.exam-card-head h3{margin:0;font-size:1.05rem;font-weight:800;display:flex;align-items:center;gap:6px;min-width:0}.class-card .sub,.design-card .sub,.exam-card .sub{margin:0;font-size:.83rem;color:var(--muted);line-height:1.6}.card-foot{justify-content:space-between;gap:10px;margin-top:0}.card-foot,.card-stats{display:flex;align-items:center}.card-stats{gap:8px;flex-wrap:wrap;font-size:.72rem;color:var(--muted)}.card-stats b{color:var(--text);font-weight:700}.card-stats>span+span{-webkit-border-start:1px solid var(--border);border-inline-start:1px solid var(--border);-webkit-padding-start:8px;padding-inline-start:8px}.card-date{flex:0 0 auto;font-size:.68rem;color:var(--muted);white-space:nowrap}.pct.good{color:var(--green);font-weight:800}.pct.mid{color:#b45309;font-weight:800}.pct.low{color:var(--accent);font-weight:800}.class-badge{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:12px;color:#fff;flex:0 0 auto}.class-badge.tint-1{background:color-mix(in srgb,var(--class-1) 18%,transparent);color:var(--class-1)}.class-badge.tint-2{background:color-mix(in srgb,var(--class-2) 18%,transparent);color:var(--class-2)}.class-badge.tint-3{background:color-mix(in srgb,var(--class-3) 22%,transparent);color:#b45309}.class-badge.tint-4{background:color-mix(in srgb,var(--class-4) 18%,transparent);color:var(--class-4)}.card-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:8px}.card-actions.end{justify-content:flex-end}.card-actions .btn{display:inline-flex;align-items:center;gap:6px}.icon-action{border:0;background:transparent;color:var(--text);padding:8px;border-radius:10px;cursor:pointer;display:inline-flex}.icon-action:hover{background:var(--panel-2)}.icon-action.danger{color:var(--accent)}.design-card{flex-direction:row;align-items:flex-start;gap:12px}.design-thumb{flex:0 0 auto;width:96px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}.design-thumb canvas{display:block;width:100%;height:auto}.design-body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.design-title{border:0;background:transparent;padding:0;margin:0;font:inherit;font-size:.98rem;font-weight:800;color:var(--text);text-align:start;cursor:pointer}.design-title:hover{text-decoration:underline}.topbar-action{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.list-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:4px 0 10px}.list-head .list-title{font-size:.95rem;font-weight:800}.menu-tick{display:inline-flex;align-items:center;justify-content:center;inline-size:16px;color:var(--accent);flex:0 0 auto}.menu-divider{border:0;border-top:1px solid var(--border);margin:6px 4px}.inline-icon,.star{vertical-align:-2px}.star{color:var(--accent)}.roster{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}.detail-rows{display:flex;flex-direction:column}.detail-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--border);font-size:.88rem}.detail-row:first-child{border-top:0}.detail-row .label{color:var(--muted)}.detail-row .value{font-weight:700;text-align:end}.detail-row>.value.name-value{display:inline-flex;align-items:center;gap:6px}.stat-columns{display:flex;align-items:stretch}.stat-columns>div{flex:1 1;text-align:center;padding:4px 8px}.stat-columns>div+div{-webkit-border-start:1px solid var(--border);border-inline-start:1px solid var(--border)}.stat-columns .label{display:block;font-size:.76rem;color:var(--muted);margin-bottom:6px}.stat-columns .value{font-size:1.25rem;font-weight:800}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px}.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:104px;padding:14px 10px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);color:var(--text);cursor:pointer;font-weight:700;font-size:.86rem;text-align:center}.tile:hover{border-color:var(--accent-pale)}.tile svg{color:var(--accent)}.settings-group{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 4px 8px;font-weight:700}.settings-card{padding:4px 10px}.settings-row{display:flex;align-items:center;gap:12px;width:100%;text-align:start;padding:12px 4px;border-top:1px solid var(--border);color:inherit}.settings-card>.settings-row:first-child{border-top:0}button.settings-row.as-button{border-inline:0;border-bottom:0;background:transparent;cursor:pointer;border-radius:8px}button.settings-row.as-button:hover{background:var(--panel-2)}.settings-row .title{font-weight:600;font-size:.92rem}.settings-row .sub{font-size:.78rem;color:var(--muted);line-height:1.6}.settings-row select{width:auto;max-width:45%}.modal-scroll{max-height:88vh;overflow:auto}.plan-card{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:16px}.plan-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.plan-head .title{font-size:1rem;font-weight:700}.plan-badge{padding:4px 10px;border-radius:8px;background:#d2d2d2;color:#3f3f46;font-size:.7rem;font-weight:700;white-space:nowrap}.plan-card hr{border:0;border-top:1px solid var(--border);margin:0}.plan-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.84rem;color:var(--muted)}.plan-row .value{font-weight:700;color:var(--text);unicode-bidi:-webkit-isolate;unicode-bidi:isolate}.tile-grid.settings-tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.tile-grid.settings-tiles .tile{aspect-ratio:1;min-height:0;gap:12px;padding:8px 6px;border-radius:16px;font-size:.76rem;line-height:1.3}.tile-grid.settings-tiles .tile span{max-width:100%;overflow-wrap:break-word}.sheet-wide{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:10px;text-decoration:none}.sheet-cards{display:flex;flex-direction:column;gap:8px}.sheet-card{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:12px 16px;border-radius:12px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:1rem;font-weight:600;cursor:pointer}.sheet-card.active{border:2px solid var(--accent);background:var(--accent-soft);color:var(--accent)}.grade-table{display:flex;flex-direction:column;gap:8px;margin-top:10px}.grade-head,.grade-row{display:grid;grid-template-columns:32px minmax(0,1fr) 66px 66px 32px;align-items:center;grid-gap:6px;gap:6px}.grade-head{font-size:.72rem;font-weight:700;color:var(--muted);text-align:center}.grade-head>span:first-child,.grade-head>span:last-child{visibility:hidden}.grade-row{padding:8px 6px;border:1px solid var(--border);border-radius:10px;background:var(--panel-2)}.grade-color{inline-size:30px;block-size:30px;padding:0;border:2px solid #fff;border-radius:50%;cursor:pointer;box-shadow:0 0 0 1px var(--border)}.color-grid{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-inline-size:220px;margin:0 auto}.color-dot{display:inline-flex;align-items:center;justify-content:center;inline-size:36px;block-size:36px;padding:0;border:2px solid rgba(255,255,255,.5);border-radius:50%;color:#fff;cursor:pointer}.color-dot.on{box-shadow:0 0 0 2px var(--accent)}.grade-name,.grade-num{block-size:38px;padding:0 8px;border-radius:8px;border:1px solid var(--border);background:var(--panel);font-size:.84rem}.grade-name{font-weight:600}.grade-num{text-align:center;font-weight:700}.grade-del{display:inline-flex;align-items:center;justify-content:center;inline-size:30px;block-size:30px;border:0;border-radius:8px;background:transparent;color:var(--danger);cursor:pointer}.grade-del:hover:not(:disabled){background:var(--accent-soft)}.grade-del:disabled{color:var(--border);cursor:default}@media (max-width:380px){.grade-head{display:none}.grade-row{grid-template-columns:30px minmax(0,1fr) 30px 62px;grid-template-areas:"color name name del" "color min max del";column-gap:6px;row-gap:6px}.grade-color{grid-area:color}.grade-name{grid-area:name}.grade-min{grid-area:min}.grade-max{grid-area:max}.grade-del{grid-area:del}}.logo-preview{display:block;max-height:64px;max-width:100%;margin-top:10px;object-fit:contain}.tour-list{margin:0;-webkit-padding-start:20px;padding-inline-start:20px;color:var(--text);font-size:.86rem;line-height:1.9}.about-name{margin:4px 0 0;text-align:center;font-size:1.5rem;font-weight:800;color:var(--accent)}.about-version{display:flex;align-items:center;justify-content:center;gap:6px;margin:6px auto 0;padding:6px 12px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:.82rem;font-weight:600;cursor:pointer;touch-action:manipulation;transition:background .14s ease,color .14s ease}.about-version:active,.about-version:hover{background:var(--panel-2);color:var(--accent)}.about-version svg{flex:0 0 auto}.analytics-row{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px}.analytics-row>span{font-size:.68rem;color:var(--muted)}.analytics-row .toggle{transform:scale(.68);transform-origin:center}.update-toast{position:fixed;inset-block-start:0;inset-inline:0;z-index:60;display:flex;align-items:center;gap:10px;padding:calc(8px + env(safe-area-inset-top, 0px)) 12px 8px;background:var(--accent);color:#fff;box-shadow:var(--shadow);font-size:.84rem;font-weight:600;animation:toast-in .2s ease}.update-toast .grow{flex:1 1;min-width:0}.update-toast .btn.primary{flex:0 0 auto;background:#fff;color:var(--accent);border-color:#fff;padding:7px 14px;font-size:.82rem}.update-toast .icon-action{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;inline-size:30px;block-size:30px;border:0;border-radius:50%;background:rgba(255,255,255,.18);color:#fff;cursor:pointer}@keyframes toast-in{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:none}}.about-blurb{margin:6px 0 0;font-size:.86rem;line-height:1.9;text-align:center;white-space:pre-line}.about-links{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;flex-wrap:wrap}.about-links button{border:0;background:transparent;color:var(--accent);font-size:.84rem;font-weight:600;text-decoration:underline;cursor:pointer;padding:8px}.about-links .dot{inline-size:4px;block-size:4px;border-radius:50%;background:var(--muted)}.legal-page{min-block-size:100vh;background:var(--bg);color:var(--text)}.legal-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;background:var(--panel);-webkit-border-after:1px solid color-mix(in srgb,var(--muted) 22%,transparent);border-block-end:1px solid color-mix(in srgb,var(--muted) 22%,transparent)}.legal-home{display:inline-flex;align-items:center;gap:8px;color:var(--accent);text-decoration:none;font-weight:700}.legal-home:hover{text-decoration:underline}.legal-lang{border:1px solid color-mix(in srgb,var(--muted) 35%,transparent);background:var(--panel-2);color:var(--text);font-weight:700;font-size:.85rem;padding:6px 10px;border-radius:10px}.legal-body{max-inline-size:780px;margin-inline:auto;padding:22px 18px 64px;text-align:start}.legal-title{font-size:1.5rem;font-weight:800;margin:6px 0 18px}.tour-overlay{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;background:var(--bg);color:var(--text);overflow:hidden}.tour-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 18px 4px}.tour-top-start{gap:8px;min-block-size:34px}.tour-lang,.tour-top-start{display:inline-flex;align-items:center}.tour-lang{position:relative;gap:6px}.tour-lang-btn{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--accent);font-weight:700;font-size:.9rem;cursor:pointer;padding:6px;border-radius:10px}.tour-lang-btn:hover{background:var(--panel-2)}.tour-lang-menu{position:absolute;inset-block-start:calc(100% + 6px);inset-inline-start:0;z-index:5;display:flex;flex-direction:column;min-inline-size:92px;background:var(--panel);border:1px solid color-mix(in srgb,var(--muted) 25%,transparent);border-radius:12px;box-shadow:0 8px 22px rgb(0 0 0/18%);overflow:hidden}.tour-lang-menu button{border:0;background:transparent;color:var(--text);font-weight:700;font-size:.9rem;padding:10px 14px;text-align:start;cursor:pointer}.tour-lang-menu button.selected{color:var(--accent)}.tour-icon-btn{display:inline-flex;align-items:center;justify-content:center;inline-size:34px;block-size:34px;border-radius:50%;background:var(--panel-2)}.tour-icon-btn,.tour-skip{border:0;color:var(--accent);cursor:pointer}.tour-skip{background:transparent;font-weight:700;font-size:.95rem;padding:8px}.tour-page{flex:1 1;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;padding:8px 22px 16px}.tour-appicon img{border-radius:24px;display:block}.tour-page-icon{display:inline-flex;align-items:center;justify-content:center;inline-size:84px;block-size:84px;border-radius:50%;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.tour-title{font-size:1.35rem;font-weight:800;margin:0}.tour-body{font-size:.86rem;line-height:1.8;color:var(--muted);margin:0;max-inline-size:620px}.tour-features{display:flex;flex-direction:column;gap:10px;inline-size:100%;max-inline-size:620px;-webkit-margin-before:6px;margin-block-start:6px}.tour-feature{display:flex;align-items:flex-start;gap:12px;text-align:start;background:var(--panel);border:1px solid color-mix(in srgb,var(--muted) 18%,transparent);border-radius:14px;padding:12px}.tour-feature-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;inline-size:38px;block-size:38px;border-radius:50%;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.tour-feature-text{display:flex;flex-direction:column;gap:2px}.tour-feature-text b{font-size:.9rem}.tour-feature-text span{font-size:.78rem;color:var(--muted);line-height:1.7}.tour-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px calc(12px + env(safe-area-inset-bottom));background:var(--panel);-webkit-border-before:1px solid color-mix(in srgb,var(--muted) 18%,transparent);border-block-start:1px solid color-mix(in srgb,var(--muted) 18%,transparent)}.tour-btn{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:12px;padding:10px 16px;background:var(--accent);color:#fff;font-weight:700;font-size:.85rem;cursor:pointer}.tour-btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--accent)}.tour-btn.ghost:disabled{opacity:.35;cursor:default}.tour-btn.start{background:#01875f}.tour-dots{display:inline-flex;align-items:center;gap:6px}.tour-dot{inline-size:7px;block-size:7px;border-radius:50%;background:color-mix(in srgb,var(--muted) 45%,transparent)}.tour-dot.active{background:var(--accent);inline-size:10px;block-size:10px}.legal{margin:0 0 12px;font-size:.82rem;line-height:1.95;text-align:start;white-space:pre-line}.legal-heading{margin:16px 0 8px;font-size:.9rem;font-weight:800;text-align:start}.legal-link{display:block;margin-top:4px;text-align:center;font-size:.84rem;font-weight:600;text-decoration:underline}:root[data-theme=dark]{color-scheme:dark;--bg:#121212;--panel:#1e1e1e;--panel-2:#262626;--border:#3f3f46;--text:#f4f4f5;--muted:#a1a1aa;--shadow:0 1px 2px rgba(0,0,0,0.4),0 6px 18px rgba(0,0,0,0.35)}:root[data-theme=dark] .tile-grid.settings-tiles .tile svg{color:#fff}:root[data-theme=blue]{--accent:#2196f3;--accent-dark:#1976d2;--accent-soft:#e3f2fd;--accent-pale:#90caf9;--bg:#ebf3fe;--danger:#c62828}:root[data-theme=blue] .plan-badge{background:#bbdefb;color:#0d47a1}:root[data-theme=blue] .bottom-nav{inset-inline:48px;height:62px;align-items:center;padding-bottom:0;border:1px solid rgba(255,255,255,.7);border-radius:24px;background:rgba(255,255,255,.6);backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);box-shadow:0 10px 24px rgba(0,0,0,.12);overflow:hidden;bottom:calc(4px + env(safe-area-inset-bottom, 0px))}:root[data-theme=blue] .nav-item{min-height:62px;padding:6px 4px;color:rgba(25,118,210,.7);font-size:.63rem;font-weight:400}:root[data-theme=blue] .nav-item.active{color:#0d47a1;font-size:.72rem;font-weight:800}:root[data-theme=blue] .nav-item.active>svg{background:transparent}:root[data-theme=blue] .app-topbar .btn.primary{color:#0d47a1}:root[data-theme=blue] .app-topbar .btn.primary:hover{background:#bbdefb}:root[data-theme=blue] .app-main{padding-bottom:calc(80px + env(safe-area-inset-bottom, 0px))}.section.center{text-align:center}.section.tight{margin:0 0 8px;font-size:.9rem}.filter-block{margin-bottom:14px}.filter-title{margin:0 0 6px;font-size:.92rem;font-weight:800}.chip-rail{display:flex;gap:8px;overflow-x:auto;padding:2px 0;scrollbar-width:none}.chip-rail::-webkit-scrollbar{display:none}.chip-rail .chip{flex:0 0 auto;padding:7px 14px}.chip.small{padding:3px 8px;border-radius:6px;font-size:.7rem;font-weight:700;cursor:default}.metric-row{display:flex;align-items:flex-start;gap:16px}.metric{flex:1 1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}.metric-row.four{gap:6px}.metric.small{gap:2px}.metric-label{font-size:.7rem;font-weight:700;color:var(--muted);text-align:center}.metric-value{font-size:1.55rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.metric.small b{font-size:.9rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.metric-track{inline-size:100%;block-size:6px;background:#eceff1;overflow:hidden}.metric-fill,.metric-track{display:block;border-radius:3px}.metric-fill{block-size:100%}.metric-divider{block-size:1px;background:var(--border);margin:14px 0}.column-chart{display:flex;align-items:flex-end;justify-content:space-evenly;gap:4px;min-block-size:140px;padding:8px;border-radius:12px;background:var(--panel-2)}.column-chart.tall .col-track{block-size:96px}.col{flex:1 1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:transparent;color:inherit;cursor:pointer;padding:4px 0}.col-count{font-size:.66rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.col-track{display:flex;align-items:flex-end;inline-size:22px;block-size:74px;background:rgba(128,128,128,.12);overflow:hidden}.col-fill,.col-track{border-radius:4px 4px 0 0}.col-fill{display:block;inline-size:100%}.col-label{display:inline-flex;align-items:center;justify-content:center;min-inline-size:24px;block-size:24px;padding:0 5px;border:1px solid transparent;border-radius:999px;background:var(--panel);font-size:.7rem;font-weight:700;white-space:nowrap}.two-cards{display:flex;gap:12px;align-items:flex-start;margin:16px 0 18px}.two-cards>.card{flex:1 1;min-width:0}.rank-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 0;font-size:.84rem}.section-note{font-size:.66rem;font-weight:600;color:var(--muted)}.rank-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.q-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.q-stats{margin:0 0 4px;font-size:.82rem;font-weight:700}.modal-backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(0,0,0,.45)}.modal-card{inline-size:min(420px,100%);max-block-size:80vh;overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.grade-line{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:.84rem}.grade-line:last-of-type{border-bottom:0}.grade-dot{flex:0 0 auto;inline-size:12px;block-size:12px;border-radius:50%}.grade-range{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.grade-counts{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.grade-counts .chip{gap:6px}.essay-summary{display:flex;gap:16px;margin:8px 0 4px}.essay-summary .metric.small{flex:1 1;align-items:flex-start}.essay-summary b{font-size:.95rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.essay-row{display:flex;align-items:center;gap:10px;inline-size:100%;border:0;background:transparent;color:inherit;padding:5px 4px;border-radius:6px;cursor:pointer}.essay-row:disabled{cursor:default}.essay-pct{flex:0 0 44px;font-size:.72rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.essay-track{flex:1 1;min-width:0;block-size:10px;border-radius:5px;background:rgba(128,128,128,.12);overflow:hidden}.essay-fill{display:block;block-size:100%;border-radius:5px}.essay-score{flex:0 0 48px;display:inline-flex;align-items:center;justify-content:center;block-size:24px;border-radius:999px;background:rgba(128,128,128,.18);font-size:.72rem;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.essay-score.on{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.drill-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;font-size:.86rem}.drill-who{display:flex;flex-direction:column;gap:2px;flex:1 1;min-width:0}.drill-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drill-meta{font-size:.7rem;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.drill-score{flex:0 0 auto;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.drill-row .grow{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remedial-card{background:var(--panel-2);border:1px solid var(--border);border-radius:12px;padding:12px;margin:10px 0}.remedial-card h3{margin:0 0 8px;font-size:.9rem;font-weight:800;color:var(--accent)}.remedial-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.remedial-row .remedial-check{flex:0 0 auto;width:20px;height:20px}.remedial-row .remedial-text{flex:1 1 auto;min-width:0}.remedial-two{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.remedial-radios{display:flex;flex-wrap:wrap;gap:12px}.remedial-radio,.remedial-sign-toggle{display:flex;align-items:center;gap:6px;font-size:.85rem;cursor:pointer}.remedial-sign-toggle{margin:8px 0 2px;font-weight:600}.remedial-add{width:100%;justify-content:center;margin-top:8px}.remedial-actions{display:flex;gap:8px;margin-top:12px}.remedial-actions .btn{flex:1 1;justify-content:center;font-size:.8rem}