/* Nivaan Ltd — home page. Standalone: does not affect the legacy styles.css */
:root{
  --ink:#0D1B26; --ink2:#33495A; --paper:#FAF9F7; --card:#FFFFFF;
  --rule:#E2E0DA; --mute:#6E7C86; --teal:#14675C; --oxide:#A8482C;
  --teal-lift:#8FD3C6; --oxide-lift:#C8873B; --slate:#AEBDC6; --track:#EFEDE8;
  --wrap:1180px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:Archivo,system-ui,-apple-system,sans-serif;
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;text-wrap:pretty}
ul{list-style:none}
a{color:var(--teal);text-decoration:none}
a:hover{color:var(--oxide)}
::selection{background:var(--ink);color:var(--paper)}
img,svg{display:block}

.band{max-width:var(--wrap);margin:0 auto;padding:104px 40px 0}
.mono{font-family:'IBM Plex Mono',ui-monospace,monospace}
.serif{font-family:Spectral,Georgia,serif}

/* header */
.site-head{position:sticky;top:0;z-index:40;background:rgba(250,249,247,.92);
  backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--rule)}
.head-in{max-width:var(--wrap);margin:0 auto;padding:14px 40px;display:flex;align-items:center;
  justify-content:space-between;gap:24px;flex-wrap:wrap}
.lockup{display:flex;flex-direction:column;gap:1px;color:var(--ink)}
.lockup .name{font-family:Spectral,Georgia,serif;font-size:24px;letter-spacing:-.01em;line-height:1.1}
.lockup .name span{color:var(--teal)}
.lockup .tag{font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute)}
.site-nav{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.head-right{display:flex;align-items:center;gap:24px}
.nav-toggle{display:none;align-items:center;gap:9px;background:none;cursor:pointer;
  border:1px solid var(--rule);padding:0 13px;min-height:42px;color:var(--ink);
  font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.nav-toggle-bars{display:flex;flex-direction:column;justify-content:center;gap:4px;width:16px;height:14px}
.nav-toggle-bars i{display:block;height:1.5px;background:var(--ink);
  transition:transform .2s ease,opacity .15s ease}
.nav-toggle[aria-expanded=true] .nav-toggle-bars i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.nav-toggle[aria-expanded=true] .nav-toggle-bars i:nth-child(2){opacity:0}
.nav-toggle[aria-expanded=true] .nav-toggle-bars i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}
.site-nav a{font-size:14px;color:var(--ink2)}
.site-nav a:hover{color:var(--ink)}
.site-nav a.btn-ink{color:var(--paper)}
.site-nav a.btn-ink:hover{color:var(--paper);background:var(--teal)}
.btn{display:inline-block;font-weight:600;transition:background .18s,border-color .18s,color .18s}
.btn-ink{background:var(--ink);color:var(--paper);font-size:14px;padding:9px 16px}
.btn-ink:hover{background:var(--teal);color:var(--paper)}
.btn-lg{font-size:15px;padding:14px 26px}
.btn-line{border:1px solid var(--ink);color:var(--ink);font-size:15px;padding:14px 26px}
.btn-line:hover{border-color:var(--teal);color:var(--teal)}
.btn-sm{font-size:14px;padding:11px 20px}
.btn-md{font-size:14.5px;padding:12px 22px}

/* hero */
.hero{background:var(--paper);border-bottom:1px solid var(--rule);position:relative;overflow:hidden}
.hero-grid-bg{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(#0d1b260a 1px,transparent 1px),linear-gradient(90deg,#0d1b260a 1px,transparent 1px);
  background-size:80px 80px}
.hero-in{max-width:var(--wrap);margin:0 auto;padding:96px 40px 0;position:relative}
.hero-cols{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:end}
.eyebrow{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--oxide);margin-bottom:28px}
h1{font-family:Spectral,Georgia,serif;font-weight:300;font-size:clamp(38px,4.6vw,62px);
  line-height:1.04;letter-spacing:-.025em;max-width:20ch;text-wrap:balance}
h1 em{font-style:normal;color:var(--teal)}
.lede{margin-top:28px;font-size:19px;line-height:1.55;color:var(--ink2);max-width:50ch}
.cta-row{margin-top:36px;display:flex;gap:12px;flex-wrap:wrap;padding-bottom:8px}
.hero-side{border-left:1px solid var(--rule);padding:4px 0 8px 32px;display:grid;gap:22px;align-content:end}
.hero-side .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);margin-bottom:6px}
.hero-side .v{font-family:Spectral,Georgia,serif;font-size:22px;font-weight:300;line-height:1.25}
.stats{margin-top:72px;border-top:1px solid var(--ink);display:grid;grid-template-columns:repeat(3,1fr)}
.stat{padding:26px 32px 30px;border-right:1px solid var(--rule)}
.stat:first-child{padding-left:0}
.stat:last-child{border-right:none;padding-right:0}
.stat .n{font-family:Spectral,Georgia,serif;font-size:44px;line-height:1;font-weight:300;color:var(--teal)}
.stat p{margin-top:12px;font-size:14.5px;line-height:1.45;color:var(--ink2);max-width:30ch}
.src-btn{margin-top:12px;background:none;border:none;padding:0;cursor:pointer;
  font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mute);border-bottom:1px dotted #C9C6BE}
.src-btn:hover{color:var(--oxide)}

/* source dialogs */
dialog{margin:auto;max-width:430px;border:1px solid var(--ink);background:var(--card);
  padding:26px 28px;font-size:14.5px;color:var(--ink2);box-shadow:0 24px 60px #0d1b2626}
dialog::backdrop{background:#0d1b2659}
dialog .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mute);margin-bottom:10px}
dialog button{margin-top:18px;background:var(--ink);color:var(--paper);border:none;padding:8px 14px;
  font-family:Archivo,sans-serif;font-size:13px;font-weight:600;cursor:pointer}

/* section heads */
.exh-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;
  border-bottom:1px solid var(--rule);padding-bottom:14px;position:relative}
.exh-head::after{content:"";position:absolute;left:0;bottom:-1px;width:120px;height:2px;background:var(--oxide)}
.exh-head h2{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;font-weight:500;color:var(--ink)}
.exh-head .note{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mute)}
.intro{padding-top:28px;max-width:74ch;font-size:17px;color:var(--ink2)}

/* cards */
.card{background:var(--card);box-shadow:0 0 0 1px var(--rule)}
.cards-3{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1px;margin-top:32px}
.cards-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1px;margin-top:32px}
.prop{padding:32px 30px 30px}
.prop .num{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.18em;color:var(--oxide);margin-bottom:16px}
.prop h3{font-family:Spectral,Georgia,serif;font-size:24px;font-weight:400;letter-spacing:-.015em;line-height:1.25}
.prop p{margin-top:12px;font-size:15.5px;color:var(--ink2)}
.prop .imp{margin-top:16px;padding-top:14px;border-top:1px solid #F1EFEA;font-size:14px;color:var(--teal)}
.prop .imp strong{font-weight:600}

/* exhibit 01 */
.fig-cols{display:grid;grid-template-columns:1.5fr 1fr;gap:56px;padding-top:36px;align-items:start}
.legend{display:flex;gap:28px;flex-wrap:wrap;margin-top:22px;padding-top:16px;border-top:1px solid var(--rule);
  font-size:13.5px;color:var(--ink2)}
.legend div{display:flex;align-items:center;gap:9px}
.legend b{display:block;width:22px;height:2px}
.takeaway{border-left:2px solid var(--ink);padding-left:26px}
.takeaway .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);margin-bottom:12px}
.takeaway .lead{font-family:Spectral,Georgia,serif;font-size:22px;font-weight:300;line-height:1.4;letter-spacing:-.01em}
.takeaway p+p{margin-top:14px}
.takeaway p:not(.lead):not(.k){margin-top:16px;font-size:15.5px;color:var(--ink2)}
.draw{stroke-dasharray:1600;stroke-dashoffset:1600;animation:draw 1.4s linear both;
  animation-timeline:view();animation-range:entry 12% cover 42%}
.draw.d2{animation-range:entry 22% cover 55%}
.fade{animation:rise .6s ease-out both;animation-timeline:view();animation-range:entry 40% cover 62%}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* estimator */
.est{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:1px;margin-top:32px}
.est-in,.est-out{padding:34px 34px 38px}
.est-in{display:grid;gap:30px;align-content:start}
.field-top{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.field-top label{font-size:14.5px;font-weight:600}
.field-top output{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--teal)}
/* estimator sliders: lit track + ball thumb */
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;margin-top:18px;
  height:26px;background:transparent;cursor:pointer;display:block;touch-action:pan-y}
input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:99px;
  background:linear-gradient(90deg,var(--teal) 0 var(--p,50%),var(--rule) var(--p,50%) 100%)}
input[type=range]::-moz-range-track{height:6px;border-radius:99px;background:var(--rule)}
input[type=range]::-moz-range-progress{height:6px;border-radius:99px;background:var(--teal)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
  width:22px;height:22px;margin-top:-8px;border-radius:50%;background:var(--paper);
  border:2px solid var(--teal);box-shadow:0 1px 3px rgba(13,27,38,.28);transition:box-shadow .15s}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;
  background:var(--paper);border:2px solid var(--teal);box-shadow:0 1px 3px rgba(13,27,38,.28)}
input[type=range]:active::-webkit-slider-thumb{box-shadow:0 0 0 7px rgba(20,103,92,.16),0 1px 3px rgba(13,27,38,.28)}
input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 7px rgba(20,103,92,.22)}
input[type=range]:focus-visible{outline:none}
.ends{display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;
  font-size:10.5px;color:var(--mute);margin-top:6px}
.seg{display:flex;border:1px solid #D8D5CE;width:fit-content}
.seg button{font-family:Archivo,sans-serif;font-size:13.5px;font-weight:600;padding:9px 20px;
  border:none;cursor:pointer;background:var(--card);color:var(--ink2)}
.seg button+button{border-left:1px solid #D8D5CE}
.seg button[aria-pressed=true]{background:var(--ink);color:var(--paper)}
.est-out .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute)}
.est-out .big{font-family:Spectral,Georgia,serif;font-size:40px;font-weight:300;line-height:1.1;margin-top:8px}
.rows{margin-top:30px;display:grid;gap:22px}
.row-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.row-top span:first-child{font-size:14px;color:var(--ink2)}
.row-top output{font-family:'IBM Plex Mono',monospace;font-size:17px}
.bar{height:6px;background:var(--track);margin-top:10px;position:relative}
.bar i{position:absolute;top:0;bottom:0;left:0;transition:width .25s ease}
.bar.waste i{background:var(--teal)} .bar.waste~.row-top output,.o-waste{color:var(--teal)}
.bar.idle i{background:var(--oxide)} .o-idle{color:var(--oxide)}
.bar.act i{background:var(--ink)} .o-act{color:var(--ink)}
.maths{margin-top:30px;padding-top:20px;border-top:1px solid var(--rule)}
.maths ul{display:grid;gap:9px;font-family:'IBM Plex Mono',monospace;font-size:12px;
  color:var(--ink2);line-height:1.5}
.maths li.ai{color:var(--oxide)}
.caveat{margin-top:16px;font-size:12.5px;color:var(--mute);line-height:1.5;max-width:54ch}

/* scorecard */
.score-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:48px;
  margin-top:32px;align-items:start}
.qs{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule)}
.q{background:var(--card);padding:22px 24px}
.q-top{display:flex;gap:14px;align-items:baseline}
.q-num{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--mute);flex-shrink:0}
.q p{font-size:16px;line-height:1.45;font-weight:500}
.q-opts{display:flex;gap:8px;margin-top:14px;padding-left:32px;flex-wrap:wrap}
.q-opts button{font-family:Archivo,sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.02em;
  padding:7px 14px;cursor:pointer;border:1px solid #D8D5CE;background:var(--card);color:var(--ink2)}
.q-opts button:hover{border-color:var(--ink);color:var(--ink)}
.q-opts button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.q-dim{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mute);margin-top:12px;padding-left:32px}
.result{position:sticky;top:110px;border:1px solid var(--ink)}
.result-head{background:var(--ink);color:var(--paper);padding:28px 26px}
.result-head .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:#6E8290}
.result-score{display:flex;align-items:baseline;gap:8px;margin-top:10px;
  font-family:Spectral,Georgia,serif;font-weight:300}
.result-score b{font-size:52px;font-weight:300;line-height:1}
.result-score span{font-size:22px;color:#6E8290}
.result-band{font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--teal-lift);margin-top:14px}
.result-note{margin-top:10px;font-size:14.5px;color:var(--slate);line-height:1.5}
.dims{background:var(--card);padding:26px}
.dims .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);margin-bottom:16px}
.dims .list{display:grid;gap:16px}
.dim-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.dim-top span{font-size:13.5px;color:var(--ink2)}
.dim-top output{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink)}
.dim-bar{height:5px;background:var(--track);margin-top:8px;position:relative}
.dim-bar i{position:absolute;top:0;bottom:0;left:0;background:var(--teal);transition:width .25s ease}
.clear{margin-top:24px;background:none;border:1px solid #D8D5CE;padding:9px 16px;
  font-family:Archivo,sans-serif;font-size:13px;font-weight:600;color:var(--ink2);cursor:pointer;width:100%}
.clear:hover{border-color:var(--ink);color:var(--ink)}

/* services */
.svc-row{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:baseline;
  padding:26px 0;border-top:1px solid var(--rule)}
.svc-row:last-of-type{border-bottom:1px solid var(--rule)}
.svc-row h3{font-family:Spectral,Georgia,serif;font-size:23px;font-weight:400;letter-spacing:-.01em}
.svc-row p{margin-top:8px;font-size:15.5px;color:var(--ink2);max-width:66ch}
.fee{text-align:right;white-space:nowrap}
.fee .f{font-family:'IBM Plex Mono',monospace;font-size:14px;letter-spacing:.02em}
.fee .d{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mute);margin-top:5px}
.bundle{background:var(--card);box-shadow:0 0 0 1px var(--rule);border-top:2px solid var(--ink);
  padding:30px 34px;margin-top:24px;display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center}
.bundle h3{font-family:Spectral,Georgia,serif;font-size:24px;font-weight:400}
.bundle p{margin-top:6px;font-size:15px;color:var(--ink2);max-width:56ch}
.fee-note{font-size:13.5px;color:var(--mute);margin-top:16px;max-width:74ch}

/* deliverables */
.dl{margin-top:32px;display:grid;gap:1px}
.dl-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px}
.dl-key{background:var(--ink);color:var(--paper);padding:22px 24px;font-family:Spectral,Georgia,serif;
  font-size:20px;display:flex;align-items:center}
.dl-val{background:var(--card);box-shadow:0 0 0 1px var(--rule);padding:22px 24px;
  font-size:15.5px;color:var(--ink2);display:flex;align-items:center}

/* guides */
.guide{padding:30px 28px;display:flex;flex-direction:column}
.guide .tag{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;margin-bottom:14px;color:var(--teal)}
.guide.sw .tag{color:var(--oxide)}
.guide h3{font-family:Spectral,Georgia,serif;font-size:23px;font-weight:400;letter-spacing:-.015em;line-height:1.25}
.guide p{margin-top:12px;font-size:15px;color:var(--ink2)}
.guide ul{display:grid;margin-top:18px;gap:6px}
.guide li{padding-left:20px;position:relative;font-size:14px;color:var(--ink2)}
.guide li::before{content:"\2014";position:absolute;left:0;color:var(--teal)}
.guide.sw li::before{color:var(--oxide)}
.guide .foot{margin-top:auto;padding-top:22px}
.guide .meta{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--mute);
  padding-top:16px;border-top:1px solid #F1EFEA;display:flex;gap:16px;flex-wrap:wrap}
.guide .btn{margin-top:18px}
.ref{background:var(--card);box-shadow:0 0 0 1px var(--rule);border-top:2px solid var(--ink);
  padding:34px;margin-top:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:40px;align-items:start}
.ref .tag{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--oxide);margin-bottom:14px}
.ref h3{font-family:Spectral,Georgia,serif;font-size:26px;font-weight:400;letter-spacing:-.015em}
.ref p{margin-top:12px;font-size:15.5px;color:var(--ink2);max-width:56ch}
.ref .small{margin-top:14px;font-size:13px;color:var(--mute);max-width:52ch}
.ref-side{border-left:1px solid var(--rule);padding-left:36px}
.ref-side .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);margin-bottom:14px}
.ref-side ul{display:grid;gap:10px}
.ref-side li{padding-left:26px;position:relative;font-size:15px;color:var(--ink2)}
.ref-side li b{position:absolute;left:0;color:var(--teal);font-family:'IBM Plex Mono',monospace;font-weight:400}

/* terms */
.term{padding:30px 28px}
.term .k{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;margin-bottom:16px;font-weight:500}
.term.need .k{color:var(--teal)} .term.not .k{color:var(--mute)} .term.commit .k{color:var(--oxide)}
.term .lead{font-family:Spectral,Georgia,serif;font-size:21px;font-weight:300;line-height:1.35}
.term ul{display:grid;margin-top:18px}
.term li{padding:9px 0 9px 24px;position:relative;font-size:15px;border-bottom:1px solid #F1EFEA}
.term li:last-child{border-bottom:none}
.term li::before{position:absolute;left:0;font-family:'IBM Plex Mono',monospace}
.term.need li::before{content:"\2192";color:var(--teal)}
.term.not li{color:var(--ink2)}
.term.not li::before{content:"\00D7";color:var(--mute)}
.term.commit li::before{content:"\2022";color:var(--oxide)}

/* independence, about, close */
.indep{border-left:3px solid var(--teal);background:var(--card);padding:34px 36px}
.indep p{font-family:Spectral,Georgia,serif;font-size:23px;font-weight:300;line-height:1.45;max-width:64ch}
.indep em{font-style:italic;font-weight:400}
.about{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:48px;padding-top:32px}
.about .lead{font-family:Spectral,Georgia,serif;font-size:24px;font-weight:300;line-height:1.35;max-width:36ch}
.about p{font-size:15.5px;color:var(--ink2);max-width:58ch}
.about .lead+p{margin-top:18px}
.about p+p{margin-top:14px}
.about .k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);margin-bottom:14px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips span{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink2);
  border:1px solid var(--rule);background:var(--card);padding:7px 12px}
.chip-note{margin-top:16px;font-size:13px;color:var(--mute);max-width:54ch}
.close{background:var(--ink);color:var(--paper);padding:76px 40px;text-align:center}
.close h2{font-family:Spectral,Georgia,serif;font-size:clamp(28px,3.6vw,44px);font-weight:300;
  letter-spacing:-.02em;max-width:24ch;margin:0 auto;line-height:1.15;text-wrap:balance}
.close p{margin:16px auto 0;color:var(--slate);max-width:54ch;font-size:16.5px}
.close .btn{margin-top:30px;background:var(--paper);color:var(--ink)}
.close .btn:hover{background:var(--teal-lift);color:var(--ink)}

/* footer */
.site-foot{max-width:var(--wrap);margin:56px auto 0;padding:44px 40px 64px;border-top:1px solid var(--rule);
  display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;
  font-size:13px;color:var(--mute)}
.foot-lock{display:flex;flex-direction:column;gap:10px}
.foot-lock .name{font-family:Spectral,Georgia,serif;font-size:22px;letter-spacing:-.02em;line-height:1;color:var(--ink)}
.foot-lock .name span{color:var(--teal)}
.foot-lock .tag{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--mute)}
.foot-lock .legal{margin-top:6px}
.foot-right{display:flex;gap:20px;flex-wrap:wrap}
.foot-right a{color:var(--ink2)}

/* scroll rail — LED strip with a draggable ball. All motion is transform-driven
   and written once per animation frame by the rail script. */
.rail{position:fixed;right:26px;top:50%;z-index:60;
  width:22px;height:min(560px,68vh);margin-top:calc(min(560px,68vh) / -2);
  display:none;pointer-events:none;-webkit-user-select:none;user-select:none}
/* only the strip and the ball take touches — never the content beside them */
.rail-line,.rail-ball{pointer-events:auto;touch-action:none;-ms-touch-action:none}
.rail-line{position:absolute;left:50%;top:-10px;bottom:-10px;width:20px;margin-left:-10px}
.rail-line::after{content:'';position:absolute;left:9px;top:10px;bottom:10px;width:2px;
  background:var(--rule);border-radius:99px}
.rail-lit{position:absolute;left:50%;top:0;width:2px;margin-left:-1px;height:0;
  background:linear-gradient(180deg,rgba(20,103,92,.35),var(--teal));border-radius:99px;
  box-shadow:0 0 7px rgba(20,103,92,.45)}
.rail-tick{position:absolute;left:50%;top:0;width:6px;height:1px;
  transform:translate(-50%,-50%);transform-origin:50% 50%;
  background:var(--rule);transition:background .2s,width .2s}
.rail-tick.on{background:var(--oxide);width:10px}
.rail-ball{position:absolute;left:50%;top:0;width:14px;height:14px;
  transform:translate(-50%,-50%);will-change:transform;
  border-radius:50%;background:var(--paper);border:2px solid var(--teal);
  box-shadow:0 0 0 0 rgba(20,103,92,0),0 1px 4px rgba(13,27,38,.3);cursor:grab;
  transition:box-shadow .18s}
.rail-ball::before{content:'';position:absolute;left:50%;top:50%;
  width:34px;height:34px;transform:translate(-50%,-50%)}
.rail-ball:focus-visible{outline:none;box-shadow:0 0 0 7px rgba(20,103,92,.22),0 1px 4px rgba(13,27,38,.3)}
.rail.drag .rail-ball{cursor:grabbing;box-shadow:0 0 0 8px rgba(20,103,92,.16),0 1px 4px rgba(13,27,38,.3)}
.rail-pct{position:absolute;right:26px;top:0;transform:translateY(-50%);will-change:transform;
  font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.1em;color:var(--mute);
  opacity:0;transition:opacity .18s;white-space:nowrap;pointer-events:none}
.rail:hover .rail-pct,.rail.drag .rail-pct{opacity:1}
@media (min-width:900px){.rail{display:block}}
/* mobile: right edge, sat low in the right-thumb arc, with a wider grab strip */
@media (max-width:899px){
  .rail{display:block;left:auto;right:0;width:30px;
    top:auto;bottom:11vh;margin-top:0;height:min(340px,42vh)}
  .rail-line{width:30px;margin-left:-15px}
  .rail-line::after{left:14px}
  .rail-ball{width:19px;height:19px}
  .rail-ball::before{width:46px;height:46px}
  .rail-pct{right:34px}
}

/* header: live read-out of where you are, and a smooth progress hairline */
.head-prog{position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none}
.head-prog i{display:block;height:100%;width:100%;background:var(--oxide);
  transform:scaleX(0);transform-origin:0 50%;will-change:transform}
.head-pos{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mute);white-space:nowrap;
  display:flex;align-items:baseline;gap:6px}
.head-pos b{font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums}
.head-pos span{color:var(--slate)}
.site-nav a.on{color:var(--ink);box-shadow:inset 0 -2px 0 var(--oxide)}

:focus-visible{outline:2px solid var(--oxide);outline-offset:3px}
html{scroll-padding-top:var(--head-h,96px)}

@media (max-width:1000px){
  .hero-cols,.fig-cols{grid-template-columns:1fr}
  .hero-side{border-left:none;border-top:1px solid var(--rule);padding:28px 0 0}
  .stats{grid-template-columns:1fr}
  .stat{padding:24px 0;border-right:none;border-bottom:1px solid var(--rule)}
  .stat:last-child{border-bottom:none}
  .result{position:static}
  .ref-side{border-left:none;border-top:1px solid var(--rule);padding:28px 0 0}
}
@media (max-width:720px){
  .band{padding:56px 20px 0}
  .hero-in,.head-in,.site-foot{padding-left:20px;padding-right:20px}
  .hero-in{padding-top:36px}

  /* header: one compact row. Links move into a panel behind a Menu button,
     instead of a sideways-scrolling rail that chopped the labels in half. */
  .head-in{padding-top:11px;padding-bottom:11px;flex-wrap:nowrap;gap:12px;row-gap:0}
  .lockup{flex:1 1 auto;min-width:0}
  .lockup .name{font-size:20px}
  .lockup .tag{font-size:9px;letter-spacing:.14em}
  .head-pos{display:none}
  .head-right{display:contents}
  .head-cta{order:2;font-size:13px;padding:11px 14px;white-space:nowrap}
  .nav-toggle{order:3;display:flex;flex:0 0 auto}

  .site-nav{order:4;position:absolute;top:100%;left:0;right:0;z-index:5;
    display:block;gap:0;background:var(--paper);border-bottom:1px solid var(--rule);
    box-shadow:0 16px 30px rgba(13,27,38,.10);
    max-height:0;overflow:hidden;visibility:hidden;
    transition:max-height .24s ease,visibility 0s linear .24s}
  body.nav-open .site-nav{max-height:72vh;overflow-y:auto;visibility:visible;
    transition:max-height .26s ease,visibility 0s}
  .site-nav a{display:flex;align-items:center;min-height:52px;padding:0 20px;
    font-size:16px;color:var(--ink);border-top:1px solid var(--rule)}
  .site-nav a:first-child{border-top:none}
  .site-nav a.on{box-shadow:inset 3px 0 0 var(--oxide);color:var(--ink)}

  /* the drag scrubber sat over the right edge of the body text on a phone */
  .rail{display:none}

  .svc-row,.bundle{grid-template-columns:1fr}
  .fee{text-align:left}
  .est-in,.est-out,.prop,.term,.guide,.ref{padding-left:20px;padding-right:20px}
  .close{padding:56px 20px}
  .site-foot{flex-direction:column;align-items:flex-start}

  /* tap targets: everything interactive clears 44px */
  .q{padding:20px}
  .q-top{gap:11px}
  .q-opts{padding-left:0;margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
  .q-opts button{min-height:44px;font-size:13.5px;padding:10px 12px}
  .q-dim{padding-left:0}
  input[type=range]{height:44px;margin-top:8px}
  .src-btn{display:inline-flex;align-items:center;min-height:44px;margin-top:4px}
  .btn-lg,.btn-line{padding:15px 24px}

  /* mono labels were 10.5px with wide tracking, hard going on a phone */
  .hero-side .k,.takeaway .k,.est-out .k,.result-head .k,.dims .k,.ref-side .k,
  .about .k,.fee .d,.q-dim,.result-band{font-size:11.5px;letter-spacing:.12em}
  .eyebrow{letter-spacing:.16em}
}
@media (prefers-reduced-motion:reduce){
  .rail-ball,.rail-lit,.rail-tick,.head-prog i{transition:none}
  .draw{animation:none;stroke-dashoffset:0}
  .fade{animation:none}
  html{scroll-behavior:auto}
}
