/* Kaelion — System page. Builds on /assets/home/home.css (tokens, nav, type, footer); only page-specific parts live here. */

/* ---------- hero: the unit ---------- */
.sys-hero{position:relative;min-height:min(92svh,980px);display:flex;align-items:center;overflow:hidden;isolation:isolate;background:#070d18}
.sys-hero-media,.sys-hero-media img{position:absolute;inset:0;width:100%;height:100%}
.sys-hero-media{z-index:-2}
.sys-hero-media img{object-fit:cover;object-position:70% 55%}
.sys-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(7,13,24,.94) 0%,rgba(7,13,24,.78) 34%,rgba(7,13,24,.2) 62%,rgba(7,13,24,0) 76%),
  linear-gradient(180deg,rgba(7,13,24,.6) 0%,rgba(7,13,24,0) 22%,rgba(7,13,24,0) 70%,#09111e 100%)}
.sys-hero-copy{width:100%;padding-top:120px;padding-bottom:96px}
.sys-hero-copy>*{max-width:620px}
.sys-hero h1{margin:0 0 24px;font-family:var(--display);font-weight:480;font-size:clamp(44px,5vw,76px);line-height:1.02;letter-spacing:-.034em;color:#fff;text-wrap:balance}
.sys-hero .lede{margin:0 0 34px;font-size:clamp(17px,1.3vw,19px);line-height:1.6;color:rgba(236,241,248,.86)}
.hero-facts{margin:0;padding:0;list-style:none;display:grid;gap:12px}
.hero-facts li{display:flex;align-items:baseline;gap:12px;font-size:15.5px;color:var(--soft-on-night)}
.hero-facts li::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--ice);transform:translateY(-2px)}
.sys-hero-cap{position:absolute;right:var(--gutter);bottom:26px;margin:0;font-size:12px;letter-spacing:.04em;color:rgba(232,238,246,.7)}

/* ---------- the map ---------- */
.sec-map{background:var(--deep)}
.map-intro{max-width:900px}
.map-body{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(40px,5vw,88px);align-items:center;margin-top:clamp(48px,6vw,88px)}
.smap{position:relative;width:100%;max-width:720px;aspect-ratio:1;justify-self:center}
.smap svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.smap path,.smap circle{vector-effect:non-scaling-stroke}
.m-home{fill:rgba(143,208,255,.025);stroke:rgba(255,255,255,.16);stroke-width:1.4}
.m-line{fill:none;stroke:rgba(255,255,255,.13);stroke-width:1.2}
.m-in,.m-out,.m-net-in{fill:none;stroke-linecap:round;stroke-dasharray:.07 1;animation:flow 3.6s linear infinite}
.m-in{stroke:rgba(223,230,238,.9);stroke-width:2.2}
.m-out{stroke:var(--ice);stroke-width:2.8;animation-duration:2.8s}
.m-net-in{stroke:rgba(223,230,238,.75);stroke-width:2;stroke-dasharray:.05 1;animation-duration:5s}
@keyframes flow{from{stroke-dashoffset:.07}to{stroke-dashoffset:-1}}
.m-net{fill:none;stroke:rgba(223,230,238,.42);stroke-width:1.3;stroke-dasharray:3 6;transition:opacity .6s var(--ease)}
.m-netdot{fill:var(--silver);transition:opacity .6s var(--ease)}
.m-dot{fill:var(--silver)}
.m-ctl .m-dot{fill:var(--ice)}
.m-base .m-dot{fill:var(--deep);stroke:var(--silver);stroke-width:1.6}
.m-halo{fill:none;stroke:rgba(143,208,255,0)}
.m-ctl .m-halo{stroke:rgba(143,208,255,.5);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:halo2 2.8s var(--ease) infinite}
@keyframes halo2{0%{transform:scale(.6);opacity:1}100%{transform:scale(1.9);opacity:0}}
.m-core{fill:#0c1829;stroke:rgba(143,208,255,.32);stroke-width:1.4}
.m-mark path{fill:none;stroke-width:7;stroke-linecap:round}
.m-break path{fill:none;stroke:var(--amber);stroke-width:3;stroke-linecap:round}
.m-break{opacity:0;transition:opacity .4s var(--ease)}
.m-label{position:absolute;display:grid;gap:2px;transform:translate(-50%,-50%);white-space:nowrap;text-align:center;transition:opacity .6s var(--ease)}
.m-label.m-r{transform:translate(0,-50%);text-align:left}.m-label.m-l{transform:translate(-100%,-50%);text-align:right}
.m-label b{font-size:14.5px;font-weight:560;color:#fff}
.m-label small{font-size:12px;color:var(--faint-on-night)}
.m-label.k-ctl small{color:var(--ice)}
.lbl-s{display:none}
.m-core-label b{font-family:var(--display);font-size:16px;letter-spacing:.02em}
.m-zone{position:absolute;transform:translate(-50%,-50%);font-size:11.5px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--faint-on-night);white-space:nowrap}
/* offline: the internet link breaks, everything inside the home keeps running */
.is-offline .m-net-out,.is-offline .m-netdot,.is-offline .m-net-label,.is-offline .m-zone-net{opacity:.22}
.is-offline .m-net-home{opacity:.15}
.is-offline .m-net-in{animation:none;opacity:0}
.is-offline .m-break{opacity:1}
.map-side{display:grid;gap:34px;align-content:center}
.net-switch{padding:24px 0;border-block:1px solid var(--rule-night)}
.switch{display:inline-flex;align-items:center;gap:14px;padding:0;border:0;background:none;color:#fff;font:inherit;font-size:16.5px;font-weight:560;cursor:pointer}
.switch:focus-visible{outline:2px solid var(--focus);outline-offset:6px;border-radius:999px}
.sw-track{position:relative;width:50px;height:28px;border-radius:999px;background:rgba(255,255,255,.18);transition:background .3s var(--ease)}
.sw-knob{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .3s var(--ease)}
.switch[aria-checked="true"] .sw-track{background:var(--ice)}
.switch[aria-checked="true"] .sw-knob{transform:translateX(22px)}
.net-state{margin:16px 0 0;font-size:16px;line-height:1.6;color:var(--soft-on-night);min-height:4.8em}
.net-state .off{display:none}
.is-offline .net-state .on{display:none}.is-offline .net-state .off{display:inline}
.map-lists{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.map-lists h3{margin:0 0 10px;font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--faint-on-night)}
.map-lists ul{margin:0;padding:0;list-style:none}
.map-lists li{padding:10px 0;border-top:1px solid var(--rule-night);font-size:15.5px;line-height:1.5;color:rgba(236,241,248,.86)}
.map-key{display:flex;flex-wrap:wrap;gap:8px 22px;margin:0;font-size:13px;color:var(--faint-on-night)}
.map-key span{display:inline-flex;align-items:center;gap:8px}
.map-key i{display:block;width:22px;height:0;border-top:2.4px solid var(--silver)}
.map-key .k-ctl i{border-color:var(--ice)}.map-key .k-net i{border-top:1.5px dashed rgba(223,230,238,.6)}

/* ---------- the loop as an orbit track ---------- */
.lt-intro{max-width:900px}
.ltrack{position:relative;margin-top:clamp(40px,5vw,64px)}
.lt-arc{position:absolute;left:0;right:0;top:0;width:100%;height:120px;overflow:visible}
.lt-base{fill:none;stroke:var(--rule-snow);stroke-width:1.5;vector-effect:non-scaling-stroke}
.lt-comet{fill:none;stroke:var(--ice-deep);stroke-width:2.6;stroke-linecap:round;vector-effect:non-scaling-stroke;stroke-dasharray:.06 1;animation:flow2 9s linear infinite}
@keyframes flow2{from{stroke-dashoffset:.06}to{stroke-dashoffset:-1}}
.ltrack ol{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;margin:0;padding:0;list-style:none}
.ltrack li{position:relative;padding-top:150px}
.lt-dot{position:absolute;left:50%;top:64px;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:var(--paper);border:2.5px solid var(--ink)}
.ltrack li:nth-child(2) .lt-dot,.ltrack li:nth-child(3) .lt-dot{top:24px}
.ltrack li:nth-child(3) .lt-dot{background:var(--ice-deep);border-color:var(--ice-deep)}
.lt-n{display:block;font-size:13px;font-weight:600;color:var(--ink-faint);font-variant-numeric:tabular-nums;margin-bottom:6px}
.ltrack h3{margin:0 0 8px;font-family:var(--display);font-weight:500;font-size:clamp(22px,1.9vw,27px);letter-spacing:-.02em}
.ltrack p{margin:0;font-size:16px;line-height:1.55;color:var(--ink-soft);max-width:22em}
.lt-note{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:clamp(40px,4vw,56px) 0 0;padding-top:22px;border-top:1px solid var(--rule-snow);font-size:15px;color:var(--ink-soft)}
.lt-note .tlink{color:var(--ink)}

/* ---------- safety gates ---------- */
.sec-gates{background:var(--deep)}
.g-intro{max-width:900px}
.gatesim{margin-top:clamp(44px,5vw,72px)}
.scns{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.scns-l{margin-right:8px;font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--faint-on-night)}
.scn{height:40px;padding:0 18px;border-radius:999px;border:1px solid rgba(255,255,255,.26);background:none;color:var(--soft-on-night);font:inherit;font-size:14.5px;font-weight:540;cursor:pointer;transition:background .3s var(--ease),border-color .3s var(--ease),color .3s var(--ease)}
.scn:hover{border-color:#fff;color:#fff}
.scn[aria-pressed="true"]{background:#f4f7fb;border-color:#f4f7fb;color:#0a1322}
.scn:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.g-track{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,5fr) minmax(0,1fr);margin-top:44px;padding-top:62px}
.g-track::before{content:"";position:absolute;left:7.14%;right:7.14%;top:62px;height:2px;margin-top:-1px;background:rgba(255,255,255,.14)}
.g-track::after{content:"";position:absolute;left:7.14%;top:62px;height:2px;margin-top:-1px;width:calc((var(--x,7.14%) - 7.14%));background:var(--ice);transition:width .42s linear}
.g-intent{position:relative;text-align:center}
.g-intent::before,.g-end::before{content:"";position:absolute;left:50%;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--silver)}
.g-token{position:absolute;left:50%;bottom:calc(100% + 26px);transform:translateX(-50%);white-space:nowrap;font-size:13px;font-weight:560;color:#fff;padding:6px 12px;border-radius:999px;background:rgba(143,208,255,.14);border:1px solid rgba(143,208,255,.35)}
.gatesim::before{content:"";position:absolute}
.g-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.gate{position:relative;padding:28px 6px 0;text-align:center}
.g-dot{position:absolute;left:50%;top:0;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:var(--deep);border:2px solid rgba(255,255,255,.3);transition:all .35s var(--ease)}
.gate b{display:block;font-size:15.5px;font-weight:600;color:#fff;margin-bottom:6px}
.gate span{display:block;font-size:14px;line-height:1.5;color:var(--soft-on-night)}
.gate.is-pass .g-dot{background:var(--ice);border-color:var(--ice)}
.gate.is-stop .g-dot{background:var(--deep);border-color:var(--amber);box-shadow:0 0 0 6px rgba(230,164,98,.16)}
.gate.is-stop .g-dot::before,.gate.is-stop .g-dot::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:2px;margin:-1px 0 0 -5px;background:var(--amber);transform:rotate(45deg)}
.gate.is-stop .g-dot::after{transform:rotate(-45deg)}
.gate.is-stop b{color:var(--amber)}
.gate.is-after b,.gate.is-after span{color:rgba(214,224,238,.58)}
.gate.is-after .g-dot{border-color:rgba(255,255,255,.16)}
.g-end{position:relative;text-align:center;padding-top:28px}
.g-end span{display:none;font-size:14px;font-weight:600}
.g-ok{color:var(--ice)}.g-hold{color:var(--amber)}
.gatesim.is-done[data-stop="5"] .g-ok{display:block}
.gatesim.is-done:not([data-stop="5"]) .g-hold{display:block}
.gatesim.is-done[data-stop="5"] .g-end::before{background:var(--ice);box-shadow:0 0 0 7px rgba(143,208,255,.18)}
.g-probe{position:absolute;top:62px;left:var(--x,7.14%);width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:#fff;box-shadow:0 0 0 6px rgba(143,208,255,.25),0 0 24px rgba(143,208,255,.6);transition:left .42s linear;z-index:2}
.g-msgs{margin-top:40px;min-height:3.4em}
.g-msg{margin:0;max-width:44em;font-size:clamp(17px,1.3vw,19px);line-height:1.55;color:#fff}
.g-foot{margin:22px 0 0;padding-top:20px;border-top:1px solid var(--rule-night);font-size:14.5px;color:var(--faint-on-night)}

/* ---------- where it stands ---------- */
.stt-intro{max-width:920px}
.stt-wrap{margin-top:clamp(44px,5vw,72px)}
.stt{width:100%;border-collapse:collapse}
.stt thead th{padding:0 8px 14px;font-size:12.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);text-align:center;width:140px}
.stt tbody tr{border-top:1px solid var(--rule-snow)}
.stt tbody tr:last-child{border-bottom:1px solid var(--rule-snow)}
.stt tbody th{padding:22px 16px 22px 0;text-align:left;font-family:var(--display);font-weight:520;font-size:21px;letter-spacing:-.015em;white-space:nowrap}
.stt td{position:relative;padding:22px 8px;text-align:center}
.stt td i{position:relative;z-index:1;display:inline-block;width:16px;height:16px;border-radius:50%;vertical-align:middle}
.stt tbody td:not(.s-note)::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:var(--rule-snow)}
.stt tr td:nth-of-type(1)::before{left:50%}.stt tr td:nth-of-type(3)::before{right:50%}
.s-y i{background:var(--ice-deep);box-shadow:0 0 0 5px rgba(27,103,168,.12)}
.s-n i{background:var(--paper);border:2px dashed #7d889a}
.stt .s-na i{width:12px;height:2px;border-radius:2px;background:#aab3c0}
.stt .s-note{padding-left:28px;text-align:left;font-size:15.5px;line-height:1.5;color:var(--ink-soft);max-width:28em}
.stt-foot{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 22px;margin:28px 0 0;font-size:15px;color:var(--ink-soft)}
.stt-foot .tlink{color:var(--ink)}

/* ---------- pilot ---------- */
.sys-cta .cta-media img{object-position:66% 56%}

/* ---------- tablet: hero and gates take their stacked form early ---------- */
@media (max-width:1080px) and (min-width:761px){
  .map-body{grid-template-columns:1fr;justify-items:center}
  .map-side{width:100%;max-width:720px}
  .smap{max-width:600px}
  .sys-hero{min-height:0;display:block}
  .sys-hero-media{position:relative;display:block;height:auto;aspect-ratio:16/10}
  .sys-hero-media img{object-position:72% 50%}
  .sys-hero::before{bottom:auto;height:62.5vw;background:linear-gradient(180deg,rgba(7,13,24,.7) 0%,rgba(7,13,24,0) 26%,rgba(7,13,24,0) 55%,#070d18 100%)}
  .sys-hero-copy{position:relative;margin-top:-12vw;padding-top:0;padding-bottom:80px}
  .sys-hero-cap{top:110px;bottom:auto}
  .g-track{grid-template-columns:1fr;padding-top:0;margin-top:34px;padding-left:40px}
  .g-track::before{left:11px;right:auto;top:8px;bottom:8px;width:2px;height:auto;margin:0}
  .g-track::after,.g-probe{display:none}
  .g-intent,.g-end{text-align:left;padding:0 0 24px}
  .g-intent::before,.g-end::before{left:-36px;top:8px;margin:0}
  .g-token{position:static;transform:none;display:inline-block}
  .g-list{grid-template-columns:1fr;gap:0}
  .gate{padding:0 0 22px;text-align:left}
  .g-dot{left:-40px;top:0;margin:0}
}

/* ---------- mobile ---------- */
@media (max-width:760px){
  .sys-hero{min-height:0;display:block;padding-top:0}
  .sys-hero-media{position:relative;display:block;height:auto;aspect-ratio:4/5}
  .sys-hero-media img{object-position:50% 50%}
  .sys-hero::before{bottom:auto;height:125vw;background:linear-gradient(180deg,rgba(7,13,24,.7) 0%,rgba(7,13,24,0) 26%,rgba(7,13,24,0) 55%,#070d18 100%)}
  .sys-hero-copy{position:relative;margin-top:-26vw;padding-top:0;padding-bottom:64px}
  .sys-hero h1{font-size:clamp(36px,10vw,44px)}
  .sys-hero .lede{font-size:16px;margin-bottom:24px}
  .hero-facts li{font-size:15px}
  .sys-hero-cap{top:96px;bottom:auto;right:var(--gutter);font-size:11px}
  .map-body{grid-template-columns:1fr;gap:36px;margin-top:36px}
  .smap{max-width:360px}
  .m-label b{font-size:11.5px}.m-label small{display:none}
  .lbl-l{display:none}.lbl-s{display:inline}
  .m-core-label small{display:none}
  .m-zone{font-size:10px}.m-zone-home{display:none}
  .map-lists{grid-template-columns:1fr;gap:22px}
  .net-state{min-height:0}
  .lt-arc{display:none}
  .ltrack ol{grid-template-columns:1fr;gap:0;border-left:2px solid var(--rule-snow);margin-left:8px}
  .ltrack li{padding:0 0 26px 28px}
  .ltrack li:last-child{padding-bottom:0}
  .lt-dot,.ltrack li:nth-child(2) .lt-dot,.ltrack li:nth-child(3) .lt-dot{left:-9px;top:4px;margin:0}
  .ltrack h3{font-size:22px}
  .scns{gap:8px}.scns-l{flex-basis:100%;margin-bottom:4px}
  .scn{height:38px;padding:0 14px;font-size:14px}
  .g-track{grid-template-columns:1fr;padding-top:0;margin-top:30px;padding-left:34px}
  .g-track::before{left:11px;right:auto;top:8px;bottom:8px;width:2px;height:auto;margin:0}
  .g-track::after,.g-probe{display:none}
  .g-intent,.g-end{text-align:left;padding:0 0 22px}
  .g-intent::before,.g-end::before{left:-30px;top:8px;margin:0}
  .g-token{position:static;transform:none;display:inline-block}
  .g-list{grid-template-columns:1fr;gap:0}
  .gate{padding:0 0 20px;text-align:left}
  .g-dot{left:-34px;top:0;margin:0}
  .gate b{font-size:15.5px;margin-bottom:2px}
  .g-end{padding-bottom:0}.g-end span{font-size:14.5px}
  .g-msgs{margin-top:26px}.g-msg{font-size:16px}
  .stt thead{display:none}
  .stt,.stt tbody{display:block}
  .stt tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 6px;padding:20px 0}
  .stt tbody th{grid-column:1/-1;padding:0;font-size:19px}
  .stt td{padding:0 0 0 22px;text-align:left;font-size:12px;color:var(--ink-soft)}
  .stt tbody td:not(.s-note)::before{display:none}
  .stt td i{position:absolute;left:0;top:1px}
  .stt td::after{content:attr(data-l)}
  .stt .s-note{grid-column:1/-1;padding:0;font-size:15px}
  .stt .s-note::after{content:none}
}
@media (prefers-reduced-motion:reduce){
  .m-in,.m-out,.m-net-in,.lt-comet{animation:none;stroke-dasharray:none;opacity:.5}
  .m-ctl .m-halo{animation:none}
  .g-probe,.g-track::after,.g-dot{transition:none}
}
