/* Fenix AI — движок презентации. Цвета берутся из темы (content.js → theme), см. assets/engine/theme.js.
   Не правьте цвета здесь: переменные --t-* задаются темой. */
:root{
  --t-accent:#6CDEBB;--t-accent-2:#2BB894;--t-accent-ink:#008C95;--t-accent-deep:#00707A;--t-accent-hi:#8FE9CF;--t-accent-lo:#3FC9A4;--t-on-accent:#00313C;
  --t-ink:#001C23;--t-night:#012B34;--t-panel:#012F39;--t-paper:#F1F2F4;--t-paper2:#E0E4E5;--t-paper3:#E8ECED;--t-paper4:#F4F6F6;--t-slate:#00313C;
  --t-red:#FD5A42;--t-red-deep:#D8402A;--t-map-bg:#F1F2F4;--t-map-night:#0D161B;--t-gl-top:#F3F6F6;--t-gl-c3:#CDE8EC;--t-pin-shadow:#002832;--t-shade:#001E28;
  --t-light-bar:#008C95;--t-light-label:#00707A;
}
:root{
  --ink:var(--t-ink);
  --night:var(--t-night);
  --paper:var(--t-paper);
  --paper-2:var(--t-paper2);
  --slate:var(--t-slate);
  --slate-soft:color-mix(in srgb,var(--t-slate) 60%,transparent);
  --slate-line:color-mix(in srgb,var(--t-slate) 14%,transparent);
  --white:#FFFFFF;
  --white-soft:rgba(255,255,255,.62);
  --white-line:rgba(255,255,255,.18);
  --accent:var(--t-accent);
  --on-accent:var(--t-on-accent);
  --red:var(--t-red);
  --grad:linear-gradient(155deg,var(--t-accent-hi) 0%,var(--t-accent) 55%,var(--t-accent-lo) 100%);
  --bar:var(--accent);
  --display:'Roboto','Helvetica Neue',Arial,sans-serif;
  --cond:'Roboto Condensed','Arial Narrow',sans-serif;
  --L:16.667%;
  --M:54.167%;
  --R:91.667%;
  --padL:4.2vw;
  --padM:2.3vw;
  --frame:var(--white);
  --frame-soft:var(--white-soft);
  --line:var(--white-line);
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--ink)}
html.fp,html.fp body{height:100%;overflow:hidden}
html.fp main{transition:transform .95s cubic-bezier(.65,0,.35,1);will-change:transform}
/* while a screen slides in, videos stay hidden (macOS draws them above text during a transform); the section shows the video's first frame instead, already under the shade */
html.moving main video{visibility:hidden}
section.has-bg{background-size:cover;background-position:center}
body{margin:0;background:var(--ink);color:var(--white);font-family:var(--display);font-size:15px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.tone-light{--frame:var(--slate);--frame-soft:var(--slate-soft);--line:var(--slate-line)}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.light :focus-visible,.panel :focus-visible,#memory .right :focus-visible{outline-color:var(--ink)}
h1,h2,h3,p{margin:0}
.light{--bar:var(--t-light-bar)}
.light .psteps li::before,.light .tcard .tag{color:var(--t-light-label)}
/* print mode (PDF): end states, no motion, no playback controls */
html.print *,html.print *::before,html.print *::after{animation-duration:0s!important;animation-delay:0s!important;transition-duration:0s!important;transition-delay:0s!important}
html.print .vidtoggle,html.print .mouse,html.print .st-replay,html.print .st-zoom,html.print .st-sc,html.print .lb-help,html.print .st-ctl{display:none!important}
.cond{font-family:var(--cond);font-weight:600;text-transform:uppercase;letter-spacing:.01em;line-height:1.18}

/* ---------- fixed frame ---------- */
.gridlines{position:fixed;inset:0;pointer-events:none;z-index:40}
.gridlines i{position:absolute;top:0;bottom:0;width:1px;background:var(--line);transition:background .5s}
.gridlines i:nth-child(1){left:var(--L)}
.gridlines i:nth-child(2){left:var(--M)}
.gridlines i:nth-child(3){left:var(--R)}
body[data-sec="screens"] .gridlines i:nth-child(2),
body[data-sec="map"] .gridlines i:nth-child(2),
body[data-sec="cycle"] .gridlines i:nth-child(2),
body[data-sec="equip"] .gridlines i:nth-child(2),
body[data-sec="tech"] .gridlines i:nth-child(2),
body[data-sec="plan"] .gridlines i:nth-child(2),
body[data-sec="predict"] .gridlines i:nth-child(2),
body[data-sec="memory"] .gridlines i:nth-child(2){opacity:0}
.gridlines i{transition:background .5s,opacity .4s}
.frame{position:fixed;z-index:60;color:var(--frame);transition:color .5s}
.logo{top:34px;left:2.2vw;display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:800;font-size:var(--logo-fs,21px);letter-spacing:-.01em}
.logo svg{width:var(--logo-h,22px);height:var(--logo-h,22px);flex:none}
.logo img{height:var(--logo-h,24px);width:auto;max-width:calc(var(--logo-h,24px)*6);object-fit:contain;flex:none;display:block}
.gl .tfx .core img{width:58%;height:58%;object-fit:contain}
.logo .lg{display:block;background:currentColor;-webkit-mask:var(--lg) center/contain no-repeat;mask:var(--lg) center/contain no-repeat}
.logo .lg-accent{background:var(--accent)}
.logo .lg img{opacity:0}
.logo .lg-on-light,body.tone-light .logo .lg-on-dark{display:none}
body.tone-light .logo .lg-on-light{display:block}
.logo .logo-txt{display:flex;flex-direction:column;line-height:1.05}
.logo .logo-sub{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:var(--logo-sub-fs,11px);font-weight:600;letter-spacing:.02em;color:var(--frame-soft)}
.logo .logo-sub .flags{display:flex;gap:.3em;flex:none}
.logo .logo-sub svg{width:1.45em;height:.73em;flex:none;border-radius:1px}
.logo .logo-sub svg.f-ru{width:1.1em}
.logo svg rect{fill:currentColor}
.logo svg rect:first-child{fill:var(--accent)}
body.tone-light .rail a{text-shadow:none}
@media (min-width:901px) and (min-height:600px){body.right-ink .burger,body.right-ink .menu-label,body.right-ink .mouse{color:var(--ink)}}
.burger{top:28px;right:1.6vw;width:48px;height:40px;display:grid;place-items:center}
.burger span{display:block;width:34px;height:2px;background:currentColor;box-shadow:0 7px 0 currentColor;transform:translateY(-3.5px)}
.menu-label{top:50%;right:calc((100% - var(--R)) / 2);transform:translate(50%,-50%) rotate(90deg);font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.rail{top:50%;left:0;transform:translateY(-50%);width:var(--L);display:flex;flex-direction:column;gap:6px;padding:0;margin:0;list-style:none}
.rail a{text-shadow:0 0 10px rgba(0,0,0,.35);display:flex;align-items:center;gap:14px;text-decoration:none;font-weight:700;font-size:15px;color:var(--frame-soft);transition:color .3s;padding:3px 0}
.rail a::before{content:"";width:22px;height:1px;background:currentColor;margin-left:1.4vw;transition:width .35s}
.rail a[aria-current="true"]{color:var(--frame)}
.rail a[aria-current="true"]::before{width:calc(22px + 1.4vw);margin-left:0;background:var(--accent)}
body.tone-light .rail a[aria-current="true"]::before{background:var(--slate)}
.counter{bottom:34px;left:2.2vw;font-size:13px;letter-spacing:.06em;color:var(--frame-soft);font-variant-numeric:tabular-nums}
.counter b{color:var(--frame);font-weight:700}
.mouse{bottom:30px;right:calc((100% - var(--R)) / 2);transform:translateX(50%);width:18px;height:28px;border:1.5px solid currentColor;border-radius:10px;opacity:.8}
.mouse::after{content:"";position:absolute;left:50%;top:6px;width:2px;height:6px;margin-left:-1px;border-radius:2px;background:currentColor;animation:wheel 1.8s ease-in-out infinite}
@keyframes wheel{0%{transform:translateY(0);opacity:1}70%{transform:translateY(8px);opacity:0}100%{opacity:0}}

/* ---------- menu overlay ---------- */
.menu{position:fixed;inset:0;z-index:80;background:var(--ink);color:var(--white);display:grid;grid-template-columns:var(--L) 1fr;opacity:0;visibility:hidden;transition:opacity .4s,visibility .4s}
.menu.open{opacity:1;visibility:visible}
.menu ol{grid-column:2;align-self:center;list-style:none;margin:0;padding:0 0 0 var(--padL);counter-reset:m;display:grid;gap:.4vh}
.menu li{counter-increment:m}
.menu a{display:inline-flex;align-items:baseline;gap:18px;text-decoration:none;font-weight:800;font-size:clamp(30px,4.2vw,64px);line-height:1.12;letter-spacing:-.02em;color:var(--white-soft);transition:color .25s}
.menu a::before{content:counter(m,decimal-leading-zero);font-family:var(--cond);font-weight:500;font-size:15px;color:var(--accent);letter-spacing:.04em}
.menu a:hover,.menu a:focus-visible{color:var(--white)}
.menu-close{position:absolute;top:28px;right:1.6vw;width:48px;height:48px}
.menu-close::before,.menu-close::after{content:"";position:absolute;left:7px;right:7px;top:50%;height:2px;background:#fff;transform:rotate(45deg)}
.menu-close::after{transform:rotate(-45deg)}

/* ---------- sections ---------- */
.screen{position:relative;height:100vh;height:100svh;min-height:600px;overflow:hidden}
.screen.fit{overflow-y:auto;scrollbar-width:none}
.screen.fit::-webkit-scrollbar{display:none}
.dark{background:var(--ink);color:var(--white)}
.light{background:var(--paper);color:var(--slate)}
.col-c{position:absolute;left:calc(var(--L) + var(--padL))}
.col-m{position:absolute;left:calc(var(--M) + var(--padM))}
.sec-title{position:absolute;left:calc(var(--L) + var(--padL));top:12.5vh;font-weight:800;font-size:clamp(28px,2.75vw,44px);line-height:1.1;letter-spacing:-.01em;text-wrap:balance;max-width:30vw}
.sec-title::before{content:"";position:absolute;left:calc(-1 * var(--padL) - 1px);top:.1em;bottom:.1em;width:3px;background:var(--bar)}
.kicker{font-family:var(--cond);font-weight:600;font-size:clamp(17px,1.5vw,24px);text-transform:uppercase;line-height:1.22;letter-spacing:.01em}
.pill{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 30px;border-radius:26px;border:1px solid currentColor;text-decoration:none;font-weight:600;font-size:14px;letter-spacing:.01em;transition:background .25s,color .25s,border-color .25s;white-space:nowrap}
.dark .pill{border-color:rgba(255,255,255,.35)}
.dark .pill:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.light .pill:hover{background:var(--ink);color:var(--accent);border-color:var(--ink)}

/* hero */
.bgvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;background:var(--ink)}
#hero .bgvid{opacity:0;animation:fadeIn 2.4s .9s ease forwards}
.vidtoggle{position:absolute;left:2.2vw;bottom:78px;z-index:2;display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.02em;color:var(--white-soft);transition:color .25s}
.vidtoggle:hover{color:#fff}
.vidtoggle .eq{display:flex;align-items:flex-end;gap:2px;height:12px}
.vidtoggle .eq i{width:2px;height:100%;background:var(--accent);transform-origin:bottom;animation:eq 1.1s ease-in-out infinite}
.vidtoggle .eq i:nth-child(2){animation-delay:-.3s}.vidtoggle .eq i:nth-child(3){animation-delay:-.6s}.vidtoggle .eq i:nth-child(4){animation-delay:-.15s}.vidtoggle .eq i:nth-child(5){animation-delay:-.45s}
.vidtoggle.off .eq i{animation-play-state:paused;transform:scaleY(.35)}
@keyframes eq{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}
#hero .shade{position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--t-ink) 84%,transparent) 0%,color-mix(in srgb,var(--t-ink) 38%,transparent) 50%,color-mix(in srgb,var(--t-ink) 55%,transparent) 100%),linear-gradient(180deg,color-mix(in srgb,var(--t-ink) 62%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 34%),linear-gradient(0deg,color-mix(in srgb,var(--t-ink) 85%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 40%)}
.hero-title{position:absolute;left:calc(var(--L) + var(--padL));top:21vh;font-weight:800;font-size:min(8.3vw,15.6vh);line-height:.98;letter-spacing:-.025em;text-transform:uppercase}
.hero-title span{display:block;animation:rise 1s cubic-bezier(.2,.7,.1,1) both}
.hero-title span:nth-child(2){padding-left:6.3vw;animation-delay:.12s}
.hero-title span:nth-child(3){padding-left:12.4vw;animation-delay:.24s}
.hero-cap{top:34px}
.hero-lead{bottom:9vh;max-width:30vw;font-size:clamp(14px,1.05vw,17px);color:var(--white-soft)}
.hero-cta{bottom:8vh;display:flex;gap:14px}
@keyframes rise{from{transform:translateY(40%);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeIn{to{opacity:.95}}

/* map */
#mapSvg{position:absolute;inset:0;width:100%;height:100%;display:block}
/* diorama look: a floating island on warm paper; night keeps the dark stage */
#map{background:var(--t-map-bg);color:var(--slate)}
#map.night{background:var(--t-map-night);color:#fff}
.map3d{position:absolute;left:0;top:0;display:block;pointer-events:none;z-index:0}
.daynight{position:absolute;z-index:3;top:28px;right:calc(100% - var(--R) + 18px);display:flex;gap:2px;padding:3px;border-radius:22px;background:rgba(36,44,58,.82);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:opacity .4s}
.daynight button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:18px;padding:7px 14px 7px 11px;background:transparent;color:rgba(255,255,255,.72);font:600 12.5px/1 var(--display);letter-spacing:.02em;cursor:pointer;transition:background .3s,color .3s}
.daynight button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.daynight button:hover{color:#fff}
.daynight button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}
.daynight button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
#map:not(.webgl) .daynight{display:none}
#map.detail .daynight{opacity:0;pointer-events:none}
@media (min-width:901px) and (min-height:600px){
  #map.webgl #mapSvg{z-index:1}
  #map.webgl.night::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--t-ink) 72%,transparent) 0%,color-mix(in srgb,var(--t-ink) 35%,transparent) 12%,color-mix(in srgb,var(--t-ink) 0%,transparent) 22%),linear-gradient(180deg,color-mix(in srgb,var(--t-ink) 55%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 13%),linear-gradient(0deg,color-mix(in srgb,var(--t-ink) 60%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 14%),linear-gradient(270deg,color-mix(in srgb,var(--t-ink) 45%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 9%)}
  #map.webgl.detail::after{opacity:0}
}
.map-head{top:34px;z-index:2;color:var(--slate)}
.map-hint{bottom:34px;z-index:2;font-size:13px;color:var(--slate-soft)}
#map.night .map-head{color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.5)}
#map.night .map-hint{color:var(--white-soft)}
.pin{cursor:pointer;transition:opacity .4s}
.pin .dot{transition:transform .25s;transform-box:fill-box;transform-origin:50% 100%}
.pin:hover .dot,.pin:focus-visible .dot{transform:scale(1.18)}
.pin:focus{outline:none}
.pin:focus-visible .ring{stroke:#26303F;stroke-width:2}
#map.night .pin:focus-visible .ring{stroke:#fff}
.pin .ring{fill:none;stroke-width:1.5;opacity:.9;transform-box:fill-box;transform-origin:center;animation:ping 2.6s ease-out infinite}
#mapSvg .steam circle{transform-box:fill-box;transform-origin:center;animation:steam 4.2s ease-out infinite;opacity:0}
#mapSvg .steam.s2 circle{animation-duration:4.8s}
@keyframes steam{0%{transform:translate(0,0) scale(.5);opacity:0}20%{opacity:1}100%{transform:translate(-26px,-58px) scale(2.6);opacity:0}}
#mapSvg .blink{animation:blink 1.6s steps(1) infinite}
#mapSvg .blink.b2{animation-delay:-.8s}
@keyframes blink{0%{opacity:1}50%{opacity:.15}}
#mapSvg .mist{transform-box:fill-box;transform-origin:center;animation:mist 3s ease-in-out infinite}
@keyframes mist{50%{opacity:.45;transform:scale(1.15)}}
#map.off #mapSvg *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){#mapSvg *{animation:none!important}}
.pin-label{font-family:var(--cond);font-weight:600;font-size:12.5px;letter-spacing:.06em;fill:#26303F}
.pin .chip rect{fill:rgba(255,255,255,.94);stroke:color-mix(in srgb,var(--t-slate) 20%,transparent);stroke-width:1;filter:drop-shadow(0 2px 5px color-mix(in srgb,var(--t-pin-shadow) 22%,transparent))}
.pin:hover .chip rect,.pin:focus-visible .chip rect{fill:#fff;stroke:var(--t-accent-ink);stroke-width:1.6}
#map.night .pin-label{fill:#fff}
#map.night .pin .chip rect{fill:rgba(12,15,19,.78);stroke:rgba(255,255,255,.16);filter:none}
#map.night .pin:hover .chip rect,#map.night .pin:focus-visible .chip rect{fill:var(--t-on-accent);stroke:var(--accent)}
@keyframes ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.3);opacity:0}}
#map.detail .pin{opacity:0;pointer-events:none}
#map.detail .pin.active{opacity:1}
.panel{position:absolute;top:0;bottom:0;left:var(--M);right:0;z-index:3;background:var(--grad);color:var(--on-accent);padding:8vh calc(100% - var(--R) + 2vw) 4vh var(--padM);display:flex;flex-direction:column;gap:1.7vh;scrollbar-width:thin;transform:translateX(101%);transition:transform .8s cubic-bezier(.7,0,.2,1);overflow-y:auto}
#map.detail .panel{transform:none}
.site-media{position:absolute;left:0;top:0;bottom:0;width:var(--M);z-index:2;overflow:hidden;background:var(--ink);opacity:0;visibility:hidden;transition:opacity .7s .25s,visibility 0s 1s}
.site-media video{width:100%;height:100%;object-fit:cover;display:block;opacity:.88}
.site-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--t-ink) 60%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 42%),linear-gradient(0deg,color-mix(in srgb,var(--t-ink) 45%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 25%)}
.map-hint{transition:opacity .4s}
#map.detail .map-hint{opacity:0}
#map.detail.has-video .site-media{opacity:1;visibility:visible;transition:opacity .7s .25s,visibility 0s}
.p-vid{display:none}
.panel h3{font-weight:800;font-size:clamp(24px,2.2vw,36px);line-height:1.12;letter-spacing:-.01em;max-width:24ch}
.panel p{font-size:14px;max-width:56ch}
.ico{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.p-head{display:flex;flex-direction:column;gap:1vh}
.p-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.p-back{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;border:1px solid color-mix(in srgb,var(--t-on-accent) 50%,transparent);border-radius:16px;padding:5px 12px}
.p-back:hover{background:var(--ink);color:var(--accent)}
.panel h3{font-size:clamp(22px,1.9vw,32px)!important}
.p-tag{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;background:var(--ink);color:var(--accent);font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.07em;text-transform:uppercase;padding:5px 11px 5px 9px}
.p-tag .ico{width:14px;height:14px}
.p-block{display:flex;flex-direction:column;gap:1vh;padding-top:1.3vh;border-top:1px solid color-mix(in srgb,var(--t-on-accent) 22%,transparent)}
.p-lab{display:flex;align-items:center;gap:8px;font-family:var(--cond);font-weight:600;font-size:12.5px;letter-spacing:.07em;text-transform:uppercase}
.p-lab .ico{width:15px;height:15px}
.p-lab small{font-family:var(--display);font-weight:500;font-size:12px;letter-spacing:0;text-transform:none;opacity:.7;margin-left:auto}
.p-tl{display:flex;gap:3px;min-height:34px}
.p-tl span{min-width:min-content;display:flex;align-items:center;padding:5px 8px;background:color-mix(in srgb,var(--t-on-accent) 13%,transparent);font-size:11.5px;line-height:1.1}
.p-tl span:first-child{border-radius:4px 0 0 4px}.p-tl span:last-child{border-radius:0 4px 4px 0}
.p-tl span.win{background:var(--ink);color:var(--accent);font-weight:700;gap:6px}
.p-tl span.win .ico{width:13px;height:13px}
.p-note{font-size:12.5px;line-height:1.45;opacity:.85}
.p-crit{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.p-crit span{display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.55);padding:6px 10px;font-size:13px;line-height:1.25;font-weight:500}
.p-crit .ico{width:20px;height:20px}
.p-flow{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.p-flow li{position:relative;display:grid;grid-template-columns:28px 1fr;column-gap:12px;align-items:start;padding-bottom:.9vh;font-size:13px;line-height:1.35}
.p-flow li::before{content:"";position:absolute;left:13px;top:28px;bottom:2px;width:2px;background:color-mix(in srgb,var(--t-on-accent) 28%,transparent)}
.p-flow li:last-child::before{display:none}
.p-flow li:last-child{padding-bottom:0}
.p-flow i{width:28px;height:28px;border-radius:50%;background:var(--ink);color:var(--accent);display:grid;place-items:center;font-style:normal}
.p-flow i .ico{width:15px;height:15px}
.p-flow li.red i{background:var(--t-red-deep);color:#fff}
.p-flow li.red b{color:#8F1A10}
.p-flow b{font-weight:700}
.p-flow span{padding-top:4px}
.p-sig{display:flex;flex-wrap:wrap;gap:6px}
.p-sig span{display:inline-flex;align-items:center;gap:6px;border:1px solid color-mix(in srgb,var(--t-on-accent) 50%,transparent);padding:4px 9px;font-size:12px;font-weight:600}
.p-sig .ico{width:13px;height:13px}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){.p-note{display:none}.panel .p-head p{font-size:13px}}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){.panel{gap:1.8vh;padding-top:8vh}.p-flow li{font-size:12.5px;padding-bottom:1vh}.p-crit span{padding:6px 9px;font-size:12.5px}}
.panel .pill{display:none;align-self:flex-start;margin-top:1vh;border-color:color-mix(in srgb,var(--t-on-accent) 55%,transparent)}
.panel .pill:hover{background:var(--ink);color:var(--accent);border-color:var(--ink)}

/* cycle */
.steps{position:absolute;left:var(--L);right:calc(100% - var(--R) + 2vw);top:27vh;display:grid;grid-template-columns:repeat(4,1fr);padding-left:var(--padL);column-gap:2.6vw}
.step{display:flex;flex-direction:column;gap:1.4vh}
.step .n{font-weight:800;font-size:clamp(22px,1.9vw,30px);color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.step .lab{font-size:14px;padding-bottom:12px;border-bottom:3px solid var(--accent);margin-top:3vh;max-width:88%}
.step h3{font-size:clamp(17px,1.45vw,23px)}
.step p{font-size:14px;line-height:1.55;max-width:34ch;color:var(--slate)}
.loop{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2.6vw);bottom:9vh;display:flex;align-items:center;gap:18px;font-size:14px}
.loop svg{flex:1;height:22px;min-width:40px}
.loop svg path{fill:none;stroke:var(--slate);stroke-width:1.2}
.loop b{font-weight:700;background:var(--accent);color:var(--on-accent);padding:3px 10px}

/* roles */
.roles-media{position:absolute;left:calc(var(--L) + var(--padL));width:calc(var(--M) - var(--L) - var(--padL) + 8vw);top:23vh;height:62vh;background:var(--paper-2);display:flex;align-items:center;justify-content:center;padding:2.6vh;margin:0;cursor:zoom-in}
.roles-media img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;box-shadow:0 18px 40px -18px color-mix(in srgb,var(--t-shade) 45%,transparent),0 2px 6px color-mix(in srgb,var(--t-shade) 12%,transparent);transition:opacity .4s,transform .5s cubic-bezier(.2,.7,.1,1)}
.roles-media img.phone{border-radius:14px}
.roles-media img.swap{opacity:0;transform:translateX(-20px)}
.zoom-hint{position:absolute;right:12px;bottom:12px;display:flex;align-items:center;gap:8px;background:var(--ink);color:#fff;font-size:12px;padding:7px 12px 7px 10px;border-radius:999px;pointer-events:none;opacity:.88}
.zoom-hint svg{width:14px;height:14px}
.zoom-hint svg *{fill:none;stroke:var(--accent);stroke-width:2}
.roles-text,.roles-nav{left:calc(var(--M) + 10vw)!important;width:calc(var(--R) - var(--M) - 12vw)}
.roles-text{top:23vh;display:flex;flex-direction:column;gap:1.8vh}
.roles-text .n{font-size:14px;font-variant-numeric:tabular-nums}
.roles-text h3{font-size:clamp(20px,1.85vw,30px)}
.roles-text p{font-size:14.5px;line-height:1.55}
.roles-text .dev{font-size:13px;color:var(--slate-soft)}
.roles-text>*{transition:opacity .35s,transform .45s}
.roles-text.swap>*{opacity:0;transform:translateY(10px)}
.roles-nav{bottom:15vh;display:flex;flex-direction:column;gap:2vh}
.roles-nav .row{display:flex;align-items:center;gap:18px}
.roles-nav .cnt{font-size:14px;font-variant-numeric:tabular-nums;color:var(--slate-soft)}
.roles-nav .cnt b{color:var(--ink);font-weight:800}
.roles-nav .bar{flex:1;min-width:40px;height:3px;background:var(--slate-line);position:relative}
.roles-nav .bar i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);transition:width .5s}
.thumbs{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.thumbs button{aspect-ratio:1;background:#fff center top/cover no-repeat;border:2px solid transparent;opacity:.65;transition:opacity .2s,border-color .2s}
.thumbs button:hover{opacity:1}
.thumbs button[aria-current="true"]{opacity:1;border-color:var(--accent)}
/* screens gallery */
#screens .lead{top:12.5vh;max-width:32vw;font-size:15px}
.sgrid{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:29vh;display:grid;grid-template-columns:repeat(3,1fr);gap:2.6vh 1.6vw;padding-bottom:5vh}
.scard{display:grid;grid-template-columns:42% 1fr;gap:14px;align-items:center;text-align:left;background:#fff;padding:10px;border:1px solid var(--slate-line);transition:box-shadow .2s,transform .2s;cursor:zoom-in}
.scard:hover{box-shadow:0 10px 30px -12px color-mix(in srgb,var(--t-shade) 35%,transparent);transform:translateY(-2px)}
.scard .im{aspect-ratio:16/10;background:var(--paper-2) center top/cover no-repeat}
.scard .nm{font-family:var(--cond);font-weight:600;font-size:clamp(13px,1.05vw,16px);text-transform:uppercase;line-height:1.2;color:var(--ink)}
.scard .ct{display:block;margin-top:5px;font-size:12px;color:var(--slate-soft)}
/* lightbox */
.lb{position:fixed;inset:0;z-index:90;background:color-mix(in srgb,var(--t-ink) 96%,transparent);color:#fff;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;opacity:0;transition:opacity .25s;background:color-mix(in srgb,var(--t-ink) 96%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.lb.show{opacity:1}
.lb[hidden]{display:none!important}
.lb-top{display:flex;align-items:center;gap:16px;padding:14px 18px 10px 22px;font-size:13px}
.lb-top .set{font-family:var(--cond);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--accent)}
.lb-top .ttl{font-weight:700;font-size:15px}
.lb-top .sub{color:var(--white-soft)}
.lb-top .sp{flex:1}
.lb-top .cnt{color:var(--white-soft);font-variant-numeric:tabular-nums}
.lb-btn{height:36px;min-width:36px;padding:0 14px;border-radius:18px;border:1px solid rgba(255,255,255,.3);font-size:13px;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.lb-btn:hover{background:var(--accent);color:var(--ink);border-color:var(--accent)}
.lb-stage{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:0 72px;cursor:zoom-in;touch-action:pan-y}
.lb-stage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;user-select:none;-webkit-user-drag:none;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lb-stage.zoomed{overflow:auto;display:block;padding:0;cursor:grab;touch-action:auto}
.lb-stage.zoomed.drag{cursor:grabbing}
.lb-stage.zoomed img{max-width:none;max-height:none;margin:24px auto;display:block}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.1);display:grid;place-items:center;z-index:2}
.lb-nav:hover{background:var(--accent)}
.lb-nav svg{width:16px;height:16px}
.lb-nav path{fill:none;stroke:#fff;stroke-width:2}
.lb-nav:hover path{stroke:var(--ink)}
.lb-prev{left:14px}.lb-next{right:14px}
.lb-strip{display:flex;gap:8px;padding:10px 18px 16px;overflow-x:auto;justify-content:safe center;scrollbar-width:thin;min-width:0}
.lb-strip button{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:5px;width:132px;padding:0;background:none;border:0;color:#fff;opacity:.55;cursor:pointer;transition:opacity .25s}
.lb-strip button:hover{opacity:.85}
.lb-strip .th{display:block;height:58px;width:100%;background:#222 center top/cover no-repeat;border:2px solid transparent;border-radius:4px}
.lb-strip button.ph .th{width:36px}
.lb-strip .tt{font-size:11.5px;line-height:1.25;text-align:center;max-width:132px}
.lb-strip button[aria-current="true"]{opacity:1}
.lb-strip button[aria-current="true"] .th{border-color:var(--accent)}
.lb-strip button[aria-current="true"] .tt{color:var(--accent);font-weight:600}
.lb-help{font-size:12px;color:var(--white-soft);text-align:center;padding-bottom:8px}
#memory .left img{cursor:zoom-in}
.arrows{display:flex;gap:10px}
.arrows button{width:34px;height:34px;border-radius:50%;background:#fff;display:grid;place-items:center;box-shadow:0 2px 8px color-mix(in srgb,var(--t-slate) 14%,transparent);transition:transform .2s}
.arrows button:hover{transform:scale(1.08);background:var(--accent)}
.arrows svg{width:12px;height:12px}
.arrows path{fill:none;stroke:var(--slate);stroke-width:1.6}

/* predict */
#predict .lead{top:25vh;max-width:30vw;font-size:15px;color:var(--white-soft)}
.pchart{position:absolute;left:calc(var(--L) + var(--padL));top:36vh;width:calc(var(--M) - var(--L) - var(--padL) - 3vw)}
.pchart svg{max-width:28vw}
.pchart svg{width:100%;height:auto;display:block;overflow:visible}
.pchart svg text{font-family:var(--display);font-size:11px;fill:var(--white-soft)}
.pchart svg .cap{font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.pchart figcaption{margin-top:14px;font-size:12.5px;line-height:1.5;color:var(--white-soft);max-width:52ch}
.pchart figcaption b{color:#fff;font-weight:600}
.psteps{top:12.5vh;width:calc(var(--R) - var(--M) - var(--padM) - 2vw);display:flex;flex-direction:column;gap:2.6vh;margin:0;padding:0;list-style:none;counter-reset:ps}
.psteps li{counter-increment:ps;display:grid;grid-template-columns:44px 1fr;column-gap:14px;row-gap:5px;padding-top:1.4vh;border-top:1px solid var(--white-line)}
.psteps li::before{content:counter(ps,decimal-leading-zero);grid-row:span 2;font-weight:800;font-size:22px;line-height:1;color:var(--accent)}
.psteps h3{font-size:clamp(15px,1.2vw,19px)}
.psteps p{font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.74)}
.psteps li.pnote{counter-increment:none;display:block;border:0;padding-top:0}
.psteps li.pnote::before{content:none}
.pnote{margin-top:.6vh;font-size:12.5px;line-height:1.5;color:var(--white-soft);padding-left:58px}
/* equipment */
#equip .lead{top:12.5vh;max-width:30vw;font-size:15px}
.etable{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:30vh;border-collapse:collapse;width:auto}
.etable th{font-family:var(--cond);font-weight:600;font-size:12.5px;letter-spacing:.07em;text-transform:uppercase;text-align:left;color:var(--ink);padding:0 1.2vw 1.2vh 0;border-bottom:3px solid var(--accent)}
.etable td{vertical-align:top;font-size:13.5px;line-height:1.42;padding:1.3vh 1.2vw 1.3vh 0;border-bottom:1px solid var(--slate-line)}
.etable td:first-child{font-family:var(--cond);font-weight:600;font-size:15px;text-transform:uppercase;letter-spacing:.01em;color:var(--ink);width:19%}
.etable td:nth-child(2){width:25%}.etable td:nth-child(3){width:26%}
.etable td:last-child{color:var(--ink)}
.etable .src{display:inline-block;font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;background:var(--accent);color:var(--on-accent);padding:1px 6px;margin-left:4px;vertical-align:1px}
/* tech */
#tech .lead{top:12.5vh;max-width:34vw;font-size:15px;color:rgba(255,255,255,.8)}
.tgrid{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:29vh;padding-bottom:5vh;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:auto;gap:2.2vh 2vw}
.tcard{display:flex;flex-direction:column;gap:.9vh;padding-top:1.6vh;border-top:1px solid var(--white-line);min-height:0}
.tcard .tag{font-family:var(--cond);font-weight:600;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.tcard h3{font-size:clamp(15px,1.25vw,20px);line-height:1.15}
.tcard .dev{font-size:12px;color:var(--white-soft);margin-top:-.4vh}
.tcard p{font-size:12.3px;line-height:1.45;color:rgba(255,255,255,.74)}
.tcard p b{color:#fff;font-weight:600}
/* story */
.story-lead{top:12.5vh;max-width:34vw;font-size:14.5px;color:rgba(255,255,255,.78)}
.flow{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:24vh;height:15vh}
.flow svg{width:100%;height:100%;display:block;overflow:visible}
.flow .edge{fill:none;stroke:rgba(255,255,255,.14);stroke-width:1.5;transition:stroke .3s}
.flow .edge.on{stroke:var(--accent);stroke-width:2.5;stroke-dasharray:6 6;animation:dash 1s linear infinite}
@keyframes dash{to{stroke-dashoffset:-12}}
.flow .node circle{fill:#161a20;stroke:rgba(255,255,255,.28);stroke-width:1.5;transition:fill .3s,stroke .3s}
.flow .node svg{color:rgba(255,255,255,.7)}
.flow .node text{fill:var(--white-soft);font-family:var(--display);font-size:15px;text-anchor:middle;transition:fill .3s}
.flow .node.on circle{fill:var(--accent);stroke:var(--accent)}
.flow .node.on svg{color:var(--ink)}
.flow .node.on text{fill:#fff;font-weight:700}
.flow .hub rect{fill:var(--t-panel);stroke:var(--accent);stroke-width:1.5}
.flow .hub text{fill:#fff;font-family:var(--cond);font-weight:600;font-size:15px;text-anchor:middle;letter-spacing:.04em;text-transform:uppercase}
.flow .hub text.s{fill:var(--accent);font-family:var(--display);font-weight:500;font-size:11.5px;letter-spacing:0;text-transform:none}
.flow .pk{fill:var(--accent);filter:drop-shadow(0 0 6px color-mix(in srgb,var(--t-accent) 90%,transparent))}
.st-stage{position:absolute;left:calc(var(--L) + var(--padL));width:calc(var(--M) - var(--L) - var(--padL) + 6vw);top:40vh;bottom:15.5vh;border-radius:14px;margin:0;background:#0f1317;overflow:hidden;display:flex;align-items:center;justify-content:center}
.st-vid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.32;transition:opacity .6s}
.st-dev{position:relative;display:inline-block;z-index:1;transition:opacity .35s,transform .45s}
.st-dev.swap{opacity:0;transform:translateY(12px)}
.st-dev img{display:block;max-height:calc(55vh - 48px);max-width:39vw;box-shadow:0 24px 60px rgba(0,0,0,.6)}
.st-dev img.phone{border-radius:16px}
.st-dev .chart{background:#0b0e12;border:1px solid rgba(255,255,255,.14);padding:18px 20px 14px;width:min(560px,36vw)}
.st-dev .chart .cap{font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.st-dev .chart svg{width:100%;height:auto;display:block}
.st-dev .chart svg text{font-family:var(--display);font-size:11px;fill:var(--white-soft)}
.st-dev .chart .legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:var(--white-soft)}
.st-dev .chart .legend b{color:#fff}
.st-hot{position:absolute;border:2px solid var(--accent);border-radius:12px;background:color-mix(in srgb,var(--t-accent) 14%,transparent);animation:hotp 1.6s ease-out infinite;cursor:pointer;padding:0}
@keyframes hotp{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--t-accent) 70%,transparent)}100%{box-shadow:0 0 0 16px color-mix(in srgb,var(--t-accent) 0%,transparent)}}
.st-hint{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);white-space:nowrap;background:var(--accent);color:var(--ink);font-size:12.5px;font-weight:700;padding:6px 12px;border-radius:16px;pointer-events:none}
.st-hot.r .st-hint{left:auto;right:0;transform:none}
.st-hot.r .st-hint::after{left:auto;right:24px}
.st-hot.l .st-hint{left:0;transform:none}
.st-hot.l .st-hint::after{left:24px}
.st-hint::after{content:"";position:absolute;left:50%;top:100%;margin-left:-6px;border:6px solid transparent;border-top-color:var(--accent)}
.st-zoom{position:absolute;right:12px;bottom:12px;z-index:2;display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.6);color:#fff;font-size:12px;padding:7px 12px 7px 10px;border-radius:999px}
.st-zoom:hover{background:var(--accent);color:var(--ink)}
.st-zoom svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.st-text{left:calc(var(--M) + 9vw)!important;width:calc(var(--R) - var(--M) - 11vw);top:40vh;bottom:23vh;overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:1.3vh}
.st-text::-webkit-scrollbar{display:none}
.st-text>*{transition:opacity .35s,transform .45s}
.st-text.swap>*{opacity:0;transform:translateY(10px)}
.st-meta{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.st-time{font-family:var(--cond);font-weight:600;font-size:clamp(28px,2.6vw,40px);line-height:1;color:var(--accent)}
.st-actor{font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.07em;text-transform:uppercase;color:var(--white-soft)}
.st-text h3{font-size:clamp(17px,1.4vw,22px)}
.st-text p{font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.82)}
.st-data{list-style:none;margin:.4vh 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.st-data li{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;font-size:12.5px;line-height:1.35;padding:5px 10px;background:rgba(255,255,255,.06);border-left:2px solid var(--accent)}
.st-data li b{color:var(--accent);font-weight:600;white-space:nowrap}
.st-ctl{left:calc(var(--M) + 9vw)!important;width:calc(var(--R) - var(--M) - 11vw);bottom:15.5vh;display:flex;flex-direction:column;gap:1.4vh}
.st-row{display:flex;align-items:center;gap:12px}
.st-play{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border-radius:19px;background:var(--accent);color:var(--ink);font-weight:700;font-size:13px}
.st-play svg{width:12px;height:12px;fill:currentColor}
.st-row .arrows button{background:rgba(255,255,255,.1)}
.st-row .arrows path{stroke:#fff}
.st-row .arrows button:hover path{stroke:var(--ink)}
.st-steps{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);bottom:3.2vh;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(8,1fr);gap:8px}
.st-steps button{position:relative;width:100%;height:100%;display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:9px 10px 8px;border-radius:10px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:var(--white-soft);font-size:11px;font-variant-numeric:tabular-nums;text-align:left;cursor:pointer;transition:background .25s,border-color .25s,transform .25s;overflow:hidden}
.st-steps button:hover{background:rgba(255,255,255,.1);transform:translateY(-2px)}
.st-steps button b{font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.02em;color:#fff}
.st-steps button span{font-size:11.5px;line-height:1.25}
.st-steps button[aria-current="true"]{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.st-steps button[aria-current="true"] b{color:var(--ink)}
.st-steps button.done{border-color:color-mix(in srgb,var(--t-accent) 45%,transparent)}
.st-steps button::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:transparent;transition:background .3s}
.st-steps button.done::before{background:color-mix(in srgb,var(--t-accent) 45%,transparent)}
.st-steps button[aria-current="true"]::before{background:var(--ink)}
body[data-sec="story"] .gridlines i:nth-child(2){opacity:0}
/* cycle visuals */
.step{position:relative}
.step:not(:last-child)::after{content:"";position:absolute;right:-1.55vw;top:10px;width:9px;height:9px;border-top:2px solid var(--slate-soft);border-right:2px solid var(--slate-soft);transform:rotate(45deg)}
.shead{display:flex;align-items:center;justify-content:space-between;max-width:88%}
.sic{width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--accent);display:grid;place-items:center}
.sic .ico{width:17px;height:17px}
.sic.red{background:var(--t-red-deep);color:#fff}
.step .lab{margin-top:0!important}
.viz{max-width:94%;height:clamp(96px,6.6vw,128px);background:#fff;border:1px solid var(--slate-line);padding:9px 10px;display:flex;flex-direction:column;justify-content:center;gap:.6em;font-size:clamp(10.5px,.74vw,14px);color:var(--slate);box-shadow:0 6px 18px -12px color-mix(in srgb,var(--t-shade) 35%,transparent)}
.viz .ico{width:1.2em;height:1.2em}
.v-win .bar{display:flex;gap:2px;height:2.6em}
.v-win .bar span{display:flex;align-items:center;justify-content:center;gap:5px;background:var(--paper-2);font-size:1em;white-space:nowrap;overflow:hidden;padding:0 4px}
.v-win .bar .w{background:var(--ink);color:var(--accent);font-weight:700}
.v-win .cap,.v-alert .cap{display:flex;align-items:center;gap:6px;font-size:1em;color:var(--slate-soft)}
.v-order{justify-content:flex-start;gap:4px}
.v-order .hd{display:flex;align-items:center;gap:6px;font-weight:700;color:var(--ink);font-size:1em}
.v-order ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.v-order li{white-space:nowrap;display:flex;align-items:center;gap:6px;font-size:1em;line-height:1.3}
.v-order li em{font-style:normal;margin-left:auto;color:var(--slate-soft)}
.ck{width:1.05em;height:1.05em;border:1.5px solid var(--slate-soft);flex:none;position:relative}
.ck.on{background:#1E874B;border-color:#1E874B}
.ck.on::after{content:"";position:absolute;left:3px;top:0;width:3px;height:6px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.v-fact .off{align-self:flex-start;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;font-size:.95em;font-weight:600;color:#7B4FD6;background:rgba(123,79,214,.1);padding:2px 7px}
.v-fact .chips{display:grid;grid-template-columns:1fr 1fr;gap:4px}
.v-fact .chips span{white-space:nowrap;display:flex;align-items:center;gap:5px;background:var(--paper);padding:3px 6px;font-weight:600;color:var(--ink);font-size:1em}
.v-fact .chips .ico{color:#1E874B}
.v-alert .chain{display:flex;align-items:center;gap:4px}
.v-alert .chain i{flex:1;height:2px;background:repeating-linear-gradient(90deg,var(--slate-soft) 0 4px,transparent 4px 7px);min-width:6px}
.v-alert .c{width:2.4em;height:2.4em;border-radius:50%;background:var(--paper-2);color:var(--ink);display:grid;place-items:center;flex:none}
.v-alert .badge{flex:none;background:var(--t-red-deep);color:#fff;font-family:var(--cond);font-weight:600;font-size:.95em;letter-spacing:.04em;text-transform:uppercase;padding:5px 7px;animation:ring 1.4s ease-out infinite}
.loop2{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);bottom:6vh;height:9vh;min-height:58px}
.loop2 .u{position:absolute;left:5%;right:10%;top:0;height:34px;border:2px dashed var(--slate-soft);border-top:0}
.loop2 .u::before{content:"";position:absolute;left:-7px;top:-4px;border:6px solid transparent;border-bottom:9px solid var(--slate-soft);border-top:0}
.loop2 p{position:absolute;left:50%;top:22px;transform:translateX(-50%);background:var(--paper);padding:0 14px;font-size:clamp(13.5px,.8vw,16px);white-space:nowrap;color:var(--slate)}
.loop2 p b{background:var(--accent);color:var(--ink);padding:3px 10px;margin-right:6px}
@media (min-width:901px) and (min-height:600px) and (min-height:900px){.loop2{bottom:13vh}}
/* predict v2 */
.risk{margin-top:10px;display:flex;gap:16px;align-items:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);padding:12px 14px}
.risk .gauge{width:76px;height:76px;flex:none}
.risk .gauge text{fill:#fff;font-family:var(--display);font-weight:800;font-size:17px}
.rbody{display:flex;flex-direction:column;gap:8px;min-width:0}
.rhead{font-size:13px;color:var(--white-soft)}.rhead b{color:#fff;font-size:15px}
.rchips{display:flex;flex-wrap:wrap;gap:6px}
.rchips span{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:4px 8px;border:1px solid rgba(255,255,255,.25);color:#fff}
.rchips .ico{width:13px;height:13px;color:var(--accent)}
.rnote{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--accent)}
.rnote .ico{width:14px;height:14px}
.psteps h3{display:flex;align-items:center;gap:9px}
.psteps h3 .ico{width:18px;height:18px;color:var(--accent)}
/* equipment cards */
.egrid{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:29vh;display:grid;grid-template-columns:repeat(3,1fr);gap:2vh 1.4vw;padding-bottom:4vh}
.ecard{background:#fff;border-top:3px solid var(--accent);padding:1.6vh 1.1vw 1.4vh;display:flex;flex-direction:column;gap:.9vh;box-shadow:0 8px 24px -16px color-mix(in srgb,var(--t-shade) 40%,transparent)}
.ehead{display:flex;align-items:center;gap:10px}
.eic{width:34px;height:34px;border-radius:50%;background:var(--ink);color:var(--accent);display:grid;place-items:center;flex:none}
.eic .ico{width:18px;height:18px}
.ecard h3{font-size:clamp(13px,1.05vw,16px);line-height:1.15;color:var(--ink)}
.ecard p{display:grid;grid-template-columns:16px 1fr;align-items:start;column-gap:8px;font-size:12.5px;line-height:1.4;color:var(--slate)}
.ecard p .ico{width:15px;height:15px;margin-top:2px;color:var(--slate-soft)}
.ecard p b{display:block}
.ecard p b{font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--slate-soft)}
.ecard p.act{background:color-mix(in srgb,var(--t-accent) 18%,#fff);margin:0 -.5vw;padding:5px .5vw;color:var(--ink);font-weight:500}
.ecard p.act .ico{color:var(--ink)}
.ecard em{font-style:normal;font-family:var(--cond);font-weight:600;font-size:10.5px;letter-spacing:.05em;background:var(--accent);color:var(--ink);padding:0 5px;margin-left:4px}
/* tech icons */
.tcard .tag{display:inline-flex;align-items:center;gap:9px}
.tic{width:26px;height:26px;border-radius:50%;border:1.5px solid var(--accent);display:grid;place-items:center;flex:none}
.tic .ico{width:16px;height:16px;color:var(--accent)}
.tcard p.infx{border-left:2px solid var(--accent);padding-left:9px}
/* light glass sections: tech + equip */
.gl{overflow-x:hidden;background:radial-gradient(ellipse 36% 46% at 55.5% 47%,color-mix(in srgb,var(--t-accent-hi) 30%,transparent),color-mix(in srgb,var(--t-accent-hi) 10%,transparent) 45%,transparent 72%),radial-gradient(ellipse 34% 36% at 81% 16%,rgba(201,219,242,.85),transparent 70%),radial-gradient(ellipse 34% 33% at 14% 90%,color-mix(in srgb,var(--t-gl-c3) 75%,transparent),transparent 70%),linear-gradient(180deg,var(--t-gl-top),#F2F2F3 55%,#EAEEF4)}
.gl .tabs{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.gl .tfx{position:absolute;inset:0;pointer-events:none;z-index:1;contain:strict}
.gl .tfx svg{position:absolute;left:0;top:0;overflow:visible}
.gl .tfx .ln{fill:none;stroke:var(--t-slate);stroke-opacity:.2;stroke-width:1.1}
.gl .tfx .pt{position:absolute;left:0;top:0;width:12px;height:3px;margin:-1.5px 0 0 -6px;border-radius:2px;background:linear-gradient(90deg,color-mix(in srgb,var(--t-accent-2) 0%,transparent),var(--t-accent-2));offset-rotate:auto;opacity:0;animation:tpt 1.6s cubic-bezier(.45,0,.9,.6) infinite;will-change:offset-distance,opacity}
@keyframes tpt{0%{offset-distance:0%;opacity:0}18%{opacity:1}88%{opacity:1}100%{offset-distance:100%;opacity:0}}
.gl .tfx .core{position:absolute;width:92px;height:92px;margin:-46px 0 0 -46px;border-radius:50%;background:radial-gradient(circle at 42% 36%,color-mix(in srgb,var(--t-accent) 10%,#fff) 0%,color-mix(in srgb,var(--t-accent) 63%,#fff) 45%,var(--t-accent) 100%);box-shadow:0 12px 30px -8px color-mix(in srgb,var(--t-accent-ink) 55%,transparent),inset 0 0 0 1.5px rgba(255,255,255,.8);display:grid;place-items:center;animation:tbreath 2.4s ease-in-out infinite}
.gl .tfx .core svg{position:static;width:32px;height:32px;fill:var(--t-on-accent)}
.gl .tfx .rg{position:absolute;border-radius:50%;border:1.4px solid var(--t-accent);opacity:0;animation:tring 2.8s ease-out infinite}
.gl .tfx .rg1{width:150px;height:150px;margin:-75px 0 0 -75px}
.gl .tfx .rg2{width:230px;height:230px;margin:-115px 0 0 -115px;animation-delay:-.93s}
.gl .tfx .rg3{width:320px;height:320px;margin:-160px 0 0 -160px;animation-delay:-1.86s}
@keyframes tring{0%{transform:scale(.85);opacity:0}25%{opacity:.38}100%{transform:scale(1.12);opacity:0}}
@keyframes tbreath{50%{transform:scale(1.05)}}
.gl:not(.run) .tfx *,.gl:not(.run) .tlive i{animation-play-state:paused!important}
@keyframes tring{0%{transform:scale(.85);opacity:0}25%{opacity:1}100%{transform:scale(1.15);opacity:0}}
.gl .tsub{position:absolute;z-index:2;left:calc(var(--L) + var(--padL));top:calc(18.2vh + 8px);font-size:13.5px;color:var(--slate);max-width:36vw;white-space:nowrap}
.gl .tshade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,color-mix(in srgb,var(--t-gl-top) 70%,transparent) 0%,color-mix(in srgb,var(--t-gl-top) 0%,transparent) 26%)}
.gl .sec-title{z-index:2}
.gl .tcol{position:absolute;z-index:2;top:25vh;bottom:4vh;width:24.5vw;display:flex;flex-direction:column;gap:1.2vh}
.gl .tleft{left:calc(var(--L) + var(--padL))}
.gl .tright{right:calc(100% - var(--R) + 1.5vw)}
.gl .tcap{display:flex;align-items:center;gap:8px;font-family:var(--cond);font-weight:600;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}
.gl .tcap i{width:18px;height:3px;background:var(--accent)}
.gl .tcard{position:relative;display:flex;flex-direction:column;gap:.85vh;padding:1.5vh 1vw 1.4vh;border-radius:16px;border:1px solid rgba(255,255,255,.85);border-top:1px solid rgba(255,255,255,.95);background:linear-gradient(150deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.84) 100%);box-shadow:0 18px 40px -22px color-mix(in srgb,var(--t-shade) 45%,transparent),0 2px 6px -2px color-mix(in srgb,var(--t-shade) 8%,transparent),inset 0 1px 0 rgba(255,255,255,.9);transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
.gl .tcard:hover{transform:translateY(-3px);box-shadow:0 24px 48px -22px color-mix(in srgb,var(--t-shade) 50%,transparent),0 0 0 1px color-mix(in srgb,var(--t-accent) 55%,transparent),inset 0 1px 0 #fff}
.gl .thead{display:flex;align-items:center;gap:10px}
.gl .thead>div{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}
.gl .trow{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gl .tic{width:32px;height:32px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 4px 12px -4px color-mix(in srgb,var(--t-accent-ink) 60%,transparent),inset 0 1px 0 rgba(255,255,255,.6);display:grid;place-items:center;flex:none}
.gl .tic .ico{width:16px;height:16px;color:var(--ink)}
.gl .tcard .tag{display:block;font-family:var(--cond);font-weight:600;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--slate)}
.gl .tcard h3{font-size:clamp(14px,1.1vw,17.5px);color:var(--ink)}
.gl .co{flex:none;font-size:10px;font-weight:700;letter-spacing:.02em;padding:2px 8px;border-radius:9px;white-space:nowrap}
.gl .co-sks .co{background:var(--accent);color:var(--ink)}
.gl .co-syn .co{background:var(--ink);color:#fff}
.gl .co-ws .co{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.2px var(--ink)}
.gl .tcard p{font-size:12px;line-height:1.45;color:var(--slate)}
.gl .sens{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}
.gl .sens li{display:inline-flex;align-items:center;gap:5px;font-size:10.8px;font-weight:500;padding:2px 8px 2px 6px;border-radius:8px;background:rgba(255,255,255,.75);border:1px solid color-mix(in srgb,var(--t-on-accent) 8%,transparent);color:var(--ink)}
.gl .sens li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.5px color-mix(in srgb,var(--t-accent-ink) 35%,transparent)}
.gl .tcard p.infx{margin-top:auto;padding:5px 9px;border:0;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--t-accent) 14%,transparent);font-size:11.4px;line-height:1.4;color:var(--ink)}
.gl .tcard p.infx b{color:var(--ink)}
.gl .tlive{position:absolute;z-index:2;left:var(--cx,55.5vw);transform:translateX(-50%);top:calc(var(--cy,46vh) + 118px);display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:18px;font-size:12px;font-weight:500;color:var(--ink);background:rgba(255,255,255,.92);border:1px solid #fff;box-shadow:0 10px 24px -14px color-mix(in srgb,var(--t-shade) 50%,transparent)}
.gl .tlive i{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 color-mix(in srgb,var(--t-accent) 70%,transparent);animation:tlive 1.8s ease-out infinite}
@keyframes tlive{to{box-shadow:0 0 0 10px color-mix(in srgb,var(--t-accent) 0%,transparent)}}
.gl .thub{position:absolute;z-index:2;left:var(--cx,55.5vw);transform:translateX(-50%);bottom:5vh;max-width:min(300px,18.5vw);width:max-content;display:flex;align-items:center;gap:10px;padding:8px 16px 8px 8px;border-radius:26px;font-size:12.5px;line-height:1.3;color:var(--ink);background:rgba(255,255,255,.94);border:1px solid #fff;box-shadow:0 14px 30px -16px color-mix(in srgb,var(--t-shade) 50%,transparent)}
.gl .thub .tic{width:36px;height:36px}
@media (min-width:901px) and (min-height:600px) and (max-height:900px){.gl .tcard p:not(.infx):not(.find){display:none}}
@media (min-width:901px) and (min-height:600px) and (max-height:720px){.gl .tcol{top:24vh;bottom:2.5vh;gap:.9vh}.gl .tcard{padding:1.1vh .9vw 1vh;gap:.6vh}.gl .tic{width:28px;height:28px}.gl .thub{bottom:3vh}}
@media (prefers-reduced-motion:reduce){.gl .tlive i,.gl .tfx *{animation:none!important}.gl .tfx .pt{display:none}}
.gl .find{font-size:11.6px;line-height:1.4;color:var(--slate)}
.gl .find b{font-family:var(--cond);font-weight:600;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin-right:4px}
.gl .tfx .core .spin{animation:tspin 5s linear infinite}
@keyframes tspin{to{transform:rotate(360deg)}}
.gl .twave{gap:10px}
.gl .wv{width:64px;height:16px;overflow:hidden;flex:none}
.gl .wv svg{display:block;width:128px;height:16px;animation:twv 1.1s linear infinite;will-change:transform}
.gl .wv path{fill:none;stroke:var(--t-accent-2);stroke-width:1.8;stroke-linecap:round}
@keyframes twv{to{transform:translateX(-64px)}}
.gl:not(.run) .wv svg,.gl:not(.run) .spin{animation-play-state:paused}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){.gl .find{display:none}}
/* equip graphics */
#equip .eill{width:46px;height:46px;flex:none;border-radius:13px;background:linear-gradient(145deg,color-mix(in srgb,var(--t-accent) 18%,#fff),color-mix(in srgb,var(--t-accent) 42%,#fff));box-shadow:inset 0 1px 0 #fff,0 4px 12px -6px color-mix(in srgb,var(--t-accent-ink) 55%,transparent);display:grid;place-items:center}
#equip .eill svg{width:38px;height:38px;fill:none;stroke:var(--t-on-accent);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
#equip .eill .blades{transform-origin:24px 24px;animation:tspin 4s linear infinite}
#equip:not(.run) .eill .blades{animation-play-state:paused}
#equip .echart{display:grid;grid-template-columns:132px 1fr;align-items:center;gap:10px;padding:5px 8px;border-radius:9px;background:color-mix(in srgb,var(--t-slate) 5%,transparent);border:1px solid color-mix(in srgb,var(--t-slate) 8%,transparent)}
#equip .echart svg{width:132px;height:34px;overflow:visible}
#equip .echart .b{fill:#C5CDD9}
#equip .echart .hi{fill:var(--t-accent);stroke:var(--t-accent-2);stroke-width:.8}
#equip .echart .ln{fill:none;stroke:var(--t-slate);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:200;stroke-dashoffset:200;transition:stroke-dashoffset 1.4s cubic-bezier(.3,.6,.2,1) .2s}
#equip.run .echart .ln{stroke-dashoffset:0}
#equip .echart .trend{fill:none;stroke:var(--t-accent-2);stroke-width:1.2;stroke-dasharray:3 3}
#equip .echart .thr{fill:none;stroke:#D8503F;stroke-width:1;stroke-dasharray:3 3;opacity:.7}
#equip .echart .axis{stroke:#C5CDD9;stroke-width:1.2}
#equip .echart .pt{fill:var(--t-accent);stroke:var(--t-on-accent);stroke-width:1.2}
#equip .echart .lbl{font:600 8.5px/1 var(--display);fill:#6B7A93;letter-spacing:.02em}
#equip .echart rect{transform-box:fill-box;transform-origin:bottom;transform:scaleY(.15);transition:transform .7s cubic-bezier(.3,.7,.2,1)}
#equip.run .echart rect{transform:none}
#equip .echart .find{font-size:11px;line-height:1.35}
#equip .echart .find b{display:block;margin:0 0 1px}
@media (min-width:901px) and (min-height:600px) and (max-height:1020px){#equip .sens{display:none}}
@media (min-width:901px) and (min-height:600px) and (max-height:800px){#equip .tcol{gap:1vh}#equip .echart{padding:4px 8px;grid-template-columns:120px 1fr}#equip .echart svg{width:120px;height:31px}#equip .echart .find{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:10.8px;line-height:1.3}#equip .echart .find b{display:inline;margin-right:5px}#equip .eill{width:40px;height:40px}#equip .eill svg{width:33px;height:33px}}
#equip .tcard{flex-shrink:0}
@media (min-width:901px) and (min-height:600px) and (max-height:700px){#equip .echart .find{display:none}#equip .echart{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){#equip .eill .blades{animation:none}#equip .echart .ln{stroke-dashoffset:0;transition:none}#equip .echart rect{transform:none;transition:none}}
/* memory infographics */
#memory .mm-lead{font-size:15px;max-width:46ch;margin-top:-1vh}
#memory .mm-cap{display:flex;align-items:center;gap:7px;font-family:var(--cond);font-weight:600;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1.6vh}
#memory .mm-cap .ico{width:15px;height:15px}
#memory .mm-tl ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;position:relative}
#memory .mm-tl ol::before{content:"";position:absolute;left:6px;right:6px;top:6px;height:2px;background:color-mix(in srgb,var(--t-on-accent) 35%,transparent);transform-origin:left}
#memory .mm-tl li{position:relative;padding-top:20px;display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:1.3}
#memory .mm-tl li::before{content:"";position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 3px var(--t-accent-hi)}
#memory .mm-tl li.bad::before{background:var(--t-red-deep)}
#memory .mm-tl li.fix::before{background:#fff;border:3px solid var(--ink);box-sizing:border-box}
#memory .mm-tl em{font-style:normal;font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.05em;opacity:.75}
#memory .mm-tl b{font-weight:700;font-size:13px}
#memory .mm-tl li.bad b{color:#8F1A10}
#memory .mm-tl small{font-size:11.5px;opacity:.8}
#memory .mm-tl small::before{content:"почему: ";font-weight:600}
#memory .mm-tl li.fix small::before{content:""}
#memory .mm-chat{display:flex;flex-direction:column;gap:1.1vh;max-width:500px}
#memory .mm-q{align-self:flex-end;max-width:82%;background:var(--ink);color:#fff;padding:9px 13px;border-radius:14px 14px 4px 14px;font-size:13.5px;font-weight:500;line-height:1.35;box-shadow:0 10px 24px -14px rgba(0,0,0,.6)}
#memory .mm-typing{align-self:flex-start;display:flex;gap:4px;padding:9px 12px;border-radius:14px;background:rgba(255,255,255,.85);opacity:0;height:0;overflow:hidden;margin:0}
#memory .mm-typing i{width:6px;height:6px;border-radius:50%;background:var(--ink);opacity:.5;animation:mmdot 1s infinite}
#memory .mm-typing i:nth-child(2){animation-delay:.15s}#memory .mm-typing i:nth-child(3){animation-delay:.3s}
@keyframes mmdot{50%{transform:translateY(-3px);opacity:1}}
#memory .mm-a{align-self:flex-start;max-width:92%;background:#fff;border-radius:14px 14px 14px 4px;padding:10px 13px 11px;display:flex;flex-direction:column;gap:7px;box-shadow:0 14px 30px -18px color-mix(in srgb,var(--t-accent-deep) 55%,transparent)}
#memory .mm-who{display:inline-flex;align-items:center;gap:6px;font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate)}
#memory .mm-who .ico{width:14px;height:14px;color:var(--t-accent-ink)}
#memory .mm-a p{font-size:13px;line-height:1.4;max-width:none}
#memory .mm-links{display:flex;flex-wrap:wrap;gap:5px}
#memory .mm-links span{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px 3px 7px;border-radius:9px;background:color-mix(in srgb,var(--t-accent) 30%,#fff);color:var(--ink)}
#memory .mm-links .ico{width:13px;height:13px}
#memory .mm-props{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
#memory .mm-props li{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:5px 10px 5px 8px;border-radius:16px;background:color-mix(in srgb,var(--t-on-accent) 90%,transparent);color:#fff}
#memory .mm-props .ico{width:15px;height:15px;color:var(--accent)}
/* sources next to the phone */
#memory .mm-srcs{position:absolute;z-index:2;left:calc(27.08vw + 17.6vh + 28px);right:calc(100% - var(--M) + 20px);top:22vh;bottom:22vh;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
#memory .mm-src{position:relative;display:flex;align-items:center;gap:9px;padding:8px 11px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#fff;font-size:11.5px;line-height:1.25;transition:background .4s,border-color .4s}
#memory .mm-src b{display:block;font-size:12.5px;font-weight:600}
#memory .mm-src span{color:rgba(255,255,255,.62)}#memory .mm-src span b{color:#fff}
#memory .mm-src i{width:30px;height:30px;flex:none;border-radius:50%;display:grid;place-items:center;background:color-mix(in srgb,var(--t-accent) 14%,transparent);color:var(--accent);font-style:normal}
#memory .mm-src i .ico{width:15px;height:15px}
#memory .mm-src::before{content:"";position:absolute;right:100%;top:50%;width:28px;border-top:1.5px dashed color-mix(in srgb,var(--t-accent) 45%,transparent)}
#memory .mm-src::after{content:"";position:absolute;right:100%;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:mmflow 1.6s linear infinite}
#memory .s2::after{animation-delay:-.4s}#memory .s3::after{animation-delay:-.8s}#memory .s4::after{animation-delay:-1.2s}
@keyframes mmflow{0%{transform:translateX(0);opacity:0}20%{opacity:1}100%{transform:translateX(-28px);opacity:0}}
/* sequence on entering */
#memory.run .mm-tl ol::before{animation:mmline 1.3s cubic-bezier(.3,.6,.2,1) both}
@keyframes mmline{from{transform:scaleX(0)}}
#memory.run .mm-tl li{animation:mmup .5s cubic-bezier(.2,.7,.2,1) var(--d) both}
@keyframes mmup{from{opacity:0;transform:translateY(8px)}}
#memory.run .mm-q{animation:mmup .45s ease 1.5s both}
#memory.run .mm-typing{animation:mmtype 1.1s ease 2s both}
@keyframes mmtype{0%{opacity:0;height:0;padding-top:0;padding-bottom:0}15%,85%{opacity:1;height:24px;padding-top:9px;padding-bottom:9px}100%{opacity:0;height:0;padding-top:0;padding-bottom:0}}
#memory.run .mm-a{animation:mmup .5s ease 3.05s both}
#memory.run .mm-links span{animation:mmpop .4s ease both}
#memory.run .l1{animation-delay:3.5s!important}#memory.run .l2{animation-delay:3.8s!important}#memory.run .l3{animation-delay:4.1s!important}
@keyframes mmpop{from{opacity:0;transform:scale(.8)}}
#memory.run .mm-src.s1{animation:mmhl 1.4s ease 3.5s both}#memory.run .mm-src.s2{animation:mmhl 1.4s ease 3.8s both}#memory.run .mm-src.s3{animation:mmhl 1.4s ease 4.1s both}
@keyframes mmhl{0%{background:rgba(255,255,255,.06)}30%{background:color-mix(in srgb,var(--t-accent) 28%,transparent);border-color:var(--accent);transform:translateX(-4px)}100%{background:color-mix(in srgb,var(--t-accent) 10%,transparent);border-color:color-mix(in srgb,var(--t-accent) 50%,transparent)}}
#memory.run .mm-srcs .mm-src{animation-fill-mode:both}
#memory.run .mm-props li{animation:mmup .45s ease both}
#memory.run .mm-props li:nth-child(1){animation-delay:4.4s}#memory.run .mm-props li:nth-child(2){animation-delay:4.55s}#memory.run .mm-props li:nth-child(3){animation-delay:4.7s}
#memory:not(.run) .mm-src::after,#memory:not(.run) .mm-typing i{animation-play-state:paused}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){#memory .right{gap:2vh;padding-top:10vh}#memory h2{font-size:clamp(24px,2.2vw,34px)}#memory .mm-lead{font-size:13.5px}#memory .mm-tl li small{display:none}#memory .mm-a p{font-size:12.5px}}
@media (min-width:901px) and (min-height:600px) and (max-aspect-ratio:3/2){#memory .mm-srcs{display:none}}
@media (prefers-reduced-motion:reduce){#memory *{animation:none!important}}
/* plan: roadmap */
.plan-lead{top:12.5vh;max-width:32vw;font-size:15px;color:var(--slate)}
.rm{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 1vw);top:31vh;bottom:6vh;display:flex;flex-direction:column;gap:3.6vh}
.rm-ph{display:grid;grid-template-columns:1fr 1fr;gap:1.4vw}
.rm-ph .ph{position:relative;display:flex;align-items:baseline;gap:10px;padding:0 0 12px;font-size:13px;color:var(--slate)}
.rm-ph .ph b{font-family:var(--cond);font-weight:700;font-size:clamp(16px,1.35vw,21px);letter-spacing:.03em;text-transform:uppercase;color:var(--ink)}
.rm-ph .ph::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;border:2px solid var(--ink);border-bottom:0;border-radius:8px 8px 0 0}
.rm-ph .ph.pl::after{border-color:var(--t-accent-2)}
.rm-ph .ph.pl b{background:var(--accent);padding:1px 8px;border-radius:4px}
.rm-ph .ph.sc::after{border-color:#9AA6B8;border-style:dashed}
.rm-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(8,1fr);column-gap:1.4vw;position:relative;flex:1}
.rm-list::before,.rm-list::after{content:"";position:absolute;z-index:0;top:26px;height:4px;border-radius:2px}
.rm-list::before{left:0;right:0;background:repeating-linear-gradient(90deg,#9AA6B8 0 8px,transparent 8px 14px)}
.rm-list::after{left:0;width:calc(50% - .7vw);background:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--t-accent-ink) 25%,transparent);transform-origin:left}
.rm-list li{position:relative;z-index:1;display:flex;flex-direction:column;gap:1vh;min-width:0}
.rm-list .nd{position:relative;z-index:1;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:#fff;border:2px solid var(--ink);box-shadow:0 10px 22px -12px color-mix(in srgb,var(--t-shade) 55%,transparent),inset 0 1px 0 #fff;margin-bottom:.8vh}
.rm-list .nd .ico{width:24px;height:24px;color:var(--ink)}
.rm-list li.pl .nd{background:radial-gradient(circle at 38% 32%,color-mix(in srgb,var(--t-accent) 30%,#fff),var(--t-accent) 70%);border-color:var(--t-accent-2)}
.rm-list .st{align-self:flex-start;font-family:var(--cond);font-weight:600;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate-soft)}
.rm-list li.pl .st{color:var(--t-accent-deep)}
.rm-list h3{font-size:clamp(14px,1.15vw,18px);line-height:1.15;color:var(--ink)}
.rm-list p{font-size:13px;line-height:1.48;color:var(--slate)}
.rm-gate{position:absolute;z-index:2;left:calc(50% - .7vw);top:28px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.rm-gate i{width:18px;height:18px;background:var(--ink);transform:rotate(45deg);border:3px solid var(--t-paper);box-sizing:content-box}
.rm-gate span{position:absolute;bottom:calc(100% + 8px);white-space:nowrap;font-family:var(--cond);font-weight:600;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);background:var(--t-paper);padding:0 4px}
#plan.run .rm-list::after{animation:rmfill 1.2s cubic-bezier(.3,.6,.2,1) .15s both}
@keyframes rmfill{from{transform:scaleX(0)}}
#plan.run .rm-list li{animation:rmup .5s cubic-bezier(.2,.7,.2,1) calc(.15s + var(--i)*.09s) both}
@keyframes rmup{from{opacity:0;transform:translateY(10px)}}
#plan.run .rm-ph .ph{animation:rmup .5s ease both}#plan.run .rm-ph .ph.sc{animation-delay:.45s}
@media (min-width:901px) and (min-height:600px) and (max-height:720px){.rm{top:27vh;gap:2.4vh}.rm-list p{font-size:12px}.rm-list .nd{width:46px;height:46px}.rm-list::before,.rm-list::after{top:21px}.rm-gate{top:23px}}
@media (prefers-reduced-motion:reduce){#plan *{animation:none!important}}
/* cycle: neumorphism */
#cycle{background:var(--t-paper3)}
#cycle .steps{top:25vh;column-gap:2.2vw}
#cycle .step{padding:2.4vh 1.3vw 2.4vh;border-radius:22px;background:var(--t-paper3);box-shadow:12px 12px 26px #C6CDD8,-12px -12px 26px #FFFFFF;gap:1.3vh;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s}
#cycle .step:hover{transform:translateY(-3px);box-shadow:16px 16px 32px #C1C8D4,-14px -14px 30px #FFFFFF}
#cycle .step:not(:last-child)::after{right:-1.55vw;top:50%;width:11px;height:11px;border-top:2.5px solid #A7B2C3;border-right:2.5px solid #A7B2C3;margin-top:-6px}
#cycle .shead,#cycle .viz{max-width:none}
#cycle .step .n{font-size:clamp(20px,1.7vw,28px);color:#A7B2C3}
#cycle .sic{width:44px;height:44px;background:var(--t-paper3);color:var(--ink);box-shadow:5px 5px 11px #C6CDD8,-5px -5px 11px #FFFFFF}
#cycle .sic .ico{width:20px;height:20px}
#cycle .sic.red{background:var(--t-paper3);color:var(--t-red-deep)}
#cycle .step .lab{border-bottom:0;padding-bottom:0;max-width:none;font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--t-accent-deep);display:flex;align-items:center;gap:8px}
#cycle .step .lab::before{content:"";width:18px;height:3px;border-radius:2px;background:var(--accent)}
#cycle .viz{border:0;border-radius:14px;background:var(--t-paper3);box-shadow:inset 5px 5px 10px #C9D0DA,inset -5px -5px 10px #FFFFFF}
#cycle .v-win .bar span{background:#DDE3EB;border-radius:6px}
#cycle .v-win .bar .w{background:var(--accent);color:var(--ink)}
#cycle .v-fact .chips span{background:var(--t-paper4);border-radius:6px}
#cycle .v-alert .c{background:var(--t-paper4)}
#cycle .step h3{color:var(--ink)}
#cycle .step p{font-size:13.5px}
#cycle .loop2 .u{border:2.5px dashed #A7B2C3;border-top:0;border-radius:0 0 22px 22px}
#cycle .loop2 .u::before{border-bottom-color:#A7B2C3}
#cycle .loop2 p{background:var(--t-paper3)}
#cycle .loop2 p b{border-radius:6px;box-shadow:4px 4px 9px #C6CDD8,-4px -4px 9px #fff}
#cycle.run .step{animation:rmup .55s cubic-bezier(.2,.7,.2,1) both}
#cycle.run .step:nth-child(2){animation-delay:.12s}#cycle.run .step:nth-child(3){animation-delay:.24s}#cycle.run .step:nth-child(4){animation-delay:.36s}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){#cycle .steps{top:24vh}#cycle .step{padding:1.8vh 1.1vw}#cycle .step p{font-size:12.5px}#cycle .sic{width:38px;height:38px}}
@media (max-width:900px),(max-height:599px){#cycle .step{padding:18px}#cycle .step:not(:last-child)::after{display:none}}
/* predict: neumorphism (light) */
#predict{background:var(--t-paper3)}
#predict .sec-title{color:var(--slate)}
#predict .lead{top:12.5vh;left:calc(var(--M) + var(--padM));max-width:none;width:calc(var(--R) - var(--M) - var(--padM) - 2vw);font-size:15px;color:var(--slate)}
#predict .pchart{top:27vh;width:calc(var(--M) - var(--L) - var(--padL) - 2vw);padding:2.2vh 1.4vw 1.6vh;border-radius:22px;background:var(--t-paper3);box-shadow:12px 12px 26px #C6CDD8,-12px -12px 26px #fff}
#predict .pchart svg{max-width:none}
#predict .pcap{position:absolute;z-index:2;left:calc(var(--L) + var(--padL) + 1.4vw);top:calc(27vh + 1.6vh);font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--slate-soft)}
#predict .pchart{padding-top:4.6vh}
@media (max-width:900px),(max-height:599px){#predict .pcap{display:none}}
#predict .pchart svg text{fill:#6B7A93}
#predict .pchart .risk{margin-top:1.8vh;display:flex;gap:14px;align-items:center;padding:1.4vh 1vw;border-radius:16px;background:var(--t-paper3);box-shadow:inset 5px 5px 10px #C9D0DA,inset -5px -5px 10px #fff;max-width:none;color:var(--slate)}
#predict .pchart .gauge{width:74px;height:74px;flex:none}
#predict .pchart .gauge text{fill:var(--ink);font:800 17px var(--display)}
#predict .risk b{color:var(--ink)}
#predict .rhead{color:var(--slate);font-size:13px;line-height:1.4}
#predict .rchips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
#predict .rchips span{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;font-size:12px}
#predict .rbody{min-width:0}
#predict .rchips span{background:var(--t-paper4);border:0;border-radius:8px;color:var(--ink);box-shadow:2px 2px 5px #C9D0DA,-2px -2px 5px #fff}
#predict .rchips .ico{color:var(--t-accent-ink)}
#predict .rnote{color:var(--t-accent-deep);font-weight:600}
#predict .psteps{top:27vh;gap:1.8vh}
#predict .psteps li{border:0;padding:1.5vh 1.1vw 1.5vh;border-radius:18px;background:var(--t-paper3);box-shadow:9px 9px 20px #C6CDD8,-9px -9px 20px #fff;grid-template-columns:46px 1fr;position:relative}
#predict .psteps li::before{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:17px;color:var(--ink);background:var(--t-paper3);box-shadow:inset 4px 4px 8px #C9D0DA,inset -4px -4px 8px #fff}
#predict .psteps li:not(.pnote):not(:nth-last-child(2))::after{content:"";position:absolute;left:calc(1.1vw + 22px);bottom:-1.8vh;width:2px;height:1.8vh;background:repeating-linear-gradient(180deg,var(--t-accent-2) 0 4px,transparent 4px 7px)}
#predict .psteps h3{color:var(--ink)}
#predict .psteps h3 .ico{color:var(--t-accent-ink)}
#predict .psteps p{color:var(--slate);font-size:13px}
#predict .psteps li.pnote{display:block;background:none;box-shadow:none;padding:0 1.1vw;font-size:12.5px;color:var(--slate-soft)}
#predict.run .psteps li{animation:rmup .5s cubic-bezier(.2,.7,.2,1) both}
#predict.run .psteps li:nth-child(2){animation-delay:.1s}#predict.run .psteps li:nth-child(3){animation-delay:.2s}#predict.run .psteps li:nth-child(4){animation-delay:.3s}#predict.run .psteps li:nth-child(5){animation-delay:.4s}
#predict .pchart svg polyline:first-of-type+polyline{stroke-dashoffset:0}
#predict.run .pchart svg polyline:nth-of-type(1){stroke-dasharray:420;animation:pdraw 1.3s cubic-bezier(.3,.6,.2,1) .2s both}
@keyframes pdraw{from{stroke-dashoffset:420}to{stroke-dashoffset:0}}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){#predict .pchart,#predict .psteps{top:25vh}#predict .psteps li{padding:1.1vh 1vw}#predict .psteps p{font-size:12.2px}#predict .lead{font-size:14px}#predict .pchart .gauge{width:60px;height:60px}}
@media (max-width:900px),(max-height:599px){#predict .lead{width:auto!important;left:auto}#predict .pchart{width:auto!important;padding:16px}#predict .pchart .risk{flex-direction:column;align-items:flex-start}#predict .psteps li{padding:14px}#predict .psteps li::after{display:none}}
@media (min-width:901px) and (min-height:600px) and (max-height:880px){.st-data li:nth-child(3){display:none}}
/* story: scene controls */
.st-sc{position:absolute;right:12px;bottom:12px;z-index:4;display:flex;align-items:center;gap:8px;padding:5px 6px 5px 5px;border-radius:20px;background:color-mix(in srgb,var(--t-ink) 78%,transparent)}
.st-stage.final .st-sc{right:auto;left:12px}
.st-stage.final .st-cap{display:none}
.st-pp{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:var(--ink);cursor:pointer}
.st-pp svg{width:12px;height:12px}
.st-pp .pa{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.st-pp .pl{fill:currentColor;display:none}
.st-sc.paused .st-pp .pa{display:none}.st-sc.paused .st-pp .pl{display:block}
.st-dots{display:flex;gap:4px}
.st-dots button{height:26px;min-width:26px;padding:0 9px;border-radius:13px;font-size:11.5px;font-weight:600;color:rgba(255,255,255,.75);background:rgba(255,255,255,.08);cursor:pointer}
.st-dots button:hover{background:rgba(255,255,255,.18);color:#fff}
.st-dots button[aria-current="true"]{background:#fff;color:var(--ink)}
.st-cap{max-width:calc(100% - 290px)}
.st-sc.paused~.st-cap i b,.st-stage.paused .st-cap i b{background:#8A95A6}
/* screens: neumorphic cards with a stack of previews */
#screens{background:var(--t-paper3)}
#screens .sgrid{gap:2.8vh 1.8vw}
#screens .scard{border:0;border-radius:18px;background:var(--t-paper3);padding:12px;gap:16px;box-shadow:9px 9px 20px #C6CDD8,-9px -9px 20px #fff}
#screens .scard:hover{transform:translateY(-3px);box-shadow:12px 12px 26px #C1C8D4,-11px -11px 24px #fff}
#screens .scard .im{position:relative;border-radius:10px;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--t-slate) 12%,transparent),0 6px 14px -8px color-mix(in srgb,var(--t-shade) 40%,transparent)}
#screens .scard .im::after{content:attr(data-n);position:absolute;right:6px;bottom:6px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--accent);color:var(--ink);font:700 11.5px/22px var(--display);text-align:center}
#screens .scard .ct{color:var(--slate)}
@media (min-width:901px) and (min-height:600px) and (max-height:720px){#screens .sgrid{top:27vh;gap:2vh 1.6vw}#screens .scard{padding:9px}#screens .scard .go{display:none}}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){.flow{top:27vh;height:12.5vh}}
#screens .scard .go{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;font-weight:600;color:var(--t-accent-deep)}
#screens .scard:hover .go{color:var(--ink)}
/* modules */
#modules{background:var(--t-paper3)}
.md-lead b{color:var(--ink)}
.md-lead{top:12.5vh;max-width:none;width:calc(var(--R) - var(--M) - var(--padM) - 2vw);font-size:15px;color:var(--slate)}
.md-legend{position:absolute;left:calc(var(--L) + var(--padL));top:22.5vh;display:flex;gap:18px;font-size:12.5px;color:var(--slate)}
.md-legend span{display:inline-flex;align-items:center;gap:7px}
.md-legend span::before{content:"";width:12px;height:12px;border-radius:50%}
.md-legend .in::before{background:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--t-accent-ink) 30%,transparent)}
.md-legend .part::before{background:linear-gradient(90deg,var(--accent) 50%,#fff 50%);box-shadow:0 0 0 1.5px var(--t-accent-ink)}
.md-legend .add::before{background:var(--t-paper3);box-shadow:inset 2px 2px 4px #C6CDD8,inset -2px -2px 4px #fff,0 0 0 1px #B7C0CD}
.md-grid{position:absolute;left:calc(var(--L) + var(--padL));right:calc(100% - var(--R) + 2vw);top:28vh;bottom:5vh;display:grid;grid-template-columns:repeat(4,1fr);gap:1.6vw}
.md-col{display:flex;flex-direction:column;gap:1.1vh;min-width:0}
.md-h{display:flex;align-items:center;gap:8px;font-size:13px;letter-spacing:.07em;color:var(--ink);margin:0 0 .4vh}
.md-h .ico{width:16px;height:16px;color:var(--t-accent-ink)}
.md-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.1vh;flex:1}
.md-t{flex:1;min-height:0;display:flex;align-items:center;gap:11px;padding:.9vh .8vw;border-radius:14px;background:var(--t-paper3);box-shadow:6px 6px 13px #C6CDD8,-6px -6px 13px #fff;transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s}
.md-t:hover{transform:translateY(-2px);box-shadow:9px 9px 18px #C1C8D4,-8px -8px 16px #fff}
.md-i{width:36px;height:36px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--t-paper3);box-shadow:inset 3px 3px 6px #C9D0DA,inset -3px -3px 6px #fff;color:var(--slate)}
.md-i .ico{width:17px;height:17px}
.md-t.in .md-i{background:radial-gradient(circle at 38% 32%,color-mix(in srgb,var(--t-accent) 30%,#fff),var(--t-accent) 70%);box-shadow:0 4px 10px -4px color-mix(in srgb,var(--t-accent-ink) 60%,transparent);color:var(--ink)}
.md-t.part .md-i{background:linear-gradient(135deg,color-mix(in srgb,var(--t-accent) 60%,#fff) 0 50%,var(--t-paper3) 50%);box-shadow:inset 0 0 0 1.5px var(--t-accent-2);color:var(--ink)}
.md-x{display:flex;flex-direction:column;gap:2px;min-width:0}
.md-x b{font-size:13px;line-height:1.2;color:var(--ink);font-weight:700}
.md-x small{font-size:11.5px;line-height:1.3;color:var(--slate)}
.md-t.add .md-x b{color:var(--slate)}
#modules.run .md-t{animation:rmup .45s cubic-bezier(.2,.7,.2,1) both}
#modules.run .md-col:nth-child(2) .md-t{animation-delay:.08s}#modules.run .md-col:nth-child(3) .md-t{animation-delay:.16s}#modules.run .md-col:nth-child(4) .md-t{animation-delay:.24s}
@media (min-width:901px) and (min-height:600px) and (max-height:760px){.md-x small{display:none}.md-i{width:30px;height:30px}.md-grid{top:27vh;bottom:4vh}.md-legend{top:21.5vh}}
@media (max-width:900px),(max-height:599px){.md-lead{position:static;width:auto;margin-bottom:16px}.md-legend{position:static;flex-wrap:wrap;margin-bottom:20px}.md-grid{position:static;grid-template-columns:1fr;gap:26px}.md-t{padding:12px}}
@media (prefers-reduced-motion:reduce){#modules *{animation:none!important}}
body[data-sec="modules"] .gridlines i:nth-child(2){opacity:0}
/* story v2 */
.st-vid{opacity:1!important;transition:opacity .6s,filter .6s}
.st-stage.final .st-vid{opacity:.22!important;filter:blur(3px)}
.st-anim{position:absolute;inset:0;z-index:1;display:grid;place-items:center;background:radial-gradient(ellipse at center,#141a22 0%,var(--t-ink) 75%);opacity:0;transition:opacity .5s;pointer-events:none}
.st-anim.on{opacity:1}
.st-stage:not(.final) .st-dev{opacity:0;transform:scale(.95);pointer-events:none}
.st-dev{transition:opacity .6s,transform .6s}
.st-stage:not(.final) .st-zoom{display:none}
.st-cap{position:absolute;left:14px;bottom:14px;z-index:3;max-width:calc(100% - 180px);display:flex;flex-direction:column;gap:6px;background:color-mix(in srgb,var(--t-ink) 78%,transparent);padding:9px 12px 10px;border-left:3px solid var(--accent)}
.st-cap .n{font-family:var(--cond);font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.st-cap .t{font-size:14px;font-weight:600;line-height:1.3}
.st-cap i{display:block;height:2px;background:rgba(255,255,255,.2)}
.st-cap i b{display:block;height:100%;width:0;background:var(--accent)}
.st-stage.final .st-cap{bottom:auto;top:14px}
.st-stage.final .st-cap i{display:none}
.st-replay{position:absolute;right:12px;top:12px;z-index:3;font-size:12px;padding:6px 12px;border-radius:14px;background:rgba(0,0,0,.6);color:#fff}
.st-replay:hover{background:var(--accent);color:var(--ink)}
.an{width:min(92%,640px);color:#fff;display:flex;flex-direction:column;gap:14px}
.an-t{font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.an svg{width:100%;height:auto;overflow:visible}
.an svg text{font-family:var(--display);fill:#fff;font-size:14px}
.an .wave{fill:none;stroke-width:2.5;stroke-dasharray:14 8;animation:wmove 1s linear infinite}
@keyframes wmove{to{stroke-dashoffset:-22}}
.an .appear{opacity:0;animation:appear .5s ease forwards}
@keyframes appear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.an-alert{align-items:center;text-align:center}
.an-alert .ring{width:150px;height:150px;border-radius:50%;background:var(--t-red-deep);display:grid;place-items:center;font-family:var(--cond);font-weight:600;font-size:20px;line-height:1.1;text-transform:uppercase;box-shadow:0 0 0 0 color-mix(in srgb,var(--t-red) 60%,transparent);animation:ring 1.2s ease-out infinite}
@keyframes ring{to{box-shadow:0 0 0 46px color-mix(in srgb,var(--t-red) 0%,transparent)}}
.an-cards{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.an-cards div{background:var(--t-panel);border:1px solid rgba(255,255,255,.18);padding:10px 14px;font-size:13px;text-align:left}
.an-cards div b{display:block;color:var(--accent);font-family:var(--cond);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:12px}
.an-bars{display:flex;align-items:center;gap:5px;height:56px;justify-content:center}
.an-bars i{width:6px;height:100%;background:var(--accent);border-radius:3px;animation:bar .9s ease-in-out infinite}
@keyframes bar{0%,100%{transform:scaleY(.2)}50%{transform:scaleY(1)}}
.an-bub{background:color-mix(in srgb,var(--t-accent) 25%,#fff);color:var(--ink);padding:10px 14px;border-radius:14px 14px 4px 14px;font-size:14px;align-self:flex-end;max-width:85%}
.an-ans{background:var(--t-panel);border:1px solid rgba(255,255,255,.15);padding:10px 14px;border-radius:14px 14px 14px 4px;font-size:13.5px;max-width:92%}
.an-ans .src{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.an-ans .src span{font-size:11.5px;border:1px solid color-mix(in srgb,var(--t-accent) 60%,transparent);color:var(--accent);padding:2px 7px}
.an-sites{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.an-sites div{background:var(--t-panel);border:1px solid rgba(255,255,255,.15);padding:10px 12px;font-size:12.5px;line-height:1.35}
.an-sites div b{display:block;color:#fff;font-size:13px;margin-bottom:3px}
.an-sites div span{color:var(--t-red)}
.an-big{font-family:var(--display);font-weight:800;font-size:72px;line-height:1;display:flex;align-items:baseline;gap:10px}
.an-big small{font-size:18px;font-weight:600;color:var(--white-soft)}
.an-meter{position:relative;height:14px;background:rgba(255,255,255,.12);border-radius:7px}
.an-meter i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:7px;background:linear-gradient(90deg,#1E874B,var(--t-accent) 60%,var(--t-red));animation:meter 2.2s ease forwards}
@keyframes meter{to{width:88%}}
.an-meter em{position:absolute;left:68%;top:-8px;bottom:-8px;width:2px;background:#fff}
.an-meter span{position:absolute;left:68%;top:20px;transform:translateX(-50%);font-size:12px;color:var(--white-soft);white-space:nowrap}
/* memory */
#memory .left{position:absolute;left:0;top:0;bottom:0;width:var(--M);background:var(--night);display:flex;align-items:center;justify-content:center}
#memory .left img{height:76vh;width:auto;border-radius:22px;box-shadow:0 30px 70px -20px rgba(0,0,0,.7)}
#memory .right{position:absolute;left:var(--M);right:0;top:0;bottom:0;background:var(--grad);color:var(--on-accent);padding:11vh calc(100% - var(--R) + 2vw) 5vh var(--padM);display:flex;flex-direction:column;gap:2.6vh;overflow:hidden}
#memory h2{font-weight:800;font-size:clamp(26px,2.5vw,40px);line-height:1.1;letter-spacing:-.01em;max-width:18ch;text-wrap:balance}
#memory p{font-size:15px;max-width:54ch}
.qa{margin-top:1vh;border-top:1px solid color-mix(in srgb,var(--t-on-accent) 28%,transparent);padding-top:2.6vh;display:grid;gap:1.6vh;max-width:56ch}
.qa .q{font-weight:700;font-size:16px}
.qa .q::before{content:"Вопрос Оксане";display:block;font-family:var(--cond);font-weight:500;text-transform:uppercase;font-size:12px;letter-spacing:.08em;opacity:.8;margin-bottom:4px}
.qa .a{font-size:14px}
.qa .src{font-size:12.5px;opacity:.85}
.qa .src::before{content:"Ссылки: ";font-weight:700}

/* contour */
#contour .shade{position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--t-ink) 82%,transparent) 0%,color-mix(in srgb,var(--t-ink) 70%,transparent) 45%,color-mix(in srgb,var(--t-ink) 92%,transparent) 100%)}
#contour .sec-title{top:30vh;color:#fff}
#contour .sec-title::before{background:var(--bar)}
.contour-text{top:30vh;max-width:30vw;font-size:16px;color:rgba(255,255,255,.86)}
.cells{position:absolute;left:var(--L);right:calc(100% - var(--R));bottom:0;height:30vh;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--white-line)}
.cell{padding:3.2vh 1.8vw 3vh;display:flex;flex-direction:column;gap:1.4vh;border-left:1px solid var(--white-line)}
.cell:first-child{border-left:0;padding-left:var(--padL)}
.cell h3{font-size:clamp(15px,1.25vw,20px)}
.cell p{font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.7);max-width:32ch}

/* plan */
.stages{position:absolute;left:var(--L);right:calc(100% - var(--R));top:27vh;bottom:7vh;padding-left:var(--padL);display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:1fr auto 1fr;column-gap:2.4vw;row-gap:3vh}
.stage{display:flex;flex-direction:column;gap:1.2vh;border-top:1.5px solid var(--slate-line);padding-top:1.8vh}
.stage .st{align-self:flex-start;font-family:var(--cond);font-weight:600;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--on-accent);background:var(--accent);padding:2px 8px}
.stage h3{font-size:clamp(15px,1.3vw,21px)}
.stage p{font-size:13.5px;line-height:1.5;max-width:34ch}
.pilot{grid-column:1/-1;background:var(--grad);color:var(--on-accent);display:flex;align-items:center;gap:2.4vw;padding:2.4vh 2vw;flex-wrap:wrap}
.pilot .kicker{font-size:clamp(20px,1.8vw,28px)}
.pilot p{font-size:14.5px;max-width:70ch}

/* start */
#start .shade{position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--t-ink) 90%,transparent) 0%,color-mix(in srgb,var(--t-ink) 62%,transparent) 50%,color-mix(in srgb,var(--t-ink) 84%,transparent) 100%),linear-gradient(0deg,color-mix(in srgb,var(--t-ink) 90%,transparent) 0%,color-mix(in srgb,var(--t-ink) 0%,transparent) 45%)}
.start-title{position:absolute;left:calc(var(--L) + var(--padL));top:21vh;font-weight:800;font-size:min(4.7vw,9.5vh);line-height:.98;letter-spacing:-.025em;text-transform:uppercase}
.start-title span{display:block}
.start-title span:nth-child(2){padding-left:3.4vw}
.start-lead{top:47vh;max-width:30vw;font-size:15px;line-height:1.55;color:rgba(255,255,255,.82)}
.needs{top:21vh;width:32vw;display:flex;flex-direction:column}
.needs h3{margin-bottom:2.4vh}
.needs ul{list-style:none;margin:0;padding:0}
.needs li{display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:1.6vh 0;border-top:1px solid var(--white-line);font-size:15px}
.needs li span{font-family:var(--cond);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
.foot{position:absolute;left:var(--L);right:calc(100% - var(--R));bottom:0;border-top:1px solid var(--white-line);padding:3vh 0 4vh var(--padL);display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;font-size:13px;color:var(--white-soft)}
.foot nav{display:flex;gap:22px;flex-wrap:wrap}
/* unfilled data: must be replaced before sending (see check_before_send.sh) */
.todo{color:var(--accent);border-bottom:1px dashed var(--accent)}
.foot nav a{text-decoration:none}
.foot nav a:hover{color:#fff}

@media (min-width:901px) and (min-height:600px) and (max-height:720px){
  .st-text{bottom:25vh}
  .st-data li:nth-child(n+2){display:none}
  .st-steps button span{display:none}
  .st-stage{bottom:13vh}.st-ctl{bottom:13vh}.st-steps{bottom:2.5vh}
  .flow{top:27vh;height:12.5vh}
  .st-data li:nth-child(3){display:none}
  .st-data li{font-size:12px;padding:4px 9px}
  .st-text p{font-size:12.8px}
  .pchart{top:37vh}
  .pchart svg{max-width:24vw}
  .steps{top:27vh}
  .viz{height:84px;padding:6px 8px;gap:5px}
  .loop2{bottom:2.5vh}
  .step h3{font-size:clamp(16px,1.3vw,21px)}
  .step{gap:1.2vh}
  .step p{font-size:13px}
  .loop{bottom:5vh}
  #tech .lead{max-width:35vw;font-size:13.5px}
  .tcard .dev{display:none}
  .tcard p{font-size:12px;line-height:1.45}
  #tech .lead,#equip .lead,#predict .lead{font-size:14px}
  .etable{top:27vh}
  .etable td{font-size:12.5px;padding:1vh 1vw 1vh 0}
  .etable td:first-child{font-size:13.5px}
  .psteps p{font-size:12.5px}
}
@media (min-width:901px) and (min-height:600px) and (max-height:820px){
  .tcard .dev{display:none}
  .tcard{gap:.7vh}
  .ecard{padding:1.2vh 1vw 1vh;gap:.6vh}
  .ecard p{font-size:12px;line-height:1.35}
  .egrid{top:27vh;gap:1.6vh 1.2vw}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important}
  #hero .bgvid{opacity:.95}
}

/* ---------- narrow screens ---------- */
@media (max-width:900px),(max-height:599px){
  body{font-size:15px}
  .gridlines,.rail,.menu-label,.counter,.mouse{display:none}
  .logo{top:18px;left:16px;font-size:calc(var(--logo-fs,21px)*.9)}
  .burger{top:10px;right:6px}
  .frame.logo,.frame.burger{position:fixed}
  body::before{content:"";position:fixed;left:0;right:0;top:0;height:62px;z-index:55;background:var(--ink);transition:background .5s}
  body.tone-light::before{background:var(--paper)}
  .screen{height:auto;min-height:0;overflow:visible;padding:96px 16px 64px}
  .screen>*:not(.bgvid):not(.shade):not(.site-media):not(.panel):not(svg):not(canvas):not(.tshade):not(.tabs):not(.tfx):not(.mm-srcs):not(.rm){position:relative;z-index:1}
  /* desktop offsets (some set through #id selectors) must not shift blocks in the phone flow */
  main>section.screen>*:not(.bgvid):not(.shade):not(.site-media):not(.panel):not(svg):not(canvas):not(.tshade):not(.tabs):not(.tfx):not(.mm-srcs):not(.rm){top:auto!important;left:auto!important;right:auto!important;bottom:auto!important}
  .screen.fit{overflow:visible}
  .etable{display:block}
  #contour,#start{overflow:hidden}
  .vidtoggle{align-self:flex-start}
  .site-media{display:none}
  #map.has-video .p-vid{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:4px;flex:none}
  .col-c,.col-m,.sec-title,.hero-title,.start-title,.roles-media,.steps,.stages,.cells,.foot,.loop{position:static;left:auto;right:auto;top:auto;bottom:auto;width:auto;max-width:none}
  .sec-title{padding-left:14px;margin-bottom:28px;font-size:28px}
  .sec-title::before{left:0}
  .sec-title{position:relative}
  #hero{min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;gap:28px}
  .hero-cap{order:-1;margin-bottom:auto;padding-top:8px}
  .hero-title{font-size:12.6vw}
  .hero-lead{font-size:15px}
  .hero-cta{flex-wrap:wrap}
  #map{padding:84px 0 0}
  #mapSvg{position:relative;height:auto;aspect-ratio:16/11}
  .map-head,.map-hint{position:static;padding:0 16px}
  .map-hint{padding:14px 16px 24px}
  .panel{position:fixed;left:0;top:0;bottom:0;right:0;z-index:70;padding:84px 20px 32px;transform:translateY(101%)}
  .steps{display:grid;grid-template-columns:1fr;gap:36px;padding:0}
  .step .lab{margin-top:6px}
  .loop{margin-top:36px;flex-wrap:wrap}
  .loop2{position:static;height:auto;margin-top:32px}
  .daynight{align-self:flex-start;margin:14px 0 0 var(--pad,16px);width:max-content}
  .viz{height:auto}
  .loop2 .u{display:none}
  .loop2 p{position:static;transform:none;white-space:normal;padding:0}
  .step:not(:last-child)::after{display:none}
  .viz,.shead{max-width:none}
  .roles-media{height:auto;min-height:0;padding:14px;width:auto}
  .roles-media img{max-height:68vh}
  .roles-text{margin-top:28px;width:auto!important}
  .roles-nav{margin-top:24px;position:static;width:auto!important}
  .sgrid{position:static;grid-template-columns:1fr;gap:12px}
  .egrid{position:static;grid-template-columns:1fr}
  .ecard p.act{margin:0;padding:5px 8px}
  .an-sites{grid-template-columns:1fr}
  .an-big{font-size:52px}
  .st-stage{min-height:62vh}
  .story-lead{max-width:none;margin-bottom:18px}
  .flow{position:static;height:auto;margin-bottom:14px}
  .flow svg{height:auto}
  .st-stage{position:relative;height:auto;min-height:0;padding:18px 10px;width:auto}
  .st-dev img{max-height:62vh;max-width:100%}
  .st-dev .chart{width:100%}
  .st-text,.st-ctl{position:static;width:auto!important;margin-top:20px;overflow:visible}
  .st-steps{position:static;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:18px}
  .st-sc{bottom:8px;right:8px}.st-cap{max-width:calc(100% - 20px);bottom:56px}
  #screens .lead{max-width:none;margin-bottom:24px}
  .lb-stage{padding:0 8px}
  .lb-nav{width:40px;height:40px;background:rgba(0,0,0,.5)}
  .lb-top{flex-wrap:wrap;gap:6px 12px;padding:12px 14px 8px}
  .lb-top .sub{display:none}
  .lb-help{display:none}
  #memory{padding:0}
  #memory .left,#memory .right{position:static;width:auto}
  #memory .left{padding:96px 16px 40px}
  #memory .left img{height:auto;max-height:70vh;width:auto}
  #memory .right{padding:48px 20px 56px}
  #memory .mm-srcs{display:none}
  #memory .mm-tl ol{grid-template-columns:1fr 1fr;row-gap:16px}
  #memory .mm-tl ol::before{display:none}
  #contour{padding-top:120px}
  #contour .sec-title{margin-bottom:20px}
  .contour-text{max-width:none;margin-bottom:36px}
  .cells{grid-template-columns:1fr;height:auto}
  .cell,.cell:first-child{border-left:0;border-top:1px solid var(--white-line);padding:20px 0}
  .stages{grid-template-columns:1fr;grid-template-rows:none;padding:0}
  .plan-lead{position:static;max-width:none;margin-bottom:24px}
  .rm{position:static}
  .rm-ph{display:none}
  .rm-list{grid-template-columns:1fr;row-gap:18px}
  .rm-list::before,.rm-list::after,.rm-gate{display:none}
  .rm-list li{display:grid;grid-template-columns:52px 1fr;column-gap:14px;align-items:start}
  .rm-list .nd{grid-row:span 3}
  #predict .lead,#equip .lead,#tech .lead{max-width:none;margin-bottom:28px}
  .pchart,.psteps,.etable,.tgrid{position:static;width:auto}
  .pchart{margin-bottom:36px}
  .psteps{gap:22px}
  .etable,.etable tbody,.etable tr,.etable td{display:block;width:auto!important}
  .etable thead{display:none}
  .etable tr{padding:14px 0;border-bottom:1px solid var(--slate-line)}
  .etable td{border:0;padding:3px 0}
  .tgrid{display:grid;grid-template-columns:1fr;gap:16px}
  .gl .tcol{position:static;width:auto;gap:12px;margin-bottom:22px}
  .gl .tsub{position:static;max-width:none;margin:-8px 0 22px;white-space:normal}
  .gl .tshade{background:linear-gradient(180deg,color-mix(in srgb,var(--t-gl-top) 35%,transparent) 0%,color-mix(in srgb,var(--t-gl-top) 85%,transparent) 45vh,var(--t-gl-top) 60vh)}
  .gl .tlive{display:none}
  .gl .tfx{display:none}
  .gl .thub{position:static;transform:none;align-self:flex-start;margin-top:4px;max-width:none;width:auto}
  .start-title{font-size:13vw;margin-bottom:24px}
  .start-lead{max-width:none;margin-bottom:40px}
  .needs{width:auto;margin-bottom:48px}
  .foot{padding:24px 0 0}
  .menu{grid-template-columns:1fr}
  .menu ol{grid-column:1;padding:0 20px}
}

/* ---------- 2026-10-22 mobile: телефоны (портрет и альбом) и планшеты ---------- */
/* 3D-карта до первой отрисовки не должна раздувать страницу шире экрана (иначе телефон уменьшает всю страницу, а потом она «прыгает») */
.map3d{max-width:100%}
@media (max-width:900px),(max-height:599px){
  main{overflow-x:clip}
  .logo{top:9px;font-size:min(calc(var(--logo-fs,21px)*.9),24px)}
  .logo img{height:min(var(--logo-h,24px),44px);max-width:min(calc(var(--logo-h,24px)*6),180px)}
  .logo svg{width:min(var(--logo-h,22px),44px);height:min(var(--logo-h,22px),44px)}
  .logo .logo-sub{font-size:min(var(--logo-sub-fs,11px),9px);margin-top:2px}
  .hero-title{font-size:min(12.6vw,64px)}
  .start-title{font-size:min(13vw,64px)}
}
/* 2026-10-22 mobile (2): планшеты и ноутбуки до 1365px: переключатель «День/Ночь» не наезжает на подпись над картой */
@media (min-width:901px) and (min-height:600px) and (max-width:1365px){.daynight{top:72px}}

/* 2026-10-22 mobile (3): настольные vw-отступы на телефоне схлопываются до 3–5px — возвращаем карточкам воздух */
@media (max-width:900px),(max-height:599px){
  .pp-card,.who-c,.cx-b,.cx-v,.cx-o,.sv,.pl-c,.ec-c,.opx,.opb,.bt,.ct-p,.ct-who,.ms,.xmail,.fx,.step{padding:15px 18px!important}
  .pp-in{padding:12px 14px!important}
  .pp-note,.pp-flag{padding:13px 16px!important}
  .tgs{gap:8px!important}
  .tg{padding:10px 12px!important}
  .cx-g{gap:10px 14px!important}
  .cl-r{padding:4px 0 8px}
  .sv-grid{gap:12px!important}
  .who-grid{gap:14px!important}
  .cx,.ct,.sv-wrap{grid-template-columns:minmax(0,1fr)!important}
  .so-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .xbtn{padding:12px 18px}
}
