@font-face{font-family:"Instrument Serif";src:url(/fonts/instrument-serif-latin-400-normal.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(/fonts/instrument-serif-latin-400-italic.woff2) format("woff2");font-style:italic;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/fonts/jetbrains-mono-latin-300-normal.woff2) format("woff2");font-weight:300;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url(/fonts/jetbrains-mono-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
:root{--void:#120f0d;--deep:#1b1714;--glass:#241e1a;--line:#f3d9c433;--lum:#ffb48a;--lum-2:#ffd9b8;--cold:#9fd8d2;--text:#efe4d8;--dim:#b3a698;
--serif:"Instrument Serif","Times New Roman",serif;--mono:"JetBrains Mono",ui-monospace,monospace}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--void)}
body{margin:0;color:var(--text);background:var(--void);font:300 .98rem/1.75 var(--mono);overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
 background:radial-gradient(60vmax 50vmax at 78% 12%,#ff9a6224,transparent 60%),radial-gradient(50vmax 40vmax at 10% 90%,#7fc8c018,transparent 60%)}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:1;opacity:.07;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
main,header,footer{position:relative;z-index:2}
img{max-width:100%;display:block}
a{color:var(--lum-2);text-decoration:underline;text-decoration-color:#ffb48a66;text-underline-offset:.25em}
a:hover{color:var(--lum)}
:focus-visible{outline:2px solid var(--cold);outline-offset:4px}
.skip{position:absolute;left:-999px;top:10px;background:var(--lum);color:var(--void);padding:.5rem 1rem;z-index:300}
.skip:focus{left:10px}
.m{font:400 .7rem/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
/* instrument header */
.ihead{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:1rem clamp(1rem,3vw,2.4rem);z-index:60;pointer-events:none}
.ihead>*{pointer-events:auto}
.word{display:flex;align-items:baseline;gap:.5rem;text-decoration:none;color:var(--text)}
.word b{font:400 italic 1.7rem/1 var(--serif);letter-spacing:.01em}
.word b i{font-style:normal;color:var(--lum)}
.word small{font:400 .62rem var(--mono);letter-spacing:.2em;color:var(--dim)}
.aperture{display:flex;align-items:center;gap:.8rem;background:#120f0dcc;border:1px solid var(--line);border-radius:999px;padding:.35rem .5rem .35rem 1rem;color:var(--text);font:400 .72rem var(--mono);letter-spacing:.14em;text-transform:uppercase;cursor:pointer;backdrop-filter:blur(8px)}
.aperture .eye{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle,var(--lum-2) 0 18%,var(--lum) 19% 30%,transparent 31%),conic-gradient(from 0deg,#ffb48a55,#9fd8d255,#ffb48a55);border:1px solid var(--lum);transition:transform .6s}
.aperture:hover .eye{transform:rotate(120deg) scale(1.06)}
.aperture[aria-expanded=true] .eye{transform:rotate(240deg) scale(.86)}
/* index overlay */
.index{position:fixed;inset:0;z-index:55;background:#0d0b0af2;backdrop-filter:blur(14px);overflow:auto;padding:6.5rem clamp(1rem,6vw,6rem) 3rem;opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.index.open{opacity:1;visibility:visible}
.index ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:0 4vw}
.index li{border-top:1px solid var(--line)}
.index a{display:grid;grid-template-columns:3.2rem 1fr;gap:.2rem 1rem;padding:1rem 0;text-decoration:none;color:var(--text);transition:transform .35s}
.index a:hover,.index a:focus-visible{transform:translateX(8px);color:var(--lum-2)}
.index a span.n{font:400 .72rem var(--mono);color:var(--lum);padding-top:.7rem}
.index a strong{font:400 clamp(1.6rem,3vw,2.4rem)/1.1 var(--serif)}
.index a em{grid-column:2;font:300 .8rem var(--mono);font-style:normal;color:var(--dim)}
.index a[aria-current=page] strong{font-style:italic;color:var(--lum)}
.index .contactline{margin-top:2.4rem;display:flex;flex-wrap:wrap;gap:1rem 2rem}
@media (max-width:760px){.index ol{grid-template-columns:1fr}.word small{display:none}.aperture .lbl{display:none}}
/* gauge */
.gauge{position:fixed;right:clamp(.6rem,1.6vw,1.4rem);top:50%;height:38vh;width:1px;background:var(--line);transform:translateY(-50%);z-index:50}
.gauge i{position:absolute;inset:0;background:linear-gradient(var(--lum),var(--cold));transform-origin:top;transform:scaleY(var(--p,0))}
.gauge span{position:absolute;top:-1.8rem;left:50%;transform:translateX(-50%);font:400 .6rem var(--mono);color:var(--dim);white-space:nowrap}
@media (max-width:760px){.gauge{display:none}}
/* plate hero */
.plate-hero{min-height:88vh;min-height:88dvh;display:grid;place-items:center;text-align:center;padding:8rem 1.2rem 4rem;position:relative;overflow:hidden}
.orb{position:absolute;width:min(70vmin,620px);aspect-ratio:1;border-radius:50%;left:50%;top:50%;translate:-50% -50%;
 background:radial-gradient(circle at 38% 34%,#ffe3c8 0,#ffb48a 18%,#d4673e55 42%,transparent 66%);filter:blur(10px);opacity:.75;animation:breathe 9s ease-in-out infinite;z-index:-1}
.orb.b{width:min(40vmin,360px);background:radial-gradient(circle,#9fd8d266,transparent 65%);animation:drift 14s ease-in-out infinite;translate:-10% -80%}
@keyframes breathe{50%{transform:scale(1.08);opacity:.9}}
@keyframes drift{50%{transform:translate(-40%,30%)}}
.rings{position:absolute;inset:0;z-index:-1;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 58px,#f3d9c40d 58px 59px)}
.plate-hero h1{font:400 clamp(2.8rem,8.4vw,7.6rem)/.96 var(--serif);margin:1rem auto 1.4rem;max-width:14ch;letter-spacing:-.015em}
.plate-hero h1 em{color:var(--lum)}
.plate-hero p.lede{max-width:40rem;margin:0 auto;color:var(--text);font-size:1.02rem}
.plate-hero.short{min-height:62vh;min-height:62dvh}
.plate-hero.short h1{font-size:clamp(2.5rem,6.4vw,5.4rem);max-width:18ch}
.coords{display:flex;justify-content:center;gap:1.4rem;flex-wrap:wrap}
.fade{animation:fade 1.4s ease both}.fade.f2{animation-delay:.25s}.fade.f3{animation-delay:.5s}
@keyframes fade{from{opacity:0;filter:blur(6px);transform:translateY(10px)}}
.cta{display:inline-flex;gap:.7rem;align-items:center;margin:2rem .4rem 0;padding:.9rem 1.4rem;border:1px solid var(--lum);border-radius:999px;color:var(--lum-2);text-decoration:none;font:400 .76rem var(--mono);letter-spacing:.12em;text-transform:uppercase;background:#ffb48a0f;cursor:pointer;transition:background .3s}
.cta:hover{background:#ffb48a26;color:var(--lum-2)}
.cta.solid{background:var(--lum);color:var(--void)}
.cta.solid:hover{background:var(--lum-2);color:var(--void)}
/* plates */
.plates{width:min(1100px,92vw);margin:0 auto;padding:2rem 0 5rem}
.plate{position:relative;border:1px solid var(--line);padding:clamp(1.5rem,4vw,3.4rem);margin:0 0 3rem;background:linear-gradient(160deg,#241e1a99,#16121099)}
.plate::before,.plate::after{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--lum)}
.plate::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
.plate::after{bottom:-1px;right:-1px;border-left:0;border-top:0}
.plate>header{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:.9rem;margin-bottom:1.6rem}
.plate h2{font:400 clamp(1.8rem,3.6vw,3rem)/1.05 var(--serif);margin:0}
.plate h2 em{color:var(--lum)}
.plate h3{font:400 1.55rem/1.2 var(--serif);margin:1.8rem 0 .4rem;color:var(--lum-2)}
.plate p{margin:0 0 1.1rem;max-width:68ch}
.plate ul{padding:0;list-style:none;margin:.6rem 0 1.2rem;max-width:68ch}
.plate ul li{padding:.45rem 0 .45rem 1.6rem;position:relative;border-bottom:1px dashed #f3d9c41f}
.plate ul li::before{content:"";position:absolute;left:0;top:1.05rem;width:.7rem;height:1px;background:var(--lum)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem}
.offset{margin-left:clamp(0px,10vw,140px)}
.offset-r{margin-right:clamp(0px,10vw,140px)}
.reveal{opacity:0;transform:translateY(24px);transition:opacity 1.1s ease,transform 1.1s ease}
.reveal.in{opacity:1;transform:none}
@media (max-width:820px){.cols{grid-template-columns:1fr}.offset,.offset-r{margin-left:0;margin-right:0}}
/* constellation of services */
.constellation{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.star{background:var(--void);padding:1.6rem;text-decoration:none;color:var(--text);display:flex;flex-direction:column;gap:.6rem;min-height:220px;position:relative;overflow:hidden;transition:background .4s}
.star::after{content:"";position:absolute;width:140px;height:140px;border-radius:50%;right:-50px;top:-50px;background:radial-gradient(circle,#ffb48a40,transparent 70%);transition:transform .7s}
.star:hover{background:#1f1916;color:var(--text)}
.star:hover::after{transform:scale(1.8)}
.star strong{font:400 1.8rem/1.05 var(--serif)}
.star span{font-size:.85rem;color:var(--dim)}
.star .m{margin-top:auto;color:var(--lum)}
.s2{grid-column:span 2}.s3{grid-column:span 3}.s4{grid-column:span 4}
@media (max-width:820px){.constellation{grid-template-columns:1fr}.s2,.s3,.s4{grid-column:auto}}
/* figures */
.fig{margin:0}
.fig img{width:100%;object-fit:cover;filter:sepia(.4) hue-rotate(-12deg) contrast(1.1) brightness(.8);mix-blend-mode:screen}
.fig figcaption{font:400 .68rem/1.5 var(--mono);color:var(--dim);margin-top:.6rem;letter-spacing:.06em}
.fig.tall img{aspect-ratio:5/7}
.fig.wide img{aspect-ratio:2/1}
/* instruments */
.instr{display:grid;grid-template-columns:1.1fr .9fr;gap:2.4rem;align-items:center}
@media (max-width:820px){.instr{grid-template-columns:1fr}}
.slider{margin:0 0 1.3rem}
.slider label{display:flex;justify-content:space-between;font:400 .74rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.slider output{color:var(--lum)}
input[type=range]{width:100%;accent-color:var(--lum);margin:.5rem 0 0}
.dial{width:min(320px,80vw);aspect-ratio:1;border-radius:50%;margin:0 auto;position:relative;display:grid;place-items:center;
 background:conic-gradient(var(--lum) calc(var(--v,0)*1%),#f3d9c41a 0);transition:--v .6s}
.dial::before{content:"";position:absolute;inset:10px;border-radius:50%;background:radial-gradient(circle at 50% 40%,#2a221d,var(--void))}
.dial div{position:relative;text-align:center;padding:2rem}
.dial strong{display:block;font:400 italic 1.7rem/1.1 var(--serif);color:var(--lum-2)}
.dial small{font:400 .7rem var(--mono);color:var(--dim)}
.reading{margin-top:1.4rem;border-left:1px solid var(--lum);padding-left:1rem}
.search{display:flex;gap:.6rem;align-items:center;border-bottom:1px solid var(--lum);margin-bottom:1.4rem}
.search input{background:transparent;border:0;color:var(--text);font:400 1.6rem var(--serif);padding:.6rem 0;flex:1}
.search input:focus{outline:none}
.search:focus-within{border-color:var(--cold)}
.notes{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1px;background:var(--line);list-style:none;padding:0;border:1px solid var(--line)}
.notes li{background:var(--void);padding:1.3rem}
.notes li[hidden]{display:none}
.notes h3{margin:.3rem 0 .4rem;font:400 1.4rem/1.15 var(--serif);color:var(--text)}
.notes p{font-size:.86rem;margin:0}
.signal label{display:flex;gap:.8rem;align-items:flex-start;padding:.55rem 0;border-bottom:1px dashed #f3d9c41f;cursor:pointer}
.signal input{accent-color:var(--lum);width:1.05rem;height:1.05rem;margin-top:.3rem;flex:none}
pre.report{white-space:pre-wrap;font:400 .82rem/1.6 var(--mono);background:#0b0908;border:1px solid var(--line);padding:1rem;color:var(--cold)}
/* forms */
form.probe{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.6rem}
form.probe .w{grid-column:1/-1}
form.probe label.fl{display:flex;flex-direction:column;gap:.3rem;font:400 .7rem var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
form.probe input,form.probe select,form.probe textarea{background:#0b0908;border:0;border-bottom:1px solid #f3d9c455;color:var(--text);font:400 1.15rem var(--serif);padding:.7rem .2rem;border-radius:0;width:100%}
form.probe select option{background:var(--deep)}
form.probe textarea{min-height:8rem;resize:vertical;border:1px solid #f3d9c433;padding:.7rem}
form.probe input:focus,form.probe textarea:focus,form.probe select:focus{outline:none;border-color:var(--lum)}
.chk{display:flex;gap:.8rem;align-items:flex-start;font-size:.86rem}
.chk input{accent-color:var(--lum);width:1.05rem;height:1.05rem;margin-top:.3rem;flex:none}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.out{min-height:1.4rem;font-size:.9rem}
.out.ok{border:1px solid var(--cold);color:var(--cold);padding:1rem}
.out.no{border:1px solid #ff8a70;color:#ffb3a1;padding:1rem}
@media (max-width:720px){form.probe{grid-template-columns:1fr}}
.voidmap{border:1px dashed var(--lum);aspect-ratio:2/1;display:grid;place-items:center;text-align:center;padding:1.4rem;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 22px,#ffb48a14 22px 23px),var(--void)}
.voidmap p{background:#120f0de6;padding:1rem 1.2rem;max-width:30rem;margin:0}
@media (max-width:600px){.voidmap{aspect-ratio:auto;min-height:260px}}
/* footer */
.ifoot{border-top:1px solid var(--line);padding:4rem clamp(1rem,6vw,6rem) 2.5rem;position:relative}
.ifoot .big{font:400 italic clamp(2.4rem,7vw,6rem)/1 var(--serif);color:#efe4d826;margin:0 0 2rem}
.ifoot .g{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;font-size:.86rem}
.ifoot h2{font:400 .7rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--lum);margin:0 0 .7rem}
.ifoot ul{list-style:none;padding:0;margin:0}.ifoot li{margin:.3rem 0}
.ifoot .fine{margin-top:2.5rem;font-size:.72rem;color:var(--dim);display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}
.ifoot button{background:none;border:1px solid var(--line);color:var(--text);font:400 .72rem var(--mono);padding:.4rem .8rem;border-radius:999px;cursor:pointer}
@media (max-width:820px){.ifoot .g{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.ifoot .g{grid-template-columns:1fr}}
/* consent */
.consent-bar{position:fixed;left:clamp(.6rem,2vw,1.6rem);bottom:clamp(.6rem,2vw,1.6rem);width:min(430px,calc(100vw - 1.2rem));background:#1b1714f2;border:1px solid var(--lum);padding:1.3rem;z-index:120;backdrop-filter:blur(10px)}
.consent-bar[hidden]{display:none}
.consent-bar h2{font:400 italic 1.5rem var(--serif);margin:0 0 .4rem}
.consent-bar p{font-size:.82rem;margin:0 0 1rem}
.consent-bar .pair{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.consent-bar .cta{margin:0;justify-content:center;padding:.8rem .5rem}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
/* overflow fixes: grid items must be allowed to shrink below input intrinsic width */
form.probe{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
form.probe>*,.cols>*,.instr>*{min-width:0}
form.probe input,form.probe select,form.probe textarea{min-width:0;max-width:100%}
.plate h1,.plate h2,.plate-hero h1{overflow-wrap:break-word}
.plate a{overflow-wrap:anywhere}
@media (max-width:720px){form.probe{grid-template-columns:minmax(0,1fr)}}
/* Consent checkbox is a fixed-size control, not a full-width text field. */
form.probe .chk input{width:1.05rem;min-width:1.05rem;max-width:1.05rem;padding:0;flex:0 0 1.05rem}
form.probe .chk span{min-width:0;overflow-wrap:anywhere}
