/* ============================================================
   Warded — shared stylesheet
   Theme variables live on :root; .theme-* classes on <html>
   override the palette without touching layout rules.
============================================================ */

:root{
  /* default theme — "Charcoal" (charbon, l'original) */
  --paper:#0f0f12;
  --ink:#0a0a0c;
  --line:#26262c;
  --line-soft:#1c1c20;
  --text:#e8e8ea;
  --dim:#8a8a92;
  --mute:#5a5a62;
  --accent:#c89b3c;
  --accent-hi:#e8c878;
  --win:#5fb37a;
  --loss:#c4584d;
  --info:#0bc4e3;

  --serif:"Fraunces","Times New Roman",serif;
  --sans:"Inter Tight",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --display:"Rajdhani","Inter Tight",sans-serif;

  /* anim defaults — overridden by .anim-* classes */
  --reveal-distance:8px;
  --reveal-duration:.4s;
  --reveal-easing:cubic-bezier(.2,.6,.2,1);
  --hover-duration:.15s;
}

/* ---- THEMES ---- */
html.theme-nightblue{
  --paper:#060D18;
  --ink:#030810;
  --line:#1a2638;
  --line-soft:#0c1524;
  --text:#d8d0c4;
  --dim:#7d8696;
  --mute:#4a5468;
  --accent:#c89b3c;
  --accent-hi:#e8c878;
}
html.theme-ivory{
  --paper:#f4f1ea;
  --ink:#ebe6db;
  --line:#cfc6b3;
  --line-soft:#dcd4c2;
  --text:#1c1a16;
  --dim:#6a6358;
  --mute:#a59b86;
  --accent:#9a7322;
  --accent-hi:#7a5818;
  --win:#3f8552;
  --loss:#a3433a;
}
html.theme-cyan{
  --paper:#06121a;
  --ink:#020a12;
  --line:#1a3848;
  --line-soft:#0a1d2a;
  --text:#dff4fa;
  --dim:#7a98a6;
  --mute:#4a6878;
  --accent:#0bc4e3;
  --accent-hi:#7be7fa;
}
html.theme-blood{
  --paper:#100506;
  --ink:#080203;
  --line:#3a1518;
  --line-soft:#1f0a0c;
  --text:#ecd8d4;
  --dim:#9a7872;
  --mute:#6a4c48;
  --accent:#cf3a3e;
  --accent-hi:#f08084;
}
html.theme-acid{
  --paper:#0a0f0a;
  --ink:#050805;
  --line:#1f3320;
  --line-soft:#0f1a10;
  --text:#e0eadd;
  --dim:#7a8c75;
  --mute:#4a5848;
  --accent:#9eff5b;
  --accent-hi:#c4ff96;
}
html.theme-mono{
  --paper:#0a0a0a;
  --ink:#000;
  --line:#2a2a2a;
  --line-soft:#161616;
  --text:#fff;
  --dim:#9a9a9a;
  --mute:#5a5a5a;
  --accent:#fff;
  --accent-hi:#fff;
}

/* ---- ANIM PRESETS ---- */
html.anim-subtle{
  --reveal-distance:8px;--reveal-duration:.4s;--reveal-easing:cubic-bezier(.2,.6,.2,1);
}
html.anim-editorial{
  --reveal-distance:32px;--reveal-duration:.8s;--reveal-easing:cubic-bezier(.16,.84,.18,1);
}
html.anim-glitch{
  --reveal-distance:0px;--reveal-duration:.5s;--reveal-easing:steps(6,end);
}
html.anim-none{
  --reveal-distance:0px;--reveal-duration:.001s;--reveal-easing:linear;
}

/* ---- BASE ---- */
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--paper);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,svg{display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--accent);color:var(--ink)}

.shell{max-width:1280px;margin:0 auto;padding:0 40px}
@media (max-width:768px){.shell{padding:0 24px}}

/* ---- NAV ---- */
.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid var(--line-soft)}
.nav-inner{display:flex;align-items:center;gap:48px;height:64px}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{width:32px;height:32px;flex-shrink:0}
.brand-mark .stroke{stroke:var(--accent)}
.brand-mark .fill{fill:var(--accent)}
.brand-name{font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);line-height:1}
.nav-links{display:flex;gap:32px;margin-left:32px}
.nav-links a{font-size:14px;color:var(--dim);transition:color var(--hover-duration) ease}
.nav-links a:hover,.nav-links a.is-current{color:var(--text)}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.lang-toggle{display:flex;align-items:center;gap:0;font-family:var(--mono);font-size:11px;letter-spacing:.15em;text-transform:uppercase;border:1px solid var(--line);border-radius:2px;overflow:hidden}
.lang-toggle button{padding:6px 10px;color:var(--mute);transition:color var(--hover-duration), background var(--hover-duration)}
.lang-toggle button.on{color:var(--ink);background:var(--accent)}
.lang-toggle button:not(.on):hover{color:var(--text);background:color-mix(in srgb,var(--text) 6%,transparent)}

.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;font-size:13px;line-height:1;border:1px solid var(--line);border-radius:2px;background:transparent;color:var(--text);transition:border-color var(--hover-duration),background var(--hover-duration),color var(--hover-duration)}
.btn:hover{border-color:color-mix(in srgb,var(--text) 30%,transparent);background:color-mix(in srgb,var(--text) 4%,transparent)}
.btn-ghost{border-color:transparent;padding:8px 12px}
.btn-ghost:hover{background:color-mix(in srgb,var(--text) 4%,transparent);border-color:transparent}
.btn-primary{background:color-mix(in srgb,var(--text) 4%,transparent);border-color:color-mix(in srgb,var(--text) 18%,transparent)}
.btn-primary:hover{background:color-mix(in srgb,var(--text) 8%,transparent);border-color:color-mix(in srgb,var(--text) 30%,transparent)}
.btn-accent{background:var(--accent);color:var(--ink);border-color:var(--accent);font-weight:500}
.btn-accent:hover{background:var(--accent-hi);border-color:var(--accent-hi)}

@media (max-width:1000px){
  .nav-links{display:none}
}
@media (max-width:520px){
  .lang-toggle{display:none}
}

/* ---- TYPE HELPERS ---- */
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:14px}
.serif{font-family:var(--serif);font-weight:400;letter-spacing:-0.02em;font-variation-settings:"opsz" 144}

/* ---- REVEAL ---- */
.reveal{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--reveal-duration) var(--reveal-easing),transform var(--reveal-duration) var(--reveal-easing)}
.reveal.in{opacity:1;transform:translateY(0)}

html.anim-glitch .reveal{transform:none;clip-path:inset(0 100% 0 0)}
html.anim-glitch .reveal.in{clip-path:inset(0 0 0 0);opacity:1}

/* ---- FOOTER ---- */
footer{padding:32px 0 40px;border-top:1px solid var(--line-soft);margin-top:96px}
.foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:20px;font-family:var(--mono);font-size:11px;letter-spacing:.15em;color:var(--mute);text-transform:uppercase}
.foot a{color:var(--mute);transition:color var(--hover-duration)}
.foot a:hover{color:var(--text)}
.foot-links{display:flex;gap:24px}
.foot-disclaim{color:var(--mute);text-transform:none;letter-spacing:.05em;font-family:var(--sans);font-size:11px}

/* ---- TWEAKS PANEL ---- */
.tweaks-toggle{display:none !important}
.tweaks-toggle:hover{transform:scale(1.06)}
.tweaks-panel{position:fixed;right:20px;bottom:76px;z-index:80;width:300px;background:var(--paper);border:1px solid var(--line);padding:18px;font-size:13px;display:none;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.tweaks-panel.open{display:block}
.tweaks-panel h4{font-family:var(--display);font-weight:600;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.tweaks-panel h4:not(:first-child){margin-top:18px}
.swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.swatch{aspect-ratio:1;border:2px solid transparent;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;transition:transform var(--hover-duration),border-color var(--hover-duration)}
.swatch:hover{transform:scale(1.08)}
.swatch.on{border-color:var(--text)}
.anim-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.anim-pill{padding:8px 10px;border:1px solid var(--line);border-radius:2px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);cursor:pointer;text-align:left;transition:all var(--hover-duration)}
.anim-pill:hover{color:var(--text);border-color:color-mix(in srgb,var(--text) 30%,transparent)}
.anim-pill.on{color:var(--ink);background:var(--accent);border-color:var(--accent)}
.tweaks-close{position:absolute;top:10px;right:10px;width:22px;height:22px;font-size:14px;color:var(--mute);display:flex;align-items:center;justify-content:center;border-radius:50%}
.tweaks-close:hover{color:var(--text)}
