:root{--ink:#18202e;--ink-2:#4b5565;--ink-3:#6d7684;--surface:#fff;--surface-2:#f5f7fa;--surface-3:#eceff4;--border:#e2e6ec;--border-strong:#c9d0da;--brand:#2456d6;--brand-ink:#1a41a8;--brand-deep:#16337c;--brand-soft:#e8eefc;--good:#0e8a5f;--good-soft:#e3f4ed;--warn:#b4550a;--warn-soft:#fdefe0;--font-sans:"Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--font-system:system-ui, -apple-system, "Segoe UI", sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:3rem;--sp-8:4rem;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:999px;--shadow-sm:0 1px 2px #18202e0f;--shadow-md:0 4px 16px #18202e14;--container:72rem}*{box-sizing:border-box}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--ink);background:var(--surface-2);margin:0;line-height:1.6}html.nav-open,body.nav-open{overscroll-behavior:none;overflow:hidden}h1,h2,h3,h4{margin:0;line-height:1.25}p{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:var(--container);padding:0 var(--sp-4);margin:0 auto}.btn{justify-content:center;align-items:center;gap:var(--sp-2);border-radius:var(--radius-md);font:inherit;font-size:var(--text-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;padding:.5rem 1rem;font-weight:600;display:inline-flex}.btn:disabled,.btn-google:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--brand);color:#fff}.btn-primary:not(:disabled):hover{background:var(--brand-ink);text-decoration:none}.btn-ghost{color:var(--ink);border-color:var(--border-strong);background:0 0}.btn-ghost:not(:disabled):hover{background:var(--surface-3);text-decoration:none}.btn-on-brand{color:var(--brand-ink);box-shadow:var(--shadow-md);background:#fff}.btn-on-brand:not(:disabled):hover{background:var(--brand-soft);text-decoration:none}.btn-on-brand-outline{color:#fff;background:0 0;border-color:#ffffff8c}.btn-on-brand-outline:not(:disabled):hover{background:#ffffff1f;border-color:#fff;text-decoration:none}.badge{border-radius:var(--radius-full);font-size:var(--text-xs);background:var(--surface-3);color:var(--ink-2);align-items:center;padding:.125rem .625rem;font-weight:600;display:inline-flex}.badge-brand{background:var(--brand-soft);color:var(--brand-ink)}.badge-good{background:var(--good-soft);color:var(--good)}.badge-part{background:linear-gradient(135deg, var(--good-soft) 50%, var(--surface-3) 50%);color:var(--good)}.navigation-progress{z-index:40;background:var(--brand-soft);visibility:hidden;width:100%;height:3px;animation:0s .12s forwards navigation-progress-show;position:fixed;top:0;left:0;overflow:hidden}.navigation-progress:after{background:var(--brand);content:"";width:40%;animation:1s ease-in-out infinite navigation-progress-move;position:absolute;inset:0 auto 0 -40%}@keyframes navigation-progress-show{to{visibility:visible}}@keyframes navigation-progress-move{to{transform:translate(350%)}}@media (prefers-reduced-motion:reduce){.navigation-progress:after{width:100%;animation:none;left:0}}.skip-link{top:-3rem;left:var(--sp-4);z-index:30;border-radius:var(--radius-md);background:var(--brand);color:#fff;font-size:var(--text-sm);padding:.5rem 1rem;font-weight:600;transition:top .15s;position:absolute}.skip-link:focus{top:var(--sp-4);text-decoration:none}.site-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;position:sticky;top:0}.header-main{align-items:center;gap:var(--sp-5);height:4rem;display:flex}.logo{font-size:var(--text-lg);color:var(--ink);font-weight:700}.logo:hover{text-decoration:none}.logo em{color:var(--brand);font-style:normal}.site-nav{align-items:stretch;gap:var(--sp-4);align-self:stretch;display:flex}.nav-item{display:flex;position:relative}.nav-item>button.nav-link{background:0 0;border:0;padding:0;font-family:inherit}.nav-link{color:var(--ink-2);font-size:var(--text-sm);cursor:pointer;align-items:center;font-weight:500;display:flex}.nav-link:hover{color:var(--brand);text-decoration:none}.nav-link.is-active{color:var(--ink);font-weight:600}.nav-link.has-menu:after{content:"";border:4px solid #0000;border-top-color:currentColor;margin-left:.375rem;transform:translateY(2px)}.nav-menu{z-index:25;min-width:9rem;padding:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:none;position:absolute;top:100%;left:50%;transform:translate(-50%)}.nav-item:hover .nav-menu,.nav-item:focus-within .nav-menu{display:block}.nav-menu a{border-radius:var(--radius-sm);color:var(--ink-2);font-size:var(--text-sm);white-space:nowrap;padding:.375rem .75rem;font-weight:500;display:block}.nav-menu a:hover{background:var(--brand-soft);color:var(--brand-ink);text-decoration:none}.nav-menu a.nav-mobile-only{display:none}.header-actions{align-items:center;gap:var(--sp-3);min-width:0;margin-left:auto;display:flex}.nav-toggle{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;justify-content:center;align-items:center;width:2.75rem;height:2.75rem;padding:0;display:none}.nav-toggle .bars{background:var(--ink-2);border-radius:1px;width:1rem;height:2px;display:block;position:relative}.nav-toggle .bars:before,.nav-toggle .bars:after{content:"";background:var(--ink-2);border-radius:1px;width:1rem;height:2px;position:absolute;left:0}.nav-toggle .bars:before{top:-5px}.nav-toggle .bars:after{top:5px}.nav-open .nav-toggle .bars{background:0 0}.nav-open .nav-toggle .bars:before{top:0;transform:rotate(45deg)}.nav-open .nav-toggle .bars:after{top:0;transform:rotate(-45deg)}.section{padding-top:var(--sp-6)}.section-head{justify-content:space-between;align-items:baseline;gap:var(--sp-4);margin-bottom:var(--sp-4);display:flex}.section-head h2{font-size:var(--text-xl);font-weight:700}.section-head p{color:var(--ink-3);font-size:var(--text-sm)}.fold{background:radial-gradient(circle at 18% 16%, #4eaaff33, transparent 34%), linear-gradient(150deg, var(--brand-ink), var(--brand-deep));padding:var(--sp-8) 0;position:relative;overflow:hidden}.fold-math{color:#b9d9ff;opacity:.15;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.fold-math-phone{display:none}.fold-math-symbols{fill:currentColor;font-family:Georgia,Times New Roman,serif;font-size:5.5rem;font-style:italic;font-weight:400}.fold-math-lines{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.fold-grid{gap:var(--sp-7);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;display:grid;position:relative}.fold-hero{color:#fff}.fold-hero h1{font-size:var(--text-3xl);font-weight:700;line-height:1.35}.fold-hero p{margin-top:var(--sp-3);font-size:var(--text-lg);color:#ffffffd1}.hero-actions{margin-top:var(--sp-5);gap:var(--sp-3);flex-wrap:wrap;display:flex}.hero-points{margin-top:var(--sp-4);gap:var(--sp-2) var(--sp-5);font-size:var(--text-sm);color:#ffffffeb;flex-wrap:wrap;font-weight:500;display:flex}.hero-points span:before{content:"✓ ";color:#6fe3ae;margin-right:var(--sp-1);font-weight:700}.fold-dir{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--sp-5) var(--sp-6)}.fold-dir-head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);display:flex}.fold-dir h2{font-size:var(--text-lg);font-weight:700}.fold-total{color:var(--ink-3);font-size:var(--text-sm)}.fold-cols{gap:var(--sp-4);margin-top:var(--sp-4);display:grid}.fold-group{margin-bottom:var(--sp-2);font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.fold-tiles{gap:var(--sp-1);grid-template-columns:1fr 1fr;display:grid}.fold-tile{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);background:var(--surface);border:1px solid #0000;display:flex}.fold-tile .name{color:var(--ink);font-size:var(--text-sm);font-weight:600}.fold-tile .count{color:var(--ink-3);font-size:var(--text-xs)}.fold-tile:hover{border-color:var(--brand);text-decoration:none}.fold-tile:hover .name{color:var(--brand)}.fold-exams{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border);gap:var(--sp-2);display:grid}.fold-exams a{align-items:baseline;gap:var(--sp-3);border-radius:var(--radius-md);background:var(--brand-soft);color:var(--brand-ink);font-size:var(--text-sm);padding:.625rem .875rem;font-weight:600;display:flex}.fold-exams .name{flex:1}.fold-exams .count{color:var(--brand-ink);opacity:.75;font-size:var(--text-xs);font-weight:500}.fold-exams a:after{content:"›";opacity:.6;font-weight:700}.fold-exams a:hover{background:var(--brand);color:#fff;text-decoration:none}.fold-exams a:hover .count{color:#fffc;opacity:1}@media (max-width:60rem){.fold{padding:var(--sp-6) 0}.fold-math{opacity:.1}.fold-grid{gap:var(--sp-5);grid-template-columns:1fr}.fold-hero h1{font-size:var(--text-2xl)}.fold-hero p{font-size:var(--text-base)}.hero-actions{margin-bottom:var(--sp-2);flex-direction:column;align-items:stretch}}@media (max-width:42rem){.fold-math-wide{display:none}.fold-math-phone{display:block}}.grade-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));display:grid}.grade-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-5)}.grade-card-head{justify-content:space-between;align-items:center;gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);display:flex}.grade-card-head h3{font-size:var(--text-lg);font-weight:700}.grade-card-head h3 a{color:var(--ink)}.grade-card-head h3 a:hover{color:var(--brand);text-decoration:none}.grade-card-head .total{font-size:var(--text-xs);color:var(--ink-3)}.cat-list{margin:var(--sp-2) 0 0;padding:0;list-style:none}.cat-list a{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);color:var(--ink-2);font-size:var(--text-sm);margin:0 -.625rem;display:flex}.cat-list a:hover{background:var(--surface-2);color:var(--brand);text-decoration:none}.cat-list .count{color:var(--ink-3);font-size:var(--text-xs)}.recent-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-2) var(--sp-5)}.recent-list{margin:0;padding:0;list-style:none}.recent-list li{border-top:1px solid var(--border)}.recent-list li:first-child{border-top:0}.recent-list a{align-items:baseline;gap:var(--sp-3);padding:var(--sp-3);margin:0 calc(-1 * var(--sp-3));border-radius:var(--radius-sm);color:var(--ink);font-weight:500;font-size:var(--text-sm);display:flex}.recent-list a:hover{background:var(--surface-2);text-decoration:none}.recent-list a:hover .title{color:var(--brand)}.recent-list .badge{flex:none;justify-content:center;min-width:3.75rem;transform:translateY(-1px)}.recent-list .meta{color:var(--ink-3);font-size:var(--text-xs);white-space:nowrap;flex:none;margin-left:auto}@media (max-width:60rem){.recent-list a{flex-wrap:wrap}.recent-list .meta{flex-basis:100%;margin-left:0;padding-left:0}}.auth-main{padding:var(--sp-8) var(--sp-4);flex-direction:column;align-items:center;display:flex}.auth-card{width:100%;max-width:24rem;padding:var(--sp-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.auth-card h1{font-size:var(--text-xl);text-align:center;font-weight:700}.auth-card h1 .badge{margin-left:var(--sp-2);vertical-align:middle}.auth-sub{margin-top:var(--sp-2);text-align:center;color:var(--ink-2);font-size:var(--text-sm)}.btn-google{margin-top:var(--sp-5);justify-content:center;align-items:center;gap:var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);width:100%;font:inherit;font-size:var(--text-sm);color:var(--ink);cursor:pointer;padding:.625rem 1rem;font-weight:600;display:flex}.btn-google:not(:disabled):hover{background:var(--surface-2);text-decoration:none}.btn-google svg{flex:none}.auth-divider{margin:var(--sp-5) 0;align-items:center;gap:var(--sp-3);color:var(--ink-3);font-size:var(--text-xs);display:flex}.auth-divider:before,.auth-divider:after{content:"";border-top:1px solid var(--border);flex:1}.auth-field{margin-top:var(--sp-4)}.auth-field label{margin-bottom:var(--sp-1);font-size:var(--text-sm);color:var(--ink-2);font-weight:500;display:block}.auth-field input{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;padding:.5rem .75rem}.auth-field input:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}.auth-field input[aria-invalid=true]{border-color:var(--bad)}.auth-error{margin-top:var(--sp-2);color:var(--bad);font-size:var(--text-xs)}.auth-error-page{padding:var(--sp-3);border-radius:var(--radius-md);background:var(--bad-soft);text-align:center}.auth-success{margin-top:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-md);background:var(--good-soft);color:var(--good);font-size:var(--text-sm);text-align:center}.auth-submit{margin-top:var(--sp-5);width:100%}.auth-alt{margin-top:var(--sp-5);text-align:center;font-size:var(--text-sm);color:var(--ink-2)}.auth-legal{margin-top:var(--sp-5);text-align:center;max-width:24rem;font-size:var(--text-xs);color:var(--ink-3)}.otp-boxes{margin-top:var(--sp-5);position:relative}.otp-input{font:inherit;font-size:var(--text-lg);text-align:center;border:1px solid var(--border-strong);border-radius:var(--radius-md);width:100%;height:3rem;padding:0;font-weight:600}.otp-input:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}.otp-input[aria-invalid=true]{border-color:var(--bad)}.otp-boxes.is-enhanced .otp-input{z-index:1;color:#0000;caret-color:#0000;-webkit-text-fill-color:transparent;background:0 0;border:0;font-size:1rem;position:absolute;inset:0}.otp-boxes.is-enhanced .otp-input:focus{outline:none}.otp-visual{display:none}.otp-boxes.is-enhanced .otp-visual{gap:var(--sp-2);grid-template-columns:repeat(6,1fr);display:grid}.otp-cell{font-size:var(--text-lg);border:1px solid var(--border-strong);border-radius:var(--radius-md);place-items:center;height:3rem;font-weight:600;display:grid}.otp-boxes:focus-within .otp-cell.is-active{outline:2px solid var(--brand-soft);border-color:var(--brand)}.otp-boxes.is-enhanced .otp-input[aria-invalid=true]+.otp-visual .otp-cell{border-color:var(--bad)}.otp-meta{margin-top:var(--sp-4);font-size:var(--text-sm);color:var(--ink-3);justify-content:space-between;align-items:center;display:flex}.link-button{color:var(--brand);font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.link-button:hover{text-decoration:underline}.link-button:disabled{cursor:not-allowed;opacity:.55}.dash-main{padding-top:var(--sp-6);padding-bottom:var(--sp-8)}.dash-account-head{justify-content:space-between;align-items:start;gap:var(--sp-4);display:flex}.dash-account-head .btn{white-space:nowrap}.dash-error{margin-top:var(--sp-4)}.stat-cards{margin:0;margin-top:var(--sp-5);gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr));padding:0;list-style:none;display:grid}.stat-card{padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.stat-value{font-size:var(--text-2xl);font-weight:700}.stat-label{margin-top:var(--sp-1);color:var(--ink-3);font-size:var(--text-sm)}.resume-card{margin-top:var(--sp-4);justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--brand-soft);border-radius:var(--radius-lg);display:flex}.resume-card .title{color:var(--brand-ink);font-weight:600}.resume-card .meta{margin-top:var(--sp-1);color:var(--ink-2);font-size:var(--text-xs)}.resume-card .btn{flex:none}.dash-grid{margin-top:var(--sp-6)}.dash-h2{font-size:var(--text-lg);margin-bottom:var(--sp-3);font-weight:700}.dash-empty{padding:var(--sp-6);text-align:center;color:var(--ink-2)}.dash-empty-title{color:var(--ink);font-weight:600}.dash-empty .btn{margin-top:var(--sp-4)}.attempt-list{margin:0;padding:0;list-style:none}.attempt-list li{border-top:1px solid var(--border)}.attempt-list li:first-child{border-top:0}.attempt-list a{align-items:baseline;gap:var(--sp-3);padding:var(--sp-3);margin:0 calc(-1 * var(--sp-3));border-radius:var(--radius-sm);color:var(--ink);font-weight:500;font-size:var(--text-sm);display:flex}.attempt-list a:hover{background:var(--surface-2);text-decoration:none}.attempt-list a:hover .title{color:var(--brand)}.attempt-list .date{width:3rem;color:var(--ink-3);font-size:var(--text-xs);flex:none}.attempt-list .score{text-align:right;font-variant-numeric:tabular-nums;flex:none;width:2.25rem;margin-left:auto;font-weight:700}.attempt-list .meta{text-align:right;width:4.5rem;color:var(--ink-3);font-size:var(--text-xs);white-space:nowrap;font-variant-numeric:tabular-nums;flex:none}@media (max-width:60rem){.dash-account-head{align-items:flex-start}.stat-card{padding:var(--sp-3) var(--sp-4)}.resume-card{display:block}.resume-card .btn{margin-top:var(--sp-3)}.attempt-list a{flex-wrap:wrap}.attempt-list .title{flex:calc(100% - 3.75rem)}.attempt-list .score{margin-left:3.75rem}}@media (max-width:36rem){.stat-cards{grid-template-columns:1fr}}.prose{max-width:46rem;padding:var(--sp-7) 0 var(--sp-8);margin:0 auto}.prose h1{font-size:var(--text-2xl);font-weight:700}.prose-updated{margin-top:var(--sp-2);color:var(--ink-3);font-size:var(--text-xs)}.prose h2{margin-top:var(--sp-6);font-size:var(--text-lg);font-weight:700}.prose h3{margin-top:var(--sp-5);font-size:var(--text-base);font-weight:700}.prose p{margin-top:var(--sp-3);color:var(--ink-2)}.prose ul{margin-top:var(--sp-3);color:var(--ink-2);padding-left:1.25rem}.prose li{margin-top:var(--sp-1)}.error-main{padding:var(--sp-8) var(--sp-4);text-align:center}.error-code{color:var(--brand);font-size:4rem;font-weight:700;line-height:1}.error-main h1{margin-top:var(--sp-3);font-size:var(--text-xl);font-weight:700}.error-main p{margin-top:var(--sp-2);color:var(--ink-2);font-size:var(--text-sm)}.error-main .btn{margin-top:var(--sp-5)}.site-footer{margin-top:var(--sp-8);background:var(--surface);border-top:1px solid var(--border);padding:var(--sp-6) 0;color:var(--ink-2);font-size:var(--text-sm)}.footer-cols{gap:var(--sp-6);grid-template-columns:2fr 1fr 1fr 1.2fr 1.2fr;display:grid}.footer-brand{max-width:22rem}.footer-brand p{margin-top:0}.site-footer h4{font-size:var(--text-sm);margin-bottom:var(--sp-3);color:var(--ink)}.site-footer ul{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.site-footer a{color:var(--ink-2)}.site-footer .logo{font-size:var(--text-base);margin-bottom:var(--sp-3);line-height:1.25;display:block}.footer-legal{margin-top:var(--sp-6);padding-top:var(--sp-5);border-top:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:var(--sp-5);font-size:var(--text-xs);color:var(--ink-3);display:flex}.footer-biz{gap:var(--sp-1);display:grid}.footer-legal a{color:var(--ink-3);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong)}.footer-copy{white-space:nowrap}@media (max-width:60rem){.site-header{position:sticky}body.exam-focus .site-header{position:relative}body.nav-open .site-header{z-index:30;position:fixed;top:0;left:0;right:0}.site-nav{align-items:stretch;gap:var(--sp-5);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:calc(4rem + var(--sp-5)) max(var(--sp-5), env(safe-area-inset-right)) max(var(--sp-5), env(safe-area-inset-bottom)) max(var(--sp-5), env(safe-area-inset-left));background:var(--surface);flex-direction:column;display:none;position:fixed;inset:0;overflow-y:auto}body.nav-open .logo,body.nav-open .header-actions{z-index:1;position:relative}.nav-open .site-nav{display:flex}.nav-item{display:block;position:static}.nav-item+.nav-item{padding-top:var(--sp-5);border-top:1px solid var(--border)}.nav-group-thcs{order:1}.nav-group-entrance{order:2}.nav-group-thpt{order:3}.nav-link.has-menu{pointer-events:none;padding:0 0 var(--sp-3);font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;font-weight:600}.nav-link.has-menu:after{display:none}.site-nav .nav-item .nav-menu{gap:var(--sp-2);min-width:0;box-shadow:none;border:0;border-radius:0;grid-template-columns:repeat(2,minmax(0,1fr));padding:0;display:grid;position:static;transform:none}.nav-menu a{min-height:2.75rem;padding:.625rem var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-2);white-space:normal;align-items:center;display:flex}.site-nav .nav-menu a.nav-mobile-only{display:flex}.site-nav>.nav-link{min-height:3rem;padding:var(--sp-3);border-radius:var(--radius-sm);background:var(--surface-2);margin:0;display:flex}.site-nav>.nav-desktop-only{display:none}.site-nav>.nav-link:hover{background:var(--brand-soft);color:var(--brand-ink)}.nav-toggle{display:flex}.footer-cols{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}.footer-legal{display:block}.footer-copy{margin-top:var(--sp-3)}}.layout{gap:var(--sp-6);padding-top:var(--sp-6);grid-template-columns:18rem minmax(0,1fr);align-items:start;display:grid}.sidebar{position:sticky;top:5rem}.side-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-4) var(--sp-5)}.side-title{font-size:var(--text-base);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);font-weight:700}.side-group{margin-top:var(--sp-4)}.side-group h3{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.03em;margin-bottom:var(--sp-1);font-weight:600}.side-grade summary{justify-content:space-between;align-items:baseline;gap:var(--sp-3);font-size:var(--text-sm);color:var(--ink);cursor:pointer;padding:.35rem 0;font-weight:600;list-style:none;display:flex}.side-grade summary::-webkit-details-marker{display:none}.side-grade summary:after{content:"";border:4px solid #0000;border-top-color:var(--ink-3);align-self:center;transform:translateY(2px)}.side-grade[open] summary:after{transform:rotate(180deg)translateY(2px)}.side-grade summary:hover{color:var(--brand)}.side-grade summary a{color:inherit}.side-grade summary a:hover{color:var(--brand);text-decoration:none}.side-grade summary .total{color:var(--ink-3);font-size:var(--text-xs);margin-left:auto;font-weight:400}.side-grade-link{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:.35rem 0;padding-right:calc(var(--sp-3) + 8px);font-size:var(--text-sm);color:var(--ink);font-weight:600;display:flex}.side-grade-link:hover{color:var(--brand);text-decoration:none}.side-grade-link .total{color:var(--ink-3);font-size:var(--text-xs);margin-left:auto;font-weight:400}.side-grade-link.is-active{background:var(--brand-soft);color:var(--brand-ink);border-radius:var(--radius-sm);margin-left:-.5rem;margin-right:calc(var(--sp-3) - .5rem + 8px);padding:.3rem .5rem;font-weight:600}.side-grade ul{margin:0 0 var(--sp-2);padding:0 0 0 var(--sp-3);border-left:1px solid var(--border);list-style:none}.side-grade a,.side-links a{justify-content:space-between;align-items:baseline;gap:var(--sp-3);color:var(--ink-2);font-size:var(--text-sm);padding:.3rem 0;display:flex}.side-grade a:hover,.side-links a:hover{color:var(--brand);text-decoration:none}.side-grade .count,.side-links .count{color:var(--ink-3);font-size:var(--text-xs)}.side-grade ul a,.side-links a{padding-right:calc(var(--sp-3) + 8px)}.side-grade a.is-active{background:var(--brand-soft);color:var(--brand-ink);border-radius:var(--radius-sm);margin-left:-.5rem;margin-right:calc(var(--sp-3) - .5rem + 8px);padding:.3rem .5rem;font-weight:600}.side-links{margin:0;padding:0;list-style:none}.side-links a{font-weight:500}.breadcrumb{font-size:var(--text-sm);color:var(--ink-3)}.breadcrumb a{color:var(--ink-2)}.breadcrumb a:hover{color:var(--brand)}.page-head{margin-top:var(--sp-3);margin-bottom:var(--sp-5)}.page-head h1{font-size:var(--text-2xl);font-weight:700}.page-head p{margin-top:var(--sp-1);color:var(--ink-3);font-size:var(--text-sm)}.exam-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));display:grid}.exam-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;display:flex;overflow:hidden}.exam-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.exam-thumb-img{aspect-ratio:16/9;background:var(--surface);justify-content:center;align-items:flex-end;display:flex;overflow:hidden}.exam-thumb-img:hover{text-decoration:none}.exam-thumb-img img{width:auto;height:75%;margin-bottom:var(--sp-3);mix-blend-mode:multiply}.exam-card-body{padding:var(--sp-3) var(--sp-4) var(--sp-4);gap:var(--sp-2);align-content:start;justify-items:start;display:grid}.exam-card-body h2,.exam-card-body h3{font-size:var(--text-base);font-weight:600;line-height:1.75}.exam-card-body h2 a,.exam-card-body h3 a{color:var(--ink)}.exam-card-body h2 a:hover,.exam-card-body h3 a:hover{color:var(--brand);text-decoration:none}.exam-card-body .meta{color:var(--ink-3);font-size:var(--text-xs)}.pagination{margin-top:var(--sp-6);font-size:var(--text-sm)}.pagination ul{justify-content:center;align-items:center;gap:var(--sp-2);margin:0;padding:0;list-style:none;display:flex}.pagination .page{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);min-width:2.25rem;color:var(--ink-2);text-align:center;padding:.375rem .625rem;font-weight:500;display:inline-block}.pagination a.page:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}.pagination .page.is-current{background:var(--brand);border-color:var(--brand);color:#fff}.pagination .ellipsis{color:var(--ink-3)}@media (max-width:60rem){.layout{padding-top:var(--sp-4);grid-template-columns:1fr}.sidebar{order:2;position:static}.main-col{order:1}}.section-head h2 a{color:var(--ink)}.section-head h2 a:hover{color:var(--brand);text-decoration:none}.section-more{white-space:nowrap}.side-links a.is-active{background:var(--brand-soft);color:var(--brand-ink);border-radius:var(--radius-sm);margin-left:-.5rem;margin-right:calc(var(--sp-3) - .5rem + 8px);padding:.3rem .5rem;font-weight:600}.katex-display{padding:var(--sp-1) 0;overflow:auto hidden}.btn-lg{font-size:var(--text-base);padding:.75rem 1.5rem}.btn-block{width:100%}.user-chip{align-items:center;gap:var(--sp-2);min-width:0;max-width:16rem;font-size:var(--text-sm);color:var(--ink-2);font-weight:500;display:inline-flex}.user-chip-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}a.user-chip:hover{color:var(--brand);text-decoration:none}.avatar{border-radius:var(--radius-full);background:var(--brand-soft);width:2rem;height:2rem;color:var(--brand-ink);font-size:var(--text-xs);flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.exam-main .breadcrumb{padding:var(--sp-4) 0}.exam-focus .site-header{position:static}.exam-context-bar{z-index:20;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0}.exam-context-bar .breadcrumb{padding-top:var(--sp-2);padding-bottom:var(--sp-2);white-space:nowrap;align-items:center;gap:.375rem;display:flex}.crumb-here{color:var(--ink-2);text-overflow:ellipsis;font-weight:500;overflow:hidden}.exam-focus .exam-main{padding-top:var(--sp-4)}.exam-focus .sidebar{top:3.5rem}.layout-main{gap:var(--sp-5);grid-template-columns:minmax(0,1fr) 19rem;align-items:start;display:grid}.layout-main .sidebar{gap:var(--sp-4);display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4)}.panel-title{font-size:var(--text-base);margin-bottom:var(--sp-3);font-weight:700}.exam-header{margin-bottom:var(--sp-5)}.exam-header h1{font-size:var(--text-xl);margin:var(--sp-2) 0;font-weight:700;line-height:1.45}.exam-meta-grid{margin-top:var(--sp-4);gap:var(--sp-3) var(--sp-4);font-size:var(--text-sm);grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));display:grid}.exam-meta-grid dt{color:var(--ink-3);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}.exam-meta-grid dd{margin:0;font-weight:500}.parts-summary{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border);gap:var(--sp-2);font-size:var(--text-sm);color:var(--ink-2);display:grid}.parts-summary strong{color:var(--ink);font-weight:600}.part-title{align-items:baseline;gap:var(--sp-3);margin:var(--sp-6) 0 var(--sp-4);font-size:var(--text-lg);font-weight:700;line-height:1.45;display:flex}.part-title .badge{transform:translateY(-2px)}.question{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-4);scroll-margin-top:3.25rem}.exam-end{align-items:center;gap:var(--sp-3);margin:var(--sp-6) 0 var(--sp-2);color:var(--ink-3);font-size:var(--text-sm);font-weight:600;display:flex}.exam-end:before,.exam-end:after{content:"";border-top:1px dashed var(--border-strong);flex:1}.question-head{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.question-no{font-size:inherit;color:var(--brand-ink);margin:0;font-weight:700}.question-stem{gap:var(--sp-2);display:grid}.question-stem>*{min-width:0}.rendered-content{gap:var(--sp-2);min-width:0;display:grid}.figure{margin:var(--sp-2) 0;text-align:center}.figure img{mix-blend-mode:multiply;max-width:100%;height:auto}.figure-caption{margin-top:var(--sp-1);text-align:center}.options{margin:var(--sp-3) 0 0;gap:var(--sp-2);padding:0;list-style:none;display:grid}.options.options-2col{grid-template-columns:repeat(2,minmax(0,1fr))}.option{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);display:flex}.option-letter{border-radius:var(--radius-full);background:var(--surface-3);width:1.75rem;height:1.75rem;color:var(--ink-2);font-size:var(--text-sm);flex:none;justify-content:center;align-items:center;font-weight:600;display:inline-flex}.option-text{flex:1}label.option{border:1px solid var(--border);cursor:pointer}label.option:hover{border-color:var(--brand)}label.option input{opacity:0;pointer-events:none;position:absolute}label.option.is-selected{border-color:var(--brand);background:var(--brand-soft)}label.option.is-selected .option-letter{background:var(--brand);color:#fff}.statements{margin-top:var(--sp-3);gap:var(--sp-2);padding-left:0;list-style:none;display:grid}.statement{align-items:baseline;gap:var(--sp-4);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-md);display:flex}.statement-label{color:var(--ink-2);flex:none;font-weight:700}.statement-text{flex:1}.tf-toggle{gap:var(--sp-1);flex:none;align-self:center;display:inline-flex}.tf-toggle label{cursor:pointer;border:1px solid var(--border-strong);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--ink-2);background:var(--surface);padding:.25rem .75rem;font-weight:600}.tf-toggle input{opacity:0;pointer-events:none;position:absolute}.tf-toggle label:hover{border-color:var(--brand);color:var(--brand)}.tf-toggle label.is-selected{background:var(--brand);border-color:var(--brand);color:#fff}.answer-row{margin-top:var(--sp-3);align-items:baseline;gap:var(--sp-3);font-size:var(--text-sm);color:var(--ink-2);display:flex}.answer-field{font:inherit;border:1px solid var(--border-strong);border-radius:var(--radius-md);width:12rem;padding:.5rem .75rem}.answer-field:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}.answer-area{margin-top:var(--sp-3);font:inherit;width:100%;min-height:8rem;padding:var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);resize:vertical}.answer-area:focus{outline:2px solid var(--brand-soft);border-color:var(--brand)}@media (max-width:60rem){.answer-field,.answer-area{font-size:1rem}}.answer-blank{border-bottom:1.5px dashed var(--border-strong);min-width:10rem;display:inline-block}.sub-items{margin:var(--sp-3) 0 0;gap:var(--sp-2);padding-left:0;list-style:none;display:grid}.sub-items>li{gap:var(--sp-3);align-items:baseline;display:flex}.sub-items .statement-label{color:var(--brand-ink)}.cta-panel h2{font-size:var(--text-base);margin-bottom:var(--sp-2);font-weight:700}.cta-panel ul{margin:0 0 var(--sp-4);gap:var(--sp-2);font-size:var(--text-sm);color:var(--ink-2);padding:0;list-style:none;display:grid}.cta-panel li:before{content:"✓  ";color:var(--good);font-weight:700}.cta-panel .hint{margin-top:var(--sp-2);font-size:var(--text-xs);color:var(--ink-3);text-align:center}.related-list{gap:var(--sp-3);font-size:var(--text-sm);margin:0;padding:0;list-style:none;display:grid}.related-list a{color:var(--ink);font-weight:500}.related-list a:hover{color:var(--brand)}.related-list .meta{color:var(--ink-3);font-size:var(--text-xs)}.timer-panel{text-align:center}.timer-panel .label{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;cursor:pointer;list-style:none}.timer-panel .label::-webkit-details-marker{display:none}.timer-panel .label:after{content:"";margin-left:var(--sp-2);border:4px solid #0000;border-top-color:var(--ink-3);display:inline-block;transform:translateY(2px)}.timer-panel[open] .label:after{transform:rotate(180deg)translateY(2px)}.timer-panel .time{font-size:var(--text-2xl);font-variant-numeric:tabular-nums;font-weight:700}.progress{margin-top:var(--sp-3);border-radius:var(--radius-full);background:var(--surface-3);height:.375rem;overflow:hidden}.progress>span{background:var(--brand);border-radius:var(--radius-full);height:100%;display:block}.palette h3{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin:var(--sp-3) 0 var(--sp-2)}.palette h3:first-child{margin-top:0}.palette-grid{gap:var(--sp-2);flex-wrap:wrap;display:flex}.palette-btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);width:2.25rem;height:2.25rem;color:var(--ink-2);font-size:var(--text-sm);justify-content:center;align-items:center;font-weight:600;display:inline-flex}.palette-btn:hover{background:var(--surface-3);text-decoration:none}.palette-btn.is-answered{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-ink)}.palette-btn.is-partly-answered{background:linear-gradient(135deg, var(--brand-soft) calc(30% - .5px), var(--brand) calc(30% - .5px), var(--brand) calc(30% + .5px), var(--surface) calc(30% + .5px));border-color:var(--brand);color:var(--brand-ink)}.palette-btn.is-answered:hover,.palette-btn.is-partly-answered:hover{filter:brightness(.94)}.palette-legend{margin-top:var(--sp-3);gap:var(--sp-1);font-size:var(--text-xs);color:var(--ink-3);display:grid}.palette-legend .dot{width:.625rem;height:.625rem;margin-right:var(--sp-2);border:1px solid var(--border-strong);background:var(--surface);border-radius:2px;display:inline-block}.palette-legend .dot.is-answered{background:var(--brand-soft);border-color:var(--brand)}.palette-legend .dot.is-partly-answered{background:linear-gradient(135deg, var(--brand-soft) calc(30% - .5px), var(--brand) calc(30% - .5px), var(--brand) calc(30% + .5px), var(--surface) calc(30% + .5px));border-color:var(--brand)}.exam-bar-row{justify-content:space-between;align-items:center;gap:var(--sp-3);display:flex}.exam-bar-row .breadcrumb{min-width:0}.exam-drawer-toggle{font:inherit;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--brand-ink);background:var(--surface);border:1px solid var(--brand);border-radius:var(--radius-full);cursor:pointer;flex:none;align-items:center;gap:.375rem;padding:.5rem .875rem;font-weight:600;display:none}.drawer-backdrop{display:none}.mobile-bar{z-index:30;padding:var(--sp-3) var(--sp-4);background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-md);display:none;position:fixed;bottom:0;left:0;right:0}@media (max-width:60rem){.layout-main{grid-template-columns:minmax(0,1fr)}.layout-main .sidebar{position:static}.question{padding:var(--sp-4)}.options.options-2col{grid-template-columns:1fr}.statement{flex-wrap:wrap}.statement-text{flex-basis:80%}.tf-toggle{margin-left:2.1rem}.mobile-bar{display:block}.has-mobile-bar{padding-bottom:5rem}.cta-panel .btn{display:none}.exam-drawer-toggle{display:inline-flex}.drawer-open .drawer-backdrop{z-index:35;background:#18202e73;display:block;position:fixed;inset:0}.drawer-open .layout-main .sidebar{z-index:40;background:var(--surface);border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:80vh;padding:var(--sp-4) var(--sp-4) var(--sp-5);box-shadow:var(--shadow-md);position:fixed;inset:auto 0 0;overflow-y:auto}body.drawer-open{overflow:hidden}}.sub-items .sub-items{margin-top:var(--sp-2)}.part-note{margin:calc(-1 * var(--sp-3)) 0 var(--sp-4);font-size:var(--text-sm);color:var(--ink-3)}.essay-items>li{display:block}.sub-item-text{gap:var(--sp-3);align-items:baseline;display:flex}.sub-item-content{flex:1}.sub-answer{margin:var(--sp-2) 0 var(--sp-4) var(--sp-5);gap:var(--sp-2);justify-items:start;display:grid}.essay-items>li:last-child .sub-answer{margin-bottom:var(--sp-1)}.sub-answer .answer-area{justify-self:stretch;min-height:6.3rem;margin-top:0}.sub-answer-bar{align-items:center;gap:var(--sp-3);flex-wrap:wrap;justify-self:stretch;display:flex}.upload-btn{font:inherit;font-size:var(--text-xs);color:var(--ink-2);background:var(--surface-2);border:1px dashed var(--border-strong);border-radius:var(--radius-md);cursor:pointer;flex:1;padding:.5rem .875rem;font-weight:600}.upload-btn:hover{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}.attachments{gap:var(--sp-2);flex-wrap:wrap;display:flex}.attachment{align-items:center;gap:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);font-size:var(--text-xs);color:var(--ink-2);padding:.25rem .5rem .25rem .25rem;font-weight:500;display:inline-flex}.attachment-thumb{background:linear-gradient(135deg, var(--brand-soft), var(--border-strong));border-radius:4px;width:2rem;height:1.5rem}.attachment-remove{font:inherit;font-size:var(--text-sm);color:var(--ink-3);cursor:pointer;background:0 0;border:0;padding:0 .25rem;line-height:1}.attachment-remove:hover{color:var(--warn)}.essay-items .essay-items{margin:var(--sp-2) 0 0 var(--sp-5)}.exam-header h1 .badge{vertical-align:middle;margin-left:var(--sp-1);transform:translateY(-2px)}:root{--bad:#c2333f;--bad-soft:#fbe9ec}.badge-bad{background:var(--bad-soft);color:var(--bad)}.result-panel{text-align:center}.result-panel .label{font-size:var(--text-xs);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}.result-panel .score{font-size:var(--text-3xl);color:var(--brand-ink);font-variant-numeric:tabular-nums;font-weight:700}.result-panel .score span{font-size:var(--text-lg);color:var(--ink-3);font-weight:600}.result-panel .result-meta{margin-top:var(--sp-1);font-size:var(--text-xs);color:var(--ink-2)}.option.is-correct{color:var(--good)}.option.is-correct .option-letter{background:var(--good);color:#fff}.option.is-wrong{color:var(--bad)}.option.is-wrong .option-letter{background:var(--bad);color:#fff}.tf-review{gap:var(--sp-2);flex:none;align-self:center;display:inline-flex}.tf-chip{border-radius:var(--radius-full);font-size:var(--text-xs);white-space:nowrap;border:1px solid #0000;padding:.25rem .75rem;font-weight:600}.tf-chip.is-right{background:var(--good-soft);color:var(--good)}.tf-chip.is-wrong{background:var(--bad-soft);color:var(--bad)}.answer-given{border-radius:var(--radius-md);padding:.25rem .75rem;font-weight:600}.answer-given.is-right{background:var(--good-soft);color:var(--good)}.answer-given.is-wrong{background:var(--bad-soft);color:var(--bad)}.answer-key{border:1px solid var(--good);border-radius:var(--radius-md);color:var(--good);font-size:var(--text-xs);padding:.25rem .75rem;font-weight:600}.sub-score{white-space:nowrap;flex:none;margin-left:auto}.sub-review{margin:var(--sp-2) 0 var(--sp-4) var(--sp-5);gap:var(--sp-2);justify-items:start;display:grid}.submitted{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);font-size:var(--text-sm);color:var(--ink-2)}.unanswered{font-size:var(--text-sm);color:var(--ink-3);font-style:italic}.solution{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--border)}.solution summary{cursor:pointer;font-size:var(--text-sm);list-style:none}.solution summary::-webkit-details-marker{display:none}.solution summary:after{content:"";border:4px solid #0000;border-top-color:currentColor;margin-left:.375rem;display:inline-block;transform:translateY(2px)}.solution[open] summary:after{transform:rotate(180deg)translateY(2px)}.solution .solution-body{margin-top:var(--sp-2);gap:var(--sp-2);font-size:var(--text-sm);color:var(--ink-2);display:grid}.palette-btn.is-right,.palette-legend .dot.is-right{background:var(--good-soft);border-color:var(--good);color:var(--good)}.palette-btn.is-partial,.palette-legend .dot.is-partial{background:linear-gradient(135deg, var(--good-soft) calc(30% - .5px), var(--good) calc(30% - .5px), var(--good) calc(30% + .5px), var(--surface) calc(30% + .5px));border-color:var(--good);color:var(--good)}.palette-btn.is-wrong,.palette-legend .dot.is-wrong{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.palette-btn.is-right:hover,.palette-btn.is-partial:hover,.palette-btn.is-wrong:hover{filter:brightness(.94)}
