:root{--bg:#fafafa;--surface:#fff;--surface-raised:#fff;--surface-hover:#f5f5f5;--text:#1a1a1a;--text-secondary:#6b7280;--text-tertiary:#9ca3af;--accent:#00795c;--accent-hover:#005f47;--accent-light:#e8f4ef;--accent-border:#b8ddcc;--border:#e5e7eb;--border-light:#f3f4f6;--ok:#10b981;--ok-light:#ecfdf5;--bad:#ef4444;--bad-light:#fef2f2;--warning:#f59e0b;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f, 0 1px 3px #0000000a;--shadow-lg:0 8px 24px #00000014, 0 2px 8px #0000000a;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-full:9999px;--font-sans:"Inter", "Noto Sans TC", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"SF Mono", "Fira Code", "Consolas", monospace;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.9375rem;--text-lg:1.0625rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:1.875rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-8:2rem;--sp-10:2.5rem;--sp-12:3rem;--sp-16:4rem;--ease:cubic-bezier(.4, 0, .2, 1);--duration:.18s;font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.6}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}#root{min-height:100vh}.app-shell{max-width:960px;padding:0 var(--sp-6) var(--sp-12);margin:0 auto}@media (width<=768px){.app-shell{padding:0 var(--sp-4) var(--sp-8)}}.top-nav{justify-content:space-between;align-items:center;gap:var(--sp-4);-webkit-backdrop-filter:blur(12px);z-index:100;border-bottom:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);margin:0 calc(-1 * var(--sp-6));padding:var(--sp-3) var(--sp-6);background:#ffffffd9;display:flex;position:sticky;top:0}@media (width<=768px){.top-nav{margin:0 calc(-1 * var(--sp-4));padding:var(--sp-3) var(--sp-4);border-radius:0}}.brand{align-items:center;gap:var(--sp-2);font-weight:700;font-size:var(--text-base);color:var(--text);letter-spacing:-.01em;white-space:nowrap;text-decoration:none;display:inline-flex}.brand-mark{border-radius:var(--radius-sm);background:var(--accent);color:#fff;width:24px;height:24px;font-size:var(--text-xs);letter-spacing:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.nav-links{align-items:center;gap:var(--sp-1);display:flex}@media (width<=768px){.nav-links{display:none}.nav-links.open{background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-lg);padding:var(--sp-2) var(--sp-4);align-items:stretch;gap:var(--sp-1);z-index:99;flex-direction:column;display:flex;position:absolute;top:100%;left:0;right:0}.nav-links.open .nav-link{width:100%;padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md)}}.nav-link{color:var(--text-secondary);font-size:var(--text-sm);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);transition:all var(--duration) var(--ease);white-space:nowrap;font-weight:500}.nav-link:hover{color:var(--text);background:var(--surface-hover)}.nav-link.active{color:var(--accent);background:var(--accent-light);font-weight:600}.top-nav-end,.nav-actions{align-items:center;gap:var(--sp-3);display:flex}.nav-user{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap;font-weight:500}.nav-signout{padding:var(--sp-1) var(--sp-3);font-size:var(--text-sm)}@media (width<=768px){.nav-user{display:none}}.hamburger{cursor:pointer;padding:var(--sp-2);border-radius:var(--radius-sm);color:var(--text-secondary);transition:background var(--duration) var(--ease);background:0 0;border:none;display:none}.hamburger:hover{background:var(--surface-hover)}.hamburger svg{display:block}@media (width<=768px){.hamburger{justify-content:center;align-items:center;display:inline-flex}}.mobile-nav-overlay{display:none}@media (width<=768px){.mobile-nav-overlay.open{z-index:98;background:#0003;display:block;position:fixed;inset:0}}.main-content{padding-top:var(--sp-8)}@media (width<=768px){.main-content{padding-top:var(--sp-6)}}.footer{margin-top:var(--sp-12);padding-top:var(--sp-4);font-size:var(--text-xs);color:var(--text-tertiary);border-top:1px solid var(--border-light);text-align:center}.page{text-align:left}.page h1{font-size:var(--text-2xl);margin:0 0 var(--sp-2);letter-spacing:-.01em;color:var(--text);font-weight:700}.lead{color:var(--text-secondary);margin-bottom:var(--sp-6);font-size:var(--text-base);max-width:52rem;line-height:1.7}.muted{color:var(--text-secondary)}.error{color:var(--bad);margin-bottom:var(--sp-3)}.btn{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:var(--text-sm);color:var(--text);transition:all var(--duration) var(--ease);font-weight:500;line-height:1.5;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-hover);border-color:#d1d5db}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn.ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn.sm{padding:calc(var(--sp-1) + 2px) var(--sp-3);font-size:var(--text-xs)}.btn:disabled{opacity:.5;cursor:not-allowed}.card-grid{gap:var(--sp-4);margin-top:var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.card{padding:var(--sp-5);background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);color:inherit;box-shadow:var(--shadow-xs);transition:all var(--duration) var(--ease);text-decoration:none;display:block}.card:hover{border-color:var(--border);box-shadow:var(--shadow-md);color:inherit;transform:translateY(-1px)}.card h2{font-size:var(--text-base);margin:0 0 var(--sp-2);color:var(--text);font-weight:600}.card p{font-size:var(--text-sm);color:var(--text-secondary);margin:0;line-height:1.6}.card-stat{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--text-secondary);font-weight:500;display:block}.card-stat.cta{color:var(--accent)}.card-stat.muted{color:var(--text-tertiary)}.card-num{color:var(--accent);font-weight:600}.home-news{margin-bottom:var(--sp-4);border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--surface);overflow:hidden}.home-news summary{padding:var(--sp-3) var(--sp-4);cursor:pointer;font-weight:500;font-size:var(--text-sm);color:var(--text);align-items:center;gap:var(--sp-2);list-style:none;display:flex}.home-news summary:before{content:"";background:var(--accent);border-radius:50%;flex-shrink:0;width:.5rem;height:.5rem;display:inline-block}.home-news summary::-webkit-details-marker{display:none}.home-news-body{padding:0 var(--sp-4) var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);line-height:1.6}.home-news-body ul{margin:var(--sp-1) 0 0 var(--sp-4);padding:0}.home-news-body li{margin-bottom:var(--sp-1)}.home-news-date{color:var(--text-tertiary);font-size:var(--text-xs);margin-left:auto}.record-panel-header{justify-content:space-between;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.record-panel-header h2{margin:0}.toggle-all-btn{align-items:center;gap:var(--sp-1);flex-shrink:0;display:inline-flex}.toggle-all-icon{font-size:var(--text-base);line-height:1}.collapsible-list{gap:var(--sp-2);flex-direction:column;display:flex}.collapsible-item{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-xs);overflow:hidden}.collapsible-item summary{padding:var(--sp-3) var(--sp-4);cursor:pointer;align-items:center;gap:var(--sp-3);font-size:var(--text-sm);color:var(--text);transition:background var(--duration) var(--ease);font-weight:500;list-style:none;display:flex}.collapsible-item summary::-webkit-details-marker{display:none}.collapsible-item summary:hover{background:var(--surface-hover)}.collapsible-item[open] summary{border-bottom:1px solid var(--border-light)}.collapsible-summary-text{flex:1}.collapsible-arrow{color:var(--text-tertiary);transition:transform var(--duration) var(--ease);flex-shrink:0;align-items:center;display:inline-flex}.collapsible-item[open] .collapsible-arrow{transform:rotate(180deg)}.collapsible-body{padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);color:var(--text-secondary);white-space:pre-line;line-height:1.7}.home-mock-banner{border-radius:var(--radius-md);background:var(--accent-light);border:1px solid var(--accent-border);font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--sp-3);overflow:hidden}.home-mock-banner.fail{background:var(--bad-light);border-color:#fecaca}.home-mock-banner-link{width:100%;padding:var(--sp-2) var(--sp-3);color:inherit;justify-content:space-between;align-items:center;text-decoration:none;display:flex}.home-mock-banner-link:hover{opacity:.85;color:inherit}.home-mock-banner-arrow{color:var(--text-tertiary);margin-left:var(--sp-2);flex-shrink:0}.home-progress-section{margin-bottom:var(--sp-4)}.home-progress-label{font-size:var(--text-sm);margin-bottom:var(--sp-1);justify-content:space-between;font-weight:500;display:flex}.progress-bar{background:var(--border-light);height:4px;margin-bottom:var(--sp-3);border-radius:2px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.skeleton-card{border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-5);gap:var(--sp-2);background:var(--surface);flex-direction:column;display:flex}.skeleton-line{background:var(--border-light);border-radius:4px;height:12px;animation:1.2s ease-in-out infinite skeleton-pulse}.skeleton-line.short{width:40%}.skeleton-bar{background:var(--border-light);height:4px;margin-top:var(--sp-1);border-radius:2px;animation:1.2s ease-in-out .2s infinite skeleton-pulse}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.hero-tech{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-5);margin-bottom:var(--sp-4);box-shadow:var(--shadow-xs)}.kpi-grid{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.kpi-card{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-3) var(--sp-4);box-shadow:var(--shadow-xs)}.kpi-card p{color:var(--text-tertiary);font-size:var(--text-xs);margin:0;font-weight:500}.kpi-card div{margin-top:var(--sp-1);font-size:var(--text-xl);color:var(--text);font-weight:700}.kpi-card.highlight div{color:var(--accent)}.record-panel{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-5);margin-bottom:var(--sp-4);box-shadow:var(--shadow-xs)}.record-panel h2{margin:0 0 var(--sp-3);font-size:var(--text-lg);font-weight:600}.compare-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.compare-box{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:var(--sp-4);box-shadow:var(--shadow-xs)}.compare-box h3{margin:0 0 var(--sp-2);font-weight:700;font-size:var(--text-lg);color:var(--accent)}.compare-box ul{margin:0;padding:0;list-style:none}.compare-box li{gap:var(--sp-2);padding:var(--sp-2) 0;font-size:var(--text-sm);border-bottom:1px solid var(--border-light);display:flex}.compare-box li:last-child{border-bottom:none}.compare-label{color:var(--text-tertiary);white-space:nowrap;flex-shrink:0;font-weight:500}.compare-value{color:var(--text)}.register-links{align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border-light);flex-wrap:wrap;display:flex}.register-label{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:500}.register-links .btn.ghost.sm{background:var(--accent-light);color:var(--accent);border-color:var(--accent-border);font-weight:600}.register-links .btn.ghost.sm:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.steps{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.step{align-items:center;gap:var(--sp-3);border:1px solid var(--border-light);background:var(--surface);padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);font-size:var(--text-sm);box-shadow:var(--shadow-xs);display:flex}.step-num{border-radius:var(--radius-full);background:var(--accent-light);width:28px;height:28px;color:var(--accent);border:1px solid var(--accent-border);font-size:var(--text-sm);flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.scope-cards{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));display:grid}.scope-mini-card{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-md);padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);box-shadow:var(--shadow-xs);color:inherit;transition:border-color var(--duration) var(--ease);text-decoration:none;display:block}.scope-mini-card:hover{border-color:var(--accent);color:inherit}.study-layout{gap:var(--sp-5);grid-template-columns:220px 1fr;align-items:start;display:grid}@media (width<=768px){.study-layout{gap:var(--sp-3);grid-template-columns:1fr}}.study-sidebar{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-3);box-shadow:var(--shadow-xs);top:calc(var(--sp-12) + var(--sp-2));position:sticky}@media (width<=768px){.study-sidebar{position:static}}.study-sidebar-title{margin:0 0 var(--sp-2);padding:0 var(--sp-2);font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.study-sidebar nav{flex-direction:column;gap:2px;display:flex}.study-chapter-link{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);transition:all var(--duration) var(--ease);border-left:2px solid #0000;text-decoration:none;display:block}.study-chapter-link:hover{background:var(--surface-hover);color:var(--text)}.study-chapter-link.active{background:var(--accent-light);color:var(--accent);border-left-color:var(--accent);font-weight:600}.study-content{background:var(--surface);border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-xs);min-height:240px}.study-content h2{margin:0 0 var(--sp-2);font-size:var(--text-xl);color:var(--text);font-weight:600}.study-empty{margin-top:var(--sp-4);padding:var(--sp-5);border:1px dashed var(--border);border-radius:var(--radius-md);text-align:center;background:var(--bg)}.study-empty p{font-size:var(--text-sm);margin:0}.study-empty p+p{margin-top:var(--sp-1)}.study-chapter-link{align-items:center;gap:var(--sp-2);display:flex}.study-chapter-title{flex:1;min-width:0}.chapter-count{border-radius:var(--radius-full);background:var(--border-light);min-width:26px;height:20px;color:var(--text-tertiary);flex-shrink:0;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.study-chapter-link.active .chapter-count{background:var(--accent);color:#fff}.chapter-intro h2{margin:0 0 var(--sp-2)}.chapter-intro-stats{gap:var(--sp-2);margin-top:var(--sp-4);margin-bottom:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(110px,1fr));display:grid}.practice-session{gap:var(--sp-4);flex-direction:column;display:flex}.practice-progress{gap:var(--sp-1);flex-direction:column;display:flex}.practice-progress .muted{font-size:var(--text-xs);text-align:right}.question-card{gap:var(--sp-3);flex-direction:column;display:flex}.question-stem{font-size:var(--text-base);color:var(--text);white-space:pre-line;line-height:1.8}.question-options{gap:var(--sp-2);flex-direction:column;display:flex}.question-option{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text);text-align:left;cursor:pointer;transition:all var(--duration) var(--ease);width:100%;font-family:inherit;line-height:1.6;display:flex}.question-option:hover:not(:disabled){border-color:var(--accent-border);background:var(--surface-hover)}.question-option:disabled{cursor:default}.question-option.selected{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.question-option.correct{background:var(--ok-light);border-color:var(--ok);color:#065f46}.question-option.incorrect{background:var(--bad-light);border-color:var(--bad);color:#991b1b}.question-option-key{border-radius:var(--radius-full);background:var(--border-light);width:24px;height:24px;font-weight:700;font-size:var(--text-xs);color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.question-option.selected .question-option-key{background:var(--accent);color:#fff}.question-option.correct .question-option-key{background:var(--ok);color:#fff}.question-option.incorrect .question-option-key{background:var(--bad);color:#fff}.question-option-text{flex:1}.question-option-mark{font-weight:700;font-size:var(--text-lg);flex-shrink:0}.question-explanation{padding:var(--sp-3) var(--sp-4);background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius-md)}.question-explanation.incorrect{background:var(--bad-light);border-color:#fecaca}.question-explanation-header{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-2);font-size:var(--text-xs);display:flex}.question-result-pill{padding:2px var(--sp-2);border-radius:var(--radius-full);font-weight:700;font-size:var(--text-xs);align-items:center;display:inline-flex}.question-result-pill.ok{background:var(--ok);color:#fff}.question-result-pill.bad{background:var(--bad);color:#fff}.question-explanation-body{font-size:var(--text-sm);color:var(--text);white-space:pre-line;margin:0;line-height:1.7}.practice-header{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.practice-header-stats{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums;display:flex}.practice-header-stats-primary{color:var(--text);font-weight:600}.practice-header-stats-divider{color:var(--text-tertiary)}.practice-header-actions{gap:var(--sp-2);display:flex}.practice-action-btn{padding:calc(var(--sp-1) + 2px) var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;align-items:center;gap:4px;font-family:inherit;display:inline-flex}.practice-action-btn:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.practice-action-btn:disabled{opacity:.45;cursor:not-allowed}.practice-action-btn.is-favorited{color:var(--warning);border-color:var(--warning);background:color-mix(in srgb, var(--warning) 8%, var(--surface));font-weight:600}.practice-action-btn.is-favorited:hover:not(:disabled){color:var(--warning);border-color:var(--warning);background:color-mix(in srgb, var(--warning) 14%, var(--surface))}.practice-action-label{font-weight:500}.practice-bottom-nav{align-items:center;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border-light);grid-template-columns:1fr auto 1fr;display:grid}.practice-bottom-nav>:first-child{justify-self:start}.practice-bottom-nav>:last-child{justify-self:end}.jump-grid-wrapper{gap:var(--sp-2);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-light);flex-direction:column;display:flex}.jump-grid-legend{gap:var(--sp-4);font-size:var(--text-xs);color:var(--text-secondary);display:flex}.jump-grid-legend-item{align-items:center;gap:4px;display:inline-flex}.jump-grid-legend-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.jump-grid-legend-dot.current{background:var(--accent)}.jump-grid-legend-dot.answered{background:var(--accent-light);border:1px solid var(--accent)}.jump-grid-legend-dot.wrong{background:var(--bad-light);border:1px solid var(--bad)}.jump-grid-legend-dot.unanswered{border:1px solid var(--border);background:0 0}.jump-grid-legend-dot.marked{background:color-mix(in srgb, var(--warning) 18%, var(--surface));border:1px solid var(--warning)}.jump-grid{grid-template-columns:repeat(auto-fill,36px);gap:6px;display:grid}.jump-cell{border-radius:var(--radius-sm);width:36px;height:36px;font-size:var(--text-xs);font-variant-numeric:tabular-nums;cursor:pointer;transition:all var(--duration) var(--ease);padding:0;font-family:inherit;font-weight:600}.jump-cell.current{background:var(--accent);color:#fff;border:1px solid var(--accent)}.jump-cell.answered{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border)}.jump-cell.answered:hover{background:var(--accent);color:#fff}.jump-cell.answered.wrong{background:var(--bad-light);color:var(--bad);border-color:#fca5a5}.jump-cell.answered.wrong:hover{background:var(--bad);color:#fff;border-color:var(--bad)}.jump-cell.unanswered{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}.jump-cell.unanswered:hover{border-color:var(--accent);color:var(--accent)}.jump-cell.marked{background:color-mix(in srgb, var(--warning) 16%, var(--surface));color:#92400e;border:1px solid var(--warning);position:relative}.jump-cell.marked:hover{background:color-mix(in srgb, var(--warning) 26%, var(--surface));border-color:var(--warning)}.jump-cell-mark{pointer-events:none;font-size:10px;line-height:1;position:absolute;top:-4px;right:-4px}.practice-history-list{padding:var(--sp-2) var(--sp-4) var(--sp-3);flex-direction:column;gap:0;display:flex}.practice-history-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;font-size:var(--text-sm);border-bottom:1px solid var(--border-light);grid-template-columns:150px 70px 1fr auto;display:grid}.practice-history-row>:first-child{white-space:nowrap}.practice-history-row:last-child{border-bottom:none}.practice-history-row strong{font-variant-numeric:tabular-nums;font-weight:700}.latest-pill{padding:2px var(--sp-2);background:var(--accent);color:#fff;border-radius:var(--radius-full);align-items:center;font-size:11px;font-weight:600;display:inline-flex}.practice-summary h2{margin:0 0 var(--sp-1)}.actions{gap:var(--sp-3);margin-top:var(--sp-4);flex-wrap:wrap;display:flex}.auth-gate{min-height:100dvh;padding:var(--sp-6);background:var(--bg);box-sizing:border-box;place-items:center;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:440px;padding:var(--sp-8);gap:var(--sp-4);flex-direction:column;display:flex;box-shadow:0 2px 12px #0000000a}.auth-title{font-size:var(--text-2xl);color:var(--text);margin:0;font-weight:700;line-height:1.3}.auth-lead{font-size:var(--text-base);color:var(--text-secondary);margin:0;line-height:1.65}.auth-error{font-size:var(--text-sm);color:var(--bad);background:var(--bad-light);border:1px solid var(--bad);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);word-break:break-word;margin:0}.auth-form{gap:var(--sp-4);flex-direction:column;margin:0;display:flex}.auth-field{gap:var(--sp-2);flex-direction:column;display:flex}.auth-field>span{font-size:var(--text-sm);color:var(--text-secondary);font-weight:500}.auth-field input{padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:var(--text-base);box-sizing:border-box;width:100%;transition:border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);font-family:inherit}.auth-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);outline:none}.auth-field input:disabled{background:var(--surface-hover);color:var(--text-tertiary);cursor:not-allowed}.auth-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.auth-actions .btn{flex:1;min-width:120px}.modal-overlay{padding:var(--sp-4);z-index:1000;animation:modal-overlay-in .16s var(--ease);background:#0f172073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);width:100%;max-width:480px;max-height:calc(100vh - var(--sp-8));animation:modal-card-in .2s var(--ease);flex-direction:column;display:flex;overflow:hidden}@keyframes modal-card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:var(--sp-5) var(--sp-6) var(--sp-3);border-bottom:1px solid var(--border-light)}.modal-header h3{margin:0 0 var(--sp-1);font-size:var(--text-lg);font-weight:600}.modal-header .muted{font-size:var(--text-sm);margin:0}.modal-body{padding:var(--sp-4) var(--sp-6);gap:var(--sp-4);flex-direction:column;display:flex;overflow-y:auto}.modal-field{gap:var(--sp-2);flex-direction:column;display:flex}.modal-field-label{font-size:var(--text-sm);color:var(--text-secondary);font-weight:500}.modal-field select,.modal-field textarea{font-family:inherit;font-size:var(--text-base);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);transition:border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);outline:none}.modal-field textarea{resize:vertical;min-height:96px}.modal-field select:focus,.modal-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.modal-field select:disabled,.modal-field textarea:disabled{background:var(--surface-hover);color:var(--text-tertiary);cursor:not-allowed}.modal-error{padding:var(--sp-2) var(--sp-3);background:var(--bad-light);color:var(--bad);border-radius:var(--radius-sm);font-size:var(--text-sm);margin:0}.modal-success{text-align:center;padding:var(--sp-8) var(--sp-6);color:var(--ok);font-size:var(--text-lg);font-weight:500}.modal-actions{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-6) var(--sp-5);border-top:1px solid var(--border-light);display:flex}.practice-history-banner-wrap{align-items:flex-start;gap:var(--sp-3);display:flex}.practice-history-banner-wrap .practice-history-banner{flex:1;min-width:0}.practice-history-row-trailing{gap:var(--sp-2);justify-content:flex-end;align-items:center;display:flex}.practice-history-row.viewing,.practice-history-row.current{background:var(--accent-light);margin:0 calc(-1 * var(--sp-2));padding-left:var(--sp-2);padding-right:var(--sp-2);border-radius:var(--radius-sm)}.current-pill{padding:2px var(--sp-2);background:var(--ok);color:#fff;border-radius:var(--radius-full);align-items:center;font-size:11px;font-weight:600;display:inline-flex}.practice-history-end-review{background:var(--surface);border:1px solid var(--accent);color:var(--accent);font:inherit;font-size:var(--text-sm);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration) var(--ease);white-space:nowrap;font-weight:600}.practice-history-end-review:hover{background:var(--accent);color:#fff}button.practice-history-row{border:none;border-bottom:1px solid var(--border-light);padding:var(--sp-2) 0;font:inherit;font-size:var(--text-sm);color:inherit;text-align:left;cursor:pointer;width:100%;transition:background var(--duration) var(--ease);background:0 0}button.practice-history-row:last-child{border-bottom:none}.practice-history-row-clickable:hover:not(.viewing){background:var(--surface-hover)}.practice-history-row-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius-sm)}.practice-history-view-cta{font-size:var(--text-sm);color:var(--accent);transition:color var(--duration) var(--ease);font-weight:500}.practice-history-row-clickable:hover .practice-history-view-cta{color:var(--accent-hover)}.question-result-pill:not(.ok):not(.bad){background:var(--surface-hover);color:var(--text-secondary);border:1px solid var(--border)}.page.mock{gap:var(--sp-6);flex-direction:column;display:flex}.mock-section-title{margin:0 0 var(--sp-2);font-size:var(--text-lg);color:var(--text);font-weight:600}.mock-section-hint{margin:0 0 var(--sp-4);font-size:var(--text-sm)}.mock-mode-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5) var(--sp-6);box-shadow:var(--shadow-xs)}.mock-mode-options{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.mock-mode-card{gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration) var(--ease);background:var(--surface);display:flex}.mock-mode-card:hover{border-color:var(--accent-border);background:var(--surface-hover)}.mock-mode-card.active{border-color:var(--accent);background:var(--accent-light);box-shadow:0 0 0 3px var(--accent-light)}.mock-mode-card input[type=radio]{accent-color:var(--accent);margin-top:4px}.mock-mode-card-body{gap:var(--sp-1);flex-direction:column;flex:1;display:flex}.mock-mode-card-title{font-weight:600;font-size:var(--text-base);color:var(--text)}.mock-mode-card-desc{font-size:var(--text-sm);margin:0;line-height:1.5}.mock-resume-banner{justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-radius:var(--radius-lg);border:1px solid var(--accent);background:var(--accent-light);box-shadow:var(--shadow-sm);display:flex}.mock-resume-banner.paused{border-color:var(--warning);background:#fef3c7}.mock-resume-banner-body{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.mock-resume-banner-title{font-weight:600;font-size:var(--text-base);color:var(--text)}.mock-resume-banner-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.mock-resume-banner-actions{gap:var(--sp-2);flex-shrink:0;display:flex}.mock-ticket-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5) var(--sp-6);box-shadow:var(--shadow-xs)}.mock-ticket-grid{gap:var(--sp-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=768px){.mock-ticket-grid{grid-template-columns:repeat(2,1fr)}}.mock-ticket-card{gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);transition:all var(--duration) var(--ease);font:inherit;color:inherit;text-align:left;cursor:pointer;flex-direction:column;display:flex;position:relative}button.mock-ticket-card:disabled{cursor:not-allowed}.mock-ticket-card:hover:not(.disabled):not(:disabled){border-color:var(--accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.mock-ticket-card:hover:not(.disabled):not(:disabled) .mock-ticket-card-arrow{color:var(--accent);transform:translate(2px)}.mock-ticket-card.active{border-color:var(--accent);background:var(--accent-light);cursor:default}.mock-ticket-card.disabled{opacity:.55}.mock-ticket-card-arrow{right:var(--sp-3);bottom:var(--sp-2);font-size:var(--text-base);color:var(--text-tertiary);transition:transform var(--duration) var(--ease), color var(--duration) var(--ease);font-weight:600;line-height:1;position:absolute}.mock-ticket-card-hint{font-size:var(--text-xs);text-align:center;margin:0;font-style:italic}.mock-ticket-card-header{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.mock-ticket-card-number{font-weight:600;font-size:var(--text-sm)}.mock-ticket-card-status{padding:2px var(--sp-2);border-radius:var(--radius-full);white-space:nowrap;font-size:11px;font-weight:600}.mock-ticket-card-status.untouched{background:var(--surface-hover);color:var(--text-secondary);border:1px solid var(--border)}.mock-ticket-card-status.done{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border)}.mock-ticket-card-status.in-progress{background:var(--accent);color:#fff}.mock-ticket-card-status.paused{background:var(--warning);color:#fff}.mock-ticket-card-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.mock-ticket-card-pass-pill{margin-left:var(--sp-2);padding:1px var(--sp-2);border-radius:var(--radius-full);align-items:center;font-size:10px;font-weight:700;display:inline-flex}.mock-ticket-card-pass-pill.pass{background:var(--ok);color:#fff}.mock-ticket-card-pass-pill.fail{background:var(--bad);color:#fff}.page.mock-run{gap:var(--sp-4);flex-direction:column;display:flex}.mock-run-hud{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);display:flex}.mock-run-hud-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:flex}.mock-run-hud-timer{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--text-lg);font-variant-numeric:tabular-nums;color:var(--text);transition:color var(--duration) var(--ease), background-color var(--duration) var(--ease), border-color var(--duration) var(--ease);font-weight:600;display:inline-flex}.mock-run-hud-timer-icon{font-size:var(--text-base);line-height:1}.mock-run-hud-timer-value{line-height:1}.mock-run-hud-timer.is-warn{color:var(--bad);background:var(--bad-light);border-color:var(--bad)}.mock-run-hud-timer.is-pulse{animation:1s ease-in-out infinite mockTimerPulse}.mock-run-hud-timer.is-expired{opacity:.7}@keyframes mockTimerPulse{0%,to{transform:scale(1);box-shadow:0 0 #ef444466}50%{transform:scale(1.04);box-shadow:0 0 0 6px #ef444400}}@media (prefers-reduced-motion:reduce){.mock-run-hud-timer.is-pulse{animation:none}}.mock-run-hud-actions{align-items:center;gap:var(--sp-3);display:inline-flex}.mock-pause-btn{align-items:center;gap:var(--sp-1);display:inline-flex}.mock-confirm-dialog-message{font-size:var(--text-base);color:var(--text);gap:var(--sp-3);flex-direction:column;line-height:1.6;display:flex}.mock-confirm-dialog-bullets{padding-left:var(--sp-5);gap:var(--sp-1);color:var(--text);flex-direction:column;margin:0;display:flex}.mock-confirm-dialog-bullets li{list-style:outside}.mock-mark-btn.is-marked{background:color-mix(in srgb, var(--warning) 14%, var(--surface));border-color:var(--warning);color:#92400e}.mock-mark-btn.is-marked:hover:not(:disabled){background:color-mix(in srgb, var(--warning) 22%, var(--surface));color:#92400e}.page.mock-result{gap:var(--sp-6);flex-direction:column;display:flex}.mock-result-banner{align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-6);border-radius:var(--radius-xl);text-align:center;box-shadow:var(--shadow-sm);border:1px solid #0000;flex-direction:column;display:flex}.mock-result-banner.pass{background:var(--ok-light);border-color:var(--ok);color:#065f46}.mock-result-banner.fail{background:var(--bad-light);border-color:var(--bad);color:#991b1b}.mock-result-banner-label{font-size:var(--text-lg);letter-spacing:.02em;font-weight:600}.mock-result-score{align-items:baseline;gap:var(--sp-2);font-variant-numeric:tabular-nums;display:inline-flex}.mock-result-score-value{font-size:5rem;font-weight:700;line-height:1}.mock-result-score-unit{font-size:var(--text-2xl);opacity:.7;font-weight:500}.mock-result-banner-meta{font-size:var(--text-sm);opacity:.85;margin:0}.mock-result-kpis{gap:var(--sp-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=640px){.mock-result-kpis{grid-template-columns:repeat(2,1fr)}}.mock-result-kpi{gap:var(--sp-2);padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.mock-result-kpi-label{font-size:var(--text-xs);color:var(--text-secondary);letter-spacing:.04em}.mock-result-kpi-value{font-size:var(--text-2xl);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.mock-result-kpi-value.ok{color:var(--ok)}.mock-result-kpi-value.bad{color:var(--bad)}.mock-result-kpi-value.muted{color:var(--text-tertiary)}.mock-result-weaknesses{gap:var(--sp-3);padding:var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.mock-result-weakness-hint,.mock-result-weakness-empty{font-size:var(--text-sm);margin:0}.mock-result-weakness-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.mock-result-weakness-item{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);transition:all var(--duration) var(--ease);text-decoration:none;display:flex}.mock-result-weakness-item:hover{border-color:var(--accent);background:var(--surface)}.mock-result-weakness-item.high{border-left:4px solid var(--bad)}.mock-result-weakness-item.mid{border-left:4px solid var(--warning)}.mock-result-weakness-item.low{border-left:4px solid var(--accent)}.mock-result-weakness-title{font-weight:500;font-size:var(--text-sm)}.mock-result-weakness-stat{align-items:baseline;gap:var(--sp-2);font-variant-numeric:tabular-nums;white-space:nowrap;display:inline-flex}.mock-result-weakness-frac{font-weight:600;font-size:var(--text-sm)}.mock-result-weakness-pct{color:var(--text-secondary);font-size:var(--text-xs)}.mock-result-actions{justify-content:center;align-items:center;gap:var(--sp-3);padding-top:var(--sp-2);flex-wrap:wrap;display:flex}.page.records{gap:var(--sp-5);flex-direction:column;display:flex}.records-empty{align-items:center;gap:var(--sp-3);padding:var(--sp-10) var(--sp-6);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-md);text-align:center;flex-direction:column;display:flex}.records-empty .lead{font-size:var(--text-lg);margin:0;font-weight:500}.records-dashboard{gap:var(--sp-4);flex-direction:column;display:flex}.records-kpis{gap:var(--sp-3);grid-template-columns:repeat(4,1fr);display:grid}@media (width<=640px){.records-kpis{grid-template-columns:repeat(2,1fr)}}.records-kpi{gap:var(--sp-1);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.records-kpi-label{font-size:var(--text-xs);color:var(--text-secondary);letter-spacing:.04em;align-items:center;gap:4px;display:inline-flex}.kpi-info-wrap{line-height:1;display:inline-flex;position:relative}.kpi-info-btn{appearance:none;font:inherit;font-size:var(--text-sm);color:var(--text-tertiary);cursor:pointer;transition:color var(--duration) var(--ease);background:0 0;border:none;margin:0;padding:0;line-height:1}.kpi-info-btn:hover,.kpi-info-btn[aria-expanded=true]{color:var(--accent)}.kpi-info-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-full)}.kpi-info-popover{z-index:10;min-width:180px;max-width:260px;padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);color:var(--text);font-size:var(--text-xs);letter-spacing:normal;white-space:normal;text-transform:none;animation:kpiInfoFadeIn .12s var(--ease);font-weight:400;line-height:1.5;position:absolute;top:calc(100% + 6px)}.kpi-info-popover.align-left{left:0;right:auto}.kpi-info-popover.align-right{left:auto;right:0}@media (width<=480px){.kpi-info-popover{min-width:160px;max-width:calc(100vw - 24px)}}@keyframes kpiInfoFadeIn{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.records-kpi-value{font-size:var(--text-3xl);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1;font-family:var(--font-mono);color:var(--text)}.records-kpi-sub{font-size:var(--text-xs)}.records-trend{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5) var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.records-trend .mock-section-title{font-size:var(--text-base);margin:0;font-weight:600}.records-hub-ctas{gap:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}@media (width<=640px){.records-hub-ctas{grid-template-columns:1fr}}.records-hub-cta{align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);box-shadow:var(--shadow-xs);transition:all var(--duration) var(--ease);text-decoration:none;display:flex}.records-hub-cta:hover{border-color:var(--accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.records-hub-cta-icon{flex-shrink:0;font-size:28px;line-height:1}.records-hub-cta-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.records-hub-cta-body h3{font-size:var(--text-base);color:var(--text);margin:0;font-weight:600}.records-hub-cta-body p{font-size:var(--text-xs);margin:0}.records-hub-cta-arrow{font-size:var(--text-lg);color:var(--text-tertiary);transition:color var(--duration) var(--ease);flex-shrink:0}.records-hub-cta:hover .records-hub-cta-arrow{color:var(--accent)}.records-list-section{gap:var(--sp-3);flex-direction:column;display:flex}.records-list-header{justify-content:space-between;align-items:baseline;gap:var(--sp-3);display:flex}.records-list-header .mock-section-title{font-size:var(--text-base);margin:0;font-weight:600}.records-list-count{font-size:var(--text-xs)}.records-show-more-btn{margin-top:var(--sp-2);align-self:center}.mock-trend-chart-wrap{width:100%}.mock-trend-chart{width:100%;height:auto;max-height:240px;display:block}.mock-trend-grid{stroke:var(--border-light);stroke-width:1px}.mock-trend-y-label{fill:var(--text-tertiary);font-size:9px;font-family:var(--font-mono)}.mock-trend-pass-line{stroke:var(--bad);stroke-width:1.2px;stroke-dasharray:5 4;opacity:.55}.mock-trend-pass-label{fill:var(--bad);font-size:9px;font-weight:600}.mock-trend-path{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.mock-trend-dot-group{cursor:pointer}.mock-trend-dot{fill:var(--ok);stroke:var(--surface);stroke-width:2px;transition:r .15s var(--ease)}.mock-trend-x-label{fill:var(--text-tertiary);font-size:9px;font-family:var(--font-mono)}.mock-trend-tooltip rect{fill:var(--text);opacity:.92}.mock-trend-tooltip text{fill:#fff;font-size:11px;font-weight:500}.mock-trend-empty{padding:var(--sp-8) var(--sp-6);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm)}.mock-review-section{gap:var(--sp-4);padding:var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.mock-review-header{gap:var(--sp-1);flex-direction:column;display:flex}.mock-review-lead{font-size:var(--text-sm);margin:0}.mock-review-chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.mock-review-chip{padding:var(--sp-2) var(--sp-4);border-radius:var(--radius-full);background:var(--surface-hover);border:1px solid var(--border);font-family:inherit;font-size:var(--text-sm);color:var(--text);cursor:pointer;transition:all var(--duration) var(--ease);align-items:center;font-weight:500;display:inline-flex}.mock-review-chip:hover:not(.active){border-color:var(--accent);color:var(--accent)}.mock-review-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.mock-review-filters{gap:var(--sp-3);flex-wrap:wrap;display:flex}.mock-review-filter{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:inline-flex}.mock-review-filter select{font-family:inherit;font-size:var(--text-sm);padding:4px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}.mock-review-filter select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.mock-review-progress{gap:var(--sp-2);flex-direction:column;display:flex}.mock-review-progress-label{justify-content:space-between;align-items:center;gap:var(--sp-3);font-size:var(--text-sm);display:flex}.mock-review-grid-toggle{flex-shrink:0}.mock-review-grid{gap:var(--sp-2);padding:var(--sp-3);background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);grid-template-columns:repeat(auto-fill,minmax(48px,1fr));display:grid}.mock-review-grid-cell{aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--duration) var(--ease);justify-content:center;align-items:center;display:inline-flex;position:relative}.mock-review-grid-cell:hover{border-color:var(--accent);color:var(--accent)}.mock-review-grid-cell.current{background:var(--accent);border-color:var(--accent);color:#fff}.mock-review-grid-cell.resolved{background:var(--ok-light);border-color:var(--ok);color:#065f46}.mock-review-grid-cell.resolved.current{background:var(--ok);border-color:var(--ok);color:#fff}.mock-review-grid-mark{background:var(--ok);color:#fff;border-radius:var(--radius-full);padding:2px 4px;font-size:10px;line-height:1;position:absolute;top:-4px;right:-4px}.mock-review-card{gap:var(--sp-3);padding:var(--sp-4);background:var(--surface-hover);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;display:flex}.mock-review-card-header{justify-content:space-between;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.mock-review-card-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;display:inline-flex}.mock-review-card-divider{color:var(--text-tertiary)}.mock-review-card .question-card{box-shadow:none;background:0 0;border:none;padding:0}.mock-review-card-nav{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.mock-review-card-actions{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:inline-flex}.mock-review-card-pager{align-items:center;gap:var(--sp-2);display:inline-flex}.mock-review-resolve-btn.is-resolved{background:color-mix(in srgb, var(--ok) 14%, var(--surface));border-color:var(--ok);color:#065f46}.mock-review-resolve-btn.is-resolved:hover:not(:disabled){background:color-mix(in srgb, var(--ok) 22%, var(--surface))}.mock-review-empty{padding:var(--sp-6);text-align:center;background:var(--surface-hover);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm)}.records-list{gap:var(--sp-2);flex-direction:column;display:flex}.records-row{align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);transition:all var(--duration) var(--ease);box-shadow:var(--shadow-xs);grid-template-columns:1fr auto auto;text-decoration:none;display:grid}.records-row:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.records-row-main{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.records-row-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.records-row-divider{color:var(--text-tertiary)}.records-row-date{font-variant-numeric:tabular-nums;font-weight:500}.records-row-ticket{font-weight:500}.records-row-detail{font-size:var(--text-xs)}.records-row-score{align-items:center;gap:var(--sp-2);white-space:nowrap;display:inline-flex}.records-row-score-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-xl);font-weight:700}.records-row-pill{padding:2px var(--sp-2);border-radius:var(--radius-full);font-size:var(--text-xs);align-items:center;font-weight:600;display:inline-flex}.records-row-pill.pass{background:var(--ok-light);color:#065f46;border:1px solid var(--ok)}.records-row-pill.fail{background:var(--bad-light);color:#991b1b;border:1px solid var(--bad)}.records-row-arrow{color:var(--text-tertiary);font-size:var(--text-lg)}.records-row:hover .records-row-arrow{color:var(--accent)}@media (width<=640px){.records-row{grid-template-columns:1fr auto}.records-row-arrow{display:none}}.page.record-detail{gap:var(--sp-4);flex-direction:column;display:flex}.record-detail-back-link{align-self:flex-start;align-items:center;gap:var(--sp-1);padding:var(--sp-1) 0;font-size:var(--text-sm);color:var(--accent);transition:color var(--duration) var(--ease);font-weight:500;text-decoration:none;display:inline-flex}.record-detail-back-link:hover{color:var(--accent-hover);text-underline-offset:3px;text-decoration:underline}.record-detail-back-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.record-detail-banner{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);overflow:hidden}.record-detail-banner.pass{border-color:var(--ok)}.record-detail-banner.fail{border-color:var(--bad)}.record-detail-banner-toggle{justify-content:space-between;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);font-family:inherit;font-size:var(--text-base);color:var(--text);cursor:pointer;background:0 0;border:none;display:flex}.record-detail-banner-toggle:hover{background:var(--surface-hover)}.record-detail-banner-summary{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:inline-flex}.record-detail-banner-score{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-2xl);font-weight:700}.record-detail-banner-unit{font-size:var(--text-base);opacity:.7;font-weight:500}.record-detail-banner-body{padding:0 var(--sp-4) var(--sp-4);gap:var(--sp-3);border-top:1px solid var(--border-light);flex-direction:column;display:flex}.record-detail-banner-kpis{gap:var(--sp-4);padding-top:var(--sp-3);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.record-detail-banner-kpis strong.ok{color:var(--ok)}.record-detail-banner-kpis strong.bad{color:var(--bad)}.record-detail-banner-kpis strong.muted{color:var(--text-tertiary)}.record-detail-weakness-tags{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.record-detail-weakness-tags-label{font-size:var(--text-xs)}.record-detail-weakness-tag{align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--radius-sm);background:var(--surface-hover);border:1px solid var(--border);font-family:inherit;font-size:var(--text-xs);color:var(--text);cursor:pointer;transition:all var(--duration) var(--ease);display:inline-flex}.record-detail-weakness-tag:hover{border-color:var(--accent)}.record-detail-weakness-tag.high{border-left:3px solid var(--bad)}.record-detail-weakness-tag.mid{border-left:3px solid var(--warning)}.record-detail-weakness-tag.low{border-left:3px solid var(--accent)}.record-detail-weakness-tag.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.record-detail-toolbar{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-wrap:wrap;display:flex}.record-detail-toolbar-group{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.record-detail-toolbar-toggle{align-items:center;gap:var(--sp-1);font-size:var(--text-sm);cursor:pointer;-webkit-user-select:none;user-select:none;display:inline-flex}.record-detail-toolbar-toggle input[type=checkbox]{cursor:pointer}.record-detail-toolbar-select{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:inline-flex}.record-detail-toolbar-select select{font-family:inherit;font-size:var(--text-sm);padding:4px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}.record-detail-toolbar-select select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.record-detail-empty{padding:var(--sp-6);text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-md)}.page.favorites{gap:var(--sp-5);flex-direction:column;display:flex}.favorites-empty{align-items:center;gap:var(--sp-3);padding:var(--sp-10) var(--sp-6);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-md);text-align:center;flex-direction:column;display:flex}.favorites-empty .lead{font-size:var(--text-lg);margin:0;font-weight:500}.favorites-toolbar{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-wrap:wrap;display:flex}.favorites-toolbar-select{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);display:inline-flex}.favorites-toolbar-select select{font-family:inherit;font-size:var(--text-sm);padding:4px var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}.favorites-toolbar-select select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.favorites-empty-filter{padding:var(--sp-6);text-align:center;background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-md)}.favorites-question-card{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.favorites-question-card-header{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.favorites-question-card-meta{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;display:inline-flex}.favorites-nav-hint{font-size:var(--text-xs);text-align:center}@media (width<=640px){.favorites-nav-hint{display:none}}.favorites-question-card-number{font-family:var(--font-mono);color:var(--text-secondary);font-weight:600}.favorites-question-card-chapter{padding:2px var(--sp-2);border-radius:var(--radius-full);background:var(--accent-light);border:1px solid var(--accent-border);color:var(--accent);font-size:var(--text-xs);align-items:center;font-weight:500;display:inline-flex}.favorites-question-card .question-card{box-shadow:none;background:0 0;border:none;padding:0}.favorites-undo-toast{right:var(--sp-4);bottom:var(--sp-4);background:var(--text);color:#fff;border-radius:var(--radius-md);min-width:280px;max-width:360px;box-shadow:var(--shadow-lg);z-index:1000;animation:favoritesUndoToastIn .18s var(--ease);position:fixed;overflow:hidden}.favorites-undo-toast-body{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);display:flex}.favorites-undo-toast-text{font-size:var(--text-sm)}.favorites-undo-toast-btn{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--text-sm);color:#fff;cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:1px solid #fff6;flex-shrink:0;font-weight:600}.favorites-undo-toast-btn:hover{background:#ffffff26;border-color:#fff}.favorites-undo-toast-btn:focus-visible{outline-offset:1px;outline:2px solid #fff}.favorites-undo-toast-progress{background:#ffffff26;height:3px}.favorites-undo-toast-progress-bar{background:var(--accent);transform-origin:0;width:100%;height:100%;animation:5s linear forwards favoritesUndoToastCountdown}@keyframes favoritesUndoToastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes favoritesUndoToastCountdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){.favorites-undo-toast,.favorites-undo-toast-progress-bar{animation:none}}@media (width<=640px){.favorites-undo-toast{left:var(--sp-3);right:var(--sp-3);bottom:var(--sp-3);max-width:none}}.page.chapter-analysis{gap:var(--sp-4);flex-direction:column;display:flex}.chapter-analysis-kpis{grid-template-columns:repeat(2,1fr)}@media (width<=640px){.chapter-analysis-kpis{grid-template-columns:1fr}}.chapter-analysis-section{gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.chapter-analysis-header{justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.chapter-analysis-header .mock-section-title{font-size:var(--text-base);margin:0;font-weight:600}.chapter-analysis-sort{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-full);gap:2px;padding:2px;display:inline-flex}.chapter-analysis-sort-btn{appearance:none;padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs);color:var(--text-secondary);border-radius:var(--radius-full);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:none}.chapter-analysis-sort-btn:hover:not(.active){color:var(--text)}.chapter-analysis-sort-btn.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs);font-weight:600}.chapter-analysis-legend{gap:var(--sp-3);padding:var(--sp-2) 0;font-size:var(--text-xs);flex-wrap:wrap;display:flex}.chapter-analysis-legend-item{align-items:center;gap:var(--sp-2);display:inline-flex}.chapter-analysis-legend-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.chapter-analysis-legend-dot.tier-high{background:#047857}.chapter-analysis-legend-dot.tier-good{background:#1d4ed8}.chapter-analysis-legend-dot.tier-mid{background:#b45309}.chapter-analysis-legend-dot.tier-low{background:#b91c1c}.chapter-analysis-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.chapter-analysis-row{background:var(--bg);border:1px solid var(--border-light);border-radius:var(--radius-md);transition:background var(--duration) var(--ease), border-color var(--duration) var(--ease), transform var(--duration) var(--ease)}.chapter-analysis-row.tier-high{box-shadow:inset 4px 0 #047857}.chapter-analysis-row.tier-good{box-shadow:inset 4px 0 #1d4ed8}.chapter-analysis-row.tier-mid{box-shadow:inset 4px 0 #b45309}.chapter-analysis-row.tier-low{box-shadow:inset 4px 0 #b91c1c}.chapter-analysis-row.empty{box-shadow:inset 4px 0 0 var(--border);background:var(--surface)}.chapter-analysis-row:hover{border-color:var(--accent-border);background:var(--surface-hover)}.chapter-analysis-row-link{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-3) calc(var(--sp-4) + 4px);color:inherit;width:100%;text-decoration:none;display:flex}.chapter-analysis-row-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-md)}.chapter-analysis-row-title{font-size:var(--text-sm);color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:0 0 13rem;font-weight:600;overflow:hidden}.chapter-analysis-bar{background:var(--border-light);border-radius:var(--radius-full);flex:auto;min-width:4rem;height:8px;display:block;overflow:hidden}.chapter-analysis-bar-fill{border-radius:var(--radius-full);height:100%;transition:width var(--duration) var(--ease);display:block}.chapter-analysis-row.tier-high .chapter-analysis-bar-fill{background:#047857}.chapter-analysis-row.tier-good .chapter-analysis-bar-fill{background:#1d4ed8}.chapter-analysis-row.tier-mid .chapter-analysis-bar-fill{background:#b45309}.chapter-analysis-row.tier-low .chapter-analysis-bar-fill{background:#b91c1c}.chapter-analysis-row-stats{justify-content:flex-end;align-items:baseline;gap:var(--sp-2);font-size:var(--text-xs);flex:0 0 9.5rem;display:inline-flex}.chapter-analysis-row-rate{font-family:var(--font-mono);font-size:var(--text-base);font-variant-numeric:tabular-nums;color:var(--text);text-align:right;min-width:2.5rem}.chapter-analysis-row-counts{font-variant-numeric:tabular-nums;white-space:nowrap}.chapter-analysis-row-empty-label{font-size:var(--text-xs)}.chapter-analysis-row-cta{align-items:center;gap:var(--sp-1);color:var(--text-tertiary);font-size:var(--text-xs);white-space:nowrap;transition:color var(--duration) var(--ease);flex:none;display:inline-flex}.chapter-analysis-row-cta-arrow{font-size:var(--text-lg);transition:transform var(--duration) var(--ease);line-height:1}.chapter-analysis-row:hover .chapter-analysis-row-cta{color:var(--accent)}.chapter-analysis-row:hover .chapter-analysis-row-cta-arrow{transform:translate(2px)}@media (width<=640px){.chapter-analysis-row-title{flex:0 0 8rem}.chapter-analysis-row-stats{flex:0 0 7rem}.chapter-analysis-row-counts,.chapter-analysis-row-cta-text{display:none}}.page.platform-select{max-width:64rem;margin:0 auto;padding:3rem 1.5rem}.page.platform-select h1{font-size:var(--text-3xl);color:var(--text);margin:0 0 .5rem;font-weight:700}.page.platform-select>.muted{font-size:var(--text-base);color:var(--text-secondary);margin:0 0 2rem}.platform-grid{grid-template-columns:repeat(2,1fr);gap:1.25rem;display:grid}.platform-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:10rem;box-shadow:var(--shadow-xs);color:inherit;transition:border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease), transform var(--duration) var(--ease);flex-direction:column;align-items:flex-start;padding:1.75rem 1.5rem;text-decoration:none;display:flex;position:relative}.platform-card.active{cursor:pointer}.platform-card.active:hover{border-color:var(--accent-border);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.platform-card.active:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.platform-card.disabled{background:var(--surface-hover);border-color:var(--border-light);cursor:not-allowed;opacity:.65}.platform-card-icon{margin-bottom:.875rem;font-size:2rem;line-height:1}.platform-card-title{font-size:var(--text-lg);color:var(--text);margin:0 0 .25rem;font-weight:600}.platform-card-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:0;padding-right:2rem}.platform-card-hint{font-size:var(--text-sm);margin:0}.platform-card-arrow{font-size:var(--text-xl);color:var(--text-tertiary);transition:transform var(--duration) var(--ease), color var(--duration) var(--ease);line-height:1;position:absolute;bottom:1.25rem;right:1.5rem}.platform-card.active:hover .platform-card-arrow{color:var(--accent);transform:translate(3px)}@media (width<=640px){.platform-grid{grid-template-columns:1fr}.page.platform-select{padding:2rem 1rem}}.admin-shell{background:var(--bg);grid-template-columns:240px 1fr;min-height:100dvh;display:grid}.admin-sidebar{background:var(--surface);border-right:1px solid var(--border);gap:var(--sp-4);padding:var(--sp-5) var(--sp-4);box-sizing:border-box;flex-direction:column;height:100dvh;display:flex;position:sticky;top:0;overflow-y:auto}.admin-sidebar-header{gap:var(--sp-1);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);flex-direction:column;display:flex}.admin-sidebar-brand{font-size:var(--text-lg);color:var(--text);margin:0;font-weight:700}.admin-sidebar-subtitle{font-size:var(--text-xs);color:var(--text-secondary);margin:0}.admin-sidebar-platform{gap:var(--sp-2);flex-direction:column;display:flex}.admin-sidebar-platform-label{font-size:var(--text-xs);color:var(--text-secondary);font-weight:500}.admin-sidebar-platform-select{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text);font-size:var(--text-sm);cursor:pointer;font-family:inherit}.admin-sidebar-platform-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);outline:none}.admin-sidebar-nav{gap:var(--sp-1);flex-direction:column;display:flex}.admin-sidebar-link{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--text-sm);transition:background var(--duration) var(--ease), color var(--duration) var(--ease);font-weight:500;text-decoration:none;display:block}.admin-sidebar-link:hover{background:var(--surface-hover);color:var(--text)}.admin-sidebar-link.active{background:var(--accent-light);color:var(--accent)}.admin-main-col{flex-direction:column;min-width:0;display:flex}.admin-topbar{padding:var(--sp-3) var(--sp-6);background:var(--surface);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.admin-topbar-title{font-size:var(--text-base);color:var(--text);font-weight:600}.admin-topbar-actions{gap:var(--sp-2);align-items:center;display:flex}.admin-main{padding:var(--sp-6);flex:1;min-width:0}.admin-placeholder{background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius-lg);padding:var(--sp-8);color:var(--text-secondary);text-align:center;font-size:var(--text-base);line-height:1.6}.admin-placeholder h2{margin:0 0 var(--sp-2);color:var(--text);font-size:var(--text-xl)}.admin-landing{gap:var(--sp-5);flex-direction:column;display:flex}.admin-landing h2{font-size:var(--text-2xl);color:var(--text);margin:0}.admin-landing-lead{color:var(--text-secondary);margin:0;line-height:1.6}.admin-landing-meta{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--accent-light);color:var(--accent);border-radius:var(--radius-md);font-size:var(--text-sm);align-self:flex-start;font-weight:500;display:inline-flex}@media (width<=768px){.admin-shell{grid-template-columns:1fr}.admin-sidebar{border-right:none;border-bottom:1px solid var(--border);height:auto;position:static}.admin-main{padding:var(--sp-4)}}.admin-page{gap:var(--sp-4);flex-direction:column;display:flex}.admin-page-header{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.admin-page-title{font-size:var(--text-lg);color:var(--text-primary);margin:0;font-weight:600}.admin-state-msg{color:var(--text-secondary);font-size:var(--text-sm)}.admin-state-msg.error{color:var(--color-danger,#dc3545)}.admin-banner-error{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);color:var(--color-danger,#dc3545);font-size:var(--text-sm);background:#fff0f0;border:1px solid #ffc0c0}.admin-table-wrap{border:1px solid var(--border);border-radius:var(--radius-md);overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.admin-table th,.admin-table td{padding:var(--sp-2) var(--sp-3);text-align:left;border-bottom:1px solid var(--border)}.admin-table th{background:var(--surface-2,#f8f9fa);color:var(--text-secondary);white-space:nowrap;font-weight:600}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:var(--accent-light,#f0f4ff)}.admin-table-actions{gap:var(--sp-2);flex-wrap:nowrap;display:flex}.admin-code{background:var(--surface-2,#f8f9fa);border:1px solid var(--border);border-radius:var(--radius-sm,4px);letter-spacing:.03em;padding:.1em .4em;font-family:Menlo,Consolas,Monaco,monospace;font-size:.85em}.admin-code-sm{color:var(--text-secondary);font-family:Menlo,Consolas,Monaco,monospace;font-size:.8em}.admin-codes-list{gap:var(--sp-2);flex-direction:column;max-height:300px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.admin-codes-row{align-items:center;gap:var(--sp-2);display:flex}.admin-load-more{align-self:flex-start}.admin-modal-backdrop{z-index:200;padding:var(--sp-4);background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.admin-modal{background:var(--surface,#fff);border-radius:var(--radius-lg,12px);padding:var(--sp-6);gap:var(--sp-4);flex-direction:column;width:100%;max-width:480px;display:flex;box-shadow:0 8px 32px #0000002e}.admin-modal-title{font-size:var(--text-lg);margin:0;font-weight:600}.admin-modal-warning{border-radius:var(--radius-md);padding:var(--sp-2) var(--sp-3);color:#7a5800;font-size:var(--text-sm);background:#fff8e1;border:1px solid #ffe082;margin:0;font-weight:500}.admin-modal-actions{gap:var(--sp-2);justify-content:flex-end;display:flex}.admin-form{gap:var(--sp-3);flex-direction:column;display:flex}.admin-form-label{gap:var(--sp-1);font-size:var(--text-sm);color:var(--text-primary);flex-direction:column;font-weight:500;display:flex}.admin-form-checkbox-label{align-items:center;gap:var(--sp-2);cursor:pointer;flex-direction:row}.admin-instructor-multiselect{gap:var(--sp-2);flex-direction:column;display:flex}.admin-instructor-multiselect-actions{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.admin-instructor-multiselect-list{gap:var(--sp-1,.25rem);border:1px solid var(--border);border-radius:var(--radius-md);max-height:220px;padding:var(--sp-2) var(--sp-3);flex-direction:column;display:flex;overflow-y:auto}.admin-form-input,.admin-form-select{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);background:var(--surface,#fff);transition:border-color .15s}.admin-form-input:focus,.admin-form-select:focus{border-color:var(--accent);outline:none}.admin-form-hint{font-size:var(--text-xs,.75rem);color:var(--text-secondary)}.admin-form-error{color:var(--color-danger,#dc3545);font-size:var(--text-sm);margin:0}.admin-confirm-changes{padding-left:var(--sp-5);font-size:var(--text-sm);color:var(--text-primary);gap:var(--sp-1);flex-direction:column;list-style:outside;display:flex}.admin-modal-lg{max-width:640px;max-height:85vh;overflow-y:auto}.admin-q-header-actions{gap:var(--sp-2);display:flex}.admin-q-toolbar{align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-4);flex-wrap:wrap;display:flex}.admin-q-filter-label{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--text-primary);font-weight:500;display:flex}.admin-q-option-row{align-items:center;gap:var(--sp-2);display:flex}.admin-q-option-row .admin-form-input{flex:1}.admin-q-option-key{align-items:center;gap:var(--sp-1);font-weight:600;font-size:var(--text-sm);white-space:nowrap;display:inline-flex}.admin-q-detail{gap:var(--sp-2);padding:var(--sp-3);font-size:var(--text-sm);color:var(--text-primary);flex-direction:column;display:flex}.admin-q-detail-options{gap:var(--sp-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-q-option-plain{padding:var(--sp-1) var(--sp-2)}.admin-q-correct{padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm,4px);background:#e6f4ea;border-left:3px solid #2e7d32;font-weight:500}.admin-q-badge{font-size:var(--text-xs,.75rem);color:#1565c0;background:#e3f2fd;border-radius:999px;padding:.1rem .45rem;font-weight:600;display:inline-block}.admin-q-badge-inactive{color:#78909c;background:#eceff1}.admin-q-versions-list{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.admin-q-version{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--sp-3);gap:var(--sp-2);font-size:var(--text-sm);flex-direction:column;display:flex}.admin-q-diff{align-items:center;gap:var(--sp-1);flex-wrap:wrap;display:flex}.admin-q-diff-chip{color:#e65100;font-size:var(--text-xs,.75rem);border-radius:var(--radius-sm,4px);background:#fff3e0;padding:.1rem .4rem}.btn.danger{background:var(--color-danger,#dc3545);color:#fff;border:none}.btn.danger:hover:not(:disabled){background:#b02a37}.btn.xs{font-size:var(--text-xs,.75rem);padding:.2rem .5rem}.admin-detail-card{background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;margin-bottom:2rem;padding:1.25rem 1.5rem}.admin-detail-table{border-collapse:collapse;width:100%}.admin-detail-table th{text-align:left;color:#374151;white-space:nowrap;width:9rem;padding:.4rem 1rem .4rem 0;font-weight:600}.admin-detail-table td{color:#111827;padding:.4rem 0}.admin-section-title{color:#374151;margin:0 0 .75rem;font-size:1rem;font-weight:600}.admin-page-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.admin-search-input{flex:0 320px;max-width:100%}.admin-breadcrumb{margin-bottom:var(--sp-3);color:var(--text-secondary);font-size:var(--text-sm);text-decoration:none;display:inline-block}.admin-breadcrumb:hover{color:var(--accent)}.admin-record-detail .record-detail-banner>.record-detail-banner-summary{padding:var(--sp-4)}.admin-record-detail-questions{gap:var(--sp-5);margin-top:var(--sp-4);flex-direction:column;display:flex}.admin-record-question{gap:var(--sp-2);flex-direction:column;display:flex}.admin-record-question-header{gap:var(--sp-2);font-size:var(--text-sm);flex-wrap:wrap;align-items:baseline;display:flex}.record-question-marked{color:var(--accent);font-weight:600}.record-question-unanswered{color:var(--text-tertiary);font-style:italic}.record-question-wrong{color:var(--bad);font-weight:600}.admin-tabs{gap:var(--sp-2);flex-wrap:wrap;display:flex}.admin-tab{padding:var(--sp-1) var(--sp-3);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.admin-tab:hover{background:var(--surface-hover,#f3f4f6)}.admin-tab-active{background:var(--accent-soft,#e0f2ec);color:var(--accent);border-color:var(--accent);font-weight:600}.admin-status-pill{font-size:var(--text-xs);border-radius:999px;padding:2px 8px;font-weight:600;line-height:1.4;display:inline-block}.admin-status-pill.pending{color:#6b7280;background:#f3f4f6}.admin-status-pill.resolved{color:#16a34a;background:#dcfce7}.admin-status-pill.dismissed{color:#7c3aed;background:#f3e8ff}.admin-cell-summary{max-width:320px;color:var(--text-secondary);font-size:var(--text-sm)}.admin-detail-list{gap:var(--sp-2) var(--sp-3);grid-template-columns:100px 1fr;margin:0;display:grid}.admin-detail-list dt{color:var(--text-tertiary);font-size:var(--text-sm);font-weight:500}.admin-detail-list dd{font-size:var(--text-sm);word-break:break-word;margin:0}.admin-detail-reason{white-space:pre-wrap;background:var(--surface-hover,#f9fafb);padding:var(--sp-2);border-radius:var(--radius-sm);border:1px solid var(--border)}.admin-form-row{gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.admin-kpi-grid{gap:var(--sp-3);margin-bottom:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.admin-kpi-card{gap:var(--sp-1);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);flex-direction:column;display:flex}.admin-kpi-label{font-size:var(--text-xs);color:var(--text-secondary);letter-spacing:.04em;align-items:center;gap:4px;display:inline-flex}.admin-kpi-value{font-size:var(--text-3xl);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1;font-family:var(--font-mono);color:var(--text)}.admin-kpi-sub{font-size:var(--text-xs);color:var(--text-tertiary)}.admin-kpi-sub.error{color:var(--danger,#dc2626)}.admin-overview-card{color:inherit;gap:var(--sp-2);text-decoration:none;transition:border-color .12s,box-shadow .12s}.admin-overview-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}.admin-overview-card .admin-kpi-label{font-size:var(--text-sm);color:var(--text);justify-content:space-between;font-weight:600}.admin-overview-stats{gap:var(--sp-3);font-size:var(--text-sm);color:var(--text-secondary);flex-wrap:wrap;display:flex}.admin-overview-stats strong{font-variant-numeric:tabular-nums;font-family:var(--font-mono);color:var(--text)}.admin-pill-dindex-good,.admin-pill-dindex-ok,.admin-pill-dindex-poor,.admin-pill-dindex-unknown{font-size:var(--text-xs);font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px;font-weight:600;line-height:1.4;display:inline-block}.admin-pill-dindex-good{color:#15803d;background:#dcfce7}.admin-pill-dindex-ok{color:#475569;background:#f1f5f9}.admin-pill-dindex-poor{color:#c2410c;background:#fed7aa}.admin-pill-dindex-unknown{color:#94a3b8;background:#f8fafc;font-style:italic}.admin-item-row-expandable{cursor:pointer}.admin-item-row-expandable:hover,.admin-item-row-expanded{background:var(--surface-hover,#f9fafb)}.admin-item-option-bar-wrap{gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);flex-direction:column;display:flex}.admin-item-option-bar-wrap>div{align-items:center;gap:var(--sp-3);font-size:var(--text-sm);grid-template-columns:minmax(160px,1fr) minmax(120px,2fr) minmax(120px,auto);display:grid}.admin-item-option-bar{border-radius:5px;min-width:2px;height:10px}.admin-item-option-bar-correct{background:#3b82f6}.admin-item-option-bar-incorrect{background:#fca5a5}
