/* ============================================================
   KEVIN FENG — portfolio
   "The Quant's Study" — ink, bone & brass. Chess club meets
   trading terminal. No frameworks, no dependencies.
   ============================================================ */

:root{
  --bg:#0d0c09;
  --panel:#12100c;
  --bone:#efe7d4;
  --muted:#9f9682;
  --brass:#c9a035;
  --brass2:#e8c766;
  --up:#43d17c;
  --down:#e5484d;
  --ink:#171307;
  --line:rgba(239,231,212,.14);
  --sq:rgba(239,231,212,.05);
  --gutter:clamp(20px,5vw,64px);
  --kn:76px; /* knight grid size */
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

@media (prefers-reduced-motion:no-preference){
  html{scroll-behavior:smooth}
}

html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  color:var(--bone);
  font-family:"Instrument Sans",system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.5;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

.mono{font-family:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace}
.brass{color:var(--brass)}
img,canvas{max-width:100%}
button{font:inherit;color:inherit}

::selection{background:var(--brass);color:var(--ink)}
:focus-visible{outline:2px solid var(--brass2);outline-offset:3px;border-radius:2px}

.skip-link{
  position:fixed;left:16px;top:-60px;z-index:500;
  background:var(--brass);color:var(--ink);padding:10px 18px;border-radius:6px;
  font-family:"IBM Plex Mono",monospace;font-size:12px;text-decoration:none;
  transition:top .25s;
}
.skip-link:focus{top:14px}

/* ---------------- reveal system ---------------- */
.js .rv{
  opacity:0;
  transform:translateY(26px);
  filter:blur(6px);
  transition:
    opacity .9s ease var(--d,0s),
    transform .9s cubic-bezier(.2,.7,0,1) var(--d,0s),
    filter .9s ease var(--d,0s);
}
.js body.ready .rv.in{opacity:1;transform:none;filter:none}

/* ---------------- grain ---------------- */
#grain{
  position:fixed;inset:-50%;z-index:300;pointer-events:none;opacity:.055;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
  animation:grain 7s steps(10) infinite;
}
@keyframes grain{
  0%,100%{transform:translate(0,0)}
  20%{transform:translate(-4%,3%)}
  40%{transform:translate(3%,-5%)}
  60%{transform:translate(-5%,-2%)}
  80%{transform:translate(4%,4%)}
}

/* ---------------- intro board wipe ---------------- */
.js #intro{background:var(--bg)}
#intro{
  position:fixed;inset:0;z-index:400;display:grid;pointer-events:none;
}
#intro.out{background:transparent;transition:background .4s ease .3s}
.intro-cell{transform:scale(1.001);opacity:1;
  transition:transform .55s cubic-bezier(.55,0,.25,1) var(--cd,0s),opacity .55s ease var(--cd,0s);
}
.intro-cell.a{background:#14110c}
.intro-cell.b{background:#0d0c09}
#intro.out .intro-cell{transform:scale(0);opacity:0}

/* ---------------- progress pawn ---------------- */
#progress{position:fixed;top:0;left:0;right:0;height:0;z-index:120;pointer-events:none}
#progressBar{
  height:3px;transform-origin:left;transform:scaleX(0);
  background:linear-gradient(90deg,var(--brass),var(--brass2));
  box-shadow:0 0 14px rgba(201,160,53,.5);
}
/* ---------------- cursor ring ---------------- */
#cursorRing{
  position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;
  border:1.5px solid var(--brass);border-radius:50%;
  pointer-events:none;z-index:250;opacity:0;
  transform:translate(-100px,-100px);
  transition:opacity .35s,width .25s,height .25s,margin .25s,border-color .25s,background .25s;
}
body.has-ring #cursorRing{opacity:.85}
#cursorRing.cursor-on{
  width:58px;height:58px;margin:-29px 0 0 -29px;
  border-color:var(--brass2);background:rgba(201,160,53,.07);
}

/* ---------------- nav ---------------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:110;
  display:flex;justify-content:space-between;align-items:center;
  padding:18px var(--gutter);
  background:linear-gradient(180deg,rgba(13,12,9,.88) 0%,rgba(13,12,9,0) 100%);
  transition:transform .5s cubic-bezier(.2,.7,0,1);
}
.nav-hide{transform:translateY(-110%)}
.logo{
  display:block;width:82px;height:50px;text-decoration:none;
  filter:drop-shadow(0 4px 12px rgba(0,0,0,.35));
}
.logo-image{
  display:block;width:100%;height:100%;object-fit:contain;
  transition:transform .4s cubic-bezier(.2,.9,.2,1),filter .3s ease;
}
.logo:hover .logo-image{
  transform:translateY(-2px) scale(1.035);
  filter:drop-shadow(0 4px 7px rgba(201,160,53,.3));
}
.nav-links{display:flex;gap:clamp(16px,2.6vw,30px);font-size:11.5px;letter-spacing:.18em;text-transform:uppercase}
.nav-links a{color:var(--muted);text-decoration:none;transition:color .25s}
.nav-links a:hover{color:var(--brass2)}

/* ---------------- hero ---------------- */
.hero{
  position:relative;
  min-height:100vh;min-height:100svh;
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(100px,15vh,170px) var(--gutter) 130px;
  overflow:hidden;
}
.hero-board{
  position:absolute;right:-7%;top:6%;
  width:min(54vw,660px);aspect-ratio:1;z-index:1;opacity:.6;
  background:conic-gradient(var(--sq) 0 90deg,transparent 90deg 180deg,var(--sq) 180deg 270deg,transparent 270deg 360deg);
  background-size:25% 25%;
  -webkit-mask-image:radial-gradient(closest-side,#000 30%,transparent 78%);
  mask-image:radial-gradient(closest-side,#000 30%,transparent 78%);
}
#sparkCanvas{
  position:absolute;left:0;right:0;bottom:0;width:100%;height:46%;z-index:0;opacity:.6;
  -webkit-mask-image:linear-gradient(to top,#000 55%,transparent);
  mask-image:linear-gradient(to top,#000 55%,transparent);
}
#orbCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.hero.grabbing{cursor:grabbing}

.hero-inner{position:relative;z-index:3;max-width:1280px;pointer-events:none}
.hero-inner a,.hero-inner button{pointer-events:auto}

.hero-eyebrow{
  display:flex;align-items:center;gap:12px;
  color:var(--muted);font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;
  margin-bottom:26px;
}
.dot{width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 2.6s ease-out infinite}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(67,209,124,.55)}
  70%{box-shadow:0 0 0 10px rgba(67,209,124,0)}
  100%{box-shadow:0 0 0 0 rgba(67,209,124,0)}
}

.hero-name{
  font-family:"Fraunces",serif;font-weight:560;
  font-size:clamp(4rem,13.5vw,11.5rem);
  line-height:.98;letter-spacing:-.022em;
  margin-left:-.04em;
}
.hn-line{display:block;overflow:hidden;padding:0 .12em .2em 0;margin-bottom:-.2em}
.hn-word{display:inline-block;transform:translateY(115%);transition:transform 1.15s cubic-bezier(.16,.84,.22,1) .12s;will-change:transform}
.hn-word-2{transition-delay:.24s}
.js body.ready .hn-word{transform:translateY(0)}
.hn-italic{font-style:italic;font-weight:480}
.hero-name .brass{color:var(--brass)}

.hero-roles{
  margin-top:30px;color:var(--brass2);
  font-size:13px;letter-spacing:.18em;text-transform:uppercase;
}
.caret{
  display:inline-block;width:9px;height:15px;margin-left:7px;vertical-align:-2px;
  background:var(--brass2);animation:blink 1.1s steps(2,start) infinite;
}
@keyframes blink{to{visibility:hidden}}

.hero-sub{
  margin-top:24px;max-width:46ch;
  font-size:clamp(1.05rem,1.4vw,1.32rem);line-height:1.65;
  color:rgba(239,231,212,.82);
}
.hero-ctas{display:flex;gap:14px;margin-top:40px;flex-wrap:wrap}

.hero-meta{
  position:absolute;right:var(--gutter);bottom:140px;z-index:3;
  display:grid;gap:16px;text-align:right;pointer-events:none;
  font-size:12px;letter-spacing:.06em;color:rgba(239,231,212,.85);
}
.hero-meta span{
  display:block;color:var(--muted);font-size:10px;
  letter-spacing:.24em;text-transform:uppercase;margin-bottom:4px;
}
.live{
  display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--up);margin-right:8px;animation:pulse 2.6s ease-out infinite;
}

.scroll-cue{
  position:absolute;left:var(--gutter);bottom:26px;z-index:3;pointer-events:none;
  display:flex;align-items:center;gap:12px;
  color:var(--muted);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;
}
.cue-ball{width:7px;height:7px;border-radius:50%;background:var(--brass);animation:cueDrop 1.8s ease-in infinite}
@keyframes cueDrop{
  0%{transform:translateY(-12px);opacity:0}
  30%{opacity:1}
  80%{transform:translateY(8px);opacity:1}
  100%{transform:translateY(10px);opacity:0}
}

/* ---------------- ticker ---------------- */
.ticker{
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  overflow:hidden;padding:13px 0;
  background:linear-gradient(180deg,rgba(239,231,212,.025),transparent);
}
.ticker-track{display:flex;width:max-content;will-change:transform;animation:marquee 32s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-rev .ticker-track{animation-direction:reverse;animation-duration:38s}
@keyframes marquee{to{transform:translateX(-50%)}}
.tk-half{display:flex;gap:46px;padding-right:46px}
.tk{display:flex;gap:10px;align-items:baseline;font-family:"IBM Plex Mono",monospace;font-size:12px;letter-spacing:.08em;white-space:nowrap}
.tk-sym{color:var(--muted)}
.tk-val{color:var(--bone)}
.tk-up{color:var(--up)}
.tk-dn{color:var(--down)}
.tk-nt{color:var(--brass2)}

/* ---------------- sections ---------------- */
.sec{padding:20vh var(--gutter) 14vh;max-width:1480px;margin:0 auto}
.sec-head{margin-bottom:clamp(44px,7vh,80px)}
.sec-num{
  display:inline-flex;align-items:center;gap:14px;
  color:var(--brass);font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;
}
.sec-num::before{content:"";display:inline-block;width:36px;height:1px;background:var(--brass)}
.sec-title{
  font-family:"Fraunces",serif;font-weight:520;
  font-size:clamp(2.6rem,6vw,5.4rem);
  line-height:1.04;letter-spacing:-.018em;
  margin-top:20px;
}
.sec-title em{font-style:italic;color:var(--brass2)}
.st-line{display:block}

/* ---------------- about ---------------- */
.about-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(40px,6vw,90px);align-items:start}
.about-copy p{
  font-size:clamp(1.05rem,1.3vw,1.28rem);line-height:1.7;
  color:rgba(239,231,212,.85);max-width:58ch;
}
.about-copy p+p{margin-top:1.4em}
.about-copy em{font-style:italic;color:var(--bone)}
.about-copy strong{font-weight:600;color:var(--brass2)}
.about-chips{
  list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin-top:34px;
}
.about-chips li{
  border:1px solid var(--line);border-radius:999px;padding:8px 16px;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
  transition:color .3s,border-color .3s;
}
.about-chips li:hover{color:var(--brass2);border-color:var(--brass)}

.about-board{position:sticky;top:110px}
#tourBoard{
  position:relative;display:grid;grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(8,1fr);
  aspect-ratio:1;border:1px solid var(--line);background:var(--panel);
  box-shadow:0 30px 80px -30px rgba(0,0,0,.7);
}
#tourBoard .sq{position:relative}
#tourBoard .sq.light{background:#151209}
#tourBoard .sq.dark{background:#0e0d0a}
#tourBoard .sq.v::after{
  content:"";position:absolute;inset:0;background:var(--brass);
  animation:visited 3s ease forwards;
}
@keyframes visited{0%{opacity:.55}100%{opacity:.13}}
.tour-kn{
  position:absolute;left:0;top:0;width:12.5%;height:12.5%;z-index:2;
  background:url("assets/knight.png") center/74% no-repeat;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.5));
  transition:transform .22s cubic-bezier(.35,1.5,.4,1);
  will-change:transform;
}
.about-board figcaption{
  margin-top:14px;color:var(--muted);
  font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
}

/* ---------------- galton drop ---------------- */
.sec-drop{
  max-width:none;position:relative;
  background:var(--panel);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:16vh var(--gutter);
}
.sec-drop::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(720px 460px at 50% 64%,rgba(201,160,53,.08),transparent 70%);
}
.drop-head{position:relative;max-width:840px;margin:0 auto clamp(40px,6vh,64px);text-align:center}
.drop-head .sec-title{margin-top:16px}
.drop-sub{
  margin:20px auto 0;max-width:56ch;
  color:var(--muted);font-size:clamp(1rem,1.15vw,1.15rem);line-height:1.65;
}
#galtonWrap{
  position:relative;max-width:940px;margin:0 auto;border-radius:8px;
  border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(13,12,9,.55),rgba(13,12,9,.92));
  box-shadow:0 40px 100px -40px rgba(0,0,0,.8);
}
#galtonCanvas{display:block;width:100%;height:540px}
.galton-hud{
  position:absolute;top:14px;left:18px;right:14px;
  display:flex;justify-content:space-between;align-items:center;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
}
#dropCount{color:var(--brass2);font-weight:500}
#dropReset{
  background:none;border:1px solid var(--line);border-radius:999px;
  color:var(--muted);padding:7px 15px;cursor:pointer;
  font-family:inherit;font-size:inherit;letter-spacing:inherit;text-transform:inherit;
  transition:color .25s,border-color .25s;pointer-events:auto;
}
#dropReset:hover{color:var(--brass2);border-color:var(--brass)}

/* ---------------- experience ---------------- */
.xp-list{border-top:1px solid var(--line)}
.xp-item{
  position:relative;
  display:grid;grid-template-columns:210px 1fr;gap:clamp(20px,5vw,72px);
  padding:clamp(28px,4.2vh,46px) 0;
  border-bottom:1px solid var(--line);
  transition:padding-left .45s cubic-bezier(.2,.7,0,1);
}
.xp-item::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:2px;
  background:linear-gradient(var(--brass),var(--brass2));
  transform:scaleY(0);transform-origin:top;transition:transform .45s cubic-bezier(.2,.7,0,1);
}
.xp-item:hover{padding-left:18px}
.xp-item:hover::before{transform:scaleY(1)}
.xp-meta{display:flex;flex-direction:column;gap:6px;padding-top:8px}
.xp-when{color:var(--brass);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.xp-org{color:var(--bone);font-size:12.5px;letter-spacing:.04em}
.xp-place{color:var(--muted);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.xp-role{
  font-family:"Fraunces",serif;font-weight:540;letter-spacing:-.01em;
  font-size:clamp(1.35rem,2.2vw,1.9rem);margin-bottom:12px;
}
.xp-body p{color:rgba(239,231,212,.74);line-height:1.68;font-size:1.04rem;max-width:60ch}

/* ---------------- work cards ---------------- */
.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;perspective:1400px}
.card{
  position:relative;overflow:hidden;border-radius:10px;
  border:1px solid var(--line);
  background:linear-gradient(165deg,#15120a 0%,#0f0e0a 55%,#0d0c09 100%);
  padding:36px 34px 30px;min-height:340px;
  display:flex;flex-direction:column;justify-content:space-between;gap:30px;
  transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition:border-color .35s,box-shadow .35s,transform .22s ease-out;
  will-change:transform;
}
.card:hover{border-color:rgba(201,160,53,.45);box-shadow:0 30px 70px -35px rgba(0,0,0,.9)}
.card-wide{grid-column:1/-1;min-height:300px}
.card-wide .card-body p{max-width:64ch}
.card-num{
  position:absolute;top:26px;right:28px;
  color:var(--muted);font-size:11.5px;letter-spacing:.22em;
}
.card-body h3{
  font-family:"Fraunces",serif;font-weight:550;letter-spacing:-.01em;
  font-size:clamp(1.5rem,2.4vw,2.1rem);margin-bottom:14px;padding-right:56px;
}
.card-body p{color:rgba(239,231,212,.72);line-height:1.65;font-size:1.02rem;max-width:48ch}
.tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.tags li{
  border:1px solid var(--line);border-radius:999px;padding:5px 12px;
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);
}
.card-cta{
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--brass);
  text-decoration:none;align-self:flex-start;
}
a.card-link{transition:color .25s,letter-spacing .25s}
a.card-link:hover{color:var(--brass2);letter-spacing:.26em}
.card-glare{
  position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .35s;
  background:radial-gradient(460px 340px at var(--gx,50%) var(--gy,50%),rgba(232,199,102,.11),transparent 62%);
}
.card:hover .card-glare{opacity:1}

/* ---------------- stats ---------------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.stat{padding:40px 28px 8px;border-left:1px solid var(--line)}
.stat:first-child{border-left:0;padding-left:0}
.stat-num{
  display:block;font-family:"Fraunces",serif;font-weight:480;
  font-size:clamp(2.4rem,4.6vw,4.4rem);letter-spacing:-.02em;line-height:1;
  font-variant-numeric:tabular-nums;
}
.stat-num .suf{color:var(--brass2)}
.stat-label{
  display:block;margin-top:14px;color:var(--muted);
  font-size:11px;letter-spacing:.14em;text-transform:uppercase;line-height:1.7;
}

/* ---------------- contact ---------------- */
.sec-contact{padding-bottom:18vh}
.contact-line{color:var(--muted);max-width:52ch;font-size:1.1rem;line-height:1.65;margin-bottom:clamp(28px,5vh,48px)}
.email{
  position:relative;display:inline-block;
  font-family:"Fraunces",serif;font-style:italic;font-weight:480;
  font-size:clamp(1.7rem,5.2vw,4.5rem);letter-spacing:-.01em;
  color:var(--bone);text-decoration:none;
  transition:color .35s;
}
.email::after{
  content:"";position:absolute;left:0;bottom:-8px;height:2px;width:100%;
  background:linear-gradient(90deg,var(--brass),var(--brass2));
  transform:scaleX(0);transform-origin:left;
  transition:transform .55s cubic-bezier(.2,.7,0,1);
}
.email:hover{color:var(--brass2)}
.email:hover::after{transform:scaleX(1)}
.contact-actions{margin-top:clamp(30px,5vh,46px)}

/* ---------------- footer ---------------- */
.footer{
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  padding:26px var(--gutter) 32px;border-top:1px solid var(--line);
  color:var(--muted);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
}
.footer kbd{
  font-family:inherit;color:var(--brass2);
  border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:2px 8px;
}

/* ---------------- knight overlay ---------------- */
#knight{
  position:fixed;left:0;top:0;width:var(--kn);height:var(--kn);z-index:80;
  visibility:hidden;cursor:pointer;will-change:transform;
  filter:drop-shadow(0 12px 14px rgba(0,0,0,.4));
}
.kn-piece{
  position:absolute;inset:0;
  background:url("assets/knight.png") center bottom/contain no-repeat;
  transform-origin:50% 100%;will-change:transform;
  user-select:none;
}
#knight::after{
  content:"";position:absolute;left:50%;bottom:3px;width:58%;height:9px;border-radius:50%;
  background:rgba(0,0,0,.55);filter:blur(4px);
  transform:translateX(-50%) scaleX(var(--sh,1));opacity:var(--so,.5);
}
.kn-ghost{
  position:fixed;z-index:70;pointer-events:none;
  width:var(--kn);height:var(--kn);
  border:1px solid rgba(201,160,53,.75);background:rgba(201,160,53,.1);
  animation:ghost 1s ease-out forwards;
}
@keyframes ghost{
  0%{opacity:1;transform:scale(.9)}
  100%{opacity:0;transform:scale(1.22)}
}

/* ---------------- buttons ---------------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:15px 27px;border-radius:999px;border:1px solid transparent;
  font-family:"IBM Plex Mono",monospace;font-size:11.5px;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;text-decoration:none;
  cursor:pointer;will-change:transform;
  transition:background .3s,color .3s,border-color .3s;
}
.btn-solid{background:var(--brass);color:var(--ink)}
.btn-solid:hover{background:var(--brass2)}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--bone)}
.btn-ghost:hover{border-color:var(--brass);color:var(--brass2)}
.btn.copied{background:var(--up);border-color:var(--up);color:var(--ink)}

/* ---------------- responsive ---------------- */
@media (max-width:1100px){
  .about-grid{grid-template-columns:1fr}
  .about-board{position:static;max-width:480px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .stat{padding:34px 22px 6px}
  .stat:nth-child(odd){border-left:0;padding-left:0}
}
@media (max-width:760px){
  .xp-item{grid-template-columns:1fr;gap:14px}
  .xp-meta{flex-flow:row wrap;gap:10px;align-items:baseline;padding-top:0}
}
@media (max-width:900px){
  .hero-meta{display:none}
  :root{--kn:60px}
}
@media (max-width:720px){
  .cards{grid-template-columns:1fr}
  .card{min-height:0;padding:28px 24px 26px}
  .sec{padding:15vh var(--gutter) 11vh}
  #galtonCanvas{height:420px}
  .galton-hud{position:static;padding:0 16px 14px;margin-top:-4px}
  .email{word-break:break-all}
  .footer{justify-content:center;text-align:center}
  .nav-links{gap:14px;font-size:10.5px}
  .scroll-cue{display:none}
}

/* ---------------- reduced motion ---------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .ticker-track{animation:none}
  #knight,#cursorRing,#grain,.cue-ball{display:none}
  .js .rv,.js .hn-word{opacity:1;transform:none;filter:none}
  .caret{animation:none}
}
