@font-face{font-family:Fraunces;src:url(/fonts/Fraunces.woff2) format("woff2");font-weight:300 900;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter.woff2) format("woff2");font-weight:400 700;font-display:swap}@font-face{font-family:Sora;src:url(/fonts/Sora.woff2) format("woff2");font-weight:400 700;font-display:swap}:root{--ink: #151111;--ink-2: #2a2220;--ink-3: #4a3f3c;--ink-deep: #0f0c0c;--cream: #fffaee;--cream-2: #f6efdd;--cream-3: #e8dfc9;--cream-muted: #b9ad93;--red: #e93535;--red-dark: #c4201f;--red-deep: #8f1715;--red-hover: #ff5a5a;--green: #2f7a4b;--green-soft: #e3efe6;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--font-accent: "Sora", "Inter", system-ui, sans-serif;--radius: 5px;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1rem;--s-5: 1.5rem;--s-6: 2rem;--s-7: 3rem;--s-8: 4rem;--max: 46rem}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;background:var(--ink);color:var(--cream);font-family:var(--font-sans);font-size:1rem;line-height:1.55;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column}h1,h2,h3{font-family:var(--font-display);font-weight:500;line-height:1.1;margin:0;letter-spacing:-.01em}p{margin:0}a{color:inherit}button{font:inherit;cursor:pointer}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;background:#0000000f;padding:.05em .35em;border-radius:3px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.top{display:flex;align-items:center;justify-content:space-between;gap:var(--s-4);padding:var(--s-5) var(--s-5);max-width:var(--max);width:100%;margin:0 auto}.wordmark{font-family:var(--font-display);font-size:1.5rem;font-weight:600;color:var(--cream);text-decoration:none;letter-spacing:-.01em}.wordmark span{color:var(--red)}.top-meta{font-family:var(--font-accent);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-muted)}.foot{margin-top:auto;padding:var(--s-5);text-align:center;font-size:.8rem;color:var(--cream-muted)}main{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--s-5) var(--s-7);flex:1}.progress{display:grid;gap:var(--s-2);margin-bottom:var(--s-5)}.progress[hidden]{display:none}.progress-row{display:flex;justify-content:space-between;font-family:var(--font-accent);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cream-muted)}.progress-bar{height:3px;background:var(--ink-2);border-radius:2px;overflow:hidden}.progress-bar i{display:block;height:100%;width:0;background:var(--red);transition:width .4s cubic-bezier(.2,.7,.2,1)}.card{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:var(--cream);color:var(--ink);border-radius:var(--radius);padding:var(--s-6);box-shadow:0 30px 60px -30px #0009}@media(max-width:480px){.card{padding:var(--s-5)}}.step[hidden]{display:none}.step-num{font-family:var(--font-accent);font-size:.75rem;letter-spacing:.12em;color:var(--red);margin-bottom:var(--s-3);display:flex;gap:var(--s-3);align-items:baseline}.step-num .mod{color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem}.step-num .timer{margin-left:auto;font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--ink);padding:.15rem .5rem;border:1px solid var(--cream-3);border-radius:3px;background:var(--cream-2)}.step-num .timer.is-low{color:#fff;background:var(--red);border-color:var(--red);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.6}}.hint.is-warn{color:var(--red-deep);font-weight:600}.intro h1{font-size:clamp(1.8rem,4.5vw,2.6rem);max-width:16ch}.intro .lede{margin-top:var(--s-4);font-size:1.05rem;color:var(--ink-3);max-width:52ch}.sources{list-style:none;padding:0;margin:var(--s-4) 0 0;display:grid;gap:var(--s-2)}.sources li{display:grid;grid-template-columns:auto 1fr;gap:var(--s-3);align-items:baseline;padding:var(--s-3) var(--s-4);border:1px solid var(--cream-3);border-radius:var(--radius);background:var(--cream-2)}.sources .n{font-family:var(--font-accent);font-size:.75rem;color:var(--red);letter-spacing:.1em}.sources b{display:block;font-weight:600}.sources a{font-size:.85rem;color:var(--ink-3);word-break:break-all}.rules{margin-top:var(--s-4);display:flex;flex-wrap:wrap;gap:var(--s-3) var(--s-5);font-size:.9rem;color:var(--ink-3)}.q-text{font-size:clamp(1.3rem,3vw,1.7rem);font-weight:500;line-height:1.25}.choices{list-style:none;margin:var(--s-5) 0 0;padding:0;display:grid;gap:var(--s-3)}.choice{width:100%;display:grid;grid-template-columns:1.6rem 1fr;gap:var(--s-3);align-items:start;text-align:left;padding:var(--s-4);background:var(--cream);border:1.5px solid var(--cream-3);border-radius:var(--radius);color:var(--ink);line-height:1.4;transition:border-color .15s,background .15s,transform .15s}.choice:hover:not(:disabled){border-color:var(--ink)}.choice:focus-visible{outline:2px solid var(--red);outline-offset:2px}.choice .key{font-family:var(--font-accent);font-size:.75rem;color:var(--ink-3);border:1px solid var(--cream-3);border-radius:3px;width:1.6rem;height:1.6rem;display:grid;place-items:center;margin-top:.05rem}.choice[aria-pressed=true]{border-color:var(--ink);background:var(--cream-2)}.choice[aria-pressed=true] .key{background:var(--ink);color:var(--cream);border-color:var(--ink)}.choice:disabled{cursor:default}.choice.is-correct{border-color:var(--green);background:var(--green-soft)}.choice.is-correct .key{background:var(--green);border-color:var(--green);color:#fff}.choice.is-wrong{border-color:var(--red);background:#fbe9e9}.choice.is-wrong .key{background:var(--red);border-color:var(--red);color:#fff}.choice.is-dim{opacity:.55}.feedback{margin-top:var(--s-5);padding:var(--s-4) var(--s-5);border-left:3px solid var(--ink);background:var(--cream-2);border-radius:0 var(--radius) var(--radius) 0}.feedback[hidden]{display:none}.feedback.ok{border-color:var(--green)}.feedback.bad{border-color:var(--red)}.feedback b{font-family:var(--font-display);font-size:1.15rem;font-weight:600;display:block;margin-bottom:var(--s-1)}.feedback.ok b{color:var(--green)}.feedback.bad b{color:var(--red-deep)}.feedback p{color:var(--ink-2)}.actions{margin-top:var(--s-5);display:flex;gap:var(--s-3);align-items:center;justify-content:space-between;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:var(--s-2);padding:.8rem 1.4rem;border-radius:var(--radius);border:1.5px solid var(--ink);background:var(--ink);color:var(--cream);font-family:var(--font-accent);font-size:.85rem;font-weight:600;letter-spacing:.02em;text-decoration:none;transition:background .15s,border-color .15s,transform .1s}.btn:hover:not(:disabled){background:var(--ink-deep)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.red{background:var(--red);border-color:var(--red)}.btn.red:hover:not(:disabled){background:var(--red-dark);border-color:var(--red-dark)}.btn.ghost{background:transparent;color:var(--ink)}.btn.ghost:hover:not(:disabled){background:var(--cream-2)}.hint{font-size:.85rem;color:var(--ink-3)}.field{display:grid;gap:var(--s-2);margin-top:var(--s-4)}.field label{font-family:var(--font-accent);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.field input{-webkit-user-select:text;user-select:text;font:inherit;padding:.8rem 1rem;border:1.5px solid var(--cream-3);border-radius:var(--radius);background:#fff;color:var(--ink)}.field input:focus{outline:none;border-color:var(--ink)}.field input[type=file]{padding:.55rem .75rem;cursor:pointer}.field input[type=file]::file-selector-button{font:inherit;font-family:var(--font-accent);font-size:.8rem;margin-right:.75rem;padding:.45rem .85rem;border:1.5px solid var(--ink);border-radius:var(--radius);background:var(--ink);color:var(--cream);cursor:pointer}.field .hint{font-size:.8rem}.hp{position:absolute;left:-9999px;opacity:0;height:0;width:0;overflow:hidden}.err{margin-top:var(--s-3);color:var(--red-deep);font-size:.9rem}.err[hidden]{display:none}.summary{margin-top:var(--s-4);font-size:.95rem;color:var(--ink-3)}.badge{display:inline-block;font-family:var(--font-accent);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:#fff;padding:.3rem .7rem;border-radius:3px;margin-bottom:var(--s-4)}.badge.ok{background:var(--green)}.badge.bad{background:var(--red)}.rules b{color:var(--ink);font-weight:600}.score{font-size:clamp(3rem,10vw,5.5rem);font-weight:500;line-height:1;letter-spacing:-.02em}.score span{color:var(--red)}.score small{font-size:.4em;color:var(--ink-3);letter-spacing:0}.modules{list-style:none;padding:0;margin:var(--s-5) 0 0;display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--s-3)}.modules li{padding:var(--s-4);border:1px solid var(--cream-3);border-radius:var(--radius);background:var(--cream-2)}.modules .lbl{font-family:var(--font-accent);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.modules .val{font-family:var(--font-display);font-size:1.8rem;margin-top:var(--s-1)}.modules .val small{font-size:.55em;color:var(--ink-3)}.verdict{margin-top:var(--s-5);font-size:1.05rem;color:var(--ink-2);max-width:52ch}.step{animation:rise .35s cubic-bezier(.2,.7,.2,1) both}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.step,.step-num .timer.is-low{animation:none}.progress-bar i{transition:none}}.review{list-style:none;margin:1.75rem 0 0;padding:0;border-top:2px solid var(--ink, #151111);text-align:left}.review li{padding:1rem 0;border-bottom:1px solid rgba(21,17,17,.12);display:grid;grid-template-columns:2.25rem 1fr;gap:.25rem .75rem}.review .mark{width:1.5rem;height:1.5rem;border-radius:50%;display:grid;place-items:center;font:700 .8rem/1 Sora,Inter,sans-serif;color:#fffaee;background:#e93535}.review li.ok .mark{background:#2f7a4b}.review .rq{font-weight:600;line-height:1.4}.review .ra{grid-column:2;font-size:.92rem;line-height:1.45;opacity:.85}.review .ra b{font-weight:600}.review .rx{grid-column:2;font-size:.9rem;line-height:1.45;margin-top:.15rem;padding:.55rem .75rem;border-left:3px solid #e93535;background:#e935350f}.review .rmod{grid-column:2;font:500 .7rem/1 Sora,Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;opacity:.6}.notready{padding:1rem 1.25rem;border:1px dashed rgba(21,17,17,.35);border-radius:5px}.scenario{margin-top:var(--s-4);padding:var(--s-4) var(--s-5);background:var(--cream-2);border-radius:var(--radius);border-left:3px solid var(--red);-webkit-user-select:text;user-select:text}.scenario p{margin:0;line-height:1.55}.scenario .known{margin:var(--s-3) 0 0;padding-left:1.1rem;font-size:.92rem;color:var(--ink-3)}.scenario .known li+li{margin-top:.25rem}.scenario .known-h{margin-top:var(--s-3);font-family:var(--font-accent);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.task{margin:var(--s-5) 0 0;font-weight:600}.field textarea{-webkit-user-select:text;user-select:text;font:inherit;font-size:.95rem;line-height:1.5;padding:.9rem 1rem;border:1.5px solid var(--cream-3);border-radius:var(--radius);background:#fff;color:var(--ink);min-height:14rem;resize:vertical}.field textarea:focus{outline:none;border-color:var(--ink)}.meter{display:flex;justify-content:space-between;gap:var(--s-3);font-family:var(--font-accent);font-size:.72rem;letter-spacing:.04em;color:var(--ink-3)}.meter.is-short{color:var(--red-deep)}.crit{margin:var(--s-3) 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:var(--s-2)}.crit li{font-family:var(--font-accent);font-size:.7rem;letter-spacing:.04em;padding:.3rem .6rem;border:1px solid var(--cream-3);border-radius:999px;color:var(--ink-3);background:var(--cream)}.crit-h{margin:var(--s-4) 0 0;font-family:var(--font-accent);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.frame{margin:var(--s-5) 0 0;padding:0;list-style:none;display:grid;gap:var(--s-3);counter-reset:f}.frame li{display:grid;grid-template-columns:1.6rem 1fr;gap:var(--s-3);font-size:.95rem;line-height:1.45;color:var(--ink-2)}.frame li:before{counter-increment:f;content:counter(f,decimal-leading-zero);font-family:var(--font-accent);font-size:.75rem;color:var(--red);padding-top:.2rem}.frame b{font-weight:600;color:var(--ink)}.score .pct{font-size:.5em;color:var(--ink-3)}.rev2{list-style:none;margin:1.75rem 0 0;padding:0;border-top:2px solid var(--ink);text-align:left;-webkit-user-select:text;user-select:text}.rev2 li{padding:1.25rem 0;border-bottom:1px solid rgba(21,17,17,.12)}.rev2 .head{display:flex;align-items:baseline;gap:var(--s-3);flex-wrap:wrap}.rev2 .pill{font:700 .8rem/1 var(--font-accent);color:var(--cream);background:var(--red);padding:.35rem .55rem;border-radius:3px;min-width:3rem;text-align:center}.rev2 .pill.ok{background:var(--green)}.rev2 .pill.mid{background:#b8860b}.rev2 .rq{font-weight:600}.rev2 .rmod{font:500 .7rem/1 var(--font-accent);letter-spacing:.08em;text-transform:uppercase;opacity:.6}.rev2 .crits{margin:var(--s-3) 0 0;padding:0;list-style:none;display:grid;gap:.3rem}.rev2 .crits li{padding:0;border:0;display:grid;grid-template-columns:3rem 1fr;gap:var(--s-2);font-size:.9rem;line-height:1.4}.rev2 .crits .cs{font:600 .8rem/1.6 var(--font-accent);color:var(--red-deep)}.rev2 .crits .cs.ok{color:var(--green)}.rev2 .crits .cs.mid{color:#8a6508}.rev2 .crits b{font-weight:600}.rev2 .crits span{color:var(--ink-3)}.rev2 .rx{font-size:.92rem;line-height:1.45;margin-top:var(--s-3);padding:.55rem .75rem;border-left:3px solid var(--red);background:#e935350f}.rev2 details{margin-top:var(--s-3)}.rev2 summary{cursor:pointer;font-family:var(--font-accent);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.rev2 pre{margin:var(--s-2) 0 0;padding:.75rem .9rem;background:var(--cream-2);border-radius:var(--radius);font:.82rem/1.5 ui-monospace,Menlo,Consolas,monospace;white-space:pre-wrap;word-break:break-word;color:var(--ink-2)}.rev2 .coach{margin:var(--s-2) 0 0;font-size:.9rem;color:var(--ink-3);line-height:1.45}.grader-note{margin-top:var(--s-3);font-size:.85rem;color:var(--ink-3)}.grader-note.warn{color:var(--red-deep);font-weight:600}.summary.integrity{font-size:.85rem;opacity:.75}.summary.integrity.is-warn{opacity:1;color:#8f1715;font-weight:600}
