/* ============ FONTS (locales, aucune dépendance réseau) ============ */
@font-face{font-family:'Big Shoulders Display';font-weight:800;src:url(../fonts/big-shoulders-display-latin-800-normal.woff2) format('woff2');font-display:block}
@font-face{font-family:'Big Shoulders Display';font-weight:900;src:url(../fonts/big-shoulders-display-latin-900-normal.woff2) format('woff2');font-display:block}
@font-face{font-family:'Instrument Sans';font-weight:400;src:url(../fonts/instrument-sans-latin-400-normal.woff2) format('woff2');font-display:block}
@font-face{font-family:'Instrument Sans';font-weight:600;src:url(../fonts/instrument-sans-latin-600-normal.woff2) format('woff2');font-display:block}
@font-face{font-family:'JetBrains Mono';font-weight:400;src:url(../fonts/jetbrains-mono-latin-400-normal.woff2) format('woff2');font-display:block}
@font-face{font-family:'JetBrains Mono';font-weight:700;src:url(../fonts/jetbrains-mono-latin-700-normal.woff2) format('woff2');font-display:block}

:root{
  --ink:#0b0c0a; --ink2:#141612; --ink3:#1d201b;
  --paper:#efeee6; --mute:#8f9185; --line:rgba(239,238,230,.16); --line2:rgba(239,238,230,.07);
  --acid:#c8ff2e; --orange:#ff5a1f; --red:#ff3b30; --amber:#ffb81c; --ok:#58e08a; --ice:#8fd3ff;
  --f-disp:'Big Shoulders Display','Arial Narrow','Impact',sans-serif;
  --f-body:'Instrument Sans','Helvetica Neue',Arial,sans-serif;
  --f-mono:'JetBrains Mono','SF Mono',Menlo,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:#050504;color:var(--paper);font-family:var(--f-body);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
#viewport{position:fixed;inset:0;overflow:hidden;background:#050504}
#stage{position:absolute;left:50%;top:50%;width:1920px;height:1080px;margin:-540px 0 0 -960px;transform-origin:50% 50%;background:var(--ink);overflow:hidden}
#cam{position:absolute;inset:0;overflow:hidden}

/* ============ FOND ============ */
#bg{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.bg-grid{position:absolute;inset:-60px;transform-origin:50% 50%;
  background-image:linear-gradient(var(--line2) 1px,transparent 1px),linear-gradient(90deg,var(--line2) 1px,transparent 1px);
  background-size:120px 120px}
.bg-wash{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse at 50% 110%,rgba(255,59,48,.55),transparent 62%),radial-gradient(ellipse at 100% 0%,rgba(255,90,31,.35),transparent 55%)}
.bg-grain{position:absolute;inset:0;opacity:.07;mix-blend-mode:screen;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .9 0'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>")}

/* ============ SLIDES (zone utile 1696 × 856) ============ */
#slides{position:absolute;inset:0}
.slide{position:absolute;inset:0;padding:118px 112px 112px;overflow:hidden}
.slide *{min-width:0}

/* typographie */
.disp{font-family:var(--f-disp);font-weight:900;text-transform:uppercase;line-height:.88;letter-spacing:-.005em}
.mono{font-family:var(--f-mono)}
.h1{font-size:190px}.h2{font-size:112px}.h3{font-size:68px}.h4{font-size:44px}
.body{font-size:28px;line-height:1.34}
.body-s{font-size:24px;line-height:1.34}
.mute{color:var(--mute)}.acid{color:var(--acid)}.orange{color:var(--orange)}.red{color:var(--red)}.amber{color:var(--amber)}.ok{color:var(--ok)}.ice{color:var(--ice)}
.ln{display:block;overflow:hidden;padding:.16em .05em .05em;margin:-.16em -.05em -.05em}
.li{display:block;will-change:transform}
.ch{display:inline-block;will-change:transform}
.wd{display:inline-block;white-space:nowrap}
.kick{display:flex;align-items:center;gap:18px;font-family:var(--f-mono);font-size:20px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);margin-bottom:22px;white-space:nowrap}
.kick b{color:var(--acid);font-weight:700}
.kick .q{border:1.5px solid var(--acid);color:var(--acid);padding:3px 12px;border-radius:99px;letter-spacing:.1em}
.kick .rule{height:1.5px;width:90px;background:var(--line)}
.tag{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:19px;letter-spacing:.1em;text-transform:uppercase;padding:6px 14px;border:1.5px solid currentColor;border-radius:4px;white-space:nowrap}
.dot{display:inline-block;width:14px;height:14px;border-radius:50%;background:currentColor;flex:none}
.note{font-family:var(--f-mono);font-size:19px;letter-spacing:.04em;color:var(--mute);line-height:1.45}
.btn{font-family:var(--f-mono);font-size:19px;letter-spacing:.08em;text-transform:uppercase;padding:12px 22px;border:1.5px solid var(--line);border-radius:6px;color:var(--paper);background:rgba(11,12,10,.6);transition:background .2s,color .2s,border-color .2s}
.btn:hover{background:var(--acid);color:var(--ink);border-color:var(--acid)}
.btn.on{background:var(--acid);color:var(--ink);border-color:var(--acid)}
.btn[disabled]{opacity:.35;pointer-events:none}

/* ============ HUD ============ */
#hud{position:absolute;inset:0;pointer-events:none;z-index:50;font-family:var(--f-mono);font-size:17px;letter-spacing:.1em;text-transform:uppercase}
#hud>*{position:absolute;pointer-events:auto}
.hud-tl{left:112px;top:40px;display:flex;align-items:center;gap:26px;white-space:nowrap}
.logo{font-family:var(--f-disp);font-weight:900;font-size:34px;letter-spacing:.02em;color:var(--paper);line-height:1}
.logo::after{content:'';display:inline-block;width:10px;height:10px;background:var(--acid);margin-left:6px;border-radius:50%}
.chap{color:var(--mute);height:24px;overflow:hidden;display:block}
#hudChap{display:block}
.hud-tr{right:112px;top:42px;display:flex;align-items:center;gap:26px;white-space:nowrap}
#hudCount{color:var(--paper)}
#pips{display:flex;gap:6px}
#pips i{width:22px;height:5px;background:var(--line);transition:background .2s}
#pips i.on{background:var(--acid)}
.hud-bl{left:112px;bottom:34px;display:flex;align-items:center;gap:16px;color:var(--mute);white-space:nowrap}
#tMeter{display:flex;gap:4px}
#tMeter i{width:13px;height:18px;background:var(--line);transition:background .4s}
#ticks{left:640px;width:640px;bottom:30px;height:30px;display:flex;align-items:flex-end;gap:3px}
#ticks .g{display:flex;gap:3px;align-items:flex-end}
#ticks .g+.g{margin-left:8px}
#ticks button{width:8px;height:14px;background:var(--line);transition:height .25s,background .25s;padding:0;border-radius:1px}
#ticks button:hover{background:var(--paper);height:24px}
#ticks button.done{background:var(--mute)}
#ticks button.cur{background:var(--acid);height:28px}
.hud-br{right:112px;bottom:26px;display:flex;gap:8px}
.hb{font-size:15px;letter-spacing:.08em;padding:8px 12px;border:1.5px solid var(--line);border-radius:5px;color:var(--paper);background:rgba(11,12,10,.55);display:flex;gap:8px;align-items:center;transition:background .2s,color .2s,border-color .2s}
.hb kbd{font-family:var(--f-mono);font-size:12px;color:var(--mute);border:1px solid var(--line);padding:1px 5px;border-radius:3px}
.hb:hover{background:var(--acid);color:var(--ink);border-color:var(--acid)}
.hb:hover kbd{color:var(--ink);border-color:var(--ink)}
.hb.on{border-color:var(--acid);color:var(--acid)}

/* ============ TRANSITIONS ============ */
#tr{position:absolute;inset:0;z-index:80;pointer-events:none;display:flex}
#tr .b{flex:1;background:var(--ink2);transform:scaleY(0);border-right:1px solid var(--line2);position:relative}
#tr .b::after{content:'';position:absolute;left:0;right:0;bottom:0;height:6px;background:var(--acid)}
#flash{position:absolute;inset:0;z-index:81;background:var(--red);opacity:0;pointer-events:none;mix-blend-mode:screen}

/* ============ MENU ============ */
#menu{position:absolute;inset:0;z-index:100;visibility:hidden;pointer-events:none;background:var(--ink);clip-path:inset(100% 0 0 0)}
#menu.open{visibility:visible;pointer-events:auto}
#menu .mgrid{position:absolute;inset:0;padding:104px 112px 80px;display:grid;grid-template-columns:1060px 1fr;gap:70px}
#menu ol{display:flex;flex-direction:column;justify-content:center}
#menu li{overflow:hidden;border-top:1.5px solid var(--line)}
#menu li:last-child{border-bottom:1.5px solid var(--line)}
#menu li a{display:flex;align-items:baseline;gap:30px;padding:7px 0 3px;cursor:pointer;color:var(--paper);transition:color .2s,padding .3s cubic-bezier(.2,.8,.2,1);position:relative}
#menu li a .n{font-family:var(--f-mono);font-size:22px;color:var(--mute);width:48px;flex:none;letter-spacing:.1em}
#menu li a .tt{font-family:var(--f-disp);font-weight:900;font-size:68px;line-height:.98;text-transform:uppercase;flex:1;white-space:nowrap}
#menu li a .cnt{font-family:var(--f-mono);font-size:18px;color:var(--mute);letter-spacing:.1em;white-space:nowrap}
#menu li a::before{content:'';position:absolute;left:0;bottom:0;height:4px;width:0;background:var(--acid);transition:width .35s cubic-bezier(.2,.8,.2,1)}
#menu ol:hover li a{color:rgba(239,238,230,.32)}
#menu ol li a:hover{color:var(--acid);padding-left:34px}
#menu li a:hover .n{color:var(--acid)}
#menu li a:hover::before{width:100%}
#menu li.cur a .n{color:var(--acid)}
#menu li.cur a .tt::after{content:'  ●';font-size:26px;color:var(--acid);vertical-align:middle}
#menu aside{display:flex;flex-direction:column;justify-content:space-between;padding-top:6px;min-height:0}
#menu .mclose{position:absolute;top:36px;right:112px;font-family:var(--f-mono);font-size:17px;letter-spacing:.1em;padding:9px 16px;border:1.5px solid var(--line);border-radius:5px;text-transform:uppercase}
#menu .mclose:hover{background:var(--acid);color:var(--ink)}
#menu .mtop{position:absolute;top:42px;left:112px;font-family:var(--f-mono);font-size:17px;letter-spacing:.14em;color:var(--mute);text-transform:uppercase}
#menu .big{font-family:var(--f-disp);font-weight:900;font-size:340px;line-height:.8;color:var(--acid);letter-spacing:-.02em}
#menu .big small{font-size:90px;color:var(--mute)}
#menu .mlist{display:flex;flex-direction:column;gap:6px;min-height:230px}
#menu .mlist a{font-size:25px;display:flex;gap:14px;align-items:center;cursor:pointer;padding:6px 10px;border-left:3px solid var(--line);color:var(--paper)}
#menu .mlist a:hover{border-color:var(--acid);color:var(--acid);background:rgba(200,255,46,.06)}
#menu .mlist a.cur{border-color:var(--acid)}
#menu .mlist a span{font-family:var(--f-mono);font-size:16px;color:var(--mute);width:34px}
#menu .mh{font-family:var(--f-mono);font-size:17px;letter-spacing:.14em;color:var(--mute);text-transform:uppercase;margin-bottom:10px}

/* ============ SHEET + HELP ============ */
#sheet,#help{position:absolute;inset:0;z-index:110;visibility:hidden;opacity:0;background:rgba(11,12,10,.97);pointer-events:none}
#sheet.open,#help.open{visibility:visible;pointer-events:auto}
#sheet .inner{position:absolute;inset:96px 112px 90px;display:flex;flex-direction:column}
#sheet .inner>header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}
#sheet .scroll{flex:1;overflow:auto;border-top:1.5px solid var(--line)}
#sheet table{width:100%;border-collapse:collapse;font-size:20px;line-height:1.3}
#sheet th{position:sticky;top:0;background:var(--ink2);text-align:left;font-family:var(--f-mono);font-size:16px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);padding:12px 14px;z-index:1}
#sheet td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
#sheet td.k{font-family:var(--f-mono);white-space:nowrap;color:var(--acid)}
#sheet ul li{padding-left:16px;position:relative}
#sheet ul li::before{content:'–';position:absolute;left:0;color:var(--mute)}
#help .inner{position:absolute;inset:130px 220px;display:grid;grid-template-columns:1fr 1fr;gap:20px 80px;align-content:start}
#help h3{grid-column:1/-1}
#help .row{display:flex;justify-content:space-between;gap:20px;font-size:26px;padding:10px 0;border-bottom:1px solid var(--line)}
#help kbd{font-family:var(--f-mono);font-size:20px;border:1.5px solid var(--acid);color:var(--acid);padding:2px 12px;border-radius:5px;white-space:nowrap}

@media (prefers-reduced-motion: reduce){ .bg-grain{display:none} }

/* ============ MODE IMPRESSION (PDF) ============ */
@page{size:1920px 1080px;margin:0}
body.print,body.print #viewport{width:1920px;height:1080px;overflow:hidden;position:static}
body.print #stage{position:absolute;left:0;top:0;margin:0;transform:none!important}
body.print #hud,body.print #drawer,body.print #tr,body.print #flash,body.print #menu,body.print .bg-grain{display:none!important}
body.print .in-hint{display:none}
