:root{--font:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--mono:ui-monospace, "SF Mono", Consolas, "Cascadia Mono", monospace;--bg:#f5f6f8;--surface:#fff;--surface-2:#f7f8fa;--surface-3:#eef0f3;--line:#e5e7eb;--line-strong:#cfd4dc;--text:#17202b;--text-2:#4a5462;--text-3:#6a7380;--primary:#2b50d8;--primary-hover:#2342b8;--primary-ink:#1f3ea8;--primary-soft:#eef2fe;--primary-line:#cdd7fb;--success:#0e7a51;--success-soft:#e7f6ee;--danger:#c23a2c;--danger-soft:#fdf0ee;--danger-line:#f2c9c2;--warning:#9a5800;--warning-soft:#fff4e2;--radius-s:8px;--radius:12px;--radius-l:18px;--shadow-1:0 1px 2px #1018280a, 0 1px 3px #1018280d;--shadow-2:0 18px 40px -18px #10182838, 0 2px 6px #1018280a;--ring:0 0 0 3px #2b50d838;font-family:var(--font);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;letter-spacing:-.01em}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);word-break:keep-all;overflow-wrap:anywhere;margin:0;line-height:1.6}button,input,select,textarea{font:inherit;letter-spacing:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}h1,h2,h3,h4,h5{color:var(--text);letter-spacing:-.025em;line-height:1.35}img{max-width:100%}:focus-visible{outline-offset:2px;outline:3px solid #2b50d873}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--surface);color:var(--primary-ink);border-radius:var(--radius-s);box-shadow:var(--shadow-2);z-index:30;padding:10px 16px;font-weight:600;position:absolute;top:-80px;left:16px}.skip-link:focus{top:10px}.app{flex-direction:column;min-height:100svh;display:flex}.header{z-index:20;-webkit-backdrop-filter:saturate(160%)blur(12px);border-bottom:1px solid var(--line);background:#ffffffdb;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:12px;max-width:1200px;height:64px;margin:0 auto;padding:0 24px;display:flex}.brand{letter-spacing:-.035em;color:var(--text);white-space:nowrap;align-items:center;gap:10px;font-size:1.12rem;font-weight:800;display:inline-flex}.brand-mark{flex:none;width:30px;height:30px}.header-actions{align-items:center;gap:10px;min-width:0;display:flex}.header-note{color:var(--text-3);font-size:.875rem}.role-chip{background:var(--primary-soft);height:28px;color:var(--primary-ink);white-space:nowrap;border-radius:999px;align-items:center;padding:0 10px;font-size:.8rem;font-weight:700;display:inline-flex}.role-chip.role-admin{background:var(--text);color:#fff}.role-chip.role-guardian{background:var(--success-soft);color:var(--success)}.header-button{border:1px solid var(--line-strong);background:var(--surface);min-height:44px;color:var(--text-2);white-space:nowrap;border-radius:10px;padding:0 14px;font-size:.875rem;font-weight:600}.header-button:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.header-button:disabled{opacity:.6}.main{flex:1;width:100%;margin:0 auto}.footer{border-top:1px solid var(--line);background:var(--surface)}.footer-inner{max-width:1200px;color:var(--text-3);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:0 auto;padding:18px 24px 22px;font-size:.8125rem;display:flex}.main-guest{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:72px;max-width:1120px;padding:72px 24px 80px;display:grid}.eyebrow{background:var(--primary-soft);color:var(--primary-ink);border-radius:999px;align-items:center;margin:0;padding:6px 12px;font-size:.85rem;font-weight:700;display:inline-flex}h1{letter-spacing:-.045em;margin:20px 0 18px;font-size:clamp(2.3rem,4.4vw,3.5rem);font-weight:800;line-height:1.22}h1 .accent{color:var(--primary)}.intro{color:var(--text-2);margin:0;font-size:1.05rem;line-height:1.8}.steps{gap:10px;margin:36px 0 0;padding:0;list-style:none;display:grid}.steps li{background:var(--surface);border:1px solid var(--line);border-radius:14px;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.step-number{background:var(--primary-soft);width:28px;height:28px;color:var(--primary-ink);font-variant-numeric:tabular-nums;border-radius:50%;flex:none;place-items:center;font-size:.85rem;font-weight:800;display:grid}.steps strong{font-size:.98rem;font-weight:700}.steps p{color:var(--text-3);margin:2px 0 0;font-size:.875rem;line-height:1.6}.access-card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-2);border-radius:22px;min-width:0;padding:32px 30px 26px}.label{background:var(--warning-soft);height:26px;color:var(--warning);border-radius:999px;align-items:center;padding:0 10px;font-size:.78rem;font-weight:700;display:inline-flex}h2{letter-spacing:-.035em;margin:14px 0 8px;font-size:1.55rem;font-weight:800;line-height:1.4}.card-description{color:var(--text-2);margin:0;font-size:.95rem;line-height:1.75}.test-notice{color:var(--text-3);margin:10px 0 0;font-size:.82rem;line-height:1.6}.status{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);align-items:flex-start;gap:12px;margin:24px 0 18px;padding:16px;display:flex}.status-icon{border:1px solid var(--line-strong);width:22px;height:22px;color:var(--text-3);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.status strong{font-size:.9rem;line-height:1.5;display:block}.status p{color:var(--text-3);margin:4px 0 0;font-size:.85rem;line-height:1.6}.status-error{border-color:var(--danger-line);background:var(--danger-soft)}.access-card .note{text-align:center}.access-card .card-description+.field-hint{margin-top:6px}.access-card>.text-button{margin:10px auto 0;display:flex}.button{border-radius:var(--radius);background:var(--primary);color:#fff;border:0;justify-content:center;align-items:center;width:100%;min-height:50px;padding:0 18px;font-size:1rem;font-weight:700;display:inline-flex}.button:hover:not(:disabled){background:var(--primary-hover)}.button:disabled{cursor:default;background:#9aa8d6}.text-button{min-height:44px;color:var(--primary-ink);text-align:center;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:.9rem;font-weight:600;display:inline-flex}.text-button:hover:not(:disabled){background:var(--primary-soft)}.text-button:disabled{opacity:.5}.text-button[aria-pressed=true]{background:var(--primary-soft);color:var(--primary-ink);box-shadow:inset 0 0 0 1px var(--primary-line)}.portal button:not(.text-button):not(.button):not(.header-button){border:1px solid var(--line-strong);background:var(--surface);min-height:44px;color:var(--text);border-radius:10px;justify-content:center;align-items:center;padding:0 16px;font-size:.925rem;font-weight:600;display:inline-flex}.portal button:not(.text-button):not(.button):not(.header-button):hover:not(:disabled){background:var(--surface-2);border-color:#b9c0cb}.portal button:not(.text-button):not(.button):disabled{opacity:.5}.portal button:not(.text-button):not(.button):not(.header-button).button-primary{background:var(--primary);border-color:var(--primary);color:#fff}.portal button:not(.text-button):not(.button):not(.header-button).button-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.segmented{background:var(--surface-3);border-radius:13px;gap:4px;margin:16px 0 4px;padding:4px;display:flex}.segmented button{min-height:40px;color:var(--text-3);background:0 0;border:0;border-radius:10px;flex:1;font-size:.925rem;font-weight:700}.segmented button:hover:not(:disabled){color:var(--text)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.segmented button:disabled{opacity:.55}.auth-form{gap:16px;min-width:0;margin-top:18px;display:grid}.field{min-width:0;color:var(--text);gap:7px;font-size:.9rem;font-weight:600;display:grid}.field label{font-size:.9rem;font-weight:600}.field input,.field select,.field textarea,.omr-item input[type=text],.omr-confirm input:not([type=checkbox]),.grading-panel input[type=text],#issued-code{border:1px solid var(--line-strong);background:var(--surface);width:100%;min-width:0;min-height:48px;color:var(--text);border-radius:11px;padding:11px 14px;font-size:1rem;font-weight:400;line-height:1.4}.field textarea{resize:vertical;line-height:1.65}.field select{appearance:none;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%236a7380' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E") no-repeat right 12px center / 18px;padding-right:40px}.field input:hover:not(:disabled),.field select:hover:not(:disabled),.field textarea:hover:not(:disabled){border-color:#b4bcc8}.field input:focus,.field select:focus,.field textarea:focus,.omr-item input[type=text]:focus,.omr-confirm input:focus,.grading-panel input[type=text]:focus{border-color:var(--primary);box-shadow:var(--ring);outline:none}.field input:disabled,.field select:disabled,.field textarea:disabled{background:var(--surface-2);color:var(--text-3)}.field input[type=file]{white-space:normal;max-width:100%;min-height:auto;padding:10px;font-size:.9rem}input[type=checkbox],input[type=radio]{accent-color:var(--primary)}.password-field{position:relative}.password-field input{padding-right:70px}.reveal{min-width:52px;min-height:36px;color:var(--text-2);background:0 0;border:0;border-radius:8px;padding:0 10px;font-size:.85rem;font-weight:600;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.reveal:hover:not(:disabled){background:var(--surface-3)}.field-hint{color:var(--text-3);margin:0;font-size:.82rem;font-weight:400;line-height:1.65}.check-field{color:var(--text);align-items:flex-start;gap:10px;font-size:.925rem;font-weight:500;line-height:1.6;display:flex}.check-field input{flex:0 0 18px;width:18px;height:18px;margin:3px 0 0}.form-message{border-radius:var(--radius);border:1px solid var(--primary-line);background:var(--primary-soft);color:var(--primary-ink);margin:0;padding:12px 14px;font-size:.9rem;font-weight:500;line-height:1.7}.form-error{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-line)}p.form-error:not(.form-message){border-radius:10px;margin:0;padding:10px 12px;font-size:.9rem}.form-success{background:var(--success-soft);color:var(--success);border-color:#bfe3cf}.form-info{background:var(--primary-soft);color:var(--primary-ink)}.note{color:var(--text-3);margin:0;font-size:.875rem;line-height:1.7}.help{border-top:1px solid var(--line);color:var(--text-2);margin-top:16px;font-size:.875rem;line-height:1.75}.help summary{cursor:pointer;min-height:48px;color:var(--text-2);justify-content:space-between;align-items:center;gap:8px;font-weight:600;list-style:none;display:flex}.help summary::-webkit-details-marker{display:none}.help summary:after{content:"";border-right:2px solid var(--text-3);border-bottom:2px solid var(--text-3);flex:none;width:9px;height:9px;transition:transform .15s;transform:rotate(45deg)translateY(-3px)}.help[open] summary:after{transform:rotate(-135deg)translateY(-2px)}.help p{margin:0 0 12px}.portal .help{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-top:0;padding:0 16px}.portal .help[open]{padding-bottom:16px}.portal .help .admin-form{margin:4px 0 0}.main-workspace{max-width:1200px;padding:28px 24px 72px}.main-student,.main-guardian{max-width:880px}.workspace{min-width:0}.workspace-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:10px 16px;margin-bottom:20px;display:flex}.workspace-eyebrow{color:var(--text-3);margin:0 0 2px;font-size:.85rem}.workspace-head h2{margin:0;font-size:1.7rem}.test-badge{background:var(--warning-soft);height:28px;color:var(--warning);white-space:nowrap;border-radius:999px;align-items:center;padding:0 11px;font-size:.78rem;font-weight:700;display:inline-flex}.workspace>.form-message{margin-bottom:16px}.portal{text-align:left;flex-direction:column;gap:16px;min-width:0;margin:0;display:flex}.portal>p,.portal>h3,.portal>h4,.portal>ul{margin:0}.portal>.text-button,.portal>button{align-self:flex-start}.portal-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.portal-heading h3,.portal-heading h4{margin:0}.portal-heading h3{font-size:1.15rem;font-weight:800}.portal-heading h4{font-size:1.02rem;font-weight:700}.section-head{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;display:flex}.section-head h3{margin:0}.section-head .text-button{margin-left:auto}.count{background:var(--surface-3);min-width:24px;height:22px;color:var(--text-2);font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;padding:0 7px;font-size:.78rem;font-weight:700;display:inline-flex}.chip{background:var(--surface-3);height:24px;color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;padding:0 9px;font-size:.78rem;font-weight:700;display:inline-flex}.pill{white-space:nowrap;border-radius:999px;align-items:center;height:24px;padding:0 9px;font-size:.78rem;font-weight:700;display:inline-flex}.pill-open{background:var(--success-soft);color:var(--success)}.pill-upcoming{background:var(--surface-3);color:var(--text-3)}.pill-closed{background:var(--surface-3);color:var(--text-2)}.pill-submitted{background:var(--primary-soft);color:var(--primary-ink)}.empty-state{border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface-2);color:var(--text-3);text-align:center;margin:0;padding:22px 18px;font-size:.9rem;line-height:1.7}div.empty-state{justify-items:center;gap:8px;display:grid}.learner{gap:20px}.profile-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);box-shadow:var(--shadow-1);align-items:center;gap:16px;padding:20px 22px;display:flex}.avatar{background:linear-gradient(135deg, var(--primary) 0%, #5b7cf0 100%);color:#fff;border-radius:16px;flex:none;place-items:center;width:52px;height:52px;font-size:1.3rem;font-weight:800;display:grid}.profile-body{flex:1;gap:8px;min-width:0;display:grid}.portal-student{letter-spacing:-.03em;margin:0;font-size:1.2rem;font-weight:800}.portal-classes{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.portal-classes li{background:var(--primary-soft);border-radius:14px;flex-wrap:wrap;align-items:center;gap:0 6px;min-height:28px;padding:3px 11px;display:inline-flex}.portal-classes strong{color:var(--primary-ink);white-space:nowrap;font-size:.84rem}.portal-classes span{color:var(--text-3);font-size:.78rem}.profile-card .field select{min-height:44px}.dash-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);min-width:0;box-shadow:var(--shadow-1);flex-direction:column;gap:14px;padding:20px 22px;display:flex}.dash-section>p{margin:0}.account-section{flex-flow:wrap;justify-content:space-between;align-items:center;margin-top:20px;padding:14px 18px 14px 22px}.account-section>.account-title{color:var(--text-2);margin:0;font-size:.95rem;font-weight:700}.account-section>.auth-form{flex-basis:100%;margin-top:4px}.account-section>.text-button{align-self:center}.dash-section .dash-section,.admin-panel .dash-section{box-shadow:none;background:0 0;border:0;padding:0}.section-head h3{font-size:1.1rem}.portal-notices{gap:12px;display:grid}.portal-notice{background:var(--surface);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:14px;margin:0;padding:16px 18px}.portal-notice>p{color:var(--text-2);margin:0 0 6px;font-size:.9rem}.portal-notice>:last-child{margin-bottom:0}.portal-notice h4{margin:6px 0 8px;font-size:1.05rem;font-weight:700}.portal-notice h5{margin:0 0 6px;font-size:1rem}.portal-notice ul{color:var(--text-2);margin:8px 0;padding-left:18px;font-size:.9rem;line-height:1.8}.notice-class{color:var(--text-3);align-items:center;gap:8px;font-size:.82rem;display:flex}.notice-body{white-space:pre-wrap;color:var(--text-2);margin:0;font-size:.95rem;line-height:1.75}.task-list{grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));gap:12px;display:grid}.task-card{flex-direction:column;gap:4px;display:flex}.task-card h4{margin:4px 0 0}.task-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.task-due{color:var(--text-3);font-size:.875rem}.portal .task-card button{width:100%;margin-top:10px}.week-group{gap:8px;display:grid}.week-group+.week-group{margin-top:6px}.week-title{align-items:baseline;gap:8px;margin:0;font-size:.9rem;display:flex}.week-title strong{color:var(--text);font-weight:800}.week-title span{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:.82rem}.video-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.video-card{border:1px solid var(--line);background:var(--surface);color:inherit;border-radius:14px;align-items:center;gap:14px;min-height:64px;padding:14px 16px;text-decoration:none;display:flex}.video-card:hover{border-color:var(--primary-line);background:var(--primary-soft)}.video-card .play{background:#ff3b30;border-radius:12px;flex:none;place-items:center;width:40px;height:40px;display:grid}.video-card .play svg{fill:#fff;width:22px;height:22px}.video-body{flex:1;gap:3px;min-width:0;display:grid}.video-meta{color:var(--text-3);flex-wrap:wrap;align-items:center;gap:6px;font-size:.8rem;display:flex}.video-title{color:var(--text);font-weight:700;line-height:1.45}.video-note{color:var(--text-2);white-space:pre-wrap;font-size:.85rem;line-height:1.55}.video-open{color:var(--primary-ink);white-space:nowrap;flex:none;font-size:.82rem;font-weight:700}.switch-card{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(0,260px) auto;align-items:end;gap:12px 16px;padding:16px 18px;display:grid}.switch-card.on{background:var(--success-soft);border-color:#bfe3cf}.switch-title{margin:0 0 2px;font-weight:800}.switch-card .field input{min-height:44px}.video-check{padding-left:2px}.video-check.ok{color:var(--success);font-weight:600}.pill-video-published{background:var(--success-soft);color:var(--success)}.pill-video-draft{background:var(--surface-3);color:var(--text-3)}.pill-video-withdrawn{background:var(--danger-soft);color:var(--danger)}a.text-button{text-decoration:none}@media (width<=760px){.switch-card{grid-template-columns:minmax(0,1fr);align-items:stretch}}@media (width<=600px){.video-open{display:none}.video-card{padding:12px 14px}}.backup-list{border:1px solid var(--line);border-radius:14px;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.backup-list li{background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:12px 16px;display:flex}.backup-list li+li{border-top:1px solid var(--line)}.backup-when{font-variant-numeric:tabular-nums;font-weight:700}.backup-meta{color:var(--text-3);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.85rem}.admin-shell{grid-template-columns:228px minmax(0,1fr);align-items:start;gap:24px;display:grid}.side-nav{overscroll-behavior:contain;scrollbar-width:thin;align-content:start;gap:18px;min-width:0;max-height:calc(100vh - 104px);padding:2px 4px 12px 2px;display:grid;position:sticky;top:88px;overflow-y:auto}.side-group{gap:2px;display:grid}.side-group-title{color:var(--text-3);letter-spacing:.02em;margin:0 0 4px;padding:0 12px;font-size:.75rem;font-weight:700}.side-nav button{width:100%;min-height:44px;color:var(--text-2);text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:0 12px;font-size:.925rem;font-weight:600;display:flex}.side-nav button:hover{background:var(--surface-3);color:var(--text)}.side-nav button[aria-pressed=true]{background:var(--surface);color:var(--primary-ink);box-shadow:var(--shadow-1), inset 0 0 0 1px var(--line)}.side-nav .icon{flex:none;width:20px;height:20px}.admin-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);min-width:0;box-shadow:var(--shadow-1);padding:26px 28px 30px}.admin-panel>.portal>h3,.admin-panel>.portal>.portal-heading h3{letter-spacing:-.035em;font-size:1.35rem;font-weight:800}.admin-panel h4{margin:8px 0 0;font-size:1.02rem;font-weight:700}.admin-panel .portal>h4{margin-top:8px}.admin-panel>.portal>.note:first-of-type{margin-top:-6px}.admin-form{margin:0}.admin-form fieldset{border:1px solid var(--line);background:var(--surface);border-radius:14px;gap:14px;min-width:0;margin:0;padding:18px 20px 20px;display:grid}.admin-form legend{letter-spacing:-.02em;margin-left:-6px;padding:0 6px;font-size:1rem;font-weight:800}.admin-form .button{justify-self:start;width:auto;min-height:46px;padding:0 22px;font-size:.95rem}.admin-form fieldset:disabled{opacity:.7}.library-controls{flex-wrap:wrap;gap:8px;margin:0;display:flex}.library-controls .text-button{flex:none}.admin-portal>.text-button{margin-top:-8px}.pdf-library .pdf-question-list{grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.pdf-question-list li{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-wrap:anywhere;color:var(--text-2);gap:6px;padding:14px;font-size:.875rem;display:grid}.pdf-question-list li .check-field{color:var(--text);font-weight:700}.pdf-question-list li .text-button{justify-self:start;margin-left:-8px}.question-chapter{color:var(--text-3);font-size:.82rem}.source-pages{overflow-wrap:anywhere;margin:0;font-size:.85rem}.source-pages div{margin:8px 0}.source-pages dt{font-weight:700}.source-pages dd{color:var(--text-2);margin:2px 0}.pdf-asset-image{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);margin:0;padding:12px}.pdf-asset-image img{background:#fff;border-radius:6px;max-width:100%;height:auto;margin:auto;display:block}.pdf-asset-image figcaption{color:var(--text-3);overflow-wrap:anywhere;margin-top:8px;font-size:.8rem}@media (width>=800px){.pdf-library .source-pages{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}}.filter-row{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,180px);gap:12px;display:grid}.tag-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.type-chip{background:var(--primary-soft);color:var(--primary-ink);white-space:normal;height:auto;min-height:24px;padding:2px 9px}.tag-empty{color:var(--text-3);font-size:.78rem}.load{color:var(--text-2);align-items:center;gap:6px;font-size:.78rem;font-weight:700;display:inline-flex}.load-dots{gap:2px;display:inline-flex}.load-dots i{background:var(--surface-3);width:7px;height:7px;box-shadow:inset 0 0 0 1px var(--line-strong);border-radius:50%}.load-dots i.on{background:var(--primary);box-shadow:none}.load-4 .load-dots i.on{background:#7c4ddb}.load-picker{flex-wrap:wrap;gap:6px;display:flex}.load-picker label{position:relative}.load-picker input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.load-picker span{border:1px solid var(--line-strong);background:var(--surface);min-height:40px;color:var(--text-2);border-radius:999px;align-items:center;padding:0 12px;font-size:.85rem;font-weight:600;display:inline-flex}.load-picker input:checked+span{background:var(--primary);border-color:var(--primary);color:#fff}.load-picker input:focus-visible+span{box-shadow:var(--ring)}.load-picker input:disabled+span{opacity:.55}.bulk-scope{flex-wrap:wrap;gap:8px 18px;margin:4px 0 12px;font-size:.9rem;display:flex}.bulk-scope label{align-items:center;gap:6px;min-height:36px;display:inline-flex}.tag-editor .field>span{font-size:.9rem;font-weight:600}@media (width<=760px){.filter-row{grid-template-columns:minmax(0,1fr)}}.type-chip.secondary{background:var(--surface-3);color:var(--text-2)}.rating-chip{background:var(--surface-2);color:var(--text-2);border:1px solid var(--line)}.source-note{font-size:.8rem;display:block}.source-panel .admin-form{margin-top:8px}.taxonomy-tree,.taxonomy-tree ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.taxonomy-tree ul{border-left:2px solid var(--line);margin:4px 0 0 10px;padding-left:12px}.taxonomy-tree li{gap:6px;min-width:0;display:grid}.taxonomy-tree li.retired>.taxonomy-row strong{color:var(--text-3);text-decoration:line-through}.taxonomy-row{background:var(--surface);overflow-wrap:anywhere;border-radius:10px;flex-wrap:wrap;align-items:center;gap:4px 8px;min-height:40px;padding:4px 8px;display:flex}.taxonomy-row:hover{background:var(--surface-2)}.tax-level{color:var(--text-3);flex:none;min-width:3.4em;font-size:.72rem;font-weight:700}.tax-actions{flex-wrap:wrap;gap:0 2px;margin-left:auto;display:inline-flex}.tax-actions .text-button{min-height:32px;padding:0 8px;font-size:.82rem}.inline-add{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.inline-add input{border:1px solid var(--line-strong);min-width:0;min-height:42px;font:inherit;background:var(--surface);color:var(--text);border-radius:10px;flex:180px;padding:0 12px}.inline-add .button{width:auto;min-height:42px;padding:0 18px}.master-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.taxonomy-toolbar{align-items:center;gap:8px 16px}.master-list .occurrences{gap:2px;margin:0;padding:0 0 0 26px;font-size:.84rem;list-style:none;display:grid}.master-list .occurrences li{background:0 0;border:0;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:0;display:flex}.answer-chip{background:var(--surface-2);color:var(--text-2);border:1px solid var(--line)}.answer-chip-warn{background:var(--warning-soft);color:var(--warning);border-color:#0000}.solution-chip{background:var(--success-soft);color:var(--success)}.solution-chip-none{background:var(--surface-3);color:var(--text-3)}.omr-toolbar{justify-content:space-between}.back-button{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%231f3ea8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5l-5 5 5 5'/%3E%3C/svg%3E") 9px/18px no-repeat;padding-left:30px}.omr-head h3{margin:0 0 4px;font-size:1.3rem;font-weight:800}.omr-item{border:1px solid var(--line);background:var(--surface);border-radius:14px;min-width:0;margin:0;padding:16px 18px 18px}.omr-item legend{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 12px;max-width:100%;margin-left:-8px;padding:0 8px;font-size:.95rem;font-weight:700;display:flex}.omr-item>label{max-width:320px;color:var(--text-2);gap:6px;font-size:.875rem;font-weight:600;display:grid}.omr-item input[type=text]{font-variant-numeric:tabular-nums;font-size:1.1rem}.omr-integer{align-items:flex-end;gap:8px;display:flex}.omr-integer label{max-width:320px;color:var(--text-2);flex:1;gap:6px;font-size:.875rem;font-weight:600;display:grid}.portal button:not(.text-button):not(.button):not(.header-button).sign-toggle{min-width:48px;min-height:48px;padding:0;font-size:1.2rem;font-weight:700}.omr-item:disabled{opacity:.85}.omr-problem{border:1px solid var(--line);background:#fff;border-radius:8px;width:auto;max-width:100%;height:auto;margin:8px 0 16px;display:block}.omr-choice{flex-wrap:wrap;align-items:center;gap:10px 12px;display:flex}.omr-choice-label{color:var(--text-2);font-size:.875rem;font-weight:600}.omr-bubbles{gap:8px;display:flex}.bubble{width:44px;height:44px;display:block;position:relative}.bubble input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.bubble span{border:2px solid var(--line-strong);background:var(--surface);width:100%;height:100%;color:var(--text-2);font-variant-numeric:tabular-nums;pointer-events:none;border-radius:50%;place-items:center;font-size:1.05rem;font-weight:700;display:grid}.bubble input:hover+span{border-color:var(--primary);color:var(--primary-ink)}.bubble input:checked+span{background:var(--primary);border-color:var(--primary);color:#fff}.bubble input:focus-visible+span{box-shadow:var(--ring)}.bubble input:disabled{cursor:default}.bubble input:disabled+span{opacity:.6}.bubble input:disabled:checked+span{opacity:1;background:#6d84d9;border-color:#6d84d9}.portal button:not(.text-button):not(.button):not(.header-button).bubble-clear{min-height:44px;color:var(--text-3);background:0 0;border-color:#0000;padding:0 12px;font-size:.85rem}.portal button:not(.text-button):not(.button):not(.header-button).bubble-clear:hover:not(:disabled){background:var(--surface-3);border-color:#0000}.portal button:not(.text-button):not(.button):not(.header-button).bubble-clear:disabled{opacity:.35}.omr-self-check{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.omr-self-check .field-hint{flex-basis:100%;margin:0}.self-check-choices{gap:8px;display:flex}.self-check-choice{min-width:112px;height:44px;display:block;position:relative}.self-check-choice input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.self-check-choice span{border:2px solid var(--line-strong);background:var(--surface);height:100%;color:var(--text-2);pointer-events:none;border-radius:22px;place-items:center;padding:0 16px;font-size:.95rem;font-weight:700;display:grid}.self-check-choice input:hover+span{border-color:var(--primary);color:var(--primary-ink)}.self-check-choice input:checked+span{background:var(--primary);border-color:var(--primary);color:#fff}.self-check-choice input:focus-visible+span{box-shadow:var(--ring)}.self-check-choice input:disabled{cursor:default}.self-check-choice input:disabled+span{opacity:.6}.self-check-choice input:disabled:checked+span{opacity:1;background:#6d84d9;border-color:#6d84d9}.omr-actions{z-index:5;background:linear-gradient(to bottom, #fff0, var(--surface) 14px);gap:8px;padding:16px 0 6px;display:grid;position:sticky;bottom:0}.omr-actions>p{margin:0}.omr{scroll-margin-top:76px}.omr-actions>.field-hint{font-size:.78rem}.omr-bar-hint{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.omr-progress{background:var(--warning-soft);color:var(--warning);font-variant-numeric:tabular-nums}.omr-progress.is-done{background:var(--success-soft);color:var(--success)}.omr-problems{gap:4px;margin:8px 0 12px;display:grid}.omr-problems .omr-problem{cursor:zoom-in;margin:0}.omr-problems>.field-hint{margin:0}.omr-actions button{flex:1;min-width:140px}.omr-confirm,.omr-receipt,.omr-done{background:var(--primary-soft);border:1px solid var(--primary-line);border-radius:14px;gap:8px;margin:0;padding:18px 20px;display:grid}.omr-confirm>p,.omr-receipt>p,.omr-confirm>h4,.omr-receipt>h4,.omr-done>p,.omr-done>h4{margin:0}.omr-receipt{background:var(--success-soft);border-color:#bfe3cf}.omr-receipt h4{color:var(--success)}.omr-done{background:var(--success-soft);border-color:#bfe3cf;gap:4px}.omr-done h4{color:var(--success);align-items:center;gap:8px;font-size:1.15rem;display:flex}.omr-done-mark{background:var(--success);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;font-size:.9rem;display:inline-grid}.omr-done>p{color:var(--text-2);font-size:.9rem}.omr-done-id{color:var(--text-3);font-size:.8rem}.omr-done-id summary{cursor:pointer;width:fit-content}.omr-sheet-toggle{justify-self:start}.review-chips-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;gap:6px;padding:14px 16px;display:grid}.review-chips-card>p{margin:0}.review-chips-title{font-weight:700}.review-chips{flex-wrap:wrap;gap:8px;display:flex}.portal .review-chips button.review-chip:not(.text-button):not(.button){font-variant-numeric:tabular-nums;border-radius:999px;min-width:44px;min-height:44px;padding:0 10px;font-weight:700}.portal .review-chips button.review-chip[aria-pressed=true]:not(.text-button):not(.button),.portal .review-chips button.review-chip[aria-pressed=true]:not(.text-button):not(.button):hover:not(:disabled){background:var(--warning-soft);color:var(--warning);border-color:var(--warning)}.result-item .omr-help{background:0 0;border:0;margin:4px 0 0;padding:0}.omr-confirm label:has(input[type=checkbox]){align-items:flex-start;gap:10px;margin:4px 0;font-weight:500;display:flex}.omr-confirm input[type=checkbox]{flex:none;width:18px;height:18px;margin-top:3px}.omr-confirm .field{margin-top:4px}.receipt-id{overflow-wrap:anywhere;font-family:var(--mono);font-size:.85rem}.result-card{border-top:1px solid var(--line);gap:10px;padding-top:16px;display:grid}.result-card>p{margin:0}.result-score{color:var(--primary-ink);letter-spacing:-.03em;font-size:1.5rem;font-weight:800}.result-item{border-bottom:1px solid var(--line);gap:4px;padding:10px 0;display:grid}.result-item:last-child{border-bottom:0}.result-item p{color:var(--text-2);margin:0;font-size:.925rem}.result-item p.verdict{font-weight:700}.verdict-correct{color:var(--success)!important}.verdict-incorrect{color:var(--danger)!important}.verdict-void{color:var(--warning)!important}.verdict-self-check{color:var(--text-2)!important}.stat-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.stat-tile{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;gap:2px;min-width:0;padding:12px 14px;display:grid}.stat-label{color:var(--text-3);font-size:.78rem;font-weight:700}.stat-value{letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text);font-size:1.25rem;font-weight:800}.stat-value small{color:var(--text-3);margin-left:2px;font-size:.8rem;font-weight:600}.stats-release{margin-top:12px}@media (width<=420px){.stat-tile{padding:10px}.stat-value{font-size:1.1rem}.stat-value small{margin-left:0;display:block}}.grading-panel{border-top:1px solid var(--line);gap:10px;margin-top:14px;padding-top:16px;display:grid}.grading-panel>p{color:var(--text-2);margin:0;font-size:.925rem}.grading-panel ul{color:var(--text-2);margin:0;padding-left:18px;font-size:.9rem;line-height:1.85}.grading-panel li{overflow-wrap:anywhere}.grading-panel label{gap:6px;font-size:.9rem;font-weight:600;display:grid}.grading-panel label:has(input[type=checkbox]){align-items:center;gap:8px;min-height:44px;font-weight:500;display:flex}.grading-panel input[type=checkbox]{width:18px;height:18px}.grading-keys{border:1px solid var(--line);border-radius:14px;gap:10px;min-width:0;margin:4px 0;padding:16px 18px;display:grid}.grading-keys legend{margin-left:-6px;padding:0 6px;font-weight:700}.grading-keys>p{color:var(--text-3);margin:0;font-size:.875rem}.grading-key{gap:4px;display:grid}.omr-confirm .field select{min-height:44px}#issued-code{font-family:var(--mono);letter-spacing:.04em;margin:6px 0}.mfa-secret{overflow-wrap:anywhere;font-family:var(--mono);letter-spacing:.08em;-webkit-user-select:all;user-select:all;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:1.05rem}.admin-panel .note>p{margin:6px 0}.admin-panel div.note{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);color:var(--text-2);padding:14px 16px}@media (width<=960px){.main-guest{grid-template-columns:minmax(0,1fr);gap:36px;max-width:560px;padding:40px 24px 56px}.main-guest .access-card{order:-1}h1{font-size:2.3rem}}@media (width<=860px){.admin-shell{grid-template-columns:minmax(0,1fr);gap:16px}.side-nav{scrollbar-width:none;gap:6px;max-height:none;padding:2px 2px 6px;display:flex;position:static;overflow:auto hidden}.side-nav::-webkit-scrollbar{display:none}.side-group{display:contents}.side-group-title{display:none}.side-nav button{background:var(--surface);width:auto;min-height:40px;box-shadow:inset 0 0 0 1px var(--line);border-radius:999px;flex:none;padding:0 14px}.side-nav button[aria-pressed=true]{background:var(--text);color:#fff;box-shadow:none}.side-nav .icon{width:18px;height:18px}}@media (width<=600px){.header-inner{height:58px;padding:0 16px}.header-note{display:none}.brand{font-size:1.02rem}.brand-mark{width:28px;height:28px}.main-guest{gap:28px;padding:20px 16px 48px}.access-card{border-radius:18px;padding:24px 20px 20px}h1{margin:14px 0;font-size:1.95rem}.wide-only{display:none}h2{font-size:1.4rem}.main-workspace{padding:18px 16px 56px}.workspace-head h2{font-size:1.4rem}.admin-panel{border-radius:16px;padding:18px 16px 22px}.profile-card{flex-wrap:wrap;gap:12px;padding:16px}.profile-card .text-button{margin-left:auto}.dash-section{padding:16px}.portal-notice,.omr-confirm,.omr-receipt,.omr-done,.omr-item{padding:14px}.dash-section.omr{padding:16px 10px}.omr .omr-item{padding:12px 8px}.admin-form fieldset{padding:14px 14px 16px}.admin-form .button{width:100%}.footer-inner{padding:16px}.omr-bubbles{gap:6px}.omr-choice-label{display:none}}@media (prefers-reduced-motion:no-preference){.button,.text-button,.header-button,.segmented button,.side-nav button,.portal button,.bubble span,.field input,.field select,.field textarea{transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}}.source-switch{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);gap:6px;padding:12px 14px;display:grid}.source-preview{color:var(--text-2);gap:2px;margin:0;padding-left:18px;font-size:.86rem;display:grid}.omr-source{color:var(--text-2);font-weight:600}.print-root{z-index:100;background:var(--bg);align-content:start;justify-items:center;gap:16px;padding:20px 16px 48px;display:grid;position:fixed;inset:0;overflow:auto}.print-controls{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);width:min(100%,820px);box-shadow:var(--shadow-1);gap:10px;padding:16px 18px;display:grid}.print-controls h3{outline:none}.print-sheet{color:#111;border:1px solid var(--line);width:min(100%,820px);box-shadow:var(--shadow-1);background:#fff;padding:clamp(16px,4vw,36px)}.print-head{border-bottom:2px solid #111;gap:4px;margin-bottom:18px;padding-bottom:10px;display:grid}.print-brand{color:#444;margin:0;font-size:.8rem}.print-head h2{margin:0;font-size:1.3rem}.print-name{justify-self:end;margin:0;font-size:.95rem}.print-items{gap:22px;margin:0;padding:0;list-style:none;display:grid}.print-item{break-inside:avoid;gap:6px;display:grid}.print-number{margin:0;font-weight:800}.print-source{color:#333;font-size:.85rem;font-weight:600}.print-problem{max-width:100%;height:auto;display:block}@media print{body.printing-sheet{background:#fff}html:has(>body.printing-sheet){background:#fff}body.printing-sheet>:not(.print-root){display:none!important}.print-root{background:#fff;padding:0;display:block;position:static;overflow:visible}.print-root .no-print{display:none!important}.print-sheet{width:100%;box-shadow:none;border:0;padding:0}}.qt{color:var(--text);font-size:.97rem;line-height:1.8}.qt p{margin:0 0 6px}.qt .qt-center{text-align:center}.qt math{font-size:1.06em}.qt-box{clear:both;border:1px solid var(--line-strong);border-radius:8px;margin:6px 0;padding:8px 12px}.qt-box-title{text-align:center;letter-spacing:.3em;margin-bottom:2px;font-weight:700}.qt-fig{margin:4px 0 8px}.qt-fig-right{float:right;max-width:42%;margin:0 0 6px 12px}.qt-fig-canvas{background:#fff;border-radius:6px;max-width:100%;height:auto;display:block}.qt-fig-alt{border:1px dashed var(--line-strong);color:var(--text-3);border-radius:6px;padding:4px 8px;font-size:.85rem;display:inline-block}.qt-choices{clear:both;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:2px 14px;margin:6px 0 0;padding:0;list-style:none;display:grid}.qt-choices-long{grid-template-columns:1fr}.qt-choice-no{color:var(--text-2)}.qt-bad{color:#b4441f}.qt-filters{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.qt-filters button{border:1px solid var(--line);background:var(--surface);min-height:36px;font:inherit;border-radius:999px;padding:6px 12px;font-size:.85rem}.qt-filters button[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff}.qt-list{gap:12px;margin-top:10px;display:grid}.qt-row{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px}.qt-row-head{align-items:center;gap:8px;margin-bottom:8px;display:flex}.qt-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.qt-original img{border:1px solid var(--line);background:#fff;border-radius:8px;max-width:100%}.qt-status-approved{color:#1f6b3a;background:#e3f4e8}.qt-status-checked{background:var(--primary-soft);color:var(--primary)}.qt-status-none{color:#b4441f;background:#fbe9e3}.qt-note{background:#fdf5e6;border-left:3px solid #e0a43a;border-radius:4px;margin:6px 0 0;padding:6px 10px;font-size:.9rem}.qt-note-form{gap:6px;margin-top:8px;display:grid}.qt-import{gap:8px;display:grid}.qt-pager{justify-content:center;align-items:center;gap:12px;margin-top:12px;display:flex}.omr-show-problem{margin:0}.result-note{background:#fdf5e6;border-left:3px solid #e0a43a;border-radius:4px;margin:4px 0 0;padding:6px 10px;font-size:.9rem}@media (width<=760px){.qt-pair{grid-template-columns:1fr}.qt-fig-right{float:none;max-width:100%;margin:4px 0 8px}}.ws-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}@media (width<=1100px){.ws-layout{grid-template-columns:minmax(0,1fr)}}.ws-main{gap:10px;min-width:0;display:grid}.warn-chip{background:var(--warning-soft);color:var(--warning)}.ws-tray{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);box-shadow:var(--shadow-1);gap:10px;padding:14px;display:grid;position:sticky;top:12px}.ws-tray h4{align-items:center;gap:8px;margin:0;display:flex}.ws-count{background:var(--primary);color:#fff;border-radius:999px;place-items:center;min-width:26px;height:22px;padding:0 7px;font-size:.78rem;display:inline-grid}.ws-tray-list{gap:6px;max-height:58vh;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.ws-tray-list li{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-s);grid-template-columns:22px minmax(0,1fr) 54px 28px 28px 28px;align-items:center;gap:4px;padding:4px 6px;font-size:.84rem;display:grid}.ws-tray-no{color:var(--text-3);text-align:center;font-weight:800}.ws-tray-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ws-points{width:100%;min-width:0;font:inherit;border:1px solid var(--line);text-align:right;background:var(--surface);border-radius:6px;padding:3px 6px}.icon-button{border:1px solid var(--line);background:var(--surface);width:28px;height:28px;color:var(--text-2);font:inherit;cursor:pointer;border-radius:6px;padding:0}.icon-button:disabled{opacity:.35;cursor:default}.ws-segment{flex-wrap:wrap;gap:6px;display:flex}.ws-segment button{border:1px solid var(--line);background:var(--surface);min-height:36px;font:inherit;color:var(--text);cursor:pointer;border-radius:999px;padding:6px 14px;font-weight:600}.ws-segment button[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff}.ws-print .print-controls{width:min(100%,900px)}.ws-sheet{--ws-accent:#127a7c;--ws-dark:#0d4f51;--ws-soft:#eaf4f4;--ws-line:#d3dcdc;--ws-ink:#16191d;color:var(--ws-ink);-webkit-print-color-adjust:exact;print-color-adjust:exact;justify-items:center;gap:18px;display:grid}.ws-page{page:worksheet;background:#fff;flex-direction:column;width:210mm;height:297mm;padding:11mm 14mm 15mm;font-size:10.5pt;line-height:1.72;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 14px #10182824}.ws-run{color:#7b8585;flex:none;justify-content:space-between;align-items:flex-start;height:8mm;font-size:8.5pt;line-height:1.4;display:flex}.ws-brand{color:var(--ws-accent);letter-spacing:-.01em;font-weight:800}.ws-head{box-sizing:border-box;border-bottom:1.6pt solid var(--ws-accent);flex:none;justify-content:space-between;align-items:flex-end;gap:8mm;height:31mm;padding-bottom:3.5mm;display:flex}.ws-head-main{gap:1.2mm;display:grid}.ws-badge{border:1.1pt solid var(--ws-accent);color:var(--ws-accent);border-radius:4pt;justify-self:start;padding:0 6pt;font-size:8.5pt;font-weight:800;line-height:1.7}.ws-head h2{letter-spacing:-.02em;color:var(--ws-dark);margin:0;font-size:17pt;line-height:1.3}.ws-sub{color:#6b7575;margin:0;font-size:8.8pt}.ws-name{border-collapse:collapse;font-size:8.5pt}.ws-name th,.ws-name td{border:.8pt solid #4c5656;height:7.5mm;padding:0 6pt}.ws-name th{background:var(--ws-soft);color:var(--ws-dark);font-weight:700}.ws-name td{min-width:15mm}.ws-name-line{color:#4c5656;align-items:flex-end;gap:2mm;font-size:9pt;display:flex}.ws-blank{border-bottom:.8pt solid #4c5656;width:34mm;height:5mm;display:inline-block}.ws-blank-short{width:22mm}.ws-grid{flex:none;height:262mm;display:grid}.ws-head+.ws-grid{height:231mm}.ws-cols-1{grid-template-columns:minmax(0,1fr)}.ws-cols-2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ws-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.ws-rows-3{grid-template-rows:repeat(3,minmax(0,1fr))}.ws-cell{flex-direction:column;min-height:0;padding:4mm 0 2mm;display:flex;overflow:hidden}.ws-cols-2 .ws-cell:nth-child(odd){border-right:.6pt solid var(--ws-line);padding-right:6mm}.ws-cols-2 .ws-cell:nth-child(2n){padding-left:6mm}.ws-cols-1 .ws-cell+.ws-cell{border-top:.6pt dashed var(--ws-line)}.ws-qhead{align-items:center;gap:2.5mm;margin-bottom:1.6mm;display:flex}.ws-no{letter-spacing:-.03em;color:var(--ws-dark);font-variant-numeric:tabular-nums;font-size:19pt;font-weight:800;line-height:1}.ws-type{background:var(--ws-accent);color:#fff;border-radius:999px;padding:0 7pt;font-size:7.8pt;font-weight:700;line-height:1.75}.ws-level{color:var(--ws-accent);letter-spacing:.08em;font-size:7pt}.ws-pt{color:#6b7575;margin-left:auto;font-size:8.5pt;font-weight:600}.ws-src{color:#7b8585;margin:0 0 1mm;font-size:7.8pt}.ws-fit-1 .ws-q{--qt-fig-base:90%;font-size:94%}.ws-fit-2 .ws-q{--qt-fig-base:78%;font-size:88%}.ws-fit-3 .ws-q{--qt-fig-base:66%;font-size:82%}.ws-cols-1 .ws-fit-1 .ws-q{--qt-fig-base:81mm}.ws-cols-1 .ws-fit-2 .ws-q{--qt-fig-base:70mm}.ws-cols-1 .ws-fit-3 .ws-q{--qt-fig-base:60mm}.ws-over{outline:2px solid var(--danger);outline-offset:-2px}.ws-img{max-width:100%;height:auto;display:block}.ws-sheet .qt{font-size:inherit;line-height:inherit;color:inherit}.ws-sheet .qt p{margin:0 0 1.2mm}.ws-sheet .qt-box{border-color:#5b6464;border-radius:3pt;margin:1.5mm 0;padding:1.5mm 3mm}.ws-sheet .qt-fig-right{max-width:44%;margin:0 0 1.5mm 3mm}.ws-sheet .qt-fig-canvas{border-radius:0}.ws-sheet .qt-fig-alt{font-size:8pt}.ws-sheet .qt-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6mm 3mm;margin-top:2mm}.ws-sheet .qt-choices-short{grid-template-columns:repeat(5,minmax(0,1fr))}.ws-sheet .qt-choices-long{grid-template-columns:minmax(0,1fr)}.ws-sheet .qt-choice-no{color:inherit}.ws-self{color:#6b7575;justify-content:flex-end;gap:5mm;margin-top:auto;padding-top:1mm;font-size:8.3pt;display:flex}.ws-review-boxes{flex:auto;grid-template-columns:1fr 1fr;gap:4mm;min-height:28mm;max-height:72mm;margin-top:auto;padding-top:3mm;display:grid}.ws-again,.ws-lined{color:#8a9494;border-radius:3pt;padding:1.5mm 3mm;font-size:7.8pt}.ws-again{background:#f4f7f7}.ws-lined{border:.6pt solid var(--ws-line);background:#fff linear-gradient(to bottom, transparent calc(100% - .6pt), var(--ws-line) calc(100% - .6pt)) 0 0 / 100% 7mm repeat-y}.ws-cols-1 .qt-choices-short{max-width:135mm}.ws-cols-1 .qt-choices:not(.qt-choices-short):not(.qt-choices-long){max-width:160mm}.ws-foot{color:var(--ws-dark);justify-content:flex-end;font-size:9pt;font-weight:800;display:flex;position:absolute;bottom:7mm;left:14mm;right:14mm}.ws-foot span{border-top:1.4pt solid var(--ws-accent);text-align:center;min-width:9mm;padding-top:1mm}.ws-page:nth-child(2n) .ws-foot{justify-content:flex-start}.ws-key-title{color:var(--ws-dark);margin:2mm 0 4mm;font-size:13pt}.ws-key{border-collapse:collapse;table-layout:fixed;text-align:center;width:100%;margin-bottom:4mm;font-size:9.5pt}.ws-key th,.ws-key td{border:.6pt solid var(--ws-line);padding:1mm}.ws-key th{background:var(--ws-soft);color:var(--ws-dark);font-weight:800}.ws-key-src td{color:#7b8585;font-size:7pt}@page worksheet{size:A4;margin:0}@media print{.ws-sheet{display:block}.ws-page{height:296.6mm;box-shadow:none;break-after:page}.ws-page:last-child{break-after:auto}.ws-over{outline:none}}.qt-nb{white-space:nowrap}.qt-fig .qt-fig-canvas{width:100%}.qt-fig:not(.qt-fig-right):not(.qt-fig-choice){margin-left:auto;margin-right:auto}.qt-w-10{width:calc(var(--qt-fig-base,100%) * .1)}.qt-w-15{width:calc(var(--qt-fig-base,100%) * .15)}.qt-w-20{width:calc(var(--qt-fig-base,100%) * .2)}.qt-w-25{width:calc(var(--qt-fig-base,100%) * .25)}.qt-w-30{width:calc(var(--qt-fig-base,100%) * .3)}.qt-w-35{width:calc(var(--qt-fig-base,100%) * .35)}.qt-w-40{width:calc(var(--qt-fig-base,100%) * .4)}.qt-w-45{width:calc(var(--qt-fig-base,100%) * .45)}.qt-w-50{width:calc(var(--qt-fig-base,100%) * .5)}.qt-w-55{width:calc(var(--qt-fig-base,100%) * .55)}.qt-w-60{width:calc(var(--qt-fig-base,100%) * .6)}.qt-w-65{width:calc(var(--qt-fig-base,100%) * .65)}.qt-w-70{width:calc(var(--qt-fig-base,100%) * .7)}.qt-w-75{width:calc(var(--qt-fig-base,100%) * .75)}.qt-w-80{width:calc(var(--qt-fig-base,100%) * .8)}.qt-w-85{width:calc(var(--qt-fig-base,100%) * .85)}.qt-w-90{width:calc(var(--qt-fig-base,100%) * .9)}.qt-w-95{width:calc(var(--qt-fig-base,100%) * .95)}.qt-w-100{width:calc(var(--qt-fig-base,100%) * 1)}.qt-choice-figs{clear:both;flex-wrap:wrap;align-items:flex-end;gap:6px 2%;margin:6px 0 0;padding:0;list-style:none;display:flex}.qt-fig-choice{margin:0}.ws-cols-1{--qt-fig-base:90mm}.bank-preview{flex-basis:100%;margin-top:4px}.bank-preview summary{cursor:pointer;color:var(--primary-ink);font-size:.88rem;font-weight:600}.bank-preview .qt{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);margin-top:6px;padding:10px 12px;font-size:.92rem}.button.secondary{background:var(--surface);color:var(--primary-ink);border:1px solid var(--primary-line)}.result-counts{flex-wrap:wrap;gap:6px;margin:0;display:flex}.result-counts span{background:var(--surface-3);color:var(--text-2);border-radius:999px;padding:3px 10px;font-size:.85rem;font-weight:700}.result-counts .count-correct{background:var(--success-soft);color:var(--success)}.result-counts .count-incorrect{background:var(--danger-soft);color:var(--danger)}.result-filter{flex-wrap:wrap;gap:6px;display:flex}.result-filter button{border:1px solid var(--line);background:var(--surface);min-height:40px;font:inherit;color:var(--text);border-radius:999px;padding:6px 14px;font-weight:600}.result-filter button[aria-pressed=true],.portal .result-filter button[aria-pressed=true]:not(.text-button):not(.button),.portal .result-filter button[aria-pressed=true]:not(.text-button):not(.button):hover:not(:disabled){background:var(--primary);border-color:var(--primary);color:#fff}.result-item.result-incorrect,.result-item.result-blank{border-left:3px solid var(--danger);padding-left:10px}.result-answers{flex-wrap:wrap;gap:4px 16px;display:flex}.result-mine{font-weight:600;color:var(--text)!important}.result-solution{justify-items:start;gap:6px;display:grid}.result-solution-images{gap:8px;width:100%;display:grid}.result-solution-images img{border:1px solid var(--line);cursor:zoom-in;background:#fff;border-radius:8px;width:100%;height:auto}.result-zoom{z-index:200;background:#0a0e14db;place-items:center;gap:12px;padding:16px;display:grid;position:fixed;inset:0;overflow:auto}.result-zoom img{background:#fff;border-radius:6px;width:100%;max-width:min(100%,1100px);height:auto}@media (width<=600px){.result-zoom{place-items:start}.result-zoom img{width:190%;max-width:none}.result-zoom .button{width:calc(100vw - 32px);position:sticky;left:0}}.omr-help{border:1px solid var(--line);background:var(--surface-2);border-top:0;border-radius:0 0 14px 14px;gap:10px;min-width:0;margin:-15px 10px 0;padding:10px 14px 12px;display:grid}.omr-help-buttons{flex-wrap:wrap;gap:8px;display:flex}.portal .omr-help-buttons .help-button{border-radius:999px;gap:6px;min-height:40px;padding:0 14px;font-size:.9rem}.pill-answered{background:var(--success-soft);color:var(--success);margin-left:4px}.portal .omr-help-buttons button.review-button[aria-pressed=true]:not(.text-button):not(.button),.portal .omr-help-buttons button.review-button[aria-pressed=true]:not(.text-button):not(.button):hover:not(:disabled){background:var(--warning-soft);color:var(--warning);border-color:var(--warning);font-weight:700}.pill-review{background:var(--warning-soft);color:var(--warning)}.review-hint{margin:0}.review-summary{border:1px solid var(--line);background:var(--surface-2);border-radius:12px;gap:6px;padding:12px 14px;display:grid}.review-summary h5{margin:0;font-size:.95rem}.review-summary p{margin:0}.portal[hidden]{display:none}.preview-banner{border-radius:var(--radius);background:var(--warning-soft);color:var(--warning);border:1px solid #f1d9b0;gap:4px;padding:12px 16px;font-size:.9rem;display:grid}.preview-banner p{margin:0}.preview-width{align-items:center;gap:8px;width:fit-content;font-size:.9rem;display:flex}.preview-frame{border:2px dashed var(--line-strong);border-radius:var(--radius-l);background:var(--bg);width:100%;max-width:880px;padding:16px}.admin-panel .preview-frame .dash-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-l);box-shadow:var(--shadow-1);padding:20px 22px}.preview-frame.is-phone{max-width:400px;padding:8px}.admin-panel .preview-frame.is-phone .dash-section.omr{padding:16px 10px}.preview-frame.is-phone .omr .omr-item{padding:12px 8px}.review-list{font-variant-numeric:tabular-nums;gap:4px;margin:0;padding-left:20px;display:grid}.review-majority{color:var(--warning);font-weight:800}.pill-majority{background:var(--warning-soft);color:var(--warning);margin-left:6px}.type-help{border:1px solid var(--primary-line);background:var(--surface);border-radius:12px;gap:8px;min-width:0;padding:12px 14px;line-height:1.75;display:grid;overflow-x:auto}.type-help-path{color:var(--primary-ink);margin:0;font-size:.82rem;font-weight:700}.type-help .qt p{margin:0 0 6px}.type-help-videos{gap:4px;margin:0;padding-left:18px;display:grid}.type-help-videos a{color:var(--primary-ink);font-weight:600}.ask-thread{gap:10px;min-width:0;display:grid}.ask-messages{gap:6px;display:grid}.ask-msg{white-space:pre-wrap;overflow-wrap:anywhere;border-radius:12px;max-width:92%;margin:0;padding:8px 12px;line-height:1.65}.ask-student{background:var(--primary-soft);justify-self:end}.ask-teacher{background:var(--surface);border:1px solid var(--line);justify-self:start}.ask-msg b{margin-right:4px;font-size:.82rem}.ask-time{color:var(--text-3);margin-top:2px;font-size:.75rem;display:block}.ask-closed{color:var(--text-3);font-size:.85rem}.help-switches{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:10px 0;padding:10px 12px;font-size:.9rem;display:flex}.help-switches-title{font-weight:700}.question-thread{gap:8px;display:grid}.question-thread.is-waiting{border-color:var(--primary-line);box-shadow:inset 3px 0 0 var(--primary)}.question-thread h4{margin:0}.help-admin{grid-template-columns:minmax(240px,1fr) minmax(0,2fr);align-items:start;gap:16px;display:grid}.help-tree{gap:8px;min-width:0;display:grid}.help-node-list{gap:2px;max-height:70vh;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.help-node-list .help-node{width:100%;min-height:36px;color:var(--text);text-align:left;justify-content:flex-start;gap:6px;padding:0 10px;font-weight:500}.help-node-list .help-node .tax-level{min-width:3.2em;color:var(--text-3);font-size:.75rem}.help-node-list .help-node.depth-2{padding-left:20px}.help-node-list .help-node.depth-3{padding-left:32px}.help-node-list .help-node.depth-4{padding-left:44px}.help-node-list .help-node.depth-5{padding-left:56px}.help-node-list .help-node.depth-6{padding-left:68px}.help-editor{gap:10px;min-width:0;display:grid}.help-editor h4{margin:0}.help-videos{border:1px solid var(--line);border-radius:10px;gap:8px;margin:0;padding:10px 12px;display:grid}.help-videos input{border:1px solid var(--line-strong);border-radius:8px;flex:1;min-width:0;min-height:40px;padding:6px 10px}.help-preview{gap:6px;display:grid}.help-import{gap:8px;margin-top:16px;display:grid}.help-import textarea{border:1px solid var(--line-strong);border-radius:10px;width:100%;min-height:120px;padding:10px;font-family:ui-monospace,monospace;font-size:.85rem}.import-plan{gap:6px;display:grid}.import-problems{color:var(--danger);margin:0;padding-left:18px;font-size:.88rem}@media (width<=760px){.help-admin{grid-template-columns:minmax(0,1fr)}.help-node-list{max-height:40vh}}.weekly-report .dash-section{border-top:1px solid var(--line);border-radius:0;padding-top:16px}.weekly-pick{grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));align-items:end;gap:12px;display:grid}.weekly-pick>.field-hint,.weekly-pick>.weekly-pick-actions{grid-column:1/-1}.weekly-pick-actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.weekly-warn{color:var(--warning);font-weight:600}.weekly-tests,.weekly-students{gap:8px;margin:0;padding:0;list-style:none;display:grid}.weekly-tests li{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:10px 12px}.weekly-tests p{margin:0}.weekly-test-title{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.weekly-students li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 0;display:flex}.weekly-student-name{min-width:6em;font-weight:700}.weekly-grade select{width:8.5em;min-height:40px}.weekly-previews{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:12px;display:grid}.weekly-preview{gap:8px;min-width:0;display:grid}.weekly-preview h4{margin:0}.weekly-preview textarea{white-space:pre-wrap;width:100%;font-size:.9rem;line-height:1.6}.field-hint.weekly-warn{color:var(--warning)}@media (width<=760px){.weekly-pick{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.weekly-pick>.field:first-child{grid-column:1/-1}}.weekly-report .library-controls{align-items:center}@media (width<=480px){.weekly-pick{grid-template-columns:minmax(0,1fr)}}.portal a.button.weekly-open{justify-content:center;align-items:center;width:auto;min-height:44px;padding:0 18px;text-decoration:none;display:inline-flex}.weekly-send-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;display:flex}.contact-import{gap:10px;padding-bottom:4px;display:grid}.contact-plan,.contact-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.contact-plan li{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;gap:6px;padding:10px 12px;display:grid}.contact-plan-head{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.contact-list li{border-bottom:1px solid var(--line);gap:8px;padding:8px 0;display:grid}.contact-row{flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.contact-value{font-variant-numeric:tabular-nums}.contact-filter{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}@media (width<=480px){.contact-filter{grid-template-columns:minmax(0,1fr)}}.sms-state{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.sms-window{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.sms-students,.sms-messages,.sms-history{gap:6px;margin:0;padding:0;list-style:none;display:grid}.sms-messages li{border-bottom:1px solid var(--line);gap:4px;padding:8px 0;display:grid}.sms-body{background:var(--surface-2);white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;border-radius:8px;margin:4px 0 0;padding:8px 10px;font-size:.85rem}.sms-batch{gap:10px;display:grid}@media (width<=480px){.sms-window{grid-template-columns:minmax(0,1fr)}}.sms-batch>.text-button{justify-self:start}.quick-exam-open{margin:12px 0 18px}.quick-exam{border:1px solid var(--line,#e5e7eb);background:var(--surface,#fff);border-radius:12px;margin:12px 0 20px;padding:14px 16px}.quick-exam .admin-form{border:0;min-width:0;margin:0;padding:0}.quick-exam-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.quick-exam-row>.field{flex:200px}.quick-exam-points>.field{flex:0 150px}.quick-exam-source{margin:8px 0}.quick-exam-warnings{color:#92400e;background:#fffbeb;border-radius:8px;margin:8px 0;padding:8px 12px 8px 28px}.quick-exam-summary{margin:10px 0 6px;font-weight:700}.quick-grid{gap:6px;margin:0;padding:0;list-style:none;display:grid}.quick-row{border:1px solid var(--line,#e5e7eb);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 10px;display:flex}.quick-row.has-issue{background:#fef2f2;border-color:#fca5a5}.quick-row label{align-items:center;gap:6px;font-size:.9em;display:inline-flex}.quick-label input{width:7.5em}.quick-points input{width:7em}.quick-answer input{width:8em}.quick-row input,.quick-row select{border:1px solid var(--line-strong);background:var(--surface);border-radius:8px;min-height:36px;padding:4px 8px}.quick-row input:focus,.quick-row select:focus{border-color:var(--primary);box-shadow:var(--ring);outline:none}.quick-row input:disabled{background:var(--surface-2);color:var(--text-3)}.quick-choices{gap:4px;display:inline-flex}.portal .quick-choices button.quick-choice:not(.text-button):not(.button){border-radius:999px;min-width:40px;min-height:36px;padding:0}.portal .quick-choices button.quick-choice[aria-pressed=true]:not(.text-button):not(.button),.portal .quick-choices button.quick-choice[aria-pressed=true]:not(.text-button):not(.button):hover:not(:disabled){background:var(--primary);border-color:var(--primary);color:#fff}.quick-issue{color:#b91c1c;flex-basis:100%;margin:0;font-size:.85em}.quick-answer-image{object-fit:contain;object-position:left center;border:1px solid var(--line);background:#fff;border-radius:6px;max-width:220px;height:44px;padding:2px 6px}.quick-row:not(.has-issue) .quick-issue{color:#92400e}.question-bank{gap:14px}.bank-search fieldset{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;gap:12px;min-width:0;margin:0;padding:16px 18px;display:grid}.bank-search .field{color:var(--text-2);gap:5px;font-size:.84rem}.bank-search .field input,.bank-search .field select{min-height:42px;padding:8px 12px;font-size:.95rem}.bank-search .field select{padding-right:36px}.bank-search-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;display:grid}.bank-search-ratings{grid-template-columns:minmax(0,1.8fr) minmax(0,1fr) minmax(0,1fr);align-items:start;gap:12px;display:grid}.bank-diff .load-picker span{min-height:42px;padding:0 12px}.bank-diff-sum{background:var(--primary-soft);color:var(--primary-ink);border-radius:999px;margin-left:4px;padding:1px 8px;font-size:.76rem;font-weight:700}.bank-diff .field-hint{font-size:.76rem;line-height:1.5}.bank-search-more{border-top:1px dashed var(--line-strong);padding-top:6px}.bank-search-more summary{cursor:pointer;min-height:36px;color:var(--primary-ink);flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:.88rem;font-weight:700;list-style:none;display:flex}.bank-search-more summary::-webkit-details-marker{display:none}.bank-search-more summary:before{content:"";border-bottom:2px solid;border-right:2px solid;width:7px;height:7px;margin:0 4px 0 2px;transform:rotate(-45deg)}.bank-search-more[open] summary:before{transform:rotate(45deg)}.bank-search-more summary .note{font-size:.8rem;font-weight:500}.bank-search-extra{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:6px;display:grid}.bank-search-actions{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.bank-search-actions .check-field{align-items:center;margin-right:auto}.bank-search-actions .check-field input{margin:0}.bank-search-actions .button{width:auto;min-height:44px;padding:0 30px;font-size:.95rem}.bank-results{gap:10px;min-width:0;display:grid}.bank-results-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 16px;display:flex}.bank-count{color:var(--text-2);margin:0;font-size:.92rem}.bank-count strong{color:var(--text);font-size:1.05rem}.bank-busy{color:var(--text-3)}.bank-view{flex-wrap:wrap;align-items:center;gap:2px 14px;display:flex}.bank-view .check-field{align-items:center;font-size:.88rem}.bank-view .check-field input{margin:0}.bank-pager{flex-wrap:wrap;gap:4px;display:flex}.bank-view .bank-pager .text-button{min-height:36px;padding:0 10px}.bank-results>.bank-pager{justify-content:center}.bank-block{gap:8px;display:grid}.bank-block-title{color:var(--text);margin:8px 0 0;font-size:.92rem;font-weight:800}.bank-block-title span{color:var(--text-3);margin-left:4px;font-size:.82rem;font-weight:600}.bank-row{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-wrap:anywhere;gap:7px;min-width:0;padding:12px 14px;display:grid}.bank-row:hover{border-color:var(--line-strong)}.bank-row.bank-row-on{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.bank-row-head{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.bank-row-title{color:var(--text);align-items:center;font-weight:700}.bank-row-title input{margin:0}.bank-row-edit.text-button{min-height:34px;margin-left:auto;padding:0 10px;font-size:.85rem}.bank-row-class,.bank-row-foot,.bank-row .occurrences{padding-left:28px}.bank-row-class{flex-wrap:wrap;align-items:center;gap:4px 14px;display:flex}.bank-type{font-size:.9rem;line-height:1.5}.bank-type strong{color:var(--primary-ink);font-weight:700}.bank-type-path{color:var(--text-3);font-size:.8rem}.bank-ratings{flex-wrap:wrap;gap:2px 12px;display:inline-flex}.bank-meter{color:var(--text-3);white-space:nowrap;align-items:center;gap:5px;font-size:.78rem;font-weight:600;display:inline-flex}.bank-meter b{color:var(--text-2);font-weight:700}.bank-meter.bank-diff-0 b{color:var(--warning)}.bank-text{border-radius:var(--radius-s);background:var(--surface-2);max-height:320px;margin-left:28px;padding:10px 14px;font-size:.93rem;overflow:auto}.bank-no-text{justify-self:start;margin-left:28px}.bank-row-foot{color:var(--text-3);flex-wrap:wrap;gap:0 14px;font-size:.8rem;display:flex}.bank-row-foot:empty{display:none}.bank-row-foot .source-note{display:inline}.master-list .bank-row .occurrences{padding-left:28px}.bank-occ-label{color:var(--text-2);font-weight:600}.bank-row .tag-editor{margin-top:2px}.bank-selbar{z-index:5;border:1px solid var(--primary-line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-2);flex-wrap:wrap;align-items:center;gap:2px 6px;padding:6px 14px;display:flex;position:sticky;bottom:12px}.bank-selbar strong{color:var(--primary-ink);margin-right:8px}.bank-selbar .text-button[aria-pressed=true]{background:var(--primary);color:#fff;box-shadow:none}.bank-tool{scroll-margin-top:84px}.bank-import-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;display:grid}.bank-import-plan{gap:10px;display:grid}.bank-import-plan p,.bank-import-plan ul{margin:0}@media (width<=900px){.bank-search-ratings{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.bank-diff{grid-column:1/-1}.bank-search-extra{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=560px){.bank-search fieldset{padding:14px 12px}.bank-search-main,.bank-import-row{grid-template-columns:minmax(0,1fr)}.bank-search-actions .button{flex:100%}.bank-row{padding:12px}.bank-row-class,.bank-row-foot,.master-list .bank-row .occurrences{padding-left:0}.bank-text,.bank-no-text{margin-left:0}.bank-text{padding:10px}}.ext-plan-block{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:14px 0;padding:12px 14px}.ext-plan-block h5{margin:0 0 6px;font-size:.95rem}.ext-classes,.ext-names,.ext-plan-tests,.ext-records,.ext-file-notes{grid-template-columns:minmax(0,1fr);gap:8px;margin:8px 0 0;padding:0;list-style:none;display:grid}.ext-classes li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ext-name{border:1px solid var(--line);border-radius:var(--radius-s);flex-wrap:wrap;align-items:center;gap:6px 12px;padding:8px 10px;display:flex}.ext-name.is-blocked{border-color:var(--danger-line);background:var(--danger-soft)}.ext-name.is-warn{background:var(--warning-soft)}.ext-name-label{flex:220px;min-width:0}.ext-name select,.ext-classes select{border:1px solid var(--line-strong);background:var(--surface);border-radius:8px;max-width:100%;min-height:36px;padding:4px 8px}.ext-name select{flex:240px;min-width:0}.ext-classes select{min-width:0}.ext-plan-test,.ext-record{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);padding:10px 12px}.ext-test-head{flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 4px;display:flex}.ext-note{white-space:pre-line}.ext-switches{flex-wrap:wrap;gap:6px 20px;margin:8px 0;display:flex}.ext-table-wrap{-webkit-overflow-scrolling:touch;max-width:100%;margin:8px 0;overflow-x:auto}.ext-table{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:.85rem}.ext-table th,.ext-table td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:4px 8px}.ext-table thead th{background:var(--surface-2);color:var(--text-2);font-weight:700}.ext-table tbody th,.ext-table tfoot th{text-align:left;font-weight:600}.ext-table tfoot td,.ext-table tfoot th{background:var(--surface-2);font-weight:700}.ext-table .is-right{color:var(--success)}.ext-table .is-wrong{color:var(--danger);background:var(--danger-soft)}.ext-table .is-low{color:var(--danger)}.ext-table tr.is-absent{color:var(--text-3)}.ext-marks td{padding:4px 5px}.ext-absent{color:var(--text-3);align-items:center;gap:4px;font-size:.8rem;display:inline-flex}.weekly-ext-head{color:var(--text-2);margin:12px 0 4px;font-weight:700}.my-tests{gap:10px;margin:0;padding:0;list-style:none;display:grid}.my-test{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:12px 14px}.my-test-title{margin:0 0 4px;font-weight:700}.my-test-score{flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 4px;display:flex}.my-test-score strong{color:var(--primary-ink);font-size:1.25rem}.my-test-score span:not(.chip){color:var(--text-2);font-size:.9rem}.my-test-marks{flex-wrap:wrap;gap:6px;margin:8px 0 4px;padding:0;list-style:none;display:flex}.my-test-marks li{font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;min-width:32px;height:32px;font-size:.85rem;font-weight:700;display:inline-flex}.my-test-marks li.is-right{background:var(--success-soft);color:var(--success)}.my-test-marks li.is-wrong{background:var(--danger-soft);color:var(--danger)}.ws-layout>.ws-tray{overscroll-behavior:contain;max-height:calc(100vh - 104px);top:88px;overflow-y:auto}.ws-layout .ws-tray-list{max-height:none;overflow:visible}.ws-tray-label{line-height:1.25;display:grid}.ws-tray-label small{text-overflow:ellipsis;white-space:nowrap;color:var(--text-3);font-size:.74rem;overflow:hidden}.ws-tray-label b{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}@media (width<=1100px){.ws-layout>.ws-tray{max-height:none;position:static}}.bank-search-spacer{margin-right:auto}.ws-words fieldset{border:0;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:4px 12px;min-width:0;margin:0;padding:0;display:grid}.ws-words .field{color:var(--text-2);gap:5px;font-size:.84rem}.ws-words .field input{min-height:42px;padding:8px 12px;font-size:.95rem}.ws-words .button{width:auto;min-height:42px;padding:0 18px}.ws-words .field-hint{grid-column:1/-1;margin:0;font-size:.76rem}.ws-tray-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ws-tray-actions .button{width:100%;min-height:42px;padding:0 8px}.ws-tray-actions .button.secondary{grid-column:1/-1}.ws-tray-actions .button[aria-pressed=true]{box-shadow:var(--ring)}.ws-tray>.field-hint,.ws-tray>.text-button{justify-self:start;margin:0}.ws-assign{border:1px solid var(--primary-line);background:var(--surface);border-radius:14px;gap:12px;min-width:0;padding:16px 18px;display:grid}.ws-assign .portal-heading{margin:0}.ws-assign-form{gap:12px;display:grid}.ws-assign-rule{margin:-4px 0 0}.ws-assign-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.ws-assign-sub{margin:4px 0 0;font-size:.95rem}.ws-assign-list{gap:4px;max-height:360px;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.ws-assign-list li{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface-2);grid-template-columns:26px minmax(0,1fr) auto;align-items:center;gap:8px;padding:6px 10px;font-size:.88rem;display:grid}.ws-assign-label{overflow-wrap:anywhere;min-width:0}.ws-assign-label small{color:var(--text-3)}.ws-assign-points{color:var(--text-2);white-space:nowrap;font-weight:700}@media (width<=900px){.ws-assign-row{grid-template-columns:minmax(0,1fr)}}@media (width<=560px){.ws-words fieldset{grid-template-columns:minmax(0,1fr)}.ws-words .button{width:100%}.ws-assign{padding:14px 12px}}.weekly-stale,.weekly-leave{background:var(--warning-soft);border:1px solid #f0d3a6;border-radius:10px;gap:8px;padding:10px 12px;display:grid}.weekly-stale p,.weekly-leave p{margin:0}.weekly-stale pre.sms-body{max-height:240px;overflow:auto}.weekly-leave{z-index:2;box-shadow:var(--shadow-2);position:sticky;top:76px}.weekly-edit-bar{margin-bottom:4px}.game-card{border:1px solid var(--primary-line);background:linear-gradient(180deg, var(--primary-soft), var(--surface) 70%);border-radius:16px;gap:12px;min-width:0;padding:16px 18px;display:grid}.game-card p{margin:0}.game-place{text-align:center;background:#fff7df;border:1px solid #f1d58a;border-radius:14px;gap:2px;padding:14px 16px;display:grid}.game-place-title{color:#7a4f00;font-size:1.35rem;font-weight:800}.game-place-text{color:var(--text-2);font-weight:600}.game-rate{gap:8px;display:grid}.game-rate-head{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.game-rate-head span{color:var(--text-2);font-weight:700}.game-rate-head strong{color:var(--primary-ink);font-variant-numeric:tabular-nums;font-size:1.6rem;line-height:1}.game-rate-head small{color:var(--text-3);font-size:.85rem}.game-bar{grid-template-columns:repeat(10,minmax(0,1fr));gap:4px;display:grid}.game-bar span{background:var(--surface-3);border:1px solid var(--line);border-radius:4px;height:14px}.game-bar span.is-on{background:var(--primary);border-color:var(--primary)}.game-line{font-weight:700}.game-badges{flex-wrap:wrap;gap:6px;display:flex}.game-badge{background:var(--surface);border:1px solid var(--primary-line);color:var(--primary-ink);border-radius:999px;padding:4px 10px;font-size:.85rem;font-weight:700}.game-types{gap:6px;display:grid}.game-types-title{font-weight:800}.game-types ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.game-type{background:var(--surface);border:1px solid var(--line);border-radius:12px;gap:8px;min-width:0;padding:10px 12px;display:grid}.game-type-row{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.game-type-name{overflow-wrap:anywhere;flex:140px;min-width:0;font-weight:700;display:grid}.game-type-name small{color:var(--text-3);font-size:.8rem;font-weight:500}.game-type-count{background:var(--danger-soft);color:var(--danger)}.portal .game-type .help-button{border-radius:999px;min-height:40px;padding:0 14px;font-size:.9rem}.my-test-placed{background:#fffbef;border-color:#f1d58a}.my-test-head{flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0 0 4px;display:flex}.my-test-head .my-test-title{margin:0}.game-place-badge{color:#7a4f00;white-space:nowrap;background:#fff1c7;border-radius:999px;padding:2px 8px;font-size:.85rem;font-weight:800}.game-place-line{color:#7a4f00;margin:0 0 4px;font-weight:700}.preview-game{border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--surface);padding:12px 14px}.preview-game summary{cursor:pointer;font-weight:700}.preview-game[open] summary{margin-bottom:8px}@media (width<=420px){.game-card{padding:14px 12px}.game-place-title{font-size:1.2rem}}.sms-history-filter{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:12px;display:grid}.sms-history-filter .library-controls{grid-column:1/-1;align-items:center}.sms-history-filter .button{width:auto;min-height:44px;padding:0 22px;font-size:.95rem}.sms-history-search{max-width:420px}.sms-history-list .sms-body{margin:0}.sms-purged{background:var(--surface-2);border-radius:8px;margin:0;padding:8px 10px}.sms-expired{background:var(--warning-soft);border:1px solid #f0d3a6;border-radius:10px;gap:8px;padding:10px 12px;display:grid}.sms-expired p{margin:0}.sms-expired .button{width:auto;min-height:42px;padding:0 18px;font-size:.95rem}@media (width<=900px){.sms-history-filter{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=480px){.sms-history-filter{grid-template-columns:minmax(0,1fr)}}.student-sheet .dash-section{border-top:1px solid var(--line);border-radius:0;padding-top:16px}.ss-pick{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:end;gap:12px;display:grid}.ss-pick .ss-segmented{margin:0}.ss-segmented{margin:12px 0 8px}.ss-week-pick{flex-wrap:wrap;align-items:flex-end;gap:8px 10px;margin-top:12px;display:flex}.ss-week-pick>button{border:1px solid var(--line-strong);background:var(--surface);border-radius:10px;min-width:44px;min-height:44px;font-weight:700}.ss-week-pick .field{flex:160px;max-width:220px}.ss-week-pick .field-hint{flex-basis:100%}.ss-grid-wrap{-webkit-overflow-scrolling:touch;margin:0 -2px;padding:0 2px 4px;overflow-x:auto}.ss-grid,.ss-month{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.9rem}.ss-grid th,.ss-grid td,.ss-month th,.ss-month td{border-bottom:1px solid var(--line);text-align:center;vertical-align:top;padding:6px 4px}.ss-grid thead th{color:var(--text-2);white-space:nowrap;font-size:.82rem}.ss-grid thead th>span,.ss-grid thead th>small{display:block}.ss-name{z-index:1;background:var(--surface);overflow-wrap:anywhere;min-width:4.5em;max-width:7em;font-weight:700;position:sticky;left:0;text-align:left!important;padding-left:2px!important}.ss-today{color:var(--primary-ink);font-weight:800}.ss-added{color:var(--primary-ink);font-weight:700}.portal button:not(.text-button):not(.button):not(.header-button).ss-all{border:1px solid var(--primary-line);background:var(--primary-soft);min-height:32px;color:var(--primary-ink);white-space:nowrap;border-radius:8px;margin-top:4px;padding:0 8px;font-size:.78rem;font-weight:700}.ss-cell-wrap{justify-items:center;gap:3px;min-width:64px;display:grid}.portal button:not(.text-button):not(.button):not(.header-button).ss-cell{border:2px solid var(--line-strong);background:var(--surface);width:100%;min-width:64px;min-height:52px;color:var(--text);touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:12px;place-items:center;padding:4px 6px;font-size:1rem;font-weight:800;line-height:1.15;display:grid}.portal button:not(.text-button):not(.button):not(.header-button).ss-cell:hover:not(:disabled){filter:brightness(.97)}.ss-cell small{color:var(--text-3);font-size:.68rem;font-weight:600}.portal button:not(.text-button):not(.button):not(.header-button).ss-cell:disabled{opacity:.6}.portal button:not(.text-button):not(.button):not(.header-button).ss-blank,.portal button:not(.text-button):not(.button):not(.header-button).ss-blank:hover:not(:disabled){border-style:dashed;border-color:var(--line-strong);color:var(--text-3);background:var(--surface-2)}.portal button:not(.text-button):not(.button):not(.header-button).ss-present,.portal button:not(.text-button):not(.button):not(.header-button).ss-present:hover:not(:disabled){background:var(--success-soft);color:var(--success);border-color:#9fd8bd}.portal button:not(.text-button):not(.button):not(.header-button).ss-late,.portal button:not(.text-button):not(.button):not(.header-button).ss-late:hover:not(:disabled){background:var(--warning-soft);color:var(--warning);border-color:#f0d3a6}.portal button:not(.text-button):not(.button):not(.header-button).ss-absent,.portal button:not(.text-button):not(.button):not(.header-button).ss-absent:hover:not(:disabled){border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}.portal button:not(.text-button):not(.button):not(.header-button).ss-makeup,.portal button:not(.text-button):not(.button):not(.header-button).ss-makeup:hover:not(:disabled),.portal button:not(.text-button):not(.button):not(.header-button).ss-grade,.portal button:not(.text-button):not(.button):not(.header-button).ss-grade:hover:not(:disabled){border-color:var(--primary-line);background:var(--primary-soft);color:var(--primary-ink)}.portal button:not(.text-button):not(.button):not(.header-button).ss-missing,.portal button:not(.text-button):not(.button):not(.header-button).ss-missing:hover:not(:disabled){border-color:var(--danger-line);background:var(--danger-soft);color:var(--danger)}.portal button:not(.text-button):not(.button):not(.header-button).ss-auto,.portal button:not(.text-button):not(.button):not(.header-button).ss-auto:hover:not(:disabled){border-style:dashed;border-color:var(--primary-line);background:var(--surface);color:var(--primary-ink)}.portal button:not(.text-button):not(.button):not(.header-button).ss-cell.ss-saving{box-shadow:0 0 0 3px #2b50d82e}.portal button:not(.text-button):not(.button):not(.header-button).ss-cell.ss-error{box-shadow:0 0 0 3px #c23a2c59}.ss-saving-note{color:var(--text-3);font-size:.7rem}.portal button:not(.text-button):not(.button):not(.header-button).ss-retry{border:1px solid var(--danger-line);background:var(--danger-soft);min-height:30px;color:var(--danger);border-radius:8px;padding:0 8px;font-size:.74rem;font-weight:700}.ss-site{color:var(--text-3);white-space:nowrap;font-size:.72rem}.ss-sms{background:var(--danger-soft);min-height:30px;color:var(--danger);white-space:nowrap;border-radius:8px;align-items:center;padding:0 8px;font-size:.74rem;font-weight:700;text-decoration:none;display:inline-flex}.ss-sms-none{color:var(--text-3);font-size:.7rem}.ss-undo-bar{z-index:3;border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--shadow-2);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;margin-top:12px;padding:8px 10px;display:flex;position:sticky;bottom:8px}.ss-undo-bar .field-hint{overflow-wrap:anywhere;flex:180px;min-width:0}.ss-undo-bar button{border-radius:10px;min-height:44px;padding:0 16px;font-weight:700}.ss-memos{gap:8px;margin:0;padding:0;list-style:none;display:grid}.ss-memos li{border-bottom:1px solid var(--line);gap:4px;padding:8px 0;display:grid}.ss-memo-row{gap:8px;display:flex}.ss-memo-row input{flex:auto;min-width:0;min-height:44px}.ss-memo-row button{white-space:nowrap;border-radius:10px;min-height:44px;padding:0 14px}.ss-scores{overflow-wrap:anywhere}.ss-days .ss-weekdays{border:0;gap:8px;margin:0 0 8px;padding:0;display:grid}.ss-days legend{color:var(--text);margin-bottom:4px;font-weight:700}.ss-weekday-boxes{flex-wrap:wrap;gap:4px 14px;display:flex}.ss-weekdays>button{border-radius:10px;justify-self:start;min-height:40px;padding:0 14px}.ss-day-list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.ss-day-list li{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 10px;min-height:40px;display:flex}.ss-history-list{gap:4px;margin:0 0 8px;padding:0;list-style:none;display:grid}.ss-today-list{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.ss-today-list li{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(76px,104px) minmax(76px,104px);align-items:start;gap:8px;padding:6px 0;display:grid}.ss-today-name{overflow-wrap:anywhere;align-self:center;font-weight:700}.ss-today-list .ss-cell{min-height:56px;font-size:1.05rem}.ss-not-today{justify-items:start;gap:8px;display:grid}.ss-review{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;margin-bottom:8px;padding:10px 12px}.ss-review p{margin:0 0 4px}.ss-major{color:var(--danger);font-weight:800}.ss-month-pick{max-width:220px}.ss-month td,.ss-month thead th{text-align:left}.ss-today-list li.ss-today-head{color:var(--text-3);border:0;padding:0;font-size:.8rem;font-weight:700}.ss-today-head span+span{text-align:center}.ss-month td strong{font-size:1rem}.ss-trend{flex-wrap:wrap;align-items:center;gap:2px 4px;display:flex}.ss-score{background:var(--surface-3);white-space:nowrap;border-radius:6px;padding:1px 6px;font-size:.8rem}.ss-arrow{color:var(--text-3);font-weight:800}.ss-arrow.up{color:var(--success)}.ss-arrow.down{color:var(--danger)}.weekly-sheet-values{flex-wrap:wrap;align-items:center;gap:4px 6px;min-width:0;display:flex}.weekly-sheet-values .chip{white-space:normal;overflow-wrap:anywhere;height:auto;min-height:24px}@media (width<=560px){.ss-pick{grid-template-columns:minmax(0,1fr)}.ss-cell-wrap,.ss-cell{min-width:58px}.ss-grid th,.ss-grid td{padding:5px 2px}}.ss-makeup-state{color:var(--primary-ink);white-space:nowrap;font-size:.72rem;font-weight:700}.ss-makeup-state.done{color:var(--success)}.ss-segmented{flex-wrap:wrap}.portal .ss-segmented button:not(.text-button):not(.button):not(.header-button){white-space:nowrap;flex:auto;min-width:0;padding:0 8px}@media (width<=420px){.portal .ss-segmented button:not(.text-button):not(.button):not(.header-button){padding:0 6px;font-size:.85rem}}.care-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.care-list>li{border-bottom:1px solid var(--line);gap:8px;padding:10px 0;display:grid}.care-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;display:flex}.care-row-main{justify-content:flex-start}.care-row .chip{margin:0 2px}.care-when-text{color:var(--primary-ink);font-weight:700}.care-note{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-2);flex-basis:100%;font-size:.9rem}.care-form{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;gap:8px;padding:10px 12px;display:grid}.care-when{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:8px;display:grid}.care-suggest{border:1px dashed var(--line-strong);background:var(--surface-2);border-radius:10px;gap:6px;margin:8px 0;padding:10px 12px;display:grid}.care-suggest .care-list>li{padding:6px 0}.nudge-banner{background:var(--warning-soft);border:1px solid #f0d3a6;border-radius:14px;gap:10px;padding:14px 16px;display:grid}.nudge-title{color:var(--warning);margin:0;font-weight:800}.nudge-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.nudge-item{background:var(--surface);border:1px solid #f3e1c2;border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px 14px;min-width:0;padding:12px 14px;display:flex}.nudge-item.is-saved{border-color:var(--primary-line)}.nudge-text{flex:220px;gap:2px;min-width:0;display:grid}.nudge-text p{margin:0}.nudge-name{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.nudge-status{color:var(--text);font-size:.95rem}.nudge-item.is-saved .nudge-status{color:var(--primary-ink);font-weight:600}.nudge-when{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:.85rem}.portal .nudge-item button:not(.text-button):not(.button){flex:none}.nudge-summary{background:var(--warning-soft);border:1px solid #f0d3a6;border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin:0 0 18px;padding:12px 16px;display:flex}.nudge-summary-text{gap:2px;min-width:0;display:grid}.nudge-summary-text p{margin:0}.nudge-summary-title{font-weight:700}.nudge-summary-title strong{color:var(--warning);font-variant-numeric:tabular-nums;font-size:1.1rem}.nudge-section{gap:8px;display:grid}.nudge-section h4{margin:0}.nudge-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));gap:12px;display:grid}.nudge-card{gap:8px;min-width:0;display:grid}.nudge-card h4{margin:0}.nudge-students{gap:4px;margin:0;padding:0;list-style:none;display:grid}.nudge-students li{border-top:1px solid var(--line);padding:6px 0}.nudge-links{flex-wrap:wrap;align-items:center;gap:2px 6px;margin-left:auto;display:inline-flex}.nudge-sms{min-height:40px}.nudge-preview summary{cursor:pointer;color:var(--text-2);font-weight:600}.nudge-preview pre{margin:4px 0 8px}.nudge-fallback{width:100%;font-size:.85rem}.nudge-class{max-width:260px}.nudge-templates textarea{width:100%;font-size:.9rem;line-height:1.6}.field-hint.nudge-warn{color:var(--warning)}@media (width<=480px){.nudge-item .button-primary{width:100%}.nudge-links{margin-left:0}}.monthly-controls{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.monthly-bar{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:10px 14px;display:flex}.monthly-bar p{margin:0}.monthly-students{gap:10px;margin:0;padding:0;list-style:none;display:grid}.monthly-student{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:6px;padding:12px 14px;display:grid}.monthly-student-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.monthly-student-head p{flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;display:flex}.monthly-student textarea{resize:vertical;min-height:88px}.monthly-student .form-message,.monthly-student .field-hint{margin:0}@media (width<=640px){.monthly-controls{grid-template-columns:minmax(0,1fr)}}.mr-print .print-controls{width:min(100%,900px)}.mr-sheet{--mr-ink:#16191d;--mr-sub:#59616c;--mr-line:#cfd5dc;--mr-soft:#eef1f5;--mr-accent:#1f3fae;max-width:100%;color:var(--mr-ink);-webkit-print-color-adjust:exact;print-color-adjust:exact;justify-items:center;gap:18px;display:grid;overflow-x:auto}.mr-page{page:monthly-report;box-sizing:border-box;background:#fff;flex-direction:column;gap:3.2mm;width:210mm;height:297mm;padding:12mm 13mm 9mm;font-size:9pt;line-height:1.5;display:flex;overflow:hidden;box-shadow:0 2px 14px #10182824}.mr-page h2,.mr-page h3,.mr-page p,.mr-page ul{margin:0}.mr-head{border-bottom:1.6pt solid var(--mr-accent);flex:none;justify-content:space-between;align-items:flex-end;gap:8mm;padding-bottom:3mm;display:flex}.mr-head-main{gap:.6mm;display:grid}.mr-brand{color:var(--mr-accent);letter-spacing:-.01em;font-size:8.5pt;font-weight:800}.mr-head h2{letter-spacing:-.02em;font-size:18pt;line-height:1.25}.mr-period{color:var(--mr-sub);font-size:9.5pt}.mr-student{border:.8pt solid var(--mr-ink);white-space:nowrap;border-radius:3pt;align-items:baseline;gap:3mm;padding:2mm 5mm;display:flex}.mr-student span{color:var(--mr-sub);font-size:8pt}.mr-student strong{font-size:14pt}.mr-tiles{flex:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:3mm;display:grid}.mr-tile{border:.8pt solid var(--mr-line);background:var(--mr-soft);border-radius:3pt;min-width:0;padding:2.2mm 3mm}.mr-tile-label{color:var(--mr-sub);font-size:8pt;font-weight:700}.mr-tile-value{font-variant-numeric:tabular-nums;font-size:15pt;font-weight:800;line-height:1.3}.mr-tile-sub{color:var(--mr-sub);white-space:nowrap;text-overflow:ellipsis;font-size:7.5pt;overflow:hidden}.mr-block{flex:none;align-content:start;gap:1.6mm;min-height:0;display:grid;overflow:hidden}.mr-block h3{border-left:2.2pt solid var(--mr-accent);padding-left:2.2mm;font-size:10.5pt;font-weight:800;line-height:1.3}.mr-scores{height:57mm}.mr-score-row{grid-template-columns:minmax(0,56fr) minmax(0,44fr);align-items:start;gap:4mm;display:grid}.mr-chart-box{gap:1mm;display:grid}.mr-chart{width:100%;height:auto;display:block}.mr-grid{stroke:#d6dbe1;stroke-width:.8px}.mr-axis{fill:#6b7380;font-size:8.5px}.mr-mine-line{fill:none;stroke:#16191d;stroke-width:1.8px}.mr-mine-dot{fill:#16191d}.mr-value{fill:#16191d;font-size:9px;font-weight:700}.mr-avg-line{fill:none;stroke:#7f8894;stroke-width:1.3px;stroke-dasharray:4 3}.mr-avg-dot{fill:#fff;stroke:#7f8894;stroke-width:1.2px}.mr-legend{color:var(--mr-sub);align-items:center;gap:1.4mm;font-size:7.5pt;display:flex}.mr-legend svg{flex:none;width:7mm;height:2.6mm}.mr-legend svg+svg{margin-left:3mm}.mr-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:8pt}.mr-table th,.mr-table td{border-bottom:.5pt solid var(--mr-line);text-align:left;white-space:nowrap;text-overflow:ellipsis;padding:.45mm 1.2mm;line-height:1.3;overflow:hidden}.mr-table th{background:var(--mr-soft);color:var(--mr-sub);font-weight:700}.mr-table th:first-child{width:10mm}.mr-table th:nth-child(3),.mr-table th:nth-child(4){width:15mm}.mr-table th:nth-child(n+3),.mr-table td:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums}.mr-table td:nth-child(3){font-weight:700}.mr-note{color:var(--mr-sub);font-size:7pt}.mr-empty{color:var(--mr-sub);padding:1.5mm 0;font-size:8.5pt}.mr-two{flex:none;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6mm;display:grid}.mr-two .mr-block{height:28mm}.mr-two+.mr-two .mr-block{height:41mm}.mr-types{gap:1.4mm;padding:0;list-style:none;display:grid}.mr-types li{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2mm;display:grid}.mr-type-name{white-space:nowrap;text-overflow:ellipsis;align-items:baseline;gap:1.6mm;min-width:0;display:flex;overflow:hidden}.mr-type-name strong{text-overflow:ellipsis;font-size:9pt;overflow:hidden}.mr-type-name span{color:var(--mr-sub);font-size:7.5pt}.mr-type-count{font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:1.6mm;font-size:8pt;display:flex}.mr-bar{flex:none;width:16mm;height:2mm;display:block}.mr-bar-track{fill:#e3e7ec}.mr-bar-fill{fill:#3a4350}.mr-list{gap:.5mm;padding:0;font-size:8.5pt;line-height:1.4;list-style:none;display:grid}.mr-list li{align-items:baseline;gap:2mm;min-width:0;display:flex}.mr-date,.mr-week{color:var(--mr-sub);font-variant-numeric:tabular-nums;flex:none}.mr-date{width:9mm}.mr-week{width:17mm}.mr-cell-title{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.mr-status{border:.6pt solid;border-radius:2pt;flex:none;padding:0 1.6mm;font-size:7.5pt;font-weight:700;line-height:1.5}.mr-submitted{color:#16191d}.mr-missed{color:#fff;background:#3a4350;border-color:#3a4350}.mr-open{color:#6b7380;border-style:dashed}.mr-rate{text-align:right;font-variant-numeric:tabular-nums;width:10mm;color:var(--mr-sub);flex:none}.mr-days{gap:1.2mm;display:grid}.mr-day-table{border-collapse:collapse;table-layout:fixed;text-align:center;width:100%;font-size:7.6pt;line-height:1.25}.mr-day-table th,.mr-day-table td{border:.5pt solid var(--mr-line);white-space:nowrap;padding:.35mm .4mm;overflow:hidden}.mr-day-table th{background:var(--mr-soft);width:9mm;color:var(--mr-sub);font-weight:700}.mr-day-table tr:first-child td{color:var(--mr-sub);font-variant-numeric:tabular-nums}.mr-day-table .mr-blank{color:#a3aab3}.mr-day-table .mr-day-pad{border:0}.mr-day-table .mr-att-late,.mr-day-table .mr-att-makeup,.mr-day-table .mr-hw-B,.mr-day-table .mr-hw-C{font-weight:700}.mr-day-table .mr-att-absent,.mr-day-table .mr-hw-missing{color:#fff;background:#3a4350;font-weight:700}.mr-progress{gap:.8mm}.mr-comment{flex:auto;grid-template-rows:auto minmax(0,1fr);align-content:stretch}.mr-comment-body{border:.8pt solid var(--mr-line);white-space:pre-line;overflow-wrap:anywhere;background:#fff linear-gradient(#0000 calc(100% - .5pt),#e3e7ec calc(100% - .5pt)) 0 2.5mm/100% 6mm repeat-y;border-radius:3pt;min-height:0;padding:2.5mm 3.5mm;font-size:9.5pt;line-height:6mm;overflow:hidden}.mr-comment-body.mr-comment-long{background-size:100% 5mm;font-size:8.6pt;line-height:5mm}.mr-footer{border-top:.6pt solid var(--mr-line);color:var(--mr-sub);flex:none;justify-content:space-between;gap:4mm;padding-top:2mm;font-size:7.5pt;display:flex}.mr-footer-brand{color:var(--mr-accent);font-weight:800}@page monthly-report{size:A4;margin:0}@media print{.mr-sheet{display:block;overflow:visible}.mr-page{height:296.6mm;box-shadow:none;break-after:page}.mr-page:last-child{break-after:auto}}.tour-layer{z-index:1000;position:fixed;inset:0}.tour-blocker{background:0 0;position:fixed;inset:0}.tour-blocker.tour-dim{background:#0a101c94}.tour-spot{pointer-events:none;border-radius:14px;position:fixed;box-shadow:0 0 0 9999px #0a101c94,0 0 0 3px #fffffff2,0 0 0 7px #5b7cfa8c}.tour-spot.is-moving{transition:left .25s,top .25s,width .25s,height .25s}.tour-bubble{background:var(--surface);color:var(--text);border-radius:18px;gap:8px;max-height:calc(100vh - 16px);padding:16px 18px 12px;animation:.22s ease-out tour-pop;display:grid;position:fixed;overflow:auto;box-shadow:0 24px 48px -16px #0a101c73,0 2px 8px #0a101c1f}.tour-bubble:focus{outline:none}.tour-bubble:focus-visible{box-shadow:var(--ring), 0 24px 48px -16px #0a101c73}@keyframes tour-pop{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}.tour-meta{color:var(--text-3);align-items:center;gap:6px;margin:0;font-size:.8rem;display:flex}.tour-count{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.tour-badge{color:#7a4f00;background:#fff1c7;border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:800}.tour-badge-preview{background:var(--primary-soft);color:var(--primary-ink)}.tour-title{margin:0;font-size:1.12rem}.tour-body{color:var(--text-2);margin:0;font-size:.95rem;line-height:1.65}.tour-dots{flex-wrap:wrap;gap:5px;margin:2px 0 0;display:flex}.tour-dots span{background:var(--surface-3);width:7px;height:7px;box-shadow:inset 0 0 0 1px var(--line-strong);border-radius:50%}.tour-dots span.is-done{box-shadow:none;background:#a9b9f5}.tour-dots span.is-on{background:var(--primary);width:18px;box-shadow:none;border-radius:4px}.tour-actions{gap:8px;margin-top:4px;display:flex}.tour-actions button{border-radius:12px;flex:1;min-height:44px;font-size:.95rem;font-weight:700}.tour-prev{border:1px solid var(--line-strong);background:var(--surface);color:var(--text-2)}.tour-prev:disabled{visibility:hidden}.tour-next{background:var(--primary);color:#fff;border:0}.tour-next:hover{background:var(--primary-hover)}.tour-links{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2px 10px;min-height:8px;display:flex}.tour-link{min-height:40px;color:var(--text-3);text-underline-offset:3px;background:0 0;border:0;padding:0 2px;font-size:.85rem;font-weight:600;text-decoration:underline}.tour-link:hover{color:var(--text)}.tour-never{margin-left:auto}.tour-note{color:var(--text-3);font-size:.8rem}.tour-bulb-box{right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:15;justify-items:end;gap:8px;transition:bottom .2s,opacity .15s;display:grid;position:fixed}.tour-bulb-box.is-away{opacity:0;pointer-events:none}.tour-bulb{color:#8a5a00;background:#fff8dc;border:1px solid #f1d58a;border-radius:50%;place-items:center;width:46px;height:46px;padding:0;display:grid;box-shadow:0 8px 20px -8px #7a4f0073,0 1px 3px #1018281a}.tour-bulb:hover{background:#fff1c2}.tour-bulb[aria-expanded=true]{background:#ffe9a3}.tour-bulb svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:24px;height:24px}.tour-menu{background:var(--surface);border:1px solid var(--line);width:min(270px,100vw - 32px);box-shadow:var(--shadow-2);border-radius:16px;gap:6px;padding:12px;display:grid}.tour-menu-title{color:var(--text-3);margin:0 2px 2px;font-size:.8rem;font-weight:700}.tour-menu button{border:1px solid var(--line);background:var(--surface-2);text-align:left;min-height:48px;color:var(--text);border-radius:12px;gap:1px;padding:8px 12px;font-size:.92rem;font-weight:700;display:grid}.tour-menu button:hover{background:var(--primary-soft);border-color:var(--primary-line)}.tour-menu button small{color:var(--text-3);font-size:.78rem;font-weight:500}.tour-preview-button{justify-self:start}.tour-admin{border:1px solid var(--line);background:var(--surface-2);border-radius:14px;gap:12px;margin-top:8px;padding:18px 20px;display:grid}.tour-admin h4,.tour-admin .note{margin:0}.tour-admin-tour ol{gap:4px;margin:4px 0 12px;padding-left:22px;display:grid}.tour-admin-tour p{margin:8px 0 0}.tour-admin-students{gap:6px;margin:8px 0 12px;padding:0;list-style:none;display:grid}.tour-admin-students li{border:1px solid var(--line);background:var(--surface);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 12px;display:flex}.tour-admin-name{flex:160px;min-width:0;display:grid}.tour-admin-name small{color:var(--text-3);font-size:.8rem}.tour-admin-students .pill{background:var(--surface-3);color:var(--text-2)}.tour-admin-students .pill-closed{background:var(--warning-soft);color:var(--warning)}.tour-still .tour-spot,.tour-still .tour-bubble{transition:none;animation:none}@media (prefers-reduced-motion:reduce){.tour-spot,.tour-bubble,.tour-bulb-box{transition:none;animation:none}}@media print{.tour-layer,.tour-bulb-box{display:none}}.portal .omr-help-buttons .hint-button[aria-expanded=true]{background:var(--primary-soft);border-color:var(--primary-line);color:var(--primary-ink)}.omr-help-buttons>.step-hint{flex:100%;order:10;min-width:0}.step-hint{border:1px solid var(--primary-line);background:var(--surface);border-radius:12px;gap:8px;min-width:0;padding:12px 14px;display:grid}.step-hint p{margin:0}.step-hint-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.step-hint-step{background:var(--primary-soft);border-radius:10px;gap:2px;min-width:0;padding:8px 10px;line-height:1.7;display:grid;overflow-x:auto}.step-hint-title{color:var(--primary-ink);font-size:.82rem;font-weight:800}.step-hint-ask{border:1px dashed var(--primary-line);border-radius:10px;gap:8px;padding:10px 12px;display:grid}.step-hint-ask .library-controls{align-items:center}.portal .step-hint .step-hint-next{justify-self:start}.hint-praise{color:var(--primary-ink);padding:12px 16px;font-weight:700;display:block}.hint-summary{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;gap:6px;margin:8px 0;padding:10px 12px;display:grid}.hint-summary h5,.hint-summary p{margin:0}.hint-count-list{gap:2px;margin:0;padding-left:20px;display:grid}.hint-editor{gap:8px;display:grid}.hint-editor .library-controls{align-items:center}.hint-preview{border:1px dashed var(--line-strong);border-radius:10px;padding:8px 10px}.hint-row .step-hint-list{margin-bottom:8px}.hint-chip-shown{color:#1f6b3a;background:#e3f4e8}.hint-plan{gap:8px;display:grid}.hint-plan-row{gap:4px;margin:6px 0;display:grid}.makeup-card .makeup-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.makeup-card .makeup-list li{border:1px solid var(--primary-line);background:var(--primary-soft);border-radius:12px;gap:2px;padding:10px 12px;display:grid}.makeup-card p{margin:0}.makeup-when{color:var(--primary-ink);font-size:1.05rem}.makeup-what{color:var(--text-2);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.ss-grade-band{grid-template-columns:repeat(2,minmax(0,160px));gap:12px;display:grid}.ss-input-row{flex-wrap:wrap;align-items:center;gap:8px 10px;display:flex}.ss-input-row .ss-segmented{flex:240px;margin:0}.portal button:not(.text-button):not(.button):not(.header-button).ss-bulk-toggle{white-space:nowrap;border-radius:10px;min-height:40px;padding:0 14px;font-size:.88rem}.portal button:not(.text-button):not(.button):not(.header-button).ss-bulk-toggle.on{border-color:var(--primary-line);background:var(--primary-soft);color:var(--primary-ink)}.ss-select{cursor:pointer;align-items:center;gap:6px;min-height:40px;display:inline-flex}.ss-select input{width:22px;height:22px;accent-color:var(--primary);flex:none;margin:0}.ss-grid tr.ss-chosen>th,.ss-grid tr.ss-chosen>td{background:var(--primary-soft)}.ss-today-list li.ss-chosen{background:var(--primary-soft);border-radius:8px}.ss-today-list li.ss-today-head{align-items:center}.ss-picker-layer{z-index:40;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.ss-picker-backdrop{background:#10182861;position:absolute;inset:0}.ss-picker{width:min(100%,440px);padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--surface);box-shadow:var(--shadow-2);border-radius:18px 18px 0 0;gap:12px;display:grid;position:relative}.ss-picker-title{overflow-wrap:anywhere;margin:0;font-size:1rem}.ss-picker .field-hint{margin:0}.ss-picker-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.ss-bulk-options{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.portal button:not(.text-button):not(.button):not(.header-button).ss-choice{border-width:2px;border-radius:12px;min-width:0;min-height:56px;padding:0 4px;font-size:1.02rem;font-weight:800}.portal .ss-bulk-options button:not(.text-button):not(.button):not(.header-button){min-height:48px;font-size:.95rem}.portal button:not(.text-button):not(.button):not(.header-button).ss-choice[aria-pressed=true]{outline:3px solid var(--primary);outline-offset:2px}.ss-picker-foot{gap:8px;display:flex}.portal .ss-picker-foot button:not(.text-button):not(.button):not(.header-button){flex:1 1 0;min-height:48px}.ss-dock{z-index:4;gap:8px;margin-top:12px;display:grid;position:sticky;bottom:8px}.ss-dock .ss-undo-bar{margin:0;position:static}.ss-bulk-bar{border:1px solid var(--primary-line);background:var(--surface);box-shadow:var(--shadow-2);border-radius:14px;gap:8px;padding:10px 12px;display:grid}.ss-bulk-bar .ss-segmented{margin:0}.ss-bulk-count{margin:0;font-size:.9rem}.ss-bulk-foot{flex-wrap:wrap;justify-content:space-between;gap:4px 12px;display:flex}.ss-send-day{margin-top:4px}.ss-send-day .field{max-width:300px}@media (width>=720px){.ss-picker-layer{align-items:center}.ss-picker{border-radius:18px}}@media (width<=420px){.ss-bulk-options{grid-template-columns:repeat(3,minmax(0,1fr))}}.medal-card{gap:12px;display:grid}.medal-card p{margin:0}.medal-new{background:#fff7df;border:1px solid #f1d58a;border-radius:14px;gap:8px;padding:14px 16px;display:grid}.medal-new-title{color:#7a4f00;font-size:1.15rem;font-weight:800}.medal-new .button-primary{justify-self:start;min-height:40px}.medal-chips,.medal-recent{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.medal-chips li{background:var(--surface);border:1px solid #f1d58a;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.88rem;font-weight:700;display:inline-flex}.medal-tally{color:var(--text-2);font-weight:600}.medal-tally b{color:var(--primary-ink);font-size:1.1rem}.medal-tally span{color:var(--text-3);font-size:.85rem;font-weight:500}.medal-recent li{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;min-width:0;padding:4px 10px 4px 4px;font-size:.86rem;display:inline-flex}.medal-recent-name{font-weight:700}.medal-date{color:var(--text-3);font-size:.78rem}.medal-goal{background:var(--primary-soft);border:1px solid var(--primary-line);border-radius:12px;gap:6px;padding:12px 14px;display:grid}.medal-goal-title b{color:var(--primary-ink)}.medal-goal progress,.medal-progress progress{background:var(--surface-3);appearance:none;border:0;border-radius:999px;width:100%;height:10px;overflow:hidden}.medal-goal progress::-webkit-progress-bar{background:var(--surface-3);border-radius:999px}.medal-progress progress::-webkit-progress-bar{background:var(--surface-3);border-radius:999px}.medal-goal progress::-webkit-progress-value{background:var(--primary);border-radius:999px}.medal-progress progress::-webkit-progress-value{background:var(--primary);border-radius:999px}.medal-goal progress::-moz-progress-bar{background:var(--primary);border-radius:999px}.medal-progress progress::-moz-progress-bar{background:var(--primary);border-radius:999px}.medal-book{gap:14px;display:grid}.medal-group h4{color:var(--text-2);margin:0 0 8px;font-size:.95rem}.medal-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,250px),1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.medal-tile{background:var(--surface);border:1px solid var(--line);border-radius:12px;grid-template-columns:48px minmax(0,1fr);align-items:start;gap:10px;min-width:0;padding:10px 12px;display:grid}.medal-tile.is-new{border-color:#f1d58a;box-shadow:0 0 0 3px #f1d58a59}.medal-icon{background:var(--surface-3);border:3px solid var(--line-strong);border-radius:50%;place-items:center;width:44px;height:44px;font-size:1.35rem;display:inline-grid}.medal-recent .medal-icon{border-width:2px;width:30px;height:30px;font-size:1rem}.is-bronze .medal-icon,.medal-steps .is-bronze.is-on{background:#fbeee2;border-color:#c27c3e}.is-silver .medal-icon,.medal-steps .is-silver.is-on{background:#eef1f4;border-color:#9aa5b1}.is-gold .medal-icon,.medal-steps .is-gold.is-on{background:#fff4cc;border-color:#d4a017}.medal-tile.is-locked{background:var(--surface-2)}.medal-tile.is-locked .medal-icon{filter:grayscale();opacity:.7}.medal-body{gap:3px;min-width:0;display:grid}.medal-name{flex-wrap:wrap;align-items:center;gap:4px 6px;font-weight:800;display:flex}.medal-tier{color:var(--text-2);background:var(--surface-3);border-radius:999px;padding:1px 7px;font-size:.78rem;font-weight:700}.medal-new-pill{color:#7a4f00;background:#fff1c7;height:20px;padding:0 7px;font-size:.72rem}.medal-steps{gap:3px;margin-left:auto;display:inline-flex}.medal-steps span{background:var(--surface-3);border:2px solid var(--line-strong);border-radius:50%;width:10px;height:10px}.medal-how{color:var(--text-2);overflow-wrap:anywhere;font-size:.86rem}.medal-progress{color:var(--text-3);gap:3px;font-size:.8rem;display:grid}.medal-policy .medal-example{flex-basis:100%}.medal-policy .medal-example summary{cursor:pointer;font-weight:600}.medal-policy .medal-example[open] summary{margin-bottom:8px}@media (width<=420px){.medal-tile{grid-template-columns:42px minmax(0,1fr);padding:10px}.medal-icon{width:40px;height:40px;font-size:1.2rem}}@media (prefers-reduced-motion:no-preference){.medal-new{animation:.45s ease-out both medal-pop}}@keyframes medal-pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.medal-group h4 .count{margin-left:4px}.medal-group-chip{color:var(--text-3);font-size:.72rem;font-weight:700}.medal-more{gap:8px;display:grid}.portal button.medal-more-toggle:not(.text-button){border:1px dashed var(--line-strong);background:var(--surface-2);min-height:44px;color:var(--text-2);border-radius:12px;justify-self:stretch;font-weight:700}
