/* base */
:root{color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}html{scroll-padding-top:env(safe-area-inset-top,0px)}body{margin:0;padding:0;font:14px -apple-system,BlinkMacSystemFont,sans-serif;background:#fff;color:#000}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}

/* app */
:root{
  --bg:#F2F3F7;--surface:#FFFFFF;--surface2:#F7F8FB;--ink:#161A33;--muted:#5B6180;--faint:#8A90AC;--line:#DCDFEA;
  --accent:#2B37D4;--accent-ink:#FFFFFF;--accent-soft:#E4E7FF;
  --red:#C2362D;--red-soft:#FBE7E5;--amber:#9C620E;--amber-soft:#FBF0DC;--green:#15734A;--green-soft:#DDF2E6;
  --shadow:0 1px 2px rgba(22,26,51,.05),0 10px 30px rgba(22,26,51,.07);--hl-bg:#161A33;--hl-ink:#F2F3F7;
  --serif:"Literata",Georgia,"Times New Roman",serif;
  --sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color-scheme:light;
  box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0F1226;--surface:#181C36;--surface2:#1D2240;--ink:#E8E9F3;--muted:#A0A6C4;--faint:#717898;--line:#2B3054;
  --accent:#8A92FF;--accent-ink:#0F1226;--accent-soft:#252C66;
  --red:#FF7A70;--red-soft:#3A1E2A;--amber:#F0B65A;--amber-soft:#382C1E;--green:#5FD39A;--green-soft:#173628;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25);--hl-bg:#252C66;--hl-ink:#E8E9F3;color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0F1226;--surface:#181C36;--surface2:#1D2240;--ink:#E8E9F3;--muted:#A0A6C4;--faint:#717898;--line:#2B3054;
  --accent:#8A92FF;--accent-ink:#0F1226;--accent-soft:#252C66;
  --red:#FF7A70;--red-soft:#3A1E2A;--amber:#F0B65A;--amber-soft:#382C1E;--green:#5FD39A;--green-soft:#173628;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25);--hl-bg:#252C66;--hl-ink:#E8E9F3;color-scheme:dark}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
.muted{color:var(--muted)}.faint{color:var(--faint)}
.serif{font-family:var(--serif)}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}
/* header */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:9;background:var(--bg);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:16px;height:60px}
.brand{font-family:var(--serif);font-weight:600;font-size:22px;letter-spacing:-.02em;background:none;border:0;padding:0}
.brand small{font-family:var(--sans);font-weight:500;font-size:12px;color:var(--muted);margin-left:6px}
.top-ladder{flex:1;display:flex;justify-content:center}
.who{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:14px}
.streak{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:999px;background:var(--amber-soft);color:var(--amber);font-weight:600}
.iconbtn{background:none;border:1px solid var(--line);border-radius:10px;height:34px;padding:0 10px;color:var(--muted)}
.iconbtn:hover{color:var(--ink);border-color:var(--faint)}
/* mini ladder */
.mini{display:flex;align-items:flex-end;gap:3px;height:26px}
.mini span{width:22px;background:var(--line);border-radius:3px;position:relative;overflow:hidden}
.mini span i{position:absolute;left:0;right:0;bottom:0;background:var(--accent)}
.mini-label{font-family:var(--serif);font-weight:600;margin-left:8px;font-size:17px}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;border:1px solid var(--line);background:var(--surface);padding:10px 16px;font-weight:600;font-size:15px;transition:transform .08s,background .15s,border-color .15s}
.btn:hover{border-color:var(--faint)}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{filter:brightness(1.08);border-color:var(--accent)}
.btn-big{padding:14px 22px;font-size:16px;border-radius:14px}
.btn-ghost{background:none;border-color:transparent;color:var(--muted)}
.btn-ghost:hover{color:var(--ink);border-color:var(--line)}
.btn-sm{padding:6px 11px;font-size:13px;border-radius:9px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
kbd{font-family:var(--sans);font-size:11px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;color:var(--faint);background:var(--surface2)}
/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:40px 20px}
.login-box{width:100%;max-width:520px}
.brand-xl{font-family:var(--serif);font-size:clamp(56px,11vw,96px);line-height:.95;letter-spacing:-.035em;font-weight:600}
.brand-xl em{font-style:normal;color:var(--accent)}
.lede{font-size:18px;color:var(--muted);margin:18px 0 30px;max-width:44ch}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.field label{font-size:14px;font-weight:600}
.input{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px;font-size:17px}
.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.profiles{margin-top:28px;display:flex;flex-wrap:wrap;gap:8px}
.profiles p{width:100%;margin:0 0 4px;font-size:14px;color:var(--muted)}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font-weight:500}
.chip:hover{border-color:var(--accent);color:var(--accent)}
/* home hero */
.hero{display:grid;grid-template-columns:1.25fr 1fr;gap:20px;margin:28px 0 12px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:24px}
.level-head{display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
.level-big{font-family:var(--serif);font-size:88px;line-height:.9;font-weight:600;letter-spacing:-.04em}
.level-sub{font-size:15px;color:var(--muted)}
.level-sub b{color:var(--ink);font-weight:600}
.ladder{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;align-items:end;height:150px;margin-top:22px}
.step{position:relative;border-radius:10px 10px 4px 4px;background:var(--surface2);border:1px solid var(--line);overflow:hidden}
.step i{position:absolute;left:0;right:0;bottom:0;background:var(--accent);opacity:.9}
.step.cur{border-color:var(--accent)}
.step b{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-family:var(--serif);font-size:15px;z-index:1;color:var(--ink)}
.step.done b{color:var(--accent-ink)}
.ladder-cap{display:flex;justify-content:space-between;font-size:13px;color:var(--faint);margin-top:10px}
.today{display:flex;flex-direction:column;gap:16px;justify-content:space-between}
.today-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.num{font-family:var(--serif);font-size:34px;font-weight:600;line-height:1}
.num-l{font-size:13px;color:var(--muted);margin-top:4px}
.today .btn-big{width:100%}
.goal{height:8px;background:var(--surface2);border-radius:99px;overflow:hidden;border:1px solid var(--line)}
.goal i{display:block;height:100%;background:var(--green)}
/* modes */
.sec-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:34px 0 14px}
.sec-title h2{font-size:21px}
.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mode.lead{grid-column:span 2}
.mode{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px 18px;display:flex;gap:14px;align-items:flex-start;transition:border-color .15s}
.mode:hover{border-color:var(--accent)}
.mode .ico{flex:none;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:18px}
.mode h3{font-size:16px;margin-bottom:2px}
.mode p{margin:0;font-size:13.5px;color:var(--muted);line-height:1.4}
.mode.practice{grid-column:span 3;background:var(--hl-bg);color:var(--hl-ink);border-color:var(--hl-bg)}
.mode.practice p{color:color-mix(in srgb,var(--hl-ink) 72%,transparent)}
.mode.practice .ico{background:color-mix(in srgb,var(--hl-ink) 14%,transparent);color:var(--hl-ink)}
/* parts & themes */
.part{margin-bottom:26px}
.part-h{display:flex;align-items:baseline;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:4px}
.part-h .roman{font-family:var(--serif);font-size:15px;color:var(--accent);font-weight:600;min-width:34px}
.part-h h3{font-size:17px;flex:1}
.part-h .pct{font-size:13px;color:var(--muted)}
.theme-row{display:grid;grid-template-columns:44px 1fr 180px 70px;gap:14px;align-items:center;padding:11px 8px;border-radius:10px;background:none;border:0;width:100%;text-align:left}
.theme-row:hover{background:var(--surface)}
.theme-row .n{font-family:var(--serif);color:var(--faint);font-size:15px}
.theme-row .nm{font-weight:500}
.theme-row .nm small{display:block;color:var(--faint);font-size:12.5px;font-weight:400}
.bar{height:6px;border-radius:99px;background:var(--line);overflow:hidden;display:flex}
.bar i{display:block;height:100%}
.bar .m{background:var(--accent)}.bar .y{background:color-mix(in srgb,var(--accent) 45%,var(--line))}
.badge{font-size:12.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);justify-self:end;white-space:nowrap}
.badge.zero{background:none;color:var(--faint);font-weight:500}
/* theme page */
.crumb{margin:22px 0 6px}
.theme-title{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.theme-title .tn{font-family:var(--serif);font-size:40px;color:var(--accent);font-weight:600}
.theme-title h1{font-family:var(--serif);font-size:40px;line-height:1.1}
.stats4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.mode-strip{display:flex;flex-wrap:wrap;gap:8px}
.sect{display:grid;grid-template-columns:1fr 160px auto;gap:14px;align-items:center;padding:12px 10px;border-bottom:1px solid var(--line)}
.sect:last-child{border-bottom:0}
.sect .nm{font-weight:500}.sect .nm small{color:var(--faint);font-weight:400;margin-left:6px}
.sect-actions{display:flex;gap:6px}
.list{width:100%;border-collapse:collapse;font-size:14.5px}
.list td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.list td.en{font-weight:600;width:48%}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--line);margin-right:8px;vertical-align:middle}
.dot.l{background:var(--amber)}.dot.y{background:color-mix(in srgb,var(--accent) 55%,var(--line))}.dot.m{background:var(--accent)}
.say{background:none;border:0;color:var(--faint);padding:2px 6px;border-radius:6px;font-size:14px}
.say:hover{color:var(--accent);background:var(--accent-soft)}
/* session */
.sess-top{display:flex;align-items:center;gap:14px;height:60px}
.sess-top .t{font-weight:600;font-size:15px}
.sess-top .t small{color:var(--muted);font-weight:400;margin-left:8px}
.prog{flex:1;height:5px;background:var(--line);border-radius:99px;overflow:hidden}
.prog i{display:block;height:100%;background:var(--accent);transition:width .25s}
.counter{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.stage{max-width:760px;margin:28px auto 60px;padding:0 20px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);min-height:380px;display:flex;flex-direction:column;padding:22px 26px;position:relative}
.card-meta{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--faint)}
.card-body{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:24px 0}
.word{font-family:var(--serif);font-size:clamp(28px,5vw,44px);line-height:1.2;letter-spacing:-.015em;font-weight:500;max-width:30ch}
.word.small{font-size:clamp(20px,3.4vw,26px);color:var(--muted)}
.word .sl{color:var(--faint);font-weight:400;margin:0 .25em}
.answer{margin-top:20px;padding-top:20px;border-top:1px dashed var(--line);width:100%}
.answer .word{margin:0 auto}
.pairs{margin:18px auto 0;border-collapse:collapse;font-size:15px;text-align:left}
.pairs td{padding:5px 12px;border-bottom:1px solid var(--line)}
.pairs td:first-child{font-weight:600}
.lang{font-size:12px;color:var(--faint);margin-bottom:8px}
.flip-hint{text-align:center;color:var(--faint);font-size:13px;margin-top:14px}
.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}
.grade{border-radius:14px;border:1px solid var(--line);background:var(--surface);padding:10px 8px;font-weight:600;display:flex;flex-direction:column;align-items:center;gap:2px}
.grade small{font-weight:500;color:var(--muted);font-size:12px}
.grade.g1{color:var(--red)}.grade.g1:hover{background:var(--red-soft);border-color:var(--red)}
.grade.g2{color:var(--amber)}.grade.g2:hover{background:var(--amber-soft);border-color:var(--amber)}
.grade.g3{color:var(--green)}.grade.g3:hover{background:var(--green-soft);border-color:var(--green)}
.grade.g4{color:var(--accent)}.grade.g4:hover{background:var(--accent-soft);border-color:var(--accent)}
.showbtn{width:100%;margin-top:16px}
.tag-new,.tag-learn{white-space:nowrap;flex:none}
.tag-new{font-size:12px;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:1px 8px;border-radius:99px}
.tag-learn{font-size:12px;font-weight:600;color:var(--amber);background:var(--amber-soft);padding:1px 8px;border-radius:99px}
/* quiz */
.prompt-ctx{font-size:14px;color:var(--muted);margin-top:10px;max-width:56ch}
.prompt-ctx mark{background:var(--accent-soft);color:var(--ink);padding:0 3px;border-radius:4px}
.ansrow{display:flex;gap:10px;margin-top:18px}
.ansrow .input{font-size:20px;padding:14px 16px}
.feedback{margin-top:16px;border-radius:14px;padding:14px 16px;font-size:15px}
.feedback.ok{background:var(--green-soft);color:var(--green)}
.feedback.near{background:var(--amber-soft);color:var(--amber)}
.feedback.ko{background:var(--red-soft);color:var(--red)}
.feedback .exp{color:var(--ink);margin-top:6px}
.feedback .exp b{font-weight:600}
.feedback .row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.strike{text-decoration:line-through;opacity:.75}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px;width:100%}
.opt{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:14px 16px;font-size:15.5px;display:flex;gap:10px;align-items:flex-start;min-height:58px}
.opt:hover{border-color:var(--accent)}
.opt kbd{margin-top:2px}
.opt.right{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.opt.wrong{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.cloze{font-family:var(--serif);font-size:clamp(22px,3.6vw,30px);line-height:1.6;text-align:center}
.cloze input{font-family:var(--serif);font-size:inherit;border:0;border-bottom:2px solid var(--accent);background:var(--accent-soft);border-radius:6px 6px 0 0;padding:0 6px;text-align:center;min-width:3ch}
.cloze input:focus{outline:none}
.tok-ok{color:var(--green)}.tok-miss{color:var(--red);text-decoration:underline wavy}.tok-extra{color:var(--red);text-decoration:line-through}
textarea.input{resize:vertical;min-height:90px;font-size:17px;line-height:1.5}
/* match */
.match{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mcol{display:flex;flex-direction:column;gap:10px}
.mtile{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:14px;min-height:64px;font-size:15px;font-weight:500;transition:opacity .25s,transform .1s}
.mtile.en{font-family:var(--serif);font-size:17px}
.mtile.sel{border-color:var(--accent);background:var(--accent-soft)}
.mtile.gone{opacity:0;pointer-events:none}
.mtile.bad{animation:shake .3s;border-color:var(--red);background:var(--red-soft)}
@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
/* blitz */
.blitz-time{font-family:var(--serif);font-size:56px;font-weight:600;text-align:center;font-variant-numeric:tabular-nums}
.blitz-pair{text-align:center;margin:20px 0}
.blitz-pair .word{margin:0 auto}
.blitz-eq{color:var(--faint);margin:8px 0;font-size:20px}
.tf{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tf .btn{padding:18px;font-size:18px}
.tf .no{color:var(--red)}.tf .yes{color:var(--green)}
.flash-ok{animation:fok .35s}.flash-ko{animation:fko .35s}
@keyframes fok{from{box-shadow:0 0 0 4px var(--green)}}@keyframes fko{from{box-shadow:0 0 0 4px var(--red)}}
/* results */
.result-big{font-family:var(--serif);font-size:72px;font-weight:600;line-height:1;text-align:center}
.result-sub{text-align:center;color:var(--muted);margin:8px 0 22px}
.review-list{margin-top:18px;font-size:14.5px}
.review-list .it{display:grid;grid-template-columns:22px 1fr 1fr;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.review-list .it .k{font-weight:600}
.center-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:22px}
/* practice hub */
.prac{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.prac .mode{min-height:120px}
.ai-note{font-size:12.5px;color:var(--faint);margin-top:6px}
.scen{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}
.scen button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px}
.scen button:hover{border-color:var(--accent)}
.scen b{display:block;font-weight:600}.scen span{font-size:13px;color:var(--muted)}
/* chat */
.chat{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}
.msg{max-width:86%;padding:12px 16px;border-radius:16px;font-size:15.5px;line-height:1.55}
.msg.ai{background:var(--surface);border:1px solid var(--line);align-self:flex-start;border-bottom-left-radius:6px;font-family:var(--serif);font-size:17px}
.msg.me{background:var(--accent);color:var(--accent-ink);align-self:flex-end;border-bottom-right-radius:6px}
.corr{align-self:flex-end;max-width:86%;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:14px}
.corr .sc{font-weight:700}
.corr ul{margin:6px 0 0;padding-left:18px}
.corr .c2{margin-top:8px;font-family:var(--serif);font-size:15px}
.corr .lbl{font-weight:600;font-size:13px;color:var(--muted)}
.composer{position:sticky;bottom:0;background:var(--bg);padding:10px 0 calc(10px + env(safe-area-inset-bottom,0px));display:flex;gap:8px;align-items:flex-end}
.composer textarea{min-height:56px}
.typing{color:var(--faint);font-size:14px}
/* stats */
.heat{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,12px);gap:3px;overflow-x:auto;padding-bottom:4px}
.heat i{width:12px;height:12px;border-radius:3px;background:var(--surface2);border:1px solid var(--line)}
.heat i.h1{background:color-mix(in srgb,var(--accent) 25%,var(--surface2))}.heat i.h2{background:color-mix(in srgb,var(--accent) 50%,var(--surface2))}.heat i.h3{background:color-mix(in srgb,var(--accent) 75%,var(--surface2))}.heat i.h4{background:var(--accent)}
.fc{display:flex;align-items:flex-end;gap:6px;height:120px}
.fc div{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:11px;color:var(--faint);height:100%;justify-content:flex-end}
.fc span{width:100%;background:var(--accent-soft);border-radius:5px 5px 2px 2px;min-height:2px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.setting{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.setting:last-child{border-bottom:0}
.setting select,.setting input[type=number]{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:7px 10px}
.danger{color:var(--red)}
.empty{text-align:center;padding:50px 20px}
.empty h2{font-family:var(--serif);font-size:30px;margin-bottom:8px}
.langs{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.lang-card{display:flex;align-items:center;gap:16px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 20px;transition:border-color .15s}
.lang-card:hover{border-color:var(--accent)}
.lang-card .flag{width:54px;height:auto;flex:none;border-radius:5px;box-shadow:0 0 0 1px var(--line)}
.lang-card b{display:block;font-family:var(--serif);font-size:24px;font-weight:600;letter-spacing:-.01em}
.lang-card small{display:block;color:var(--muted);font-size:13px;line-height:1.35;margin-top:2px}
.flagbtn{padding:0 8px;display:inline-flex;align-items:center}
.flagbtn .flag{width:26px;height:auto;border-radius:3px;display:block}
.ex{margin:22px auto 0;max-width:580px;text-align:left}
.ex-h{font-size:12.5px;color:var(--faint);margin-bottom:8px;text-align:center}
.ex-i{padding:10px 14px;border-left:3px solid var(--accent);margin-bottom:8px;background:var(--surface2);border-radius:0 10px 10px 0}
.ex-en{font-family:var(--serif);font-size:17px;line-height:1.45}
.ex-fr{color:var(--muted);font-size:14.5px;margin-top:3px}
.ex .say{font-size:13px}
.ex .typing{text-align:center}
.ex [data-exbtn]{display:block;margin:0 auto}
.mode.conjtile{grid-column:span 3;background:var(--accent-soft);border-color:var(--accent-soft)}
.mode.conjtile .ico{background:var(--accent);color:var(--accent-ink);font-size:20px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.tchip{border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:13.5px;background:var(--surface);font-weight:500}
.tchip:hover{border-color:var(--accent)}
.tchip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.vrow{display:grid;grid-template-columns:1fr 1.4fr 140px 60px;gap:14px;align-items:center;padding:9px 8px;border-radius:10px;width:100%;background:none;border:0;text-align:left}
.vrow:hover{background:var(--surface)}
.vrow .inf{font-family:var(--serif);font-size:18px;font-weight:500}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.tcard{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.tcard.sel{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.tc-h{display:flex;justify-content:space-between;align-items:center}
.tcard h4{font-size:14.5px;margin:0}
.ctab{width:100%;border-collapse:collapse;margin-top:8px;text-align:left}
.ctab td{padding:5px 0;border-bottom:1px solid var(--line);vertical-align:middle}
.ctab tr:last-child td{border-bottom:0}
.ctab td.pr{color:var(--faint);font-size:13px;width:84px;padding-right:8px}
.ctab td.f{font-family:var(--serif);font-size:16.5px;cursor:pointer}
.ctab td.f:hover{color:var(--accent)}
.ctab tr.hl td{background:var(--accent-soft)}
.ctab td.sol{padding-left:10px;color:var(--red);font-size:15px;width:38%}
.ctab td.sol:empty{width:0;padding:0}
.tblq td input{width:100%;font-family:var(--serif);font-size:18px;border:1px solid var(--line);border-radius:9px;padding:7px 10px;background:var(--surface);color:var(--ink)}
.tblq td input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.tblq td input.ok{border-color:var(--green);background:var(--green-soft)}
.tblq td input.bad{border-color:var(--red);background:var(--red-soft)}
.conj-prompt{margin-top:18px;font-family:var(--serif);font-size:26px}
.conj-prompt .pron{color:var(--accent)}
.conj-prompt .blank{color:var(--faint)}
.acc-keys{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.acc-keys button{min-width:40px;height:36px;border:1px solid var(--line);background:var(--surface);border-radius:9px;font-family:var(--serif);font-size:18px}
.acc-keys button:hover{border-color:var(--accent);color:var(--accent)}
#toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:12px;font-size:14px;opacity:0;pointer-events:none;transition:all .25s;z-index:50}
#toast.on{opacity:1;transform:translateX(-50%)}
.sync{font-size:12px;color:var(--faint)}
footer.foot{margin:40px 0 50px;color:var(--faint);font-size:13px}
@media (max-width:820px){
  .hero{grid-template-columns:1fr}
  .modes{grid-template-columns:1fr 1fr}.mode.practice{grid-column:span 2}.mode.lead{grid-column:span 2}
  .theme-row{grid-template-columns:34px 1fr 64px}.theme-row .bar{display:none}
  .stats4{grid-template-columns:1fr 1fr}
  .sect{grid-template-columns:1fr auto}.sect .bar{display:none}
  .prac,.scen,.grid2,.langs{grid-template-columns:1fr}
  .mode.conjtile{grid-column:span 2}
  .vrow{grid-template-columns:1fr 60px}.vrow .muted,.vrow .bar{display:none}
  .top-ladder{display:none}
}
@media (max-width:520px){
  .modes{grid-template-columns:1fr}.mode.practice,.mode.lead,.mode.conjtile{grid-column:auto}
  .sess-top .t small{display:none}
  .opts{grid-template-columns:1fr}
  .grades{gap:6px}.grade{padding:9px 4px;font-size:14px}
  .card{padding:18px;min-height:340px}
  .level-big{font-size:68px}
  .ladder{height:120px}
  .brand small{display:none}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ===== ESPACE ENTREPRISES ===== */
.gate-sep{display:flex;align-items:center;gap:12px;margin:30px 0 12px;color:var(--faint);font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.gate-sep::after{content:"";flex:1;height:1px;background:var(--line)}
.biz-card .bico{width:54px;height:54px;flex:none;border-radius:14px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:26px}
.lang-card.off{opacity:.55;cursor:default}
.lang-card.off:hover{border-color:var(--line)}
.bz-main{padding-bottom:60px}
.bz-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:16px;margin:26px 0 18px}
.bz-hero h1{font-family:var(--serif);font-size:clamp(30px,5vw,44px);letter-spacing:-.02em;line-height:1.05}
.bz-hero p{color:var(--muted);margin:10px 0 0;max-width:52ch}
.bz-prog{display:flex;gap:22px;align-items:flex-end;flex-wrap:wrap}
.bz-prog .num{font-family:var(--serif);font-size:34px;font-weight:600;line-height:1}
.bz-prog .num-l{font-size:13px;color:var(--muted)}
.bz-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:8px 0 26px}
.bz-mode{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,transform .08s}
.bz-mode:hover{border-color:var(--accent)}
.bz-mode:active{transform:translateY(1px)}
.bz-mode .ico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:19px;margin-bottom:4px}
.bz-mode b{font-family:var(--serif);font-size:21px;font-weight:600}
.bz-mode span{color:var(--muted);font-size:14px;line-height:1.4}
.bz-mode .due{margin-top:auto;padding-top:8px;font-size:13px;font-weight:600;color:var(--accent)}
.bz-h2{font-family:var(--serif);font-size:24px;margin:8px 0 12px}
.bz-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.bz-tools .input{max-width:320px;padding:9px 12px;font-size:15px}
.bz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px}
.bz-tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;text-align:left;display:flex;flex-direction:column;gap:10px;min-height:150px;transition:border-color .15s,transform .08s}
.bz-tile:hover{border-color:var(--accent)}
.bz-tile b{font-size:15.5px;line-height:1.2}
.bz-tile small{color:var(--muted);font-size:12.5px;line-height:1.35}
.bz-tile .lv{margin-top:auto;display:flex;gap:3px}
.bz-tile .lv i{flex:1;height:4px;border-radius:2px;background:var(--line)}
.bz-tile .lv i.on{background:var(--green)}
.logo{width:56px;height:56px;border-radius:14px;display:grid;place-items:center;font-family:var(--serif);font-weight:700;font-size:21px;letter-spacing:-.02em;color:#fff;flex:none;overflow:hidden;background:#3A4060}
.logo img{width:100%;height:100%;object-fit:contain;background:#fff;padding:6px}
.logo.xl{width:84px;height:84px;font-size:32px;border-radius:20px}
.logo.q{background:var(--surface2);color:var(--faint);border:1px dashed var(--line);font-size:30px}
/* fiche */
.fi-top{display:flex;gap:18px;align-items:center;margin:24px 0 14px}
.fi-top h1{font-family:var(--serif);font-size:clamp(30px,5vw,44px);letter-spacing:-.02em;line-height:1.05}
.fi-top .tag{color:var(--muted);font-size:16px;margin-top:4px}
.fi-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.fi-chips span{border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:13px;background:var(--surface);color:var(--muted)}
.fi-chips span b{color:var(--ink);font-weight:600}
.fi-bref{font-family:var(--serif);font-size:19px;line-height:1.5;margin:0 0 20px;max-width:70ch}
.fi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:22px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.kpi .k{font-size:12.5px;color:var(--muted)}
.kpi .v{font-family:var(--serif);font-size:21px;font-weight:600;line-height:1.2;margin-top:2px}
.kpi .p{font-size:12px;color:var(--faint)}
.fi-block{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 20px;margin-bottom:14px}
.fi-block h3{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:12px}
.seg-bar{display:flex;height:16px;border-radius:8px;overflow:hidden;margin-bottom:14px;background:var(--line)}
.seg-bar i{display:block;height:100%}
.seg-l{display:grid;gap:10px}
.seg-r{display:grid;grid-template-columns:14px 1fr auto;gap:10px;align-items:start}
.seg-r .sw{width:14px;height:14px;border-radius:4px;margin-top:4px}
.seg-r b{font-weight:600}
.seg-r small{display:block;color:var(--muted);font-size:13.5px;line-height:1.4}
.seg-r .pc{font-family:var(--serif);font-weight:600;font-size:18px}
.fi-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pills{display:flex;flex-wrap:wrap;gap:6px}
.pills span{background:var(--surface2);border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:13.5px}
.fi-cles{margin:0;padding-left:20px}
.fi-cles li{margin-bottom:6px}
.fi-sec h2{font-family:var(--serif);font-size:23px;margin:26px 0 8px}
.fi-sec p{font-size:16.5px;line-height:1.65;margin:0 0 12px;max-width:72ch}
.frise{list-style:none;margin:0;padding:0;border-left:2px solid var(--line);margin-left:6px}
.frise li{position:relative;padding:0 0 12px 18px}
.frise li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent)}
.frise b{font-family:var(--serif);margin-right:8px}
.fi-src{font-size:13px;color:var(--muted);word-break:break-word}
.fi-src a{color:var(--accent)}
.fi-doubt{font-size:13px;color:var(--amber);background:var(--amber-soft);border-radius:12px;padding:10px 14px;margin-top:10px}
.fi-nav{display:flex;justify-content:space-between;gap:10px;margin:24px 0}
/* jeu */
.gm{max-width:640px;margin:22px auto 0}
.gm-head{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:14px;margin-bottom:10px}
.gm-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:var(--shadow)}
.gm-q{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px}
.gm-q h2{font-family:var(--serif);font-size:28px;line-height:1.15}
.clues{width:100%;display:grid;gap:8px;margin:6px 0 4px;text-align:left}
.clue{background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px 14px;font-size:15.5px}
.clue small{display:block;color:var(--faint);font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;margin-bottom:2px}
.gm-row{display:flex;gap:8px;width:100%;flex-wrap:wrap;justify-content:center}
.gm-row .input{flex:1;min-width:200px}
.verdict{font-weight:700;font-size:15px;padding:8px 12px;border-radius:10px;margin-bottom:12px;text-align:center}
.verdict.ok{background:var(--green-soft);color:var(--green)}
.verdict.ko{background:var(--red-soft);color:var(--red)}
.xp{display:grid;gap:12px}
.xp-h{display:flex;gap:14px;align-items:center}
.xp-h h2{font-family:var(--serif);font-size:26px;line-height:1.1}
.xp-h .tag{color:var(--muted);font-size:14.5px}
.xp-k{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.xp-k .kpi{padding:9px 11px}
.xp-k .kpi .v{font-size:17px}
.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px}
.grades .btn{flex-direction:column;gap:0;padding:9px 6px;font-size:14px}
.grades .btn small{font-weight:500;color:var(--muted);font-size:11.5px}
.g-again{color:var(--red)}.g-good{color:var(--green)}
.gm-end{text-align:center;padding:30px 10px}
.gm-end h2{font-family:var(--serif);font-size:32px;margin-bottom:8px}
@media (max-width:760px){
  .bz-hero,.fi-two{grid-template-columns:1fr}
  .bz-modes{grid-template-columns:1fr}
  .xp-k{grid-template-columns:repeat(2,1fr)}
  .grades{grid-template-columns:repeat(2,1fr)}
  .bz-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}
.logo.wide{width:112px;height:56px;background:#fff;border:1px solid var(--line);border-radius:12px}
.logo.wide img{padding:6px 8px}
.logo.wide.xl{width:200px;height:96px;border-radius:18px}
.logo.wide.xl img{padding:12px 14px}
.bz-tile .logo.wide{width:100%;height:68px}
.gm-q .logo.wide.xl{width:min(320px,100%);height:150px}
.gm-q .logo.wide.xl img{padding:18px 22px}
.logo.wide{display:block;padding:0}
.logo.wide img{display:block;width:100%;height:100%;object-fit:contain;background:#fff}
/* entités liées */
a.ent{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1.5px;text-underline-offset:2px}
a.ent:hover{color:var(--accent)}
.ent-p{text-decoration:underline dotted var(--faint);text-underline-offset:2px;cursor:help}
.fi-cible{display:inline-block;background:var(--accent-soft);color:var(--ink);border-radius:10px;padding:7px 12px;font-size:14px;margin:0 0 14px}
/* encadrés */
.fi-boxes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0 0 20px}
.fi-box{text-align:left;background:var(--surface);border:1.5px solid var(--accent);border-radius:18px;padding:16px 18px;display:flex;flex-direction:column;gap:6px;transition:transform .08s,box-shadow .15s}
.fi-box:hover{box-shadow:var(--shadow)}.fi-box:active{transform:translateY(1px)}
.fb-h{font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:700}
.fb-p{display:flex;align-items:baseline;gap:10px}.fb-p b{font-family:var(--serif);font-size:28px}
.fb-t{font-family:var(--serif);font-size:19px;font-weight:600;line-height:1.25}
.fb-s{font-size:13px;color:var(--muted)}.fb-go{font-size:13.5px;font-weight:600;color:var(--accent);margin-top:auto}
.spark{width:150px;height:40px}
.up{color:var(--green);font-style:normal;font-weight:700}.dn{color:var(--red);font-style:normal;font-weight:700}
/* bourse */
.mk-q{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:0 0 16px}
.mk-q b{font-family:var(--serif);font-size:42px;line-height:1}.mk-q em{font-size:20px}.mk-q span{color:var(--muted);font-size:13.5px}
.mk-pers{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.mk-p{border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:5px 9px;font-size:13px;font-weight:600;color:var(--muted)}
.mk-p.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.mk-p:disabled{opacity:.4;cursor:not-allowed}
.mk-perf{font-size:14px;color:var(--muted);margin-bottom:6px}
.mk-wrap{position:relative}
.mk-chart{width:100%;height:auto;display:block;touch-action:none}
.mk-grid{stroke:var(--line);stroke-width:1}.mk-ax{fill:var(--faint);font-size:11px;font-family:var(--sans)}
.mk-cross{stroke:var(--faint);stroke-dasharray:3 3}.mk-mv{stroke:var(--surface);stroke-width:2;cursor:help}
.mk-tip{position:absolute;top:0;width:180px;background:var(--hl-bg);color:var(--hl-ink);font-size:12.5px;padding:8px 10px;border-radius:10px;pointer-events:none;line-height:1.4}
.mk-mvr{display:grid;grid-template-columns:90px 76px 1fr;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:14.5px}
.mk-mvr:first-of-type{border-top:0}.mk-mvr .d{color:var(--muted)}
.fi-srcl{color:var(--accent);font-size:12.5px}
/* actualité */
.nw-f{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 14px}
.tchip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.nw-tl{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--line)}
.nw-e{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 18px;margin:0 0 12px}
.nw-e::before{content:"";position:absolute;left:-26px;top:20px;width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--bg)}
.nw-e.t-acquisition::before,.nw-e.t-cession::before{background:var(--amber)}
.nw-e.t-risque::before,.nw-e.t-social::before{background:var(--red)}
.nw-e.t-resultats::before{background:var(--green)}
.nw-m{display:flex;gap:10px;align-items:center;margin-bottom:4px}
.nw-d{font-size:13px;color:var(--muted)}
.nw-t{font-size:11.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--surface2);border:1px solid var(--line);border-radius:6px;padding:2px 7px}
.nw-e h3{font-family:var(--serif);font-size:20px;line-height:1.25;margin:2px 0 6px}
.nw-e p{margin:0;font-size:15.5px;line-height:1.55}
.nw-dl{display:grid;grid-template-columns:150px 1fr;gap:6px 14px;margin:12px 0 0;padding:12px 14px;background:var(--surface2);border-radius:12px;font-size:14.5px}
.nw-dl dt{color:var(--muted);font-weight:600}.nw-dl dd{margin:0}
.nw-src{margin-top:8px;font-size:12.5px}.nw-src a{color:var(--accent)}
@media (max-width:760px){.fi-boxes{grid-template-columns:1fr}.nw-dl{grid-template-columns:1fr}.nw-dl dt{margin-top:6px}.mk-mvr{grid-template-columns:70px 70px 1fr}.mk-q b{font-size:34px}}

.login-box{max-width:640px}
.gate-sep .sec-ico{width:22px;height:22px;color:var(--accent);flex:none}
.gate-sep.first{margin-top:6px}
.cg-card .cgico{width:54px;height:54px;flex:none;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:#fff;box-shadow:0 0 0 1px var(--line)}
.cg-card .cgico img,.cg-card .cgico svg{width:100%;height:100%;object-fit:cover;display:block}

.cg-card.off{opacity:.72;cursor:default}
.cg-card.off:hover{border-color:var(--line)}
.cg-card.off .cgico img{filter:grayscale(.15)}

.ps-pic{width:56px;height:56px;border-radius:50%;flex:none;overflow:hidden;display:grid;place-items:center;color:#fff;font-family:var(--serif);font-weight:700;font-size:21px;box-shadow:0 0 0 1px var(--line)}
.ps-pic img{width:100%;height:100%;object-fit:cover;display:block}
.ps-pic.xl{width:96px;height:96px;font-size:34px}
.ps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.ps-tile{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;text-align:left;display:flex;flex-direction:column;gap:8px;transition:border-color .15s}
.ps-tile:hover{border-color:var(--accent)}
.ps-tile .ps-pic{width:72px;height:72px;font-size:26px}
.ps-tile b{font-size:16px;line-height:1.2}
.ps-tile small{color:var(--muted);font-size:12.5px;line-height:1.35}
.ps-tile .lv{margin-top:auto;display:flex;gap:3px}
.ps-tile .lv i{flex:1;height:4px;border-radius:2px;background:var(--line)}
.ps-tile .lv i.on{background:var(--green)}
.ps-fortune{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;background:var(--accent-soft);border-radius:16px;padding:14px 18px;margin:0 0 16px}
.ps-fortune small{display:block;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.ps-fortune b{font-family:var(--serif);font-size:20px}
.ps-fortune .muted{font-size:13.5px;flex:1;min-width:220px}
.ps-ent{display:grid;gap:10px}
.ps-ent>div{display:grid;grid-template-columns:minmax(140px,1fr) 2fr auto;gap:4px 14px;align-items:baseline;padding-bottom:10px;border-bottom:1px solid var(--line)}
.ps-ent>div:last-child{border:0;padding:0}
.ps-ent span{color:var(--muted);font-size:14.5px}
.ps-ent small{color:var(--faint);font-size:13px;white-space:nowrap}
.ps-dec{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.ps-dec .fi-block{margin:0}
.ps-dec p{margin:6px 0 0;font-size:14.5px;line-height:1.5}
.ps-yr{font-family:var(--serif);font-weight:700;font-size:22px;color:var(--accent)}
.ps-imp{color:var(--muted)}
.ps-q{margin:0 0 12px;padding:14px 20px;border-left:3px solid var(--accent);background:var(--surface);border-radius:0 14px 14px 0}
.ps-q p{margin:0;font-family:var(--serif);font-size:18px;line-height:1.45}
.ps-q .ps-or{font-family:inherit;font-size:13.5px;color:var(--faint);font-style:italic;margin-top:6px}
.ps-q footer{font-size:13px;color:var(--muted);margin-top:8px}
@media (max-width:640px){.ps-ent>div{grid-template-columns:1fr}.ps-dec{grid-template-columns:1fr}}

.ar-works{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.ar-w{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;display:flex;flex-direction:column}
.ar-w figure{margin:0;aspect-ratio:4/3;background:var(--surface2);display:grid;place-items:center;color:var(--faint);font-size:13px;overflow:hidden}
.ar-w figure img{width:100%;height:100%;object-fit:cover;display:block}
.ar-w div{padding:14px 16px}.ar-w h3{font-family:var(--serif);font-size:20px;margin:0}
.ar-w .m{font-size:12.5px;color:var(--muted);margin:3px 0 8px}.ar-w p{margin:0;font-size:14.5px;line-height:1.55}
.ar-say li{font-family:var(--serif);font-size:16px}
.cn-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.cn-chips button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 14px;font:inherit;font-size:14px;cursor:pointer}
.cn-chips button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.cn-y{font-family:var(--serif);font-size:13px;color:var(--muted);letter-spacing:.04em}
.ar-w figure.has-img{position:relative;background:var(--surface2)}
.ar-w figure.has-img img{object-fit:contain}
.ar-w figure.poster{aspect-ratio:4/3}
.img-cr ul{margin:0;padding-left:18px}
.img-cr li{font-size:13px;color:var(--muted);margin:2px 0}
.img-cr a{color:inherit}
/* C2 extrême */
.mode.c2tile{grid-column:span 3;background:linear-gradient(120deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#7A3FB8));color:var(--accent-ink);border-color:transparent}
.mode.c2tile p{color:color-mix(in srgb,var(--accent-ink) 82%,transparent)}
.mode.c2tile .ico{background:color-mix(in srgb,var(--accent-ink) 18%,transparent);color:var(--accent-ink);font-weight:700;font-size:15px}
.c2-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin:14px 0 8px;align-items:start}
.c2-hero h1{font-size:clamp(40px,7vw,64px);letter-spacing:-.03em;line-height:1}
.c2-hero p{font-size:16.5px;max-width:58ch}
.c2-side{display:flex;flex-direction:column;gap:14px}
.c2-lv{display:grid;gap:8px}
.c2-lv button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column}
.c2-lv button b{font-family:var(--serif);font-size:17px}.c2-lv button span{font-size:13px;color:var(--muted)}
.c2-lv button.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.c2-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.c2-g{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.c2-g h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}
.c2-st{display:flex;justify-content:space-between;gap:10px;width:100%;background:none;border:0;border-bottom:1px solid var(--line);padding:8px 2px;text-align:left;font-size:14.5px}
.c2-st:last-child{border-bottom:0}.c2-st:hover span{color:var(--accent)}
.c2-st b{font-size:13px;white-space:nowrap}.c2-st b.ok{color:var(--green)}.c2-st b.mid{color:var(--amber)}.c2-st b.ko{color:var(--red)}.c2-st b.nv{color:var(--faint);font-weight:500}
.c2-stage{max-width:880px}
.c2-card{min-height:0;gap:14px}
.c2-fr{font-size:clamp(19px,2.6vw,23px);line-height:1.6;margin:6px 0 0}
.c2-req{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.c2-req .lbl,.c2-block .lbl{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:6px;display:flex;align-items:center;gap:6px}
.c2-chip{border:1px solid var(--line);border-radius:10px;padding:7px 10px;margin-bottom:6px;font-size:14px;background:var(--surface2)}
.c2-chip summary{cursor:pointer;font-weight:600}
.c2-chip div{margin-top:6px;font-size:13px;color:var(--muted)}
.c2-word{display:inline-flex;flex-direction:column;align-items:flex-start;border:1px solid var(--line);background:var(--surface2);border-radius:10px;padding:6px 10px;margin:0 6px 6px 0;font-size:14px;text-align:left}
.c2-word span{font-size:12px;color:var(--faint)}.c2-word.shown span{color:var(--amber);font-weight:600}
.c2-ta{font-size:17px;line-height:1.55;resize:vertical;min-height:150px;font-family:var(--sans)}
.c2-actions{display:flex;align-items:center;gap:10px}
.c2-res-head{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.c2-total{font-family:var(--serif);font-size:64px;font-weight:600;line-height:1}
.c2-total small{font-size:20px;color:var(--faint);margin-left:2px}
.c2-total.ok{color:var(--green)}.c2-total.mid{color:var(--amber)}.c2-total.ko{color:var(--red)}
.c2-bars{flex:1;min-width:240px;display:grid;gap:6px}
.c2-bars div{display:grid;grid-template-columns:96px 1fr 44px;gap:10px;align-items:center;font-size:13.5px}
.c2-bars i{height:7px;background:var(--line);border-radius:99px;overflow:hidden}.c2-bars i b{display:block;height:100%;background:var(--accent)}
.c2-bars em{font-style:normal;color:var(--muted);text-align:right}
.c2-block{border-top:1px solid var(--line);padding-top:12px}
.c2-block p{margin:0;font-size:16px;line-height:1.6}
.c2-err{margin:0;padding-left:18px}.c2-err li{margin-bottom:8px}.c2-err small{color:var(--muted)}
.c2-check{font-size:14.5px;margin-bottom:5px}.c2-check.ok b{color:var(--green)}.c2-check.mid b{color:var(--amber)}.c2-check.ko b{color:var(--red)}.c2-check span{color:var(--muted)}
.c2-words{display:flex;flex-wrap:wrap;gap:6px}
.c2-words span{border-radius:10px;padding:5px 10px;font-weight:600;font-size:14px;display:flex;flex-direction:column}
.c2-words span small{font-weight:400;font-size:12px;opacity:.8}
.c2-words .ok{background:var(--green-soft);color:var(--green)}.c2-words .ko{background:var(--red-soft);color:var(--red)}
.c2-native p{font-size:18px}
.c2-native details{margin-top:8px;font-size:14px;color:var(--muted)}
.c2-up{margin:0;padding-left:18px}.c2-up li{margin-bottom:6px}
.c2-tip{background:var(--accent-soft);border-radius:12px;padding:10px 14px;margin:0;font-size:14.5px}
.c2-runs{display:flex;justify-content:center;gap:10px;margin:18px 0}
.c2-runs span{display:flex;flex-direction:column;align-items:center;border-radius:12px;padding:8px 14px;font-size:12px;color:var(--muted);border:1px solid var(--line)}
.c2-runs b{font-family:var(--serif);font-size:24px}.c2-runs .ok b{color:var(--green)}.c2-runs .mid b{color:var(--amber)}.c2-runs .ko b{color:var(--red)}
@media (max-width:760px){.c2-hero,.c2-req{grid-template-columns:1fr}.mode.c2tile{grid-column:auto}}

/* ========= CINÉMA : fiches par type (cinema.js) ========= */
.cn-vis{margin:0;flex:none;aspect-ratio:2/3;border-radius:12px;overflow:hidden;background:var(--surface2);box-shadow:0 0 0 1px var(--line)}
.cn-vis img{width:100%;height:100%;object-fit:cover;display:block}
.cn-vis.gen{background:var(--c);color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:1em .9em;text-align:left}
.cn-vis.gen .y{font-family:var(--serif);font-size:.95em;opacity:.85;letter-spacing:.04em}
.cn-vis.gen b{font-family:var(--serif);font-size:1.15em;line-height:1.15;overflow-wrap:break-word;hyphens:auto}
.cn-vis.gen small{font-size:.72em;text-transform:uppercase;letter-spacing:.08em;opacity:.8}
.cn-vis.lg{width:170px;font-size:17px}.cn-vis.md{width:120px;font-size:13px}.cn-vis.sq{width:120px;aspect-ratio:1;font-size:14px}
.cn-vis.tile{width:100%;font-size:14px}.cn-vis.card{width:150px;font-size:15px}.cn-vis.mini{width:56px;font-size:7px;border-radius:8px}
.cn-wtop{display:flex;gap:20px;align-items:flex-end;margin:24px 0 14px}
.cn-wtop h1{font-family:var(--serif);font-size:clamp(30px,5vw,44px);letter-spacing:-.02em;line-height:1.05}
.cn-wtop h2{font-family:var(--serif);font-size:clamp(24px,4vw,32px);line-height:1.1}
.cn-wtop .tag{color:var(--muted);font-size:16px;margin-top:4px}
.cn-wtop.sm{margin-top:0}
.cn-kind{font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:6px}
.cn-tile{gap:6px}.cn-tile .cn-vis{margin-bottom:4px}
.cn-tabs button small{font-size:12px;opacity:.7;margin-left:2px}
.cn-test{display:inline-block;margin-top:6px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--amber);background:var(--amber-soft);border-radius:99px;padding:2px 9px}
.cn-rev{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.cn-tmdb{font-size:12.5px;color:var(--faint);margin:18px 0 0}.cn-tmdb a{color:inherit}
.cn-pitch{font-size:16.5px;line-height:1.6;margin:0}
.cn-quote{font-family:var(--serif);font-size:20px;line-height:1.45;margin:0;padding-left:14px;border-left:3px solid var(--accent)}
.cn-quote small{display:block;font-family:var(--sans);font-size:13.5px;color:var(--muted);margin-top:6px}
.cn-cast{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 18px}
.cn-cast li{display:flex;flex-direction:column}.cn-cast small{color:var(--muted);font-size:13px}
.cn-dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0}.cn-dl dt{color:var(--muted)}.cn-dl dd{margin:0}
.cn-kpis{margin-bottom:0}
.cn-one{margin:0;font-size:16px;line-height:1.55}
.cn-saga{display:grid;grid-template-columns:230px 1fr;gap:20px;align-items:start;margin:22px 0}
.cn-toc{position:sticky;top:calc(env(safe-area-inset-top,0px) + 72px);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;max-height:calc(100vh - 100px);overflow:auto}
.cn-toc-b{margin-bottom:12px}.cn-toc-b>b{font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}.cn-toc-b>small{display:block;color:var(--faint);font-size:12px}
.cn-toc ol{list-style:none;margin:6px 0 0;padding:0}
.cn-toc a{display:block;padding:5px 6px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14.5px;line-height:1.3}
.cn-toc a:hover{background:var(--surface2)}.cn-toc a .cn-y{display:block;font-size:12px}
.cn-ord{display:flex;gap:4px;margin-bottom:12px}
.cn-ord button{flex:1;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:9px;padding:6px 4px;font:inherit;font-size:12.5px;cursor:pointer}
.cn-ord button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.cn-sfs{display:grid;gap:18px;min-width:0}
.cn-sf{background:var(--surface2);border:1px solid var(--line);border-radius:20px;padding:20px;scroll-margin-top:calc(env(safe-area-inset-top,0px) + 76px);transition:box-shadow .3s}
.cn-sf.hl{box-shadow:0 0 0 3px var(--accent)}
.cn-clues{text-align:left;margin:0;padding-left:20px;max-width:46ch}.cn-clues li{margin-bottom:6px}
.cn-acc{margin:0;max-width:52ch;font-family:var(--serif);font-size:17px;line-height:1.5}
.cn-say{background:var(--accent-soft);border-radius:12px;padding:10px 14px}.cn-say p{margin:4px 0 0}
.cn-ex li{margin-bottom:8px}
@media (max-width:760px){
  .cn-saga{grid-template-columns:1fr;gap:12px}
  .cn-toc{top:calc(env(safe-area-inset-top,0px) + 60px);z-index:5;max-height:none;border-radius:0;margin:0 -20px;border-width:0 0 1px;padding:8px 20px;display:flex;gap:14px;overflow-x:auto;white-space:nowrap}
  .cn-toc-b{margin:0;display:flex;align-items:center;gap:8px}.cn-toc-b>small{display:none}
  .cn-toc ol{display:flex;gap:4px;margin:0}.cn-toc a{font-size:13.5px;background:var(--surface2)}.cn-toc a .cn-y{display:none}
  .cn-ord{margin:0;flex:none}.cn-ord button{padding:5px 8px;white-space:nowrap}
  .cn-sf{padding:14px;scroll-margin-top:calc(env(safe-area-inset-top,0px) + 120px)}
  .cn-vis.lg{width:112px;font-size:12px}.cn-vis.md{width:88px;font-size:10px}.cn-vis.sq{width:84px;font-size:10px}
  .cn-wtop{gap:14px}
}
@media (max-width:520px){#cn-g{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}#cn-g .ps-tile{padding:12px}}
/* cinéma : spoilers masqués, réplique en VO, épisodes clés, palmarès */
.cn-spoil{display:inline}
.cn-spoil summary{display:inline-block;cursor:pointer;font-size:13px;font-weight:600;color:var(--amber);background:var(--amber-soft);border-radius:999px;padding:2px 10px;list-style:none}
.cn-spoil summary::-webkit-details-marker{display:none}
.cn-spoil[open] summary{margin-bottom:6px}
.cn-quote .cn-vo{display:block;font-family:var(--sans);font-size:13.5px;font-style:italic;color:var(--muted);margin-top:6px}
.cn-eps li,.cn-palm li{line-height:1.5}
.cn-palm .cn-y{display:inline-block;min-width:3.2em}
/* automobile : propriétaires, modèles, générations, image manquante */
.au-own{margin:0;padding-left:0;list-style:none;display:grid;gap:6px}
.au-own li{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.au-own .cn-y{min-width:5.5em}
.au-mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.au-mod{display:flex;flex-direction:column;gap:4px}.au-mod p{margin:4px 0 0;font-size:14px;color:var(--muted)}
.au-mod .cn-vis{aspect-ratio:4/3}
.au-gens{display:flex;gap:16px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x mandatory}
.au-gen{flex:0 0 min(300px,82%);scroll-snap-align:start;display:flex;flex-direction:column;gap:8px}
.au-gen .cn-vis{aspect-ratio:4/3;margin:0}.au-gen p{margin:6px 0 0;font-size:14.5px}
.au-leg{display:block;font-size:12.5px;color:var(--faint);margin-top:2px}
.au-miss{--c:#8a90ac;opacity:.85}.au-miss small{font-style:italic}
.au-logo{display:inline-flex;align-items:center;height:44px;margin-top:8px}.au-logo img{max-height:44px;max-width:140px;object-fit:contain}
.au-f{margin-top:6px}.au-f button{font-size:13px}
.au-bz{display:flex;align-items:center;justify-content:center;background:var(--surface2)}
.ps-pic.au-lp{background:#fff}.ps-pic.au-lp img{object-fit:contain;padding:13%;box-sizing:border-box}
.ps-pic.au-lm{background:var(--surface);color:var(--muted);border:1px dashed var(--line);box-shadow:none}.ps-pic.au-lm small{font:600 10px/1.15 system-ui,sans-serif;text-align:center;padding:0 8px}

/* ========= calcul mental ========= */
.cg-card .cgico.cal-gico{background:var(--hl-bg);color:var(--hl-ink);font:600 13px/1 var(--sans);letter-spacing:-.02em}
.cal-note{background:var(--accent-soft);border-radius:14px;padding:12px 16px;margin:0 0 14px;font-size:15px}
.cal-modes{grid-template-columns:repeat(4,1fr)}
.bz-mode.cal-hl{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.cal-dur{display:inline-flex;gap:6px;margin-left:2px}
.cal-dur em{font-style:normal;border:1px solid var(--line);border-radius:8px;padding:1px 7px;color:var(--muted)}
.cal-dur em.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.cal-help{font-size:14px;margin:4px 0 14px}
.cal-pal{margin:0 0 18px}
.cal-pal h3{font-family:var(--serif);font-size:20px;margin:0 0 10px}
.cal-pal h3 span{font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-right:6px}
.cal-pal.off h3{color:var(--muted)}
.cal-pal.off p{margin:-4px 0 0;font-size:14px}
.cal-skg{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.cal-sk{text-align:left;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:6px}
.cal-sk:hover{border-color:var(--accent)}
.cal-sk b{font-size:16px}
.cal-sk small{color:var(--muted);font-size:12.5px;line-height:1.3}
.cal-sk.ok{border-left-color:var(--green)}.cal-sk.mid{border-left-color:var(--amber)}.cal-sk.todo{border-left-color:var(--accent)}
.cal-sk.new{background:var(--surface2)}
.cal-lv{display:flex;gap:3px}
.cal-lv i{flex:1;height:6px;border-radius:3px;background:var(--line)}
.cal-lv i.on{background:var(--accent)}
.cal-sk.ok .cal-lv i.on{background:var(--green)}
/* leçon, bilan, stats */
.cal-lesson{max-width:760px;padding-top:22px;padding-bottom:40px}
.cal-lesson h1{font-family:var(--serif);font-size:clamp(28px,5vw,38px);line-height:1.1;margin:4px 0 10px}
.cal-kick{color:var(--faint);font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin:0}
.cal-lede{font-size:18px;color:var(--muted);margin:0 0 16px}
.cal-blk{margin:0 0 12px;padding:18px 20px}
.cal-blk h3{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:0 0 8px}
.cal-blk p{margin:0}
.cal-ex{font-family:var(--serif);font-size:30px;font-weight:600;margin:0 0 6px}
.cal-steps{margin:0;padding-left:22px}.cal-steps li{margin:3px 0}
.cal-act{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 8px}
.cal-ul{margin:0;padding-left:20px}.cal-ul li{margin:0 0 8px}
.cal-big{font-family:var(--serif);font-size:84px;font-weight:600;line-height:1;margin-top:10px}
.cal-sum{display:grid;grid-template-columns:repeat(4,1fr);margin:14px 0}
.cal-sparks{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.cal-spark{margin:0}
.cal-spark figcaption{display:flex;justify-content:space-between;font-size:14px;color:var(--muted)}
.cal-spark figcaption b{color:var(--ink)}
.cal-spark svg{width:100%;height:auto;display:block;margin:4px 0}
.cal-spark .ln{fill:none;stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.cal-spark .pt{fill:var(--accent);stroke:var(--surface);stroke-width:2}
.cal-spark .ref{stroke:var(--faint);stroke-width:1;stroke-dasharray:3 4}
.cal-tw{overflow-x:auto}
.cal-t{width:100%;border-collapse:collapse;font-size:14px}
.cal-t th,.cal-t td{text-align:right;padding:7px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
.cal-t th:first-child,.cal-t td:first-child{text-align:left}
.cal-t th{font-weight:600;color:var(--muted);font-size:12.5px}
/* écran d'exercice */
.cal-run{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;max-width:520px;margin:0 auto;padding:8px 16px 14px;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.cal-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px}
.cal-bar b{font-size:14px;text-align:center;flex:1}
.cal-bar span{font-variant-numeric:tabular-nums;font-size:14px;min-width:70px;text-align:right}
.cal-track{height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin-bottom:6px}
.cal-track i{display:block;height:100%;width:0;background:var(--accent);transition:width .25s linear}
.cal-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;min-height:200px}
.cal-q{font-family:var(--serif);font-size:clamp(40px,12vw,58px);font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums}
.cal-q.long{font-size:clamp(30px,9vw,46px)}
.cal-guide{list-style:none;margin:0;padding:0;font-size:15px;color:var(--muted)}
.cal-guide li.ph{color:var(--accent);font-weight:600}
.cal-ans{min-width:160px;font-size:40px;font-weight:600;font-variant-numeric:tabular-nums;border-bottom:3px solid var(--line);padding:0 12px;min-height:58px}
.cal-ans .ph{color:var(--faint)}
.cal-ans.good{color:var(--green);border-color:var(--green)}
.cal-ans.bad{color:var(--red);border-color:var(--red)}
.cal-ans s{color:var(--faint);font-size:.6em}
.cal-fb{min-height:48px;font-size:15px;max-width:100%}
.cal-fb .g{color:var(--green);font-weight:600}.cal-fb .r{color:var(--red);font-weight:600}.cal-fb .a{color:var(--amber);font-weight:600}
.cal-fb small{font-weight:400;color:var(--muted)}
.cal-tip{margin-top:8px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;text-align:left;font-size:15px}
.cal-tip span{display:block;font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.cal-cont{margin-top:8px;font-size:13px;color:var(--faint)}
.cal-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}
.cal-pad button{height:60px;border-radius:14px;border:1px solid var(--line);background:var(--surface);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;touch-action:manipulation}
.cal-pad button:active{background:var(--accent-soft);transform:translateY(1px)}
.cal-pad .ok{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-size:20px}
.cal-pad .del{font-size:22px;color:var(--muted)}
.cal-skip{background:none;border:0;color:var(--muted);font-size:14px;padding:10px;margin-top:4px;text-decoration:underline;text-underline-offset:3px}
@media (max-width:820px){.cal-modes{grid-template-columns:repeat(2,1fr)}.cal-sum{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.cal-sparks{grid-template-columns:1fr}.cal-pad button{height:56px}.cal-skg{grid-template-columns:repeat(2,1fr)}}
.cal-ax{display:flex;justify-content:space-between;font-size:11.5px;margin:-2px 0 4px}
.cal-dur em{white-space:nowrap}
@media (max-width:520px){.cal-modes{grid-template-columns:1fr}.cal-modes .bz-mode{padding:14px 16px}.cal-modes .bz-mode .ico{display:none}.cal-main .bz-prog{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px}.cal-main .bz-prog .num{font-size:28px}.cal-main .bz-hero{margin-top:16px}}

/* ========= Géographie : jeux de cartes (geo.js) ========= */
:root{--g-out:#E2E6EF;--g-sea:#E7EDF6;--g-land:#FBFBFD;--g-hov:#DCE1FF;--g-dep:#AEB4CB;--g-reg:#6E7596;--g-ext:#5B6180;--g-ok:#3E9E6E;--g-mid:#E2A13C;--g-ko:#D2524A;--g-tgt:#2B37D4;--g-tgt-f:#C9CEFF;--g-m0:#ECEEF4;--g-m1:#F0B3AC;--g-m2:#F3D49C;--g-m3:#8FCFAB;--g-lab:#161A33;--g-halo:#FFFFFF}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--g-out:#161A33;--g-sea:#0B0E20;--g-land:#20254A;--g-hov:#323A7A;--g-dep:#3D4573;--g-reg:#7E86B5;--g-ext:#9AA1CC;--g-ok:#3FB37C;--g-mid:#D8992F;--g-ko:#D9574E;--g-tgt:#A9AFFF;--g-tgt-f:#3B44A0;--g-m0:#272C52;--g-m1:#7A3A3C;--g-m2:#7A6232;--g-m3:#2F7A55;--g-lab:#E8E9F3;--g-halo:#0F1226}}
:root[data-theme="dark"]{--g-out:#161A33;--g-sea:#0B0E20;--g-land:#20254A;--g-hov:#323A7A;--g-dep:#3D4573;--g-reg:#7E86B5;--g-ext:#9AA1CC;--g-ok:#3FB37C;--g-mid:#D8992F;--g-ko:#D9574E;--g-tgt:#A9AFFF;--g-tgt-f:#3B44A0;--g-m0:#272C52;--g-m1:#7A3A3C;--g-m2:#7A6232;--g-m3:#2F7A55;--g-lab:#E8E9F3;--g-halo:#0F1226}
/* accueil et vignettes */
.geo-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin:0 0 24px}
.geo-card{display:flex;align-items:center;gap:14px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:14px 16px;transition:border-color .15s}
button.geo-card:hover{border-color:var(--accent)}
.geo-card b{display:block;font-family:var(--serif);font-size:20px;font-weight:600}
.geo-card small{display:block;color:var(--muted);font-size:13px;line-height:1.35;margin-top:2px}
.geo-card.off{opacity:.62}
.gv{flex:none;width:64px;height:64px;border-radius:16px;background:var(--g-sea);display:grid;place-items:center;overflow:hidden}
.gv svg{width:100%;height:100%;display:block}
.gv-land{fill:var(--accent);opacity:.9}
.gv-glyph{color:var(--faint);padding:10px}
.cg-card .cgico .geo-gico{width:100%;height:100%}
.geo-modes{grid-template-columns:repeat(4,1fr)}
.bz-mode[disabled]{opacity:.6;cursor:default}
.geo-jeux{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:0 0 26px}
.geo-jeu{padding:18px;display:flex;flex-direction:column;gap:8px}
.geo-jeu h3{font-family:var(--serif);font-size:21px}
.geo-jeu p{margin:0 0 4px;font-size:14px}
.geo-comps{display:flex;flex-direction:column;gap:6px}
.geo-comp{display:flex;flex-direction:column;gap:6px;text-align:left;border:1px solid var(--line);background:var(--surface2);border-radius:12px;padding:9px 12px;transition:border-color .15s}
.geo-comp:hover{border-color:var(--accent)}
.geo-comp span{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.geo-comp b{font-size:14.5px;font-weight:600}
.geo-comp em{font-style:normal;font-size:12.5px;font-weight:600;color:var(--green);font-variant-numeric:tabular-nums}
.geo-chrono{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}
.geo-bar{display:flex;height:6px;border-radius:99px;background:var(--surface2);border:1px solid var(--line);overflow:hidden}
.geo-bar i{display:block;height:100%}.geo-bar .l3{background:var(--g-ok)}.geo-bar .l2{background:var(--g-mid)}.geo-bar .l1{background:var(--g-ko)}
.geo-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.geo-chip{border:1px solid var(--line);background:var(--surface2);border-radius:99px;padding:6px 12px;font-size:14px;font-weight:500}
.geo-chip:hover{border-color:var(--accent);color:var(--accent)}
.geo-chip.chrono{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.geo-chip small{color:var(--faint);margin-left:2px}
.geo-badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:0 0 22px}
.geo-badge{display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:center;border:1px dashed var(--line);border-radius:14px;padding:10px 12px;color:var(--faint)}
.geo-badge span{grid-row:span 2;font-size:22px}
.geo-badge b{font-size:14.5px;color:var(--muted)}.geo-badge small{font-size:12.5px;line-height:1.3}
.geo-badge.on{border-style:solid;border-color:var(--amber);background:var(--amber-soft);color:var(--amber)}
.geo-badge.on b{color:var(--ink)}
.geo-cred{font-size:12.5px;line-height:1.5;margin:0 0 30px}
/* feuille de réglages */
.geo-sheet{position:fixed;inset:0;z-index:30;background:rgba(10,12,30,.42);display:flex;align-items:center;justify-content:center;padding:16px}
.geo-sheet-in{width:100%;max-width:460px;max-height:calc(100dvh - 32px);overflow:auto;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.geo-sheet-in h3{font-family:var(--serif);font-size:22px}
.geo-sheet-in p{margin:0;font-size:14px}
.geo-f{display:flex;flex-direction:column;gap:6px}
.geo-f>span{font-size:12.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.geo-f select,.gx-tools select{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 12px;font-size:15px}
.geo-seg{display:flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface2)}
.geo-seg button{flex:1;border:0;background:none;padding:9px 10px;font-size:14px;font-weight:500;color:var(--muted);white-space:nowrap}
.geo-seg button+button{border-left:1px solid var(--line)}
.geo-seg button.on{background:var(--accent);color:var(--accent-ink)}
.geo-tg{display:flex;flex-direction:column;gap:8px}
.geo-tg label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.geo-tg input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent);flex:none}
.geo-tg b{display:block;font-size:15px}.geo-tg small{display:block;color:var(--muted);font-size:13px}
.geo-sheet .cal-act{margin:4px 0 0}
@media (max-width:520px){.geo-sheet{align-items:flex-end;padding:0}.geo-sheet-in{border-radius:20px 20px 0 0;max-height:92dvh;padding:20px 16px calc(16px + env(safe-area-inset-bottom,0px))}}
/* écran de jeu et d'exploration : plein écran */
.geo-play{position:fixed;inset:0;display:flex;flex-direction:column;background:var(--bg);padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px)}
.geo-play .gp-bar{padding:0 12px}
.geo-play .cal-track{margin:0 12px 0}
.gp-stage{position:relative;flex:1;min-height:0}
.gp-map{position:absolute;inset:0}
.gk{position:absolute;inset:0;background:var(--g-sea)}
.gk-svg{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab}
.gk-svg:active{cursor:grabbing}
.gk-zones path{fill:var(--g-land);transition:fill .18s}
.gk.hv .gk-zones path{cursor:pointer}
.gk-zones path.g-ok{fill:var(--g-ok)}.gk-zones path.g-mid{fill:var(--g-mid)}.gk-zones path.g-ko{fill:var(--g-ko)}
.gk-zones path.bad{fill:var(--g-ko);transition:none}
.gk-zones path.m0{fill:var(--g-m0)}.gk-zones path.m1{fill:var(--g-m1)}.gk-zones path.m2{fill:var(--g-m2)}.gk-zones path.m3{fill:var(--g-m3)}
.gk-zones path.sel{fill:var(--g-tgt-f)}
.gk-zones path.blink{animation:gkblink .7s ease-in-out infinite}
@keyframes gkblink{50%{fill:var(--g-tgt)}}
.gk-b{fill:none;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round;stroke-linecap:round}
.gk-bd{stroke:var(--g-dep);stroke-width:.8}
.gk-br{stroke:var(--g-reg);stroke-width:1.5}
.gk-be{stroke:var(--g-ext);stroke-width:1.2}
.gk.nofront .gk-bd,.gk.nofront .gk-br{display:none}
.gk-over path{fill:none;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round}
.gk-hov{stroke:var(--accent);stroke-width:2.2;fill:var(--g-hov)!important;fill-opacity:.55!important}
.gk-tgt{stroke:var(--g-tgt);stroke-width:3;fill:var(--g-tgt-f)!important;fill-opacity:.9!important;animation:gktgt 1.4s ease-in-out infinite}
@keyframes gktgt{50%{stroke-width:5}}
.gk-frames rect{fill:none;stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:4 4;pointer-events:none}
.gk-cap{font:600 calc(12px * var(--k,1)) var(--sans);fill:var(--faint);pointer-events:none}
.gk-frames .gk-cap{font-size:14px}
.gk.no-cap .gk-cap{display:none}
.gk-lab{font:600 calc(11.5px * var(--k,1)) var(--sans);fill:var(--g-lab);text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--g-halo);stroke-width:calc(3px * var(--k,1));stroke-linejoin:round;pointer-events:none}
.gk-dot{fill:var(--g-lab);stroke:var(--g-halo);stroke-width:1.5;vector-effect:non-scaling-stroke;pointer-events:none}
.gk-dot.pref{fill:var(--accent)}
.gk-dot.true{fill:var(--g-tgt);stroke-width:2}
.gk-dot.you{fill:none;stroke-width:2.5}.gk-dot.you.g{stroke:var(--g-ok)}.gk-dot.you.a{stroke:var(--g-mid)}.gk-dot.you.r{stroke:var(--g-ko)}
.gk-vlab{font:600 calc(12px * var(--k,1)) var(--sans);fill:var(--g-lab);text-anchor:middle;paint-order:stroke;stroke:var(--g-halo);stroke-width:calc(3px * var(--k,1));pointer-events:none}
.gk-line{stroke-width:2;vector-effect:non-scaling-stroke;stroke-dasharray:5 4;pointer-events:none}
.gk-line.g{stroke:var(--g-ok)}.gk-line.a{stroke:var(--g-mid)}.gk-line.r{stroke:var(--g-ko)}
.gk-ctl{position:absolute;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:6px;z-index:2}
.gk-ctl button{width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--surface);font-size:20px;line-height:1;box-shadow:var(--shadow)}
.gk-tip{position:absolute;z-index:3;pointer-events:none;background:var(--ink);color:var(--bg);font-size:13px;font-weight:600;padding:4px 9px;border-radius:8px;white-space:nowrap}
/* carte de question */
.gp-card{position:absolute;left:50%;top:12px;transform:translateX(-50%);width:min(520px,calc(100% - 24px));background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:12px 16px 10px;z-index:4;display:flex;flex-direction:column;gap:4px;text-align:center}
.gp-kick{font-size:11.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
.gp-q{font-family:var(--serif);font-size:clamp(24px,5.5vw,32px);font-weight:600;line-height:1.1;letter-spacing:-.01em}
.gp-q.num{font-size:44px;font-variant-numeric:tabular-nums}
.gp-q.small{font-size:clamp(20px,4.6vw,26px)}
.gp-q small{font-family:var(--sans);font-size:15px;color:var(--faint);font-weight:500}
.gp-sub{font-size:14px}
.gp-fb{min-height:20px;font-size:14.5px;font-weight:600;display:flex;flex-direction:column;gap:2px}
.gp-fb .g{color:var(--green)}.gp-fb .a{color:var(--amber)}.gp-fb .r{color:var(--red)}
.gp-fb small{font-weight:400}
.gp-skip{align-self:center;background:none;border:0;color:var(--faint);font-size:13.5px;padding:4px 8px;text-decoration:underline;text-underline-offset:3px}
.gp-qcm{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.gp-qcm button{border:1px solid var(--line);background:var(--surface2);border-radius:12px;padding:9px 8px;font-size:15px;font-weight:500;display:flex;align-items:center;gap:8px;text-align:left;line-height:1.2;min-height:44px}
.gp-qcm button:hover:not(:disabled){border-color:var(--accent)}
.gp-qcm kbd{flex:none}
.gp-qcm .good{background:var(--green-soft);border-color:var(--green);color:var(--green)}
.gp-qcm .bad{background:var(--red-soft);border-color:var(--red);color:var(--red)}
.gp-qcm button:disabled{cursor:default}
.gp-in{display:flex;gap:8px;margin-top:6px}
.gp-in .input{padding:10px 12px;font-size:17px}
.gp-in .input.good{border-color:var(--green)}.gp-in .input.bad{border-color:var(--red)}
.gp-end{max-height:calc(100% - 24px);overflow:auto;gap:8px}
.gp-end h1{font-family:var(--serif);font-size:28px}
.gp-end .cal-big{font-size:56px;margin:0}
.gp-end p{margin:0}
.gp-end .cal-act{justify-content:center;margin:6px 0 2px}
.gp-sum{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;font-size:14px;color:var(--muted)}
.gp-sum b{color:var(--ink);font-size:17px}.gp-sum .g b{color:var(--green)}.gp-sum .a b{color:var(--amber)}.gp-sum .r b{color:var(--red)}
.gp-won{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.gp-won span{background:var(--amber-soft);color:var(--amber);border-radius:99px;padding:3px 12px;font-weight:600;font-size:14px}
.gp-miss{text-align:left;font-size:14px}
.gp-miss summary{cursor:pointer;font-weight:600;text-align:center}
.gp-miss ul{margin:8px 0 4px;padding-left:20px;columns:2;column-gap:20px}
.gp-leg{font-size:12.5px;display:flex;justify-content:center;align-items:center;gap:6px;flex-wrap:wrap}
.gp-leg i,.gx-leg i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px}
.gp-leg .g-ok{background:var(--g-ok)}.gp-leg .g-mid{background:var(--g-mid)}.gp-leg .g-ko{background:var(--g-ko)}
/* exploration */
.gx-tools{display:flex;gap:8px;padding:8px 12px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--line)}
.gx-tools .geo-seg{flex:none}
.gx-tools select{padding:7px 10px;font-size:14px}
.gx-tools .input{flex:1;min-width:120px;padding:7px 12px;font-size:15px}
.gx-info{position:absolute;left:12px;top:12px;width:300px;max-height:calc(100% - 24px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:14px 16px;z-index:4;font-size:14.5px}
.gx-info p{margin:0}
.gx-info h3{font-family:var(--serif);font-size:24px;line-height:1.1;margin:0 26px 8px 0}
.gx-num{font-family:var(--serif);font-size:30px;font-weight:600;color:var(--accent);line-height:1}
.gx-info dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 12px}
.gx-info dt{color:var(--faint);font-size:12.5px;font-weight:600;padding-top:2px}
.gx-info dd{margin:0}
.gx-chips{display:flex;flex-wrap:wrap;gap:4px}
.gx-chips .geo-chip,.gx-info dd>.geo-chip{padding:3px 9px;font-size:13px}
.gx-close{position:absolute;right:10px;top:10px;border:0;background:none;color:var(--faint);font-size:16px;width:30px;height:30px}
.gx-note{margin-top:10px!important;font-size:13px;color:var(--muted);background:var(--surface2);border-radius:10px;padding:8px 10px}
.gx-fiche{margin-top:8px!important}
.gx-lvs{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}
.gx-lv{font-size:12px;border-radius:99px;padding:2px 8px;color:var(--ink)}
.gx-lv.m0{background:var(--g-m0)}.gx-lv.m1{background:var(--g-m1)}.gx-lv.m2{background:var(--g-m2)}.gx-lv.m3{background:var(--g-m3)}
.gx-leg{position:absolute;left:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:3;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px 10px;font-size:12.5px;display:flex;gap:10px;flex-wrap:wrap;max-width:calc(100% - 80px)}
.gx-leg span{display:flex;align-items:center;gap:5px}
.gx-leg .m0{background:var(--g-m0);box-shadow:0 0 0 1px var(--line)}.gx-leg .m1{background:var(--g-m1)}.gx-leg .m2{background:var(--g-m2)}.gx-leg .m3{background:var(--g-m3)}
.gs-days{display:flex;align-items:flex-end;gap:3px;height:80px;margin:6px 0}
.gs-days i{flex:1;background:var(--accent);border-radius:3px 3px 0 0;min-height:0;opacity:.85}
@media (max-width:900px){.geo-modes{grid-template-columns:1fr 1fr}}
@media (max-width:640px){
  .gx-info{left:0;right:0;top:auto;bottom:0;width:auto;max-height:46%;border-radius:18px 18px 0 0;padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));display:none}
  .gx-info.on{display:block}
  .gx-info.on~.gx-leg{display:none}
  .gx-tools{gap:6px;padding:6px 10px}.gx-tools .input{order:-1;flex-basis:100%}
  .gp-card{top:8px;width:calc(100% - 16px);padding:10px 12px 8px;border-radius:16px}
  .gp-q.num{font-size:38px}
  .gp-miss ul{columns:1}
  .gk-ctl{right:8px}
}
@media (max-width:520px){.geo-modes{grid-template-columns:1fr 1fr;gap:8px}.geo-modes .bz-mode{padding:12px 14px;gap:2px}.geo-modes .bz-mode .ico{display:none}.geo-modes .bz-mode b{font-size:17px}.geo-modes .bz-mode span:not(.due){display:none}.geo-modes .bz-mode .due{padding-top:4px;font-size:12.5px}.geo-main .bz-prog{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:16px}.geo-jeux{grid-template-columns:1fr}}
.gp-card.gp-end{left:12px;top:12px;bottom:auto;transform:none;width:360px;max-height:calc(100% - 24px)}
@media (max-width:640px){.gp-card.gp-end{left:0;right:0;top:auto;bottom:0;width:auto;max-height:52%;border-radius:18px 18px 0 0;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px))}}
.gk-zones path[data-out]{fill:var(--g-out)}
.gk.hv .gk-zones path[data-out]{cursor:default}
.gp-fb:empty{display:none}
@media (hover:none){.gk-ctl [data-z="in"],.gk-ctl [data-z="out"]{display:none}.gk:not(.zoomed) .gk-ctl{display:none}}
