body.page-hub{--hub-p: 0}.hub{position:relative;height:520svh}.hub__stage{position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate}.hub__sky{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#7FA8C4 0%,#B9CFDD 55%,var(--bg) 100%)}body.night .hub__sky{background:linear-gradient(180deg,#05080B 0%,#0E1A1F 60%,var(--bg) 100%)}.hub__canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;opacity:var(--canvas-o, 1)}.hub__intro{position:absolute;left:0;right:0;top:clamp(110px,16vh,170px);margin:0 auto;padding:0 var(--gutter);max-width:var(--wrap);opacity:var(--intro-o, 1);transform:translateY(calc((1 - var(--intro-o, 1)) * -30px));pointer-events:none}html body .hub__eyebrow{margin:0 0 12px;color:var(--accent)!important;font-size:.78rem!important;font-weight:700;letter-spacing:.16em;text-transform:uppercase}html body .hub h1{margin:0;font-size:clamp(2.6rem,4vw + 1rem,5.4rem);line-height:1;letter-spacing:-.015em;color:var(--text)}html body .hub__lede{margin:18px 0 0;max-width:34ch;color:var(--text-muted)!important;font-size:clamp(1.05rem,.5vw + .95rem,1.3rem)!important}html body .hub__caption{position:absolute;left:0;right:0;bottom:clamp(60px,12vh,120px);margin:0;padding:0 var(--gutter);text-align:center;color:var(--text)!important;font-size:clamp(1.2rem,1vw + 1rem,1.8rem)!important;font-weight:700;opacity:var(--mid-o, 0);pointer-events:none}.hub__cue{position:absolute;left:50%;bottom:28px;display:flex;flex-direction:column;align-items:center;gap:10px;transform:translate(-50%);color:var(--text-muted);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;opacity:var(--intro-o, 1)}.hub__cue i{position:relative;width:1px;height:48px;overflow:hidden;background:color-mix(in srgb,currentColor 28%,transparent)}.hub__cue i:after{content:"";position:absolute;left:0;top:0;width:1px;height:40%;background:currentColor;animation:hub-cue 2.2s cubic-bezier(.65,0,.35,1) infinite}@keyframes hub-cue{0%{transform:translateY(-100%)}to{transform:translateY(250%)}}.hub__cockpit{position:absolute;inset:0;display:grid;grid-template-rows:minmax(90px,1fr) auto;opacity:var(--cockpit-o, 0);transform:scale(calc(1.08 - var(--cockpit-o, 0) * .08));pointer-events:none}.hub.is-aboard .hub__cockpit{pointer-events:auto}.hub__windscreen{position:relative;overflow:hidden;background:linear-gradient(180deg,#6e9cbd,#b5cedd 70%,#dce7ee);box-shadow:inset 0 0 0 10px #0b0f14,inset 0 0 60px 20px #0b0f14b3}body.night .hub__windscreen{background:linear-gradient(180deg,#04070a,#0c1a22 70%,#1a2c33)}.hub__windscreen:after{content:"";position:absolute;top:0;bottom:0;left:50%;width:10px;margin-left:-5px;background:#0b0f14}.hub__horizon{position:absolute;left:-10%;right:-10%;bottom:-40%;height:70%;background:linear-gradient(180deg,#5e7a5a,#3f5640);border-radius:50% 50% 0 0/18% 18% 0 0;transform:rotate(calc((var(--cockpit-o, 0) - 1) * 8deg)) translateY(calc((1 - var(--cockpit-o, 0)) * 40px))}body.night .hub__horizon{background:linear-gradient(180deg,#16241f,#0b1411)}.hub__panel{position:relative;padding:clamp(16px,2.5vh,28px) var(--gutter) clamp(20px,4vh,40px);background:radial-gradient(120% 80% at 50% 0%,rgba(255,255,255,.06),transparent 60%),linear-gradient(180deg,#1c2229,#11151a);border-top:14px solid #0B0F14;box-shadow:0 -20px 40px -10px #00000080;color:#e6eeee}.hub__panel:before{content:"";position:absolute;left:0;right:0;top:-30px;height:30px;background:#0b0f14;border-radius:50% 50% 0 0/100% 100% 0 0}html body .hub__panel-title{position:relative;margin:0 0 clamp(10px,2vh,22px);text-align:center;color:#98a6a8!important;font-size:.75rem!important;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.hub__six{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,2vh,24px) clamp(12px,3vw,48px);max-width:980px;margin:0 auto}html body .dial{display:grid;justify-items:center;gap:8px;color:#e6eeee!important;text-decoration:none!important;text-align:center;--spin: 0deg}.dial svg{width:min(100%,clamp(84px,16vh,168px));height:auto;overflow:visible;transition:transform .35s var(--ease),filter .35s ease}.dial__bezel{fill:#0b0e12;stroke:#2b333b;stroke-width:2}.dial__face{fill:#12171c}.dial__glass{fill:transparent;stroke:#ffffff0f;stroke-width:1}.dial__tick{stroke:#c9d3d6;stroke-width:1.4}.dial__num{fill:#e6eeee;font-size:9px;font-weight:700;text-anchor:middle}.dial__scale{fill:#7e8c90;font-size:7px;font-weight:700;letter-spacing:.12em;text-anchor:middle}.dial__arc{fill:none;stroke:#e6eeee;stroke-width:2}.dial__arc--green{stroke:#4cb572;stroke-width:4}.dial__needle{transform-origin:60px 60px;transform:rotate(calc(var(--needle, 0deg) + var(--spin)));transition:transform .6s var(--ease)}.dial__needle line{stroke:#f3f5f7;stroke-width:3;stroke-linecap:round}.dial__needle circle{fill:#f3f5f7}.dial--asi{--needle: calc(-60deg + var(--cockpit-o, 0) * 160deg)}.dial--alt{--needle: calc(var(--cockpit-o, 0) * 300deg)}.dial--vsi{--needle: calc(-90deg + var(--cockpit-o, 0) * 60deg)}.dial__ai-sky{fill:#2f7fc1}.dial__ai-ground{fill:#8a5a2b}.dial__ai-line,.dial__ai-pitch{stroke:#fff;stroke-width:1.5}.dial__ai-wings{fill:none;stroke:#f2b705;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.dial__ai-ball{transform-origin:60px 60px;transform:rotate(calc((1 - var(--cockpit-o, 0)) * 20deg + var(--spin) * .05)) translateY(calc((1 - var(--cockpit-o, 0)) * 10px));transition:transform .6s var(--ease)}.dial__card{transform-origin:60px 60px;transform:rotate(calc(var(--cockpit-o, 0) * -90deg - var(--spin) * .25));transition:transform .6s var(--ease)}.dial__plane{fill:#f2b705}.dial__plane-line{fill:none;stroke:#f3f5f7;stroke-width:3;stroke-linecap:round;transform-origin:60px 60px;transform:rotate(calc(var(--spin) * .05));transition:transform .6s var(--ease)}.dial__label{display:block;font-weight:700;font-size:clamp(.82rem,.3vw + .75rem,1rem);line-height:1.25;transition:color .25s ease}.dial__label small{display:block;margin-top:3px;color:#98a6a8;font-weight:400;font-size:.78rem}html body .dial:hover,html body .dial:focus-visible{--spin: 120deg}.dial:hover svg,.dial:focus-visible svg{transform:translateY(-4px) scale(1.04);filter:drop-shadow(0 0 14px color-mix(in srgb,var(--highlight) 55%,transparent))}.dial:hover .dial__bezel,.dial:focus-visible .dial__bezel{stroke:var(--highlight)}html body .dial:hover .dial__label,html body .dial:focus-visible .dial__label{color:var(--highlight)}html body .dial:focus-visible{outline:none}@media(max-width:699px){.hub__six{grid-template-columns:repeat(2,minmax(0,1fr))}.dial svg{width:min(100%,clamp(70px,11vh,120px))}.dial__label small{display:none}}@media(max-height:620px){.dial__label small{display:none}}.hub-list{max-width:var(--wrap-narrow);margin:0 auto;padding:var(--section-gap) var(--gutter)}.hub-list ul{list-style:none;margin:24px 0 0;padding:0;display:grid;gap:10px}.hub-list li{padding:0!important}.hub-list li:before{display:none!important}html body .hub-list a{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 24px;padding:18px 20px;border-radius:12px;background:var(--surface);border:1px solid var(--surface-line);color:var(--text)!important;text-decoration:none;font-weight:700;transition:border-color .25s ease,transform .3s var(--ease)}html body .hub-list a small{color:var(--text-muted);font-weight:400}html body .hub-list a:hover{border-color:var(--highlight);transform:translate(4px)}@media(prefers-reduced-motion:reduce){.hub{height:auto}.hub__stage{position:relative;height:100svh}.hub__intro,.hub__cue,.hub__caption,.hub__canvas{display:none}.hub__cockpit{opacity:1;transform:none;pointer-events:auto}.hub{--cockpit-o: 1}.dial svg,.dial__needle,.dial__card,.dial__ai-ball{transition:none}.hub__cue i:after{animation:none}}
