:root{--ink: #16223f;--ink-2: #0e1830;--ink-soft: #44506b;--paper: #f6f3ec;--paper-2: #fffdf8;--card: #fffefb;--brass: #a9791f;--brass-2: #c79a3e;--line: #e3ddd0;--line-strong: #cfc6b4;--ok: #1f6f4a;--ok-bg: #e4f1e8;--no: #a32a25;--no-bg: #f6e4e2;--shadow: 0 1px 2px rgba(20, 24, 40, .05), 0 10px 30px rgba(20, 24, 40, .06);--r: 12px}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:Inter,system-ui,sans-serif;background:var(--paper);color:var(--ink);line-height:1.55;font-size:15.5px;-webkit-font-smoothing:antialiased}.serif{font-family:Cormorant Garamond,Georgia,serif}.mono{font-family:Spline Sans Mono,ui-monospace,monospace}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--ink);color:#fff;border-bottom:2px solid var(--brass);position:sticky;top:0;z-index:50}.topbar-inner{max-width:940px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;gap:26px}.brand{font-family:Cormorant Garamond,serif;font-weight:700;font-size:23px;letter-spacing:.2px;white-space:nowrap}.brand .accent{color:var(--brass-2)}.nav{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap}.nav button{background:transparent;border:none;color:#fff9;font-family:Spline Sans Mono,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:9px 13px;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.nav button:hover{color:#fff;background:#ffffff14}.nav button.active{color:var(--ink);background:var(--brass-2)}.main{max-width:940px;width:100%;margin:0 auto;padding:34px 20px 80px;flex:1}.eyebrow{font-family:Spline Sans Mono,monospace;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--brass);display:flex;align-items:center;gap:10px}.eyebrow:after{content:"";flex:1;height:1px;background:var(--line-strong)}.h1{font-family:Cormorant Garamond,serif;font-size:38px;font-weight:700;line-height:1.08;margin:12px 0 6px}.lead{color:var(--ink-soft);font-size:16px;max-width:56ch;margin-bottom:26px}.h2{font-family:Cormorant Garamond,serif;font-size:25px;font-weight:600;margin:0 0 14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:22px}.grid{display:grid;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;box-shadow:var(--shadow)}.stat .k{font-family:Spline Sans Mono,monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.stat .v{font-family:Cormorant Garamond,serif;font-size:40px;font-weight:700;line-height:1;margin-top:6px}.stat .v small{font-size:17px;color:var(--ink-soft);font-family:Inter,sans-serif;font-weight:500}.btn{background:var(--ink);color:#fff;border:none;border-radius:9px;cursor:pointer;font-family:Inter,sans-serif;font-size:14px;font-weight:600;padding:11px 20px;transition:transform .08s,background .15s}.btn:hover{background:var(--ink-2)}.btn:active{transform:translateY(1px)}.btn.gold{background:var(--brass)}.btn.gold:hover{background:#946716}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line-strong)}.btn.ghost:hover{border-color:var(--ink);background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.option{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;background:var(--paper-2);border:1.5px solid var(--line);border-radius:10px;padding:13px 15px;margin-bottom:9px;cursor:pointer;font-size:15px;color:var(--ink);transition:border-color .12s,background .12s}.option:hover:not(:disabled){border-color:var(--brass-2)}.option .mark{flex:none;width:24px;height:24px;border-radius:6px;border:1.5px solid var(--line-strong);display:grid;place-items:center;font-family:Spline Sans Mono,monospace;font-size:12px;color:var(--ink-soft)}.option.correct{border-color:var(--ok);background:var(--ok-bg)}.option.correct .mark{border-color:var(--ok);background:var(--ok);color:#fff}.option.wrong{border-color:var(--no);background:var(--no-bg)}.option.wrong .mark{border-color:var(--no);background:var(--no);color:#fff}.option:disabled{cursor:default}.explain{border-left:3px solid var(--brass);background:var(--paper);padding:12px 16px;border-radius:0 8px 8px 0;margin-top:14px;font-size:14.5px;color:var(--ink-soft)}.explain strong{color:var(--ink)}.tag{font-family:Spline Sans Mono,monospace;font-size:11px;letter-spacing:.05em;color:var(--ink-soft);border:1px solid var(--line-strong);border-radius:999px;padding:3px 9px}.progressbar{height:7px;background:var(--line);border-radius:999px;overflow:hidden}.progressbar>span{display:block;height:100%;background:var(--brass)}.muted{color:var(--ink-soft)}.center{text-align:center}.choice-list{display:grid;gap:10px}.timer{font-family:Spline Sans Mono,monospace;font-size:19px;font-weight:500;padding:6px 12px;border:1.5px solid var(--line-strong);border-radius:8px}.timer.urgent{color:var(--no);border-color:var(--no)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}.table th{font-family:Spline Sans Mono,monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.notice{background:var(--paper-2);border:1px dashed var(--line-strong);border-radius:10px;padding:16px;color:var(--ink-soft);font-size:14px}a{color:var(--brass)}:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.card.pick{font:inherit;color:var(--ink);width:100%;text-align:left;cursor:pointer;display:block;transition:border-color .15s,transform .08s,box-shadow .15s}.card.pick:hover{border-color:var(--brass-2)}.card.pick:active{transform:translateY(1px)}.module-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.backlink{flex:none;display:inline-flex;align-items:center;gap:6px;background:transparent;border:1.5px solid var(--line-strong);color:var(--ink);border-radius:9px;padding:9px 14px;font:inherit;font-size:14px;font-weight:600;min-height:40px;cursor:pointer;transition:border-color .15s,background .15s}.backlink:hover{border-color:var(--ink)}.crumbs{font-family:Spline Sans Mono,monospace;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.module-bar .module-count{margin-left:auto;flex:none;font-size:13px}.tabbar{display:none}@media (max-width: 768px){.main{padding:20px 16px calc(82px + env(safe-area-inset-bottom))}.topbar-inner{height:54px;gap:12px}.topbar .nav,.topbar .session{display:none}.brand{font-size:16px}.h1{font-size:26px}.lead{font-size:15px}.card{padding:18px}.grid.cols-3,.grid.cols-4{grid-template-columns:1fr 1fr;gap:12px}.grid.cols-2{grid-template-columns:1fr}.stat{padding:13px 15px}.stat .v{font-size:27px}.stat .v small{font-size:14px}.btn{padding:13px 18px;min-height:44px}.option{padding:14px 15px}.table thead{display:none}.table,.table tbody,.table tr,.table td{display:block;width:100%}.table tr{border:1px solid var(--line);border-radius:10px;padding:8px 14px;margin-bottom:10px}.table td{display:flex;align-items:baseline;justify-content:space-between;gap:14px;border:none;padding:5px 0}.table td:before{content:attr(data-label);flex:none;color:var(--ink-soft);font-family:Spline Sans Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.table td:first-child{font-weight:600;padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid var(--line)}.table td:first-child:before{display:none}.module-bar{gap:10px;margin-bottom:14px}.crumbs{font-size:10.5px}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:80;background:var(--ink);border-top:2px solid var(--brass);padding-bottom:env(safe-area-inset-bottom)}.tabbar-item{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:transparent;border:none;cursor:pointer;color:#ffffff9e;padding:8px 2px;min-height:56px;font-family:Inter,sans-serif;font-size:10px;font-weight:600;transition:color .15s}.tabbar-item svg{width:22px;height:22px}.tabbar-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabbar-item.active{color:var(--brass-2)}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}.session{display:flex;align-items:center;gap:10px}.session-role{font-family:Spline Sans Mono,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#ffffff8c;white-space:nowrap}.session-logout{background:transparent;border:1px solid rgba(255,255,255,.25);color:#ffffffd1;font-family:Spline Sans Mono,monospace;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:6px 11px;border-radius:8px;cursor:pointer;transition:color .15s,border-color .15s}.session-logout:hover{color:#fff;border-color:var(--brass-2)}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(1100px 560px at 50% -10%,#1f3160 0%,var(--ink) 58%)}.login-card{width:100%;max-width:380px;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 70px #080e1e73;padding:32px 28px}.login-card .brand{color:var(--ink)}.login-input{width:100%;border:1.5px solid var(--line-strong);border-radius:10px;padding:12px 14px;font-size:15px;font-family:Inter,sans-serif;background:var(--paper-2);color:var(--ink)}.login-input:focus{outline:none;border-color:var(--brass)}.login-error{color:var(--no);font-size:13.5px;margin-top:10px}
