: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:.9688rem;-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:1.4375rem;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:.75rem;letter-spacing:.08em;text-transform:uppercase;padding:9px 13px;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.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:.7188rem;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:2.375rem;font-weight:700;line-height:1.08;letter-spacing:-.015em;font-variant-numeric:lining-nums;margin:12px 0 6px}.lead{color:var(--ink-soft);font-size:1rem;max-width:56ch;margin-bottom:26px}.h2{font-family:Cormorant Garamond,serif;font-size:1.5625rem;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:.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.stat .v{font-variant-numeric:lining-nums tabular-nums;font-family:Cormorant Garamond,serif;font-size:2.5rem;font-weight:700;line-height:1;margin-top:6px}.stat .v small{font-size:1.0625rem;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:.875rem;font-weight:600;padding:11px 20px;transition:transform .08s,background .15s}.btn:active{transform:translateY(1px)}.btn.gold{background:var(--brass)}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line-strong)}.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:.9375rem;color:var(--ink);transition:border-color .12s,background .12s}.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:.75rem;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:.9062rem;color:var(--ink-soft)}.explain strong{color:var(--ink)}.tag{font-family:Spline Sans Mono,monospace;font-size:.6875rem;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-variant-numeric:tabular-nums;font-family:Spline Sans Mono,monospace;font-size:1.1875rem;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:.875rem}.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:.7188rem;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:.875rem}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: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:.875rem;font-weight:600;min-height:40px;cursor:pointer;transition:border-color .15s,background .15s}.crumbs{font-family:Spline Sans Mono,monospace;font-size:.7188rem;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:.8125rem}.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:1rem}.h1{font-size:1.625rem}.lead{font-size:.9375rem}.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:1.6875rem}.stat .v small{font-size:.875rem}.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:.6875rem;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:.7188rem}.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:.625rem;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:.6562rem;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:.6875rem;letter-spacing:.06em;text-transform:uppercase;padding:6px 11px;border-radius:8px;cursor:pointer;transition:color .15s,border-color .15s}.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:.9375rem;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:.8438rem;margin-top:10px}.section-eyebrow{margin:22px 0 12px}.module-pick-sub{font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase}.stack{display:grid;gap:14px}.tag-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.is-late{color:var(--no)}.tag.is-late{border-color:var(--no)}.rich{font-size:.9375rem;color:var(--ink)}.rich>*+*{margin-top:10px}.rich h3{font-family:Cormorant Garamond,serif;font-size:1.4375rem;font-weight:700;line-height:1.15}.rich h3:not(:first-child){margin-top:26px;padding-top:18px;border-top:1px solid var(--line)}.rich strong{font-weight:600}.rich ul,.rich ol{padding-left:24px}.rich li+li{margin-top:6px}.rich li::marker{color:var(--brass);font-family:Spline Sans Mono,monospace;font-size:.8125rem}.lesson-body{margin:18px 0}.lesson-body.card{padding:26px}.statement{font-size:1.0312rem;line-height:1.6}.statement.is-compact{font-size:.9062rem;color:var(--ink-soft);margin-top:6px}.ex-sticky{position:sticky;top:62px;z-index:40;background:var(--paper);margin-bottom:14px;padding:8px 0 10px;border-bottom:1px solid var(--line)}.ex-sticky-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.ex-sticky-row+.alpha{margin-top:8px}.ex-name{font-size:.7812rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alpha{display:grid;grid-template-columns:repeat(26,minmax(0,1fr));background:var(--card);border:1px solid var(--line);border-radius:10px;padding:5px 4px}.alpha-cell{display:flex;flex-direction:column;align-items:center;line-height:1.15;font-family:Spline Sans Mono,monospace}.alpha-cell b{font-size:.8125rem;font-weight:500;color:var(--ink)}.alpha-cell small{font-size:.625rem;color:var(--ink-soft)}.alpha-cell.is-mark small{color:var(--brass);font-weight:500}.cross{--cross-cell: 64px;display:grid;justify-content:center;gap:6px;margin:4px auto}.cross-cell{aspect-ratio:1 / 1;min-width:0;display:grid;place-items:center;background:var(--paper-2);border:1.5px solid var(--line-strong);border-radius:9px;font-family:Spline Sans Mono,monospace;font-size:1.0625rem;font-weight:500;letter-spacing:.04em;color:var(--ink)}.cross.is-md .cross-cell{font-size:.9062rem;letter-spacing:0}.cross.is-sm .cross-cell{font-size:.75rem;letter-spacing:0}.cross-cell.is-center{border:2px dashed var(--brass);background:#fbf4e4;color:var(--brass)}.cross-cell.is-center:not(.is-revealed){font-size:1.375rem}.cross-cell.is-revealed{border:2px solid var(--ok);background:var(--ok-bg);color:var(--ok)}.cross-label{align-self:end;justify-self:start;padding:0 2px 5px;white-space:nowrap;font-family:Spline Sans Mono,monospace;font-size:.6562rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.cross-label.is-column{align-self:start;padding:5px 0 0 2px}.ex-step{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.ex-step-title{display:flex;align-items:center;gap:10px;font-weight:600;margin-bottom:12px}.ex-step-num{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-family:Spline Sans Mono,monospace;font-size:.75rem}.field{display:block;margin-bottom:12px}.field-label{display:block;margin-bottom:6px;color:var(--ink-soft);font-family:Spline Sans Mono,monospace;font-size:.6875rem;letter-spacing:.1em;text-transform:uppercase}.field-input{width:100%;min-height:46px;border:1.5px solid var(--line-strong);border-radius:10px;padding:11px 13px;font:inherit;font-size:1rem;background:var(--paper-2);color:var(--ink)}.field-input:focus{outline:none;border-color:var(--brass);box-shadow:0 0 0 3px #a9791f2e}.ex-lock{font-size:.8438rem;color:var(--ink-soft);background:var(--paper);border:1px dashed var(--line-strong);border-radius:8px;padding:9px 12px;margin-bottom:12px}.choice-list.is-locked .option{opacity:.5}.option.selected{border-color:var(--brass);background:#fbf4e4}.option.selected .mark{border-color:var(--brass);background:var(--brass);color:#fff}.option-value.mono{font-size:1rem;letter-spacing:.06em}.ex-submit{margin-top:18px;display:flex;justify-content:flex-end}.ex-next{margin-top:20px;justify-content:flex-end}.verdict.is-ok{color:var(--ok)}.verdict.is-no{color:var(--no)}.verdict-lead{margin-bottom:12px}.rule-compare+.rule-compare{margin-top:14px}.rule-title{margin-bottom:6px;color:var(--brass);font-family:Spline Sans Mono,monospace;font-size:.7188rem;letter-spacing:.12em;text-transform:uppercase}.rule-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}.rule-box{border:1px solid var(--line);border-radius:10px;padding:10px 13px;background:var(--paper-2)}.rule-box.is-true{border-color:var(--ok);background:var(--ok-bg)}.rule-box p{margin-top:3px;font-size:.9375rem;overflow-wrap:anywhere}.rule-k{display:block;color:var(--ink-soft);font-family:Spline Sans Mono,monospace;font-size:.6562rem;letter-spacing:.08em;text-transform:uppercase}.missed-ask{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.missed-q{font-weight:600;margin-bottom:10px}.chip-row{display:flex;gap:8px;flex-wrap:wrap}.chip{min-height:44px;padding:9px 16px;border-radius:999px;cursor:pointer;border:1.5px solid var(--line-strong);background:var(--paper-2);color:var(--ink);font:inherit;font-size:.875rem;font-weight:600}.chip.is-on{border-color:var(--no);background:var(--no-bg);color:var(--no)}.summary-stats{margin:6px 0 4px}.missed-item{padding:18px 20px}.missed-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.missed-head .mono{font-size:.7812rem}.missed-answer{margin-top:8px;font-size:.9062rem}.missed-rule-k{margin-top:12px;font-weight:600;font-size:.9062rem;color:var(--no)}.missed-rule{display:grid;gap:2px;margin-top:8px;padding:9px 12px;font-size:.9062rem;background:var(--paper);border-left:3px solid var(--brass);border-radius:0 8px 8px 0}.missed-mine{font-size:.8438rem}.missed-more{display:grid;gap:12px;margin-top:6px}.linklike{min-height:44px;margin-top:8px;padding:6px 0;background:none;border:none;cursor:pointer;font:inherit;font-size:.875rem;font-weight:600;color:var(--brass);text-decoration:underline;text-underline-offset:3px}.late-note{margin-top:14px;font-size:.875rem}@media (max-width: 768px){.ex-sticky{top:56px}.alpha{grid-template-columns:repeat(13,minmax(0,1fr));row-gap:4px;padding:5px 3px}.cross{--cross-cell: 58px;gap:5px}.cross-cell{font-size:.9688rem;border-radius:8px}.cross.is-md .cross-cell{font-size:.8125rem}.cross.is-sm .cross-cell{font-size:.6875rem}.rule-pair{grid-template-columns:1fr;gap:6px}.ex-submit .btn,.ex-next .btn{width:100%}.lesson-body.card{padding:18px}.rich h3{font-size:1.3125rem}}.btn,.option,.chip,.card.pick,.backlink,.tabbar-item,.linklike,.fiche-toggle{-webkit-tap-highlight-color:transparent;transition:transform .1s ease-out,background-color .15s,border-color .15s,color .15s,box-shadow .15s}.btn:active:not(:disabled),.option:active:not(:disabled),.chip:active,.backlink:active,.tabbar-item:active,.fiche-toggle:active{transform:scale(.97)}.card.pick:active:not(:disabled){transform:scale(.985)}.option:active:not(:disabled){border-color:var(--brass);background:#fbf4e4}.card.pick:disabled{opacity:.5;cursor:not-allowed}@media (hover: hover){.nav button:hover{color:#fff;background:#ffffff14}.btn:hover{background:var(--ink-2)}.btn.gold:hover{background:#946716}.btn.ghost:hover{border-color:var(--ink);background:transparent}.option:hover:not(:disabled){border-color:var(--brass-2)}.card.pick:hover{border-color:var(--brass-2)}.backlink:hover{border-color:var(--ink)}.session-logout:hover{color:#fff;border-color:var(--brass-2)}.fiche-toggle:hover .fiche-sign{color:var(--brass)}}.fiche-toggle{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:44px;background:none;border:none;padding:0;margin:0;cursor:pointer;text-align:left;font:inherit;color:var(--ink);border-radius:6px}.fiche-toggle strong{font-size:1.125rem}.score-hero{display:flex;align-items:baseline;gap:10px;margin:14px 0 6px;font-variant-numeric:lining-nums tabular-nums}.score-hero .big{font-family:Cormorant Garamond,serif;font-weight:700;font-size:4.5rem;line-height:.95;letter-spacing:-.02em}.score-hero .of{font-family:Cormorant Garamond,serif;font-size:1.75rem;color:var(--ink-soft)}.score-bar{height:10px;margin:10px 0 18px;max-width:420px}.score-bar>span{transition:width .6s cubic-bezier(.2,.8,.2,1)}@media (prefers-reduced-motion: reduce){.btn:active,.option:active,.chip:active,.backlink:active,.tabbar-item:active,.fiche-toggle:active,.card.pick:active{transform:none!important}}.topbar,.tabbar{background:#16223fd6;-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%)}.ex-sticky{background:#f6f3ecd1;-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);border-bottom:none}.ex-sticky:after{content:"";position:absolute;left:0;right:0;top:100%;height:14px;pointer-events:none;background:linear-gradient(to bottom,#f6f3ece6,#f6f3ec00)}.ex-sticky .timer{background:var(--card)}@media (prefers-reduced-transparency: reduce){.topbar,.tabbar{background:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none}.ex-sticky{background:var(--paper);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1px solid var(--line)}.ex-sticky:after{display:none}}@media (prefers-contrast: more){.topbar,.tabbar{background:var(--ink-2);-webkit-backdrop-filter:none;backdrop-filter:none}.ex-sticky{background:var(--paper);border-bottom:1.5px solid var(--ink-soft)}.ex-sticky:after{display:none}}@media (max-width: 768px){body.is-focus .tabbar{display:none}body.is-focus .main{padding-bottom:calc(32px + env(safe-area-inset-bottom))}}.step-in{animation:step-in .17s cubic-bezier(.2,.8,.2,1) both}.step-in[data-dir=back]{animation-name:step-in-back}@keyframes step-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}@keyframes step-in-back{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}.progressbar>span{transition:width .3s cubic-bezier(.2,.8,.2,1)}@media (prefers-reduced-motion: reduce){.step-in,.step-in[data-dir=back]{animation:step-fade .15s ease both}@keyframes step-fade{0%{opacity:0}to{opacity:1}}}.select{font:inherit;font-size:.9375rem;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:10px;padding:10px 12px;min-height:44px}.admin-table-wrap{overflow-x:auto}.admin-table tbody tr{cursor:pointer}.admin-table tbody tr:hover{background:var(--paper)}.admin-table tbody tr.active{background:#fbf4e4}.admin-table td.num,.admin-table th.num{text-align:right;font-variant-numeric:tabular-nums}body:has([data-jaiv-nav]) .session-me{display:none}.sync-notice{display:flex;align-items:center;justify-content:space-between;gap:6px 16px;flex-wrap:wrap;margin-bottom:18px;padding:10px 14px;border-style:solid;border-color:var(--brass-2);color:var(--ink)}.sync-actions{display:flex;gap:16px}.sync-notice .linklike{margin-top:0}
