:root{--navy:#0f2a4a;--navy2:#163a63;--teal:#095c56;--teal2:#5fd3c6;--ink:#1b2430;--muted:#3b4856;--bg:#f6f8fa;--card:#fff;--line:#d9e1e8;--warn:#fff8e6;--warnline:#e3c46b;--err:#9b1c1c;--errbg:#fdecec;--serif:Charter,"Bitstream Charter","Sitka Text",Cambria,Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--r:14px}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 18px/1.6 var(--sans)}
h1,h2,h3{font-family:var(--serif);color:var(--navy);line-height:1.25;margin:0 0 .6rem}h2{font-size:1.35rem}h3{font-size:1.08rem;margin-top:1.4rem}
.wrap{max-width:1080px;margin:0 auto;padding:0 1.2rem}
:focus-visible{outline:3px solid var(--navy);outline-offset:3px;border-radius:6px}
.sh{background:#fff;border-bottom:1px solid var(--line)}.shin{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:68px}
.brand{display:flex;align-items:center;gap:.7rem;color:var(--navy)}.brand strong{font-family:var(--serif);font-size:1.08rem;display:block}.brand small{display:block;color:var(--muted);font-size:.85rem}
.mark{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:10px;background:var(--navy);color:var(--teal2);font:600 .95rem var(--serif);flex:none}
.pill{font-size:.85rem;font-weight:600;padding:.3rem .8rem;border-radius:999px;background:#eef2f6;color:var(--muted);border:1px solid var(--line);white-space:nowrap}
.pill.in{background:#e8f5f3;color:var(--teal);border-color:#b7e3dd}.pill.locked{background:var(--warn);color:#6b4e00;border-color:var(--warnline)}.pill.error{background:var(--errbg);color:var(--err);border-color:#f2b8b8}
.hero{background:linear-gradient(135deg,var(--navy),var(--navy2) 60%,#0d4a52);color:#fff;padding:2.2rem 0 4.2rem}.hero h1{color:#fff;font-size:2rem;margin:.2rem 0 .5rem}.eyebrow{margin:0;color:var(--teal2);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:.85rem}.lead{margin:0;max-width:46rem;color:#dbe6ef}
main{margin-top:-2.6rem;padding-bottom:2.5rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.4rem 1.5rem;box-shadow:0 10px 30px rgba(15,42,74,.08)}
.narrow{max-width:30rem;margin:0 auto;text-align:left}.ico{font-size:1.6rem;width:3rem;height:3rem;display:grid;place-items:center;border-radius:12px;background:#e8f5f3;margin-bottom:.6rem}
.grid2{display:grid;grid-template-columns:1fr 1.15fr;gap:1.4rem;align-items:start}
label{display:block;font-weight:600;margin:.6rem 0 .35rem}
input,select{width:100%;min-height:52px;font:inherit;padding:.6rem .8rem;border:1.5px solid #9aaab8;border-radius:10px;background:#fff;color:var(--ink)}input:focus,select:focus{border-color:var(--navy)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:48px;padding:.7rem 1.2rem;border-radius:10px;font:700 1rem var(--sans);cursor:pointer;text-decoration:none;border:2px solid transparent}
.btn.primary{background:var(--navy);color:#fff}.btn.primary:hover{background:var(--navy2)}
.btn.outline{background:transparent;color:var(--navy);border-color:var(--navy)}.btn.outline:hover{background:var(--navy);color:#fff}
.btn.danger{background:transparent;color:var(--err);border-color:#d9a3a3}.btn.danger:hover{background:var(--errbg)}
.btn.ghost{background:transparent;color:var(--muted);border-color:var(--line)}.btn.ghost:hover{color:var(--navy);border-color:var(--navy)}
.btn[disabled]{opacity:.6;cursor:progress}.wide{width:100%;margin-top:1rem}
.row{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1rem}
.hint{color:var(--muted);font-size:.95rem;margin:.7rem 0 0}.ok{color:var(--teal);font-weight:600;margin:.5rem 0 0}
.alert{margin-top:1rem;padding:.8rem 1rem;border-radius:10px;background:var(--errbg);border-left:4px solid var(--err);color:var(--err);font-weight:600}.alert.warn{background:var(--warn);border-color:var(--warnline);color:#5a4100}
.codebox{margin-top:1.3rem;padding:1.2rem;border-radius:12px;background:#e8f5f3;border:1px solid #b7e3dd;text-align:center}
.codebox .lbl{margin:0;color:var(--teal);font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:.85rem}
.bigcode{font:700 3.4rem/1.1 ui-monospace,"SF Mono",Menlo,Consolas,monospace;letter-spacing:.25em;color:var(--navy);margin:.3rem 0 .4rem;padding-left:.25em}
.exp{margin:0;color:var(--muted)}.codebox .row{justify-content:center}
.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem;margin:.4rem 0 .4rem}
.stat{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:.8rem .9rem}.stat .n{display:block;font:700 1.7rem/1.1 var(--serif);color:var(--navy)}.stat .l{display:block;font-size:.88rem;color:var(--muted)}
.weeks{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{padding:.5rem .55rem;text-align:right;border-bottom:1px solid var(--line)}th:first-child,td:first-child{text-align:left}th{font-weight:700;color:var(--navy);background:var(--bg)}
.foot{border-top:1px solid var(--line);color:var(--muted);font-size:.9rem;padding:1.2rem 0}
@media(max-width:820px){.grid2{grid-template-columns:1fr}}
@media(max-width:480px){body{font-size:17px}.hero{padding:1.5rem 0 3.6rem}.hero h1{font-size:1.6rem}.card{padding:1.15rem}.brand small{display:none}.bigcode{font-size:2.8rem}.row .btn{flex:1 1 100%}}
@media(prefers-reduced-motion:no-preference){.btn{transition:background .15s,color .15s}}
.grid2>*{min-width:0}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}select{max-width:100%}
