*{box-sizing:border-box;margin:0;padding:0}
:root{--mono:"Space Mono",monospace;--body:"Sora",system-ui,sans-serif;--serif:"Instrument Serif",Georgia,serif;--label:"Space Grotesk",sans-serif;--maxw:1080px;--gutter:clamp(20px,5vw,56px)}
/* brand palette defaults (theme blocks below override per dark/light) — also read by the HiveCMS style guide */
:root{--bg:#0b0b0f;--bg2:#14141a;--bg3:#1b1b22;--ink:#f4f4f6;--soft:#8e8e99;--line:#26262e;--signal:#a855f7;--glow:rgba(168,85,247,.55)}
html[data-theme="dark"]{--bg:#0b0b0f;--bg2:#14141a;--bg3:#1b1b22;--ink:#f4f4f6;--soft:#8e8e99;--line:#26262e;--signal:#a855f7;--dot:255,255,255;--eye:#0b0b0f;--glow:rgba(168,85,247,.55);--glowB:22px}
html[data-theme="light"]{--bg:#F2EEE3;--bg2:#E9E4D7;--bg3:#E2DCCC;--ink:#181A1D;--soft:#5C5E63;--line:#C5BEAB;--signal:#7c3aed;--dot:24,26,29;--eye:#181A1D;--glow:rgba(124,58,237,.4);--glowB:16px}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-family:var(--body);line-height:1.6;-webkit-font-smoothing:antialiased;transition:background .4s,color .4s;overflow-x:hidden}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter);position:relative;z-index:2}
a{color:inherit}img{max-width:100%;display:block}
/* background layers: starfield (#stars) + interactive constellation (#mesh) */
#stars,#mesh{position:fixed;inset:0;pointer-events:none}
#stars{z-index:0}
#mesh{z-index:1}

.glow{position:relative;isolation:isolate;font-family:var(--serif);font-weight:400}
.glow::before{content:attr(data-text);position:absolute;left:0;right:0;top:0;text-align:inherit;color:var(--signal);filter:blur(var(--glowB));opacity:.85;z-index:-1;pointer-events:none}

/* simple fast cursor */
.has-cursor,.has-cursor a,.has-cursor button,.has-cursor .chip,.has-cursor .card{cursor:none}
.has-cursor input,.has-cursor select,.has-cursor textarea{cursor:auto}
#cur{position:fixed;top:0;left:0;width:22px;height:22px;margin:-11px 0 0 -11px;border:1.5px solid var(--signal);border-radius:50%;z-index:9999;pointer-events:none;will-change:transform}
#cur::after{content:"";position:absolute;inset:8px;background:var(--signal);border-radius:50%}
#cur.hot{width:34px;height:34px;margin:-17px 0 0 -17px;background:rgba(168,85,247,.12)}

/* warp-exit flash (home) */
#flash{position:fixed;inset:0;z-index:150;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 44%,rgba(199,155,255,.9),rgba(168,85,247,.25) 38%,transparent 66%)}
html.play #flash{animation:warpflash 1.1s ease-out both}
@keyframes warpflash{0%{opacity:0}10%{opacity:.42}100%{opacity:0}}

/* loader */
#loader{position:fixed;inset:0;z-index:200;background:radial-gradient(circle at 50% 42%,#2a1150,#160826 70%);color:#efe9f6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;font-family:var(--mono);transition:opacity .55s}
#loader.gone{opacity:0;pointer-events:none}
#loader .leader{position:relative;width:168px;height:168px}
#loader .leader svg{width:168px;height:168px;transform:rotate(-90deg)}
#loader .track{fill:none;stroke:rgba(239,233,246,.18);stroke-width:2}
#loader .arc{fill:none;stroke:#c79bff;stroke-width:3;stroke-dasharray:440;stroke-dashoffset:440;filter:drop-shadow(0 0 6px #a855f7)}
#loader .cross{position:absolute;left:50%;top:8%;width:1px;height:84%;transform:translateX(-50%);background:rgba(239,233,246,.3)}
#loader .cross b{position:absolute;left:-38px;top:50%;width:76px;height:1px;transform:translateY(-50%);background:rgba(239,233,246,.3);display:block}
#loader .pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:42px}
#loader .word{font-family:var(--serif);font-size:clamp(38px,8vw,72px);font-style:italic;text-shadow:0 0 28px rgba(168,85,247,.6)}
#loader .status{font-size:12px;letter-spacing:.12em;color:#c9b8e6}

/* nav */
.nav{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:14px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:18px}
.nav .brand{font-family:var(--serif);font-size:24px;text-decoration:none}
.nav .links{display:flex;gap:20px;align-items:center;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.nav .links a{position:relative;color:var(--soft);text-decoration:none;padding-bottom:3px;cursor:pointer;transition:color .25s}
.nav .links a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--signal);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.22,1,.36,1)}
.nav .links a:hover,.nav .links a.active{color:var(--ink)}
.nav .links a:hover::after,.nav .links a.active::after{transform:scaleX(1)}
.nav .tgl{font-family:var(--mono);font-size:12px;background:none;border:1px solid var(--line);color:var(--ink);padding:7px 10px;border-radius:2px;cursor:pointer;transition:transform .5s cubic-bezier(.22,1,.36,1),border-color .25s,box-shadow .25s}
.nav .tgl:hover{transform:rotate(180deg);border-color:var(--signal);box-shadow:0 0 18px -4px var(--glow)}
@media(max-width:720px){.nav .links a:not(.cta){display:none}}

.eyebrow{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--signal)}
.section{padding:clamp(46px,8vh,88px) 0;border-top:1px solid var(--line)}
.lead{color:var(--soft);font-size:18px;max-width:60ch}
.btn{position:relative;overflow:hidden;z-index:0;display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em;text-decoration:none;border:1px solid var(--ink);color:var(--ink);padding:13px 20px;cursor:pointer;background:none;transform:translate(var(--mx,0px),var(--my,0px));transition:transform .28s cubic-bezier(.22,1,.36,1),box-shadow .28s,border-color .25s,color .25s}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(120deg,var(--signal),color-mix(in srgb,var(--signal) 55%,#38bdf8));transform:translateX(-101%) skewX(-12deg) scaleX(1.4);transition:transform .45s cubic-bezier(.22,1,.36,1)}
.btn:hover{color:#fff;border-color:var(--signal);box-shadow:0 14px 36px -12px var(--glow),0 0 0 1px var(--signal) inset}
.btn:hover::before{transform:translateX(0) skewX(-12deg) scaleX(1.4)}
.btn:active{transform:translate(var(--mx,0px),calc(var(--my,0px) + 1px)) scale(.98)}
.btn .ar{display:inline-block;transition:transform .28s cubic-bezier(.22,1,.36,1)}
.btn:hover .ar{transform:translateX(5px)}
/* secondary button — readable, clearly subordinate to the primary */
.btn.ghost{border-color:color-mix(in srgb,var(--ink) 32%,transparent);color:var(--ink)}
.btn.ghost:hover{color:#fff;border-color:var(--signal)}

/* hero */
.hero{padding:clamp(64px,15vh,140px) 0 clamp(30px,6vh,60px);text-align:center}
.hero .slate{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin-bottom:28px}
.hero h1{font-family:var(--serif);font-size:clamp(46px,11vw,128px);line-height:.96;text-shadow:0 0 var(--glowB) var(--glow),0 0 50px var(--glow)}
/* verb keeps a fixed line box so swapping fonts never nudges the layout */
.hero h1 .verb{color:var(--signal);display:inline-block;line-height:.96;vertical-align:baseline}
.hero h1 .caret{display:inline-block;width:3px;background:var(--signal);margin-left:2px;animation:blink 1s steps(1) infinite;vertical-align:baseline}
@keyframes blink{50%{opacity:0}}
.hero .sub{font-family:var(--serif);font-style:italic;font-size:clamp(20px,3vw,30px);color:var(--soft);margin:22px auto 0;max-width:30ch}
.hero .cta-row{display:flex;gap:14px;justify-content:center;margin-top:34px;flex-wrap:wrap}
/* hero sequential entrance — dropping out of warp */
html.pre .hero .slate,html.pre .hero h1,html.pre .hero .sub,html.pre .hero .cta-row,html.pre .marq{opacity:0}
html.play .hero .slate{animation:heroUp .7s cubic-bezier(.2,.8,.2,1) both .12s}
html.play .hero h1{animation:heroWarp 1.05s cubic-bezier(.16,1,.3,1) both .30s}
html.play .hero .sub{animation:heroUp .85s cubic-bezier(.2,.8,.2,1) both .74s}
html.play .hero .cta-row{animation:heroUp .85s cubic-bezier(.2,.8,.2,1) both 1s}
html.play .marq{animation:heroUp .9s cubic-bezier(.2,.8,.2,1) both 1.22s}
@keyframes heroUp{from{opacity:0;transform:translateY(26px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
/* headline rushes in from depth, overshoots, and snaps into focus */
@keyframes heroWarp{0%{opacity:0;transform:translateY(52px) scale(.82);filter:blur(16px)}55%{opacity:1;transform:translateY(-4px) scale(1.015);filter:blur(0)}100%{opacity:1;transform:none;filter:none}}

/* marquee */
.marq{overflow:hidden;white-space:nowrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin-top:10px}
.marq .run{display:inline-block;font-family:var(--serif);font-size:clamp(30px,5vw,52px);animation:scroll 26s linear infinite}
.marq .run b{color:var(--signal);font-style:italic;margin:0 8px}
.marq:hover .run{animation-play-state:paused}
@keyframes scroll{to{transform:translateX(-50%)}}

/* bento */
.bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:96px;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:26px;border-radius:10px;overflow:hidden}
.bento .c{background:var(--bg2);padding:18px;display:flex;flex-direction:column;justify-content:flex-end;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--soft)}
.bento .c .v{font-family:var(--serif);font-size:40px;color:var(--ink);line-height:1}
.bento .hero-c{grid-column:span 2;grid-row:span 2;background:color-mix(in srgb,var(--signal) 16%,var(--bg2))}
.bento .hero-c .v{font-size:64px}
.bento .x2{grid-column:span 2}
@media(max-width:620px){.bento{grid-template-columns:repeat(2,1fr)}}

/* asymmetric */
.asym{display:grid;grid-template-columns:7fr 3fr;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:24px}
.asym .big{padding:clamp(28px,5vw,48px);font-family:var(--serif);font-size:clamp(30px,5vw,60px);line-height:1}
.asym .meta{padding:clamp(28px,5vw,48px) 24px;border-left:1px solid var(--line);font-family:var(--mono);font-size:12px;color:var(--soft);text-transform:uppercase;line-height:2;background:var(--bg2)}
.asym .meta b{color:var(--ink)}
@media(max-width:620px){.asym{grid-template-columns:1fr}.asym .meta{border-left:0;border-top:1px solid var(--line)}}

/* hover-expand list */
.xlist{border-top:1px solid var(--line);margin-top:24px}
.xlist .it{border-bottom:1px solid var(--line);padding:20px 16px;cursor:pointer;transition:background .25s,padding .25s}
.xlist .it:hover{background:color-mix(in srgb,var(--signal) 12%,transparent);padding-left:28px}
.xlist .it .t{font-family:var(--serif);font-size:clamp(24px,4vw,34px);transition:color .2s}
.xlist .it:hover .t{color:var(--signal)}
.xlist .it .x{font-family:var(--mono);font-size:13px;color:var(--soft);max-height:0;overflow:hidden;opacity:0;transition:max-height .3s,opacity .3s,margin .3s}
.xlist .it:hover .x{max-height:60px;opacity:1;margin-top:8px}

/* work cards */
.controls{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin:24px 0 6px}
.controls input,.controls select{font-family:var(--mono);font-size:13px;background:var(--bg2);border:1px solid var(--line);color:var(--ink);padding:11px 14px;border-radius:3px}
.controls input{flex:1;min-width:180px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.chip{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--line);color:var(--soft);background:none;padding:8px 12px;border-radius:999px;cursor:pointer;transition:transform .22s cubic-bezier(.22,1,.36,1),color .22s,border-color .22s,background .22s,box-shadow .22s}
.chip:hover{color:var(--ink);border-color:var(--signal);transform:translateY(-2px);box-shadow:0 6px 18px -8px var(--glow)}
.chip.on{color:#fff;background:var(--signal);border-color:var(--signal);box-shadow:0 6px 20px -8px var(--glow)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px;margin-top:28px}
.card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg2);cursor:pointer;text-decoration:none;color:inherit;transition:transform .25s,border-color .25s}
.card:hover{transform:translateY(-4px);border-color:var(--signal)}
.card .thumb{aspect-ratio:16/10;position:relative}
.card .thumb .read{position:absolute;top:12px;right:14px;font-family:var(--mono);font-size:11px;text-transform:uppercase;color:#fff;opacity:0;transition:opacity .2s}
.card:hover .thumb .read{opacity:1}
.card .body{padding:20px}
.card .meta{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--soft);display:flex;gap:10px}
.card .meta .t{color:var(--signal)}
.card h3{font-family:var(--serif);font-size:30px;line-height:1.05;margin:8px 0}
.card p{color:var(--soft);font-size:15px}

/* article */
.article .head{padding:clamp(36px,6vh,60px) 0 26px;border-bottom:1px solid var(--line)}
.article .head .meta{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--soft);display:flex;gap:14px}
.article .head .meta .t{color:var(--signal)}
.article .head h1{font-family:var(--serif);font-size:clamp(40px,8vw,82px);line-height:1;margin:16px 0 14px}
.article .head .excerpt{font-family:var(--serif);font-style:italic;font-size:clamp(20px,2.6vw,28px);color:var(--soft);max-width:36ch}
.body-md{max-width:64ch;margin:clamp(32px,5vh,52px) auto 0;font-size:18px}
.body-md>p:first-of-type::first-letter{font-family:var(--serif);float:left;font-size:4em;line-height:.72;padding:6px 12px 0 0;color:var(--signal)}
.body-md p{margin:0 0 1.15em}
.body-md h2{font-family:var(--label);text-transform:uppercase;letter-spacing:.1em;font-size:15px;margin:2em 0 .6em}
.body-md a{color:var(--signal)}
.body-md blockquote{border-left:2px solid var(--signal);padding-left:18px;margin:1.3em 0;color:var(--soft)}
.body-md blockquote.pull-quote{border:0;text-align:center;font-family:var(--serif);font-style:italic;font-size:clamp(26px,4vw,40px);color:var(--ink);margin:1.6em 0;line-height:1.2}
.body-md hr{border:0;border-top:1px solid var(--line);margin:2.2em 0}
.body-md iframe{width:100%;border:0;border-radius:10px;margin:1.4em 0;aspect-ratio:16/9}
.ph-img,.ph-pdf{border-radius:10px;margin:1.4em 0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.ph-img{aspect-ratio:16/9;background:linear-gradient(135deg,#a855f7,#38bdf8)}
.ph-pdf{height:280px;background:linear-gradient(135deg,#1b1b22,#2a1150);border:1px solid var(--line)}

/* split */
.split{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:30px}
.split>div{padding:clamp(26px,5vw,44px)}
.split .hire{background:var(--bg2)}
.split .collab{background:var(--bg3);border-left:1px solid var(--line)}
.split h3{font-family:var(--serif);font-size:34px;margin-bottom:6px}
.split .k{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--signal);margin-bottom:14px}
.split ul{list-style:none;margin:14px 0;color:var(--soft);font-size:15px}
.split ul li{padding:6px 0;border-bottom:1px solid var(--line)}
.price{font-family:var(--mono);font-size:13px;color:var(--soft);background:var(--bg);border:1px dashed var(--line);border-radius:6px;padding:14px;margin:16px 0;line-height:1.6}
.price b{color:var(--ink)}
@media(max-width:680px){.split{grid-template-columns:1fr}.split .collab{border-left:0;border-top:1px solid var(--line)}}
.socials{display:flex;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:13px;margin-top:16px}
.socials a{color:var(--soft);text-decoration:none}.socials a:hover{color:var(--signal)}

/* logs */
.log{display:grid;grid-template-columns:130px 1fr;gap:24px;padding:26px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:padding .25s,background .25s}
a.log:hover{padding-left:14px;background:color-mix(in srgb,var(--signal) 8%,transparent)}
.log .when{font-family:var(--mono);font-size:12px;color:var(--soft);text-transform:uppercase}
.log h3{font-family:var(--serif);font-size:26px;margin-bottom:6px;transition:color .2s}
a.log:hover h3{color:var(--signal)}
.log p{color:var(--soft);font-size:15px}
@media(max-width:560px){.log{grid-template-columns:1fr;gap:6px}}

/* about + mascots */
.about-body{max-width:62ch;font-size:18px;position:relative}
.about-body p{margin:0 0 1.1em}
.about-body .influences{font-family:var(--mono);font-size:13px;color:var(--soft);text-transform:uppercase;letter-spacing:.05em;margin-top:8px}
.msc{width:54px;color:var(--signal)}
.msc svg{width:100%;overflow:visible;display:block}
.msc.sit{position:absolute;right:-72px}
@media(max-width:900px){.msc.sit{display:none}}
/* walker = the scroll bar. further right = closer to the bottom */
.walker{position:fixed;bottom:6px;left:0;z-index:36;width:44px;color:var(--signal);cursor:pointer;transition:transform .08s linear}
.walker svg{width:100%;overflow:visible;display:block}
.walker .bub{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--bg2);border:1px solid var(--signal);color:var(--ink);font-family:var(--mono);font-size:11px;padding:7px 11px;border-radius:8px;opacity:0;pointer-events:none;transition:opacity .2s}
.walker .bub::after{content:"";position:absolute;left:50%;bottom:-5px;transform:translateX(-50%) rotate(45deg);width:8px;height:8px;background:var(--bg2);border-right:1px solid var(--signal);border-bottom:1px solid var(--signal)}
.walker:hover .bub{opacity:1}

/* latest — a deliberately different mixed grid */
.latest{display:grid;grid-template-columns:1.6fr 1fr;grid-auto-rows:minmax(118px,auto);gap:14px;margin-top:26px}
.latest .feat{grid-row:span 2;border:1px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;text-decoration:none;color:inherit;display:flex;flex-direction:column;min-height:300px;transition:transform .25s,border-color .25s}
.latest .feat:hover{transform:translateY(-4px);border-color:var(--signal)}
.latest .feat .thumb{flex:1;min-height:150px}
.latest .feat .cap{padding:18px;background:var(--bg2)}
.latest .mini{border:1px solid var(--line);border-radius:12px;padding:18px;background:var(--bg2);cursor:pointer;text-decoration:none;color:inherit;display:flex;flex-direction:column;justify-content:center;transition:transform .25s,border-color .25s}
.latest .mini:hover{transform:translateY(-4px);border-color:var(--signal)}
.latest .k{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--soft)}
.latest .k .t{color:var(--signal)}
.latest h4{font-family:var(--serif);font-size:26px;line-height:1.05;margin-top:6px}
.latest .feat h4{font-size:34px}
.latest .logtile{grid-column:1 / -1;border:1px solid var(--line);border-left:3px solid var(--signal);border-radius:12px;padding:18px 20px;background:var(--bg2);display:flex;gap:16px;align-items:baseline;flex-wrap:wrap;cursor:pointer;text-decoration:none;color:inherit}
.latest .logtile .lab{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--signal)}
.latest .logtile .when{font-family:var(--mono);font-size:12px;color:var(--soft)}
.latest .logtile h4{font-size:21px;margin:0}
.latest .logtile p{color:var(--soft);font-size:14px;flex-basis:100%;margin-top:2px}
@media(max-width:680px){.latest{grid-template-columns:1fr}.latest .feat{grid-row:auto}}

/* avatar maker (secret page) */
.maker{display:grid;grid-template-columns:300px 1fr;gap:30px;margin-top:30px;align-items:start}
.maker .preview{position:sticky;top:90px;border:1px solid var(--line);border-radius:16px;padding:24px;background:var(--bg2);text-align:center}
.maker .pic{width:230px;height:230px;margin:0 auto;border-radius:20px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,color-mix(in srgb,var(--signal) 32%,var(--bg)),var(--bg))}
.maker .pic svg{width:160px;height:200px;overflow:visible}
.maker .pname{font-family:var(--serif);font-size:24px;margin-top:14px}
.maker .opt{margin-bottom:22px}
.maker .opt .lab{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--soft);margin-bottom:10px}
.maker .row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.maker .ob{border:1px solid var(--line);background:var(--bg2);color:var(--ink);font-family:var(--mono);font-size:12px;padding:9px 13px;border-radius:8px;cursor:pointer}
.maker .ob.on{border-color:var(--signal);color:var(--signal)}
.maker .sw{width:32px;height:32px;border-radius:50%;border:2px solid transparent;cursor:pointer}
.maker .sw.on{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--signal)}
.maker input[type=text]{font-family:var(--mono);font-size:14px;background:var(--bg2);border:1px solid var(--line);color:var(--ink);padding:11px 14px;border-radius:8px;width:100%;max-width:280px}
.maker input[type=color]{width:40px;height:32px;border:1px solid var(--line);background:none;border-radius:8px;cursor:pointer;padding:0}
@media(max-width:680px){.maker{grid-template-columns:1fr}.maker .preview{position:static}}

.foot{border-top:1px solid var(--line);padding:36px var(--gutter);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--soft);align-items:center}
.foot a{color:var(--soft);text-decoration:none}.foot a:hover{color:var(--signal)}
.foot .s{display:flex;gap:14px;flex-wrap:wrap}

/* ---------- contact popup form ---------- */
.modal{position:fixed;inset:0;z-index:210;display:none;align-items:center;justify-content:center;padding:20px}
.modal.open{display:flex}
.modal-backdrop{position:absolute;inset:0;background:rgba(5,4,10,.72);backdrop-filter:blur(6px);animation:fade .3s ease}
.modal-card{position:relative;z-index:1;width:100%;max-width:440px;background:var(--bg2);border:1px solid var(--line);border-radius:16px;padding:clamp(24px,4vw,34px);box-shadow:0 30px 80px -20px rgba(0,0,0,.7),0 0 0 1px color-mix(in srgb,var(--signal) 22%,transparent);animation:modalIn .4s cubic-bezier(.16,1,.3,1)}
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:none}}
.modal-card h2{font-family:var(--serif);font-size:clamp(28px,5vw,40px);line-height:1.02;margin:6px 0}
.modal-sub{color:var(--soft);font-size:15px;margin-bottom:18px}
.modal-x{position:absolute;top:14px;right:14px;width:34px;height:34px;border:1px solid var(--line);background:none;color:var(--ink);border-radius:8px;cursor:pointer;font-size:14px;transition:border-color .2s,transform .3s,color .2s}
.modal-x:hover{border-color:var(--signal);color:var(--signal);transform:rotate(90deg)}
.field{display:block;margin-bottom:14px}
.field>span{display:block;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--soft);margin-bottom:7px}
.field>span em{text-transform:none;letter-spacing:0;font-style:normal;opacity:.7}
.field input,.field textarea{width:100%;font-family:var(--body);font-size:15px;background:var(--bg);border:1px solid var(--line);color:var(--ink);padding:12px 14px;border-radius:9px;transition:border-color .2s,box-shadow .2s}
.field textarea{resize:vertical;min-height:74px}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px color-mix(in srgb,var(--signal) 20%,transparent)}
.field.invalid input,.field.invalid textarea{border-color:#f43f5e}
.field .err{display:none;color:#fb7185;font-family:var(--mono);font-size:11px;margin-top:6px}
.field.invalid .err{display:block}
#contactForm .btn{width:100%;justify-content:center;margin-top:4px}
.modal-status{font-family:var(--mono);font-size:12px;margin-top:12px;min-height:16px}
.modal-status.ok{color:#34d399}
.modal-status.bad{color:#fb7185}
.modal-consent{font-family:var(--mono);font-size:11px;color:var(--soft);margin-top:14px;line-height:1.5}

.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
/* staggered children — micro-motion as sections enter */
.stagger>*{opacity:0;transform:translateY(20px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.stagger.in>*{opacity:1;transform:none}
.stagger.in>*:nth-child(1){transition-delay:.04s}.stagger.in>*:nth-child(2){transition-delay:.10s}.stagger.in>*:nth-child(3){transition-delay:.16s}.stagger.in>*:nth-child(4){transition-delay:.22s}.stagger.in>*:nth-child(5){transition-delay:.28s}.stagger.in>*:nth-child(6){transition-delay:.34s}.stagger.in>*:nth-child(7){transition-delay:.40s}.stagger.in>*:nth-child(8){transition-delay:.46s}
.eyebrow{display:inline-block}.eyebrow::before{content:"";display:inline-block;width:0;height:1px;background:var(--signal);vertical-align:middle;margin-right:0;transition:width .55s cubic-bezier(.22,1,.36,1) .15s,margin .55s .15s}
.eyebrow.in::before{width:26px;margin-right:10px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal,.stagger>*{opacity:1;transform:none}.hero .slate,.hero h1,.hero .sub,.hero .cta-row,.marq{opacity:1!important}.eyebrow::before{width:26px!important;margin-right:10px!important}#flash{display:none}.has-cursor,.has-cursor *{cursor:auto!important}#cur,.walker{display:none}}

html.noload #loader{display:none!important}
