:root{
  --red:#E01E2B; --red-2:#B3121E; --gold:#F5B301; --gold-2:#FFE08A; --green:#3BB26A;
  --bg:#F6F5F1; --bg-2:#FFFFFF; --ink:#131518; --ink-2:#3D4249; --ink-3:#656B73; --line:#DEDBD1;
  --card:#FFFFFF; --soft:#ECE9E0;
  --halo:rgba(224,30,43,.10);
  --shadow:0 40px 80px -40px rgba(19,21,24,.38);
  --head:"Bricolage Grotesque","Plus Jakarta Sans",system-ui,sans-serif;
  --display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;
  --body:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#06080B; --bg-2:#0F141A; --ink:#F3F4F1; --ink-2:#C2C8CF; --ink-3:#8E96A0; --line:#212A34;
  --card:#11171F; --soft:#141B24; --halo:rgba(224,30,43,.22);
  --shadow:0 40px 90px -40px rgba(0,0,0,.85); color-scheme:dark;}}
:root[data-theme="dark"]{
  --bg:#06080B; --bg-2:#0F141A; --ink:#F3F4F1; --ink-2:#C2C8CF; --ink-3:#8E96A0; --line:#212A34;
  --card:#11171F; --soft:#141B24; --halo:rgba(224,30,43,.22);
  --shadow:0 40px 90px -40px rgba(0,0,0,.85); color-scheme:dark;}
*{box-sizing:border-box}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html{overflow-x:hidden}
body{overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--red)} a:hover{color:var(--red-2)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:6px}
.wrap{max-width:1240px;margin:0 auto;padding:0 28px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:6px;z-index:300}.skip:focus{left:16px}
.head{position:sticky;top:env(safe-area-inset-top,0px);z-index:60;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(14px) saturate(1.5);border-bottom:1px solid var(--line)}
.head .wrap{display:flex;align-items:center;justify-content:space-between;height:68px;gap:16px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.ballmark{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 33% 28%,#FF7880,var(--red) 42%,#6E0A10);position:relative;box-shadow:inset -3px -4px 7px rgba(0,0,0,.3)}
.ballmark::after{content:"";position:absolute;inset:3px 12px;border-left:1.6px dashed rgba(255,255,255,.9);border-right:1.6px dashed rgba(255,255,255,.9);border-radius:50%}
.wordmark{font-family:var(--display);font-weight:800;font-size:32px;line-height:1}.wordmark span{color:var(--red)}
.nav{display:flex;align-items:center;gap:20px}
.nav a{text-decoration:none;font-weight:600;font-size:15px;color:var(--ink-2)}.nav a:hover{color:var(--ink)}
.theme{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}.theme svg{width:20px;height:20px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:999px;font:700 15px var(--body);text-decoration:none;background:linear-gradient(180deg,#F0323F,#D3141F);color:#fff!important}
@media (max-width:760px){.nav a:not(.btn){display:none}}
@media (max-width:420px){.wrap{padding:0 16px}.head .wrap{gap:10px}.nav{gap:10px}.nav .btn{padding:0 12px;font-size:14px}.wordmark{font-size:28px}.doc{padding:48px 16px 80px}}
.doc{max-width:780px;margin:0 auto;padding:64px 28px 96px}
.doc h1{font-family:var(--head);font-weight:800;letter-spacing:-.04em;font-size:clamp(46px,6.6vw,76px);line-height:.96;margin:0 0 12px}
.doc .updated{color:var(--ink-3);font-size:15px;margin:0 0 40px}
.doc h2{font-family:var(--head);font-weight:800;letter-spacing:-.03em;font-size:30px;line-height:1.05;margin:44px 0 12px}
.doc h3{font-size:18px;margin:22px 0 6px}
.doc p,.doc li{color:var(--ink-2)}
.doc ul,.doc ol{padding-left:22px}.doc li{margin:6px 0}
.fill{background:#FFF1B8;color:#141619;padding:0 4px;border-radius:4px}
.callout{background:var(--card);border:1.5px solid var(--line);border-left:5px solid var(--red);border-radius:18px;padding:18px 20px;margin:24px 0}
.foot{border-top:1px solid var(--line);padding:44px 0 56px;color:var(--ink-3);font-size:15px}
.foot .wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;align-items:center}
.foot nav{display:flex;gap:22px;flex-wrap:wrap}.foot a{color:var(--ink-2);text-decoration:none}.foot a:hover{color:var(--red)}

/* ============ MOTION (switched on by theme.js; off when reduced motion is set) ============ */
.scroll-bar{position:fixed;top:0;left:0;right:0;height:3px;z-index:80;background:linear-gradient(90deg,var(--red),var(--gold));transform-origin:0 50%;transform:scaleX(0);pointer-events:none}
.js-anim .doc{position:relative}
.js-anim .doc::before{content:"";position:absolute;z-index:-1;left:50%;top:-40px;width:min(900px,100vw);height:520px;translate:-50% 0;background:radial-gradient(closest-side,var(--halo),transparent);pointer-events:none;animation:halo 14s ease-in-out infinite alternate}
@keyframes halo{0%{transform:translate(-8%,0) scale(1)}50%{transform:translate(6%,30px) scale(1.12)}100%{transform:translate(-2%,-10px) scale(.96)}}
.js-anim .ballmark{animation:roll 1.1s cubic-bezier(.2,.7,.2,1) both}
@keyframes roll{from{transform:translateX(-40px) rotate(-360deg);opacity:0}to{transform:none;opacity:1}}
.js-anim .brand:hover .ballmark{animation:spin .8s cubic-bezier(.2,.7,.2,1)}
@keyframes spin{to{transform:rotate(360deg)}}
.js-anim .doc h1{position:relative;padding-bottom:18px;animation:rise .9s cubic-bezier(.2,.7,.2,1) .1s both}
.js-anim .doc h1::after{content:"";position:absolute;left:0;bottom:0;height:6px;width:120px;border-radius:3px;background:linear-gradient(90deg,var(--red) 0 64%,var(--gold) 64%);transform-origin:0 50%;animation:grow 1s cubic-bezier(.2,.7,.2,1) .55s both}
.js-anim .doc .updated{animation:rise .8s cubic-bezier(.2,.7,.2,1) .3s both}
@keyframes rise{from{opacity:0;translate:0 34px}to{opacity:1;translate:0 0}}
@keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.js-anim [data-rv]{opacity:0;translate:0 30px;transition:opacity .7s ease,translate .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0ms)}
.js-anim [data-rv="row"]{translate:-22px 0}
.js-anim [data-rv="zoom"]{translate:0 24px;scale:.96;transition-property:opacity,translate,scale,box-shadow}
.js-anim [data-rv].is-in{opacity:1;translate:0 0;scale:1}
.js-anim .doc h2{position:relative;padding-left:18px}
.js-anim .doc h2::before{content:"";position:absolute;left:0;top:.12em;bottom:.12em;width:5px;border-radius:3px;background:var(--red);transform:scaleY(0);transform-origin:50% 0;transition:transform .6s cubic-bezier(.2,.7,.2,1) calc(var(--d,0ms) + 250ms)}
.js-anim .doc h2.is-in::before{transform:scaleY(1)}
.js-anim .callout{transition-property:opacity,translate,scale,box-shadow,transform}
.js-anim .callout:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.js-anim .btn{transition:transform .25s ease,box-shadow .25s ease}
.js-anim .btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px -10px var(--red)}
.js-anim .foot a,.js-anim .doc a:not(.btn){background:linear-gradient(currentColor,currentColor) 0 100%/0 1.5px no-repeat;transition:background-size .35s ease,color .2s}
.js-anim .foot a:hover,.js-anim .doc a:not(.btn):hover{background-size:100% 1.5px}
.js-anim .doc a:not(.btn){text-decoration:none;background-image:linear-gradient(color-mix(in srgb,currentColor 40%,transparent),color-mix(in srgb,currentColor 40%,transparent)),linear-gradient(currentColor,currentColor);background-size:100% 1.5px,0 1.5px;background-position:0 100%,0 100%}
.js-anim .doc a:not(.btn):hover{background-size:100% 1.5px,100% 1.5px}

/* ---- more scroll effects ---- */
.scroll-ball{position:fixed;top:-4px;left:0;width:14px;height:14px;border-radius:50%;z-index:81;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(circle at 33% 28%,#FF7880,var(--red) 42%,#6E0A10);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.scroll-ball::after{content:"";position:absolute;inset:1.5px 5px;border-left:1px dashed rgba(255,255,255,.9);border-right:1px dashed rgba(255,255,255,.9);border-radius:50%}
.js-anim .head,.js-anim .head .wrap{transition:height .3s ease,box-shadow .3s ease}
.js-anim .head.scrolled{box-shadow:0 10px 30px -18px rgba(0,0,0,.45)}
.js-anim .head.scrolled .wrap{height:58px}
.js-anim .doc h2 .wipe{display:inline-block;clip-path:inset(0 100% 0 0);transition:clip-path 1s cubic-bezier(.6,0,.2,1) calc(var(--d,0ms) + 100ms)}
.js-anim .doc h2.is-in .wipe{clip-path:inset(0 -10px -6px 0)}
.js-anim .fill{background:linear-gradient(#FFF1B8,#FFF1B8) 0 0/0% 100% no-repeat;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size .9s cubic-bezier(.6,0,.2,1) .45s}
.js-anim .is-in .fill{background-size:100% 100%}
.to-top{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:70;width:52px;height:52px;padding:0;border:none;border-radius:50%;background:var(--card);color:var(--ink);box-shadow:var(--shadow);cursor:pointer;opacity:0;transform:translateY(24px) scale(.8);pointer-events:none;transition:opacity .35s ease,transform .35s cubic-bezier(.2,.7,.2,1)}
.to-top.show{opacity:1;transform:none;pointer-events:auto}
.to-top:hover{transform:translateY(-3px)}
.to-top svg{width:100%;height:100%;display:block}
.to-top circle{fill:none;stroke-width:3}
.to-top .trk{stroke:var(--line)}
.to-top .prg{stroke:var(--red);stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%}
.to-top path{fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.toc{display:none}
@media (min-width:1280px){
.toc{display:block;position:fixed;top:150px;left:calc(50% + 430px);width:200px;z-index:50;animation:rise .8s cubic-bezier(.2,.7,.2,1) .6s both}
.toc-t{margin:0 0 10px;font:800 12px var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.toc ol{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.toc a{position:relative;display:block;padding:5px 0 5px 14px;font-size:14px;line-height:1.35;text-decoration:none;color:var(--ink-3);transition:color .25s}
.toc a::before{content:"";position:absolute;left:-2px;top:0;bottom:0;width:2px;background:var(--red);transform:scaleY(0);transition:transform .3s ease}
.toc a.done{color:var(--ink-2)}
.toc a.on{color:var(--ink);font-weight:700}
.toc a.on::before{transform:scaleY(1)}
.toc a:hover{color:var(--red)}}
.doc h2{scroll-margin-top:90px}

/* brand logo: dark-ink version for day, light-ink version for night */
.logo{display:block;height:42px;width:auto}
.logo-d{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo-l{display:none}:root:not([data-theme="light"]) .logo-d{display:block}}
:root[data-theme="dark"] .logo-l{display:none}
:root[data-theme="dark"] .logo-d{display:block}
.foot-id{display:inline-flex;align-items:center;gap:14px}.foot-id .logo{height:30px}
@media (max-width:420px){.logo{height:34px}}
