/* OrbioGate site stylesheet: tokens, base, nav, ticker, type, controls, data, hero, landing, footer,
   skeleton, motion. Every transition is 150-250 ms ease-out; reduced motion switches all of them off. */
:root{color-scheme:dark;
--bg:#04050f;--bg2:#10131a;--bg3:#161a23;--ink:#c9d6e6;--ink2:#a9bbd3;--hi:#f5f9ff;
--mute:#7d8ea8;--mute2:#5d6f88;--mute3:#44556d;--line:#ffffff1f;--line2:#ffffff0f;--line3:#ffffff3d;
--accent:#ff8a3d;--accent-deep:#a8460f;--amber:#ffc46b;--good:#5fd38d;--warn:#ffc46b;--bad:#ff6b5b;
--serif:"Newsreader",Georgia,"Times New Roman",serif;
--mono:"Spline Sans Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
--gut:clamp(16px,4vw,40px);--navh:64px;--sec-pad:clamp(64px,10vw,128px);
--ease:ease-out;--t-fast:150ms;--t:200ms;--t-slow:250ms}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--navh) + 16px);scroll-behavior:smooth}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);
font:14px/1.6 var(--mono);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
main{flex:1 0 auto}
a{color:inherit}
::selection{background:#ff8a3d59;color:var(--hi)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
[hidden]{display:none!important}
.wrap{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--gut)}
.wrap.narrow{max-width:880px}
.skip{position:absolute;left:-9999px;top:8px;z-index:50;background:var(--accent);color:var(--bg);padding:6px 10px}
.skip:focus{left:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--mute)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}

/* nav: sticky, blurred; the hairline appears once the page scrolls; a menu button under 720 px */
.nav{position:sticky;top:0;z-index:30;background:#04050fb8;-webkit-backdrop-filter:saturate(140%) blur(12px);
backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid transparent;
transition:border-color var(--t) var(--ease),background-color var(--t) var(--ease)}
.nav.scrolled,.nav.open{border-bottom-color:var(--line);background:#04050feb}
.nav .wrap{display:flex;align-items:center;gap:16px;height:var(--navh)}
.brand{display:inline-flex;align-items:center;gap:11px;font-weight:600;font-size:14px;letter-spacing:.2em;
text-decoration:none;color:var(--hi);white-space:nowrap}
.brand .mark{flex:none;filter:drop-shadow(0 0 10px #ff8a3d40)}
.links{margin-left:auto;display:flex;align-items:center;gap:clamp(18px,3vw,36px)}
.links a{position:relative;font-size:12px;letter-spacing:.16em;text-decoration:none;color:var(--mute);padding:8px 0;
transition:color var(--t-fast) var(--ease)}
.links a::after{content:"";position:absolute;left:0;right:0;bottom:1px;height:2px;border-radius:1px;background:var(--accent);
transform:scaleX(0);transform-origin:left;transition:transform var(--t) var(--ease)}
.links a:hover{color:var(--hi)}
.links a[aria-current=page]{color:var(--hi)}
.links a[aria-current=page]::after{transform:none}
.nav-toggle{display:none;margin-left:auto;align-items:center;justify-content:center;width:42px;height:42px;padding:0;
background:transparent;border:1px solid var(--line3);border-radius:8px;color:var(--hi);cursor:pointer;
transition:border-color var(--t-fast) var(--ease)}
.nav-toggle:hover{border-color:var(--mute)}
.nav-toggle i,.nav-toggle i::before,.nav-toggle i::after{display:block;width:18px;height:1.5px;border-radius:1px;background:currentColor}
.nav-toggle i{position:relative;transition:background-color var(--t-fast) var(--ease)}
.nav-toggle i::before,.nav-toggle i::after{content:"";position:absolute;left:0;transition:transform var(--t) var(--ease)}
.nav-toggle i::before{transform:translateY(-6px)}
.nav-toggle i::after{transform:translateY(6px)}
.nav.open .nav-toggle i{background:transparent}
.nav.open .nav-toggle i::before{transform:rotate(45deg)}
.nav.open .nav-toggle i::after{transform:rotate(-45deg)}
@media (max-width:720px){
html.js .nav-toggle{display:inline-flex}
html.js .links{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
padding:6px var(--gut) 14px;background:#04050ff7;border-bottom:1px solid var(--line);
visibility:hidden;opacity:0;transform:translateY(-6px);
transition:opacity var(--t) var(--ease),transform var(--t) var(--ease),visibility 0s linear var(--t)}
html.js .nav.open .links{visibility:visible;opacity:1;transform:none;
transition:opacity var(--t) var(--ease),transform var(--t) var(--ease)}
html.js .links a{padding:15px 0;font-size:13px;border-bottom:1px solid var(--line2)}
html.js .links a:last-child{border-bottom:0}
html.js .links a::after{right:auto;width:28px;bottom:9px}
}

/* live ticker: a marquee of two identical groups sliding by -50%; pauses on hover and focus */
.ticker{display:flex;align-items:center;height:38px;border-bottom:1px solid var(--line);background:var(--bg2);
font-size:12px;letter-spacing:.08em;text-transform:uppercase;overflow:hidden}
.tk-live{flex:none;display:flex;align-items:center;gap:9px;height:100%;padding:0 16px 0 var(--gut);
border-right:1px solid var(--line);color:var(--hi)}
.tk-track{flex:1;min-width:0;overflow:hidden;
-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 48px),transparent);
mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 48px),transparent)}
.tk-run{display:flex;width:max-content}
.tk-run.on{animation:tk 60s linear infinite}
.ticker:hover .tk-run,.ticker:focus-within .tk-run{animation-play-state:paused}
.tk-g{display:flex;flex:none}
.tk-i{position:relative;padding:0 22px;white-space:nowrap;color:var(--mute)}
.tk-i::after{content:"";position:absolute;right:-2px;top:50%;width:4px;height:4px;margin-top:-2px;transform:rotate(45deg);
background:var(--mute3)}
.tk-i b{font-weight:500;color:var(--hi)}
.tk-i b.good{color:var(--good)}.tk-i b.warn{color:var(--warn)}.tk-i b.bad{color:var(--bad)}
@keyframes tk{to{transform:translateX(-50%)}}
.pulse{position:relative;width:8px;height:8px;border-radius:50%;background:var(--mute2);flex:none}
.pulse.good{background:var(--good)}.pulse.warn{background:var(--warn)}.pulse.bad{background:var(--bad)}
.pulse.good::after,.pulse.warn::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;
animation:ring 2.2s ease-out infinite}
@keyframes ring{from{transform:scale(1);opacity:.7}to{transform:scale(3.2);opacity:0}}

/* type: display serif for headings, mono for labels and numbers */
.eyebrow{margin:0 0 18px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute)}
.eyebrow b{color:var(--accent);font-weight:500}
.label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.display{margin:0;font:300 clamp(56px,11vw,136px)/.9 var(--serif);letter-spacing:-.03em;color:var(--hi)}
.h1{margin:0;font:300 clamp(40px,7vw,76px)/.98 var(--serif);letter-spacing:-.025em;color:var(--hi)}
.h2{margin:0;font:300 clamp(34px,5vw,56px)/1.02 var(--serif);letter-spacing:-.02em;color:var(--hi)}
.display em,.h1 em,.h2 em,.foot-brand em{font-style:italic;color:var(--accent)}
.display em{text-shadow:0 0 28px #ff8a3d59,0 0 80px #ff8a3d2e}
.lede{margin:0;max-width:58ch;font-size:15px;color:var(--ink)}
code{font-family:var(--mono);font-size:.92em;color:var(--hi);background:#ffffff0d;border:1px solid var(--line2);
border-radius:4px;padding:1px 5px;overflow-wrap:anywhere}
pre{margin:0 0 16px;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:14px 16px;
overflow-x:auto;font:13px/1.65 var(--mono);color:var(--hi)}
pre code{background:none;border:0;padding:0;font-size:inherit;overflow-wrap:normal}
pre .c{color:var(--mute2)}
.code{position:relative;margin:0 0 16px}
.code pre{margin:0;padding-right:92px}
.code .copy{position:absolute;top:8px;right:8px;font:600 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;
color:var(--ink2);background:var(--bg3);border:1px solid var(--line3);border-radius:6px;padding:7px 10px;cursor:pointer;
box-shadow:none;transition:color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),background-color var(--t-fast) var(--ease)}
.code .copy:hover{color:var(--hi);border-color:var(--mute)}
.code .copy.done{color:var(--good);border-color:#5fd38d99;background:#5fd38d14}

/* controls: offset-shadow slab buttons with an arrow cell */
.actions{display:flex;flex-wrap:wrap;gap:16px}
.btn{display:inline-flex;align-items:stretch;font:600 12px/1 var(--mono);letter-spacing:.14em;text-decoration:none;
color:var(--hi);background:var(--bg2);border:1px solid var(--line3);border-radius:6px;
box-shadow:4px 4px 0 #ffffff1a;transition:transform var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
.btn>span{display:flex;align-items:center;padding:15px 18px}
.btn>.arr{padding:15px 14px;border-left:1px solid var(--line3);font-size:14px}
.btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 #ffffff1a}
.btn.accent{background:var(--accent);border-color:var(--accent);color:#04050f;box-shadow:4px 4px 0 var(--accent-deep)}
.btn.accent>.arr{border-left-color:#04050f40}
.btn.accent:hover{box-shadow:2px 2px 0 var(--accent-deep)}

/* data: status dots, badges, tables */
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--mute2);flex:none}
.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:500;line-height:1;letter-spacing:.06em;
padding:4px 8px;border-radius:999px;border:1px solid var(--line3);color:var(--hi);white-space:nowrap}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mute2)}
.badge.good{border-color:#5fd38d99;background:#5fd38d1f}.badge.good::before{background:var(--good)}
.badge.warn{border-color:#ffc46b99;background:#ffc46b1a}.badge.warn::before{background:var(--warn)}
.badge.bad{border-color:#ff6b5bb3;background:#ff6b5b1f}.badge.bad::before{background:var(--bad)}
.badge.accent{border-color:#ff8a3d99;background:#ff8a3d1a}.badge.accent::before{background:var(--accent)}
.badge.plain::before{display:none}
.tw{overflow-x:auto;background:var(--bg2);border:1px solid var(--line);border-radius:10px}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{padding:9px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line2)}
th{color:var(--mute);font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:right}

/* hero: a faint grid under two low-alpha orange bands around a dark slit (the "gate") */
.hero{position:relative;isolation:isolate;overflow:hidden;padding:clamp(64px,11vw,136px) 0 clamp(48px,7vw,88px);
border-bottom:1px solid var(--line)}
.hero::before{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;
background:radial-gradient(48% 9% at 70% 30%,#ff8a3d4d,transparent 72%),
radial-gradient(56% 8% at 70% 74%,#ff8a3d38,transparent 72%),
radial-gradient(42% 30% at 70% 52%,#10131acc,transparent 75%),
radial-gradient(60% 55% at 78% 18%,#ff8a3d14,transparent 70%);filter:blur(10px)}
.hero::after{content:"";position:absolute;z-index:-2;inset:0;pointer-events:none;
background-image:repeating-linear-gradient(90deg,#ffffff0b 0 1px,transparent 1px 56px),
repeating-linear-gradient(0deg,#ffffff0b 0 1px,transparent 1px 56px);
-webkit-mask-image:radial-gradient(75% 70% at 62% 38%,#000 15%,transparent 78%);
mask-image:radial-gradient(75% 70% at 62% 38%,#000 15%,transparent 78%)}
.hero.small{padding:clamp(48px,8vw,96px) 0 clamp(36px,5vw,56px)}
.hero-lede{margin-top:clamp(28px,4vw,40px)}
.hero .actions{margin-top:28px}

/* stat strip (landing hero) */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(40px,6vw,64px);
border:1px solid var(--line);border-radius:12px;background:#10131ab3;overflow:hidden}
.stat{min-width:0;padding:18px 20px 16px;border-left:1px solid var(--line)}
.stat:first-child{border-left:0}
.stat b{display:block;font:400 clamp(26px,3.6vw,40px)/1.05 var(--mono);letter-spacing:-.02em;color:var(--hi);
overflow-wrap:anywhere}
.stat b.good{color:var(--good)}.stat b.warn{color:var(--warn)}.stat b.bad{color:var(--bad)}
.stat span{display:block;margin-top:8px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.stats-src{margin:12px 0 0;font-size:12px;color:var(--mute)}
.stats-src.bad{color:var(--bad)}
@media (max-width:720px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat:nth-child(3){border-left:0}
.stat:nth-child(n+3){border-top:1px solid var(--line)}}

/* sections */
.sec{padding:var(--sec-pad) 0;border-bottom:1px solid var(--line)}
main>.sec:last-child,main>.wrap>.sec:last-child{border-bottom:0}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,26rem);gap:18px 48px;align-items:end;
margin-bottom:clamp(28px,5vw,56px)}
.sec-head p{margin:0;color:var(--ink2)}
@media (max-width:820px){.sec-head{grid-template-columns:minmax(0,1fr)}}

/* numbered chapters on a rail: a node per chapter, joined by a vertical line */
.chapters{--rail:clamp(52px,8vw,96px);position:relative;list-style:none;margin:0;padding:0}
.chapters::before{content:"";position:absolute;top:30px;bottom:30px;left:calc(var(--rail) / 2);width:1px;
background:linear-gradient(180deg,var(--accent),var(--line3) 30%,var(--line2))}
.ch{position:relative;display:grid;grid-template-columns:var(--rail) minmax(0,1fr);gap:0 clamp(16px,3vw,40px)}
.ch-n{position:relative;z-index:1;justify-self:center;display:grid;place-items:center;width:clamp(44px,5.4vw,60px);
height:clamp(44px,5.4vw,60px);margin-top:22px;border-radius:50%;background:var(--bg);border:1px solid var(--line3);
font:500 clamp(13px,1.5vw,17px)/1 var(--mono);color:var(--mute)}
.ch:first-child .ch-n{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 6px #ff8a3d12,0 0 28px #ff8a3d40}
.ch-c{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,30rem);gap:14px 40px;padding:28px 0 40px;
border-bottom:1px solid var(--line2)}
.ch:last-child .ch-c{border-bottom:0;padding-bottom:8px}
.ch .eyebrow{margin-bottom:8px}
.ch h3{margin:0;font:300 clamp(28px,3.4vw,42px)/1.06 var(--serif);color:var(--hi)}
.ch-body{color:var(--ink2)}
.ch-body p{margin:0 0 12px}
.ch-body a{color:var(--hi);text-decoration-color:var(--accent);text-underline-offset:3px}
.ticks{list-style:none;margin:0 0 14px;padding:0}
.ticks li{position:relative;padding:3px 0 3px 22px}
.ticks li::before{content:"\2192";position:absolute;left:0;color:var(--accent)}
.ticks .badge{margin-left:6px;vertical-align:1px}
.scramble{font-size:clamp(18px,2.4vw,26px);letter-spacing:.12em;color:var(--mute3);overflow-wrap:anywhere}
@media (max-width:820px){.ch-c{grid-template-columns:minmax(0,1fr)}}
/* failover mini-cards: code + cooldown */
.mcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:6px 0 16px}
.mcard{position:relative;min-width:0;overflow:hidden;background:var(--bg2);border:1px solid var(--line);border-radius:10px;
padding:12px 12px 11px}
.mcard::before{content:"";position:absolute;left:0;top:0;right:0;height:2px;background:var(--c,var(--accent))}
.mcard b{display:block;font:500 20px/1.1 var(--mono);color:var(--hi)}
.mcard span{display:block;margin-top:8px;font:500 13px/1.2 var(--mono);color:var(--c,var(--accent))}
.mcard small{display:block;margin-top:3px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
@media (max-width:480px){.mcards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* feature cards */
.feats{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:16px}
.feat{min-width:0;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:22px 22px 24px;
transition:border-color var(--t) var(--ease),transform var(--t) var(--ease),background-color var(--t) var(--ease)}
.feat:hover{border-color:var(--line3);background:#12161e;transform:translateY(-2px)}
.feat:first-child,.feat.wide{border-color:#ff8a3d59}
.feat:first-child:hover,.feat.wide:hover{border-color:#ff8a3db3}
.feat-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ico{display:grid;place-items:center;width:42px;height:42px;flex:none;border:1px solid var(--line);border-radius:10px;
color:var(--accent);background:#ff8a3d0d}
.ico svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.feat .n{font:italic 300 30px/1 var(--serif);color:var(--mute3)}
.feat h3{margin:18px 0 8px;font:600 13px/1.35 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--hi)}
.feat p{margin:0;font-size:13px;color:var(--ink2)}
.feat.wide{grid-column:1/-1}
.feat .more{margin-top:12px}
.feat .more a{color:var(--hi);text-decoration-color:var(--accent);text-underline-offset:3px}

/* dev updates: a vertical timeline */
.log{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:28px 56px;background:var(--bg2);
border:1px solid var(--line);border-radius:12px;padding:clamp(24px,4vw,48px)}
.log .h2{margin-bottom:14px}
.tl{position:relative;list-style:none;margin:0;padding:0}
.tl::before{content:"";position:absolute;left:5px;top:10px;bottom:10px;width:1px;
background:linear-gradient(180deg,var(--accent),var(--line3) 35%,var(--line2))}
.tl li{position:relative;padding:0 0 26px 34px}
.tl li:last-child{padding-bottom:0}
.tl li::before{content:"";position:absolute;left:0;top:5px;width:11px;height:11px;border-radius:50%;background:var(--bg2);
border:1px solid var(--line3)}
.tl li:first-child::before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px #ff8a3d24}
.tl time{display:block;margin-bottom:4px;font:500 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;
color:var(--accent)}
.tl p{margin:0;color:var(--hi)}
@media (max-width:820px){.log{grid-template-columns:minmax(0,1fr)}}

/* footer: wordmark, then Product / Status / Meta */
.foot{position:relative;border-top:1px solid var(--line);padding:56px 0 32px;margin-top:clamp(48px,8vw,96px)}
.foot::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;
background:linear-gradient(90deg,transparent,var(--accent) 30%,var(--amber) 60%,transparent)}
.foot-brand{display:block;font:300 clamp(52px,11vw,136px)/.9 var(--serif);letter-spacing:-.035em;color:var(--hi);
text-decoration:none}
.foot-cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr);gap:28px 48px;margin-top:40px;
padding-top:28px;border-top:1px solid var(--line2)}
.foot-h{margin:0 0 12px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute)}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin:0 0 8px}
.foot li a{font-size:13px;color:var(--ink2);text-decoration:none;transition:color var(--t-fast) var(--ease)}
.foot li a:hover{color:var(--hi)}
.foot p{margin:0 0 8px;max-width:62ch;font-size:12px;color:var(--mute)}
.foot p.local{color:var(--ink)}
.ver{display:inline-flex;align-items:center;gap:8px;margin:0 0 10px;font-size:12px;color:var(--hi)}
.ver b{font-weight:500;padding:2px 7px;border:1px solid #ff8a3d73;border-radius:999px;color:var(--accent)}
@media (max-width:720px){.foot-cols{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.foot-cols>:last-child{grid-column:1/-1}}

/* skeleton placeholders (shimmer) while data loads */
.sk{display:block;height:12px;max-width:100%;border-radius:4px;
background:linear-gradient(90deg,#ffffff0a 0%,#ffffff1a 40%,#ffffff0a 80%) 0 0/300% 100%;animation:shimmer 1.4s ease-in-out infinite}
@keyframes shimmer{from{background-position:100% 0}to{background-position:0 0}}

/* motion: scroll reveal (fade + rise, once); everything animated is off under reduced motion */
html.js [data-reveal]{opacity:0;translate:0 16px;
transition:opacity var(--t-slow) var(--ease) var(--d,0ms),translate var(--t-slow) var(--ease) var(--d,0ms)}
html.js [data-reveal].in{opacity:1;translate:none}
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html.js [data-reveal]{opacity:1;translate:none}
}
