
  :root{
    --bg:#F1F3F3;
    --surface:#FFFFFF;
    --surface-2:#E7EAEA;
    --ink:#1B1A19;
    --ink-muted:#5B5F60;
    --border:#D4D8D8;
    --accent:#961C20;
    --accent-ink:#FFF3F2;
    --accent-2:#1B6F68;
    --accent-2-ink:#EAFBF8;
    --accent-on-dark:#E8636A;
    --accent-2-on-dark:#4FC7BA;
    --ok:#2C8C5A;
    --warn:#B4791F;
    --crit:#B23B3B;
    --shadow: 0 1px 2px rgba(20,18,17,.06), 0 8px 24px -12px rgba(20,18,17,.2);
    --band-dark-bg:#14100F;
    --band-dark-surface:#1C1716;
    --band-dark-surface-2:#26201E;
    --band-dark-ink:#F1EEEC;
    --band-dark-ink-muted:#A69D98;
    --band-dark-border:#332B29;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --bg:#0E0C0B;
      --surface:#171312;
      --surface-2:#211B19;
      --ink:#F1EEEC;
      --ink-muted:#A79D98;
      --border:#332B28;
      --accent:#D9585C;
      --accent-ink:#2B0708;
      --accent-2:#45B8AC;
      --accent-2-ink:#00201C;
      --shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 30px -14px rgba(0,0,0,.6);
      --band-dark-bg:#080706;
      --band-dark-surface:#0E0B0A;
      --band-dark-surface-2:#171211;
      --band-dark-ink:#F1EEEC;
      --band-dark-ink-muted:#948B87;
      --band-dark-border:#28211F;
    }
  }
  :root[data-theme="dark"]{
    --bg:#0E0C0B;
    --surface:#171312;
    --surface-2:#211B19;
    --ink:#F1EEEC;
    --ink-muted:#A79D98;
    --border:#332B28;
    --accent:#D9585C;
    --accent-ink:#2B0708;
    --accent-2:#45B8AC;
    --accent-2-ink:#00201C;
    --shadow: 0 1px 2px rgba(0,0,0,.4), 0 12px 30px -14px rgba(0,0,0,.6);
    --band-dark-bg:#080706;
    --band-dark-surface:#0E0B0A;
    --band-dark-surface-2:#171211;
    --band-dark-ink:#F1EEEC;
    --band-dark-ink-muted:#948B87;
    --band-dark-border:#28211F;
  }

  *{box-sizing:border-box;}
  body{
    margin:0; background:var(--bg); color:var(--ink);
    font-family:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
    font-size:16px; line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }
  img{max-width:100%;}
  h1,h2,h3{ font-family:"Big Shoulders Display", "Arial Narrow", sans-serif; text-wrap:balance; margin:0; letter-spacing:.2px; }
  p{margin:0;}
  a{color:inherit;}
  .mono{ font-family:"IBM Plex Mono", ui-monospace, SFMono-Regular, monospace; }
  .eyebrow{
    font-family:"IBM Plex Mono", monospace; font-size:.72rem; font-weight:600;
    letter-spacing:.14em; text-transform:uppercase; color:var(--accent-2);
  }
  .wrap{ max-width:1180px; margin:0 auto; padding:0 clamp(20px,4vw,48px); }
  section{ position:relative; }
  ::selection{ background:var(--accent); color:var(--accent-ink); }
  /* ---------- traveling-light text shine ---------- */
  .shine{
    background-image: linear-gradient(100deg, var(--shine-base) 0%, var(--shine-base) 40%, var(--shine-hi) 50%, var(--shine-base) 60%, var(--shine-base) 100%);
    background-size: 300% 100%;
    background-position: -120% 0;
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
    animation: shineSweep 3.4s linear infinite;
  }
  .shine-heading{ --shine-base: var(--band-dark-ink); --shine-hi: var(--accent-2-on-dark); }
  .shine-num{ --shine-base: var(--band-dark-surface-2); --shine-hi: var(--accent-on-dark); }
  .proc-row:nth-child(1) .shine-num{ animation-delay:0s; }
  .proc-row:nth-child(2) .shine-num{ animation-delay:.5s; }
  .proc-row:nth-child(3) .shine-num{ animation-delay:1s; }
  .proc-row:nth-child(4) .shine-num{ animation-delay:1.5s; }
  @keyframes shineSweep{ 0%{ background-position: -120% 0; } 100%{ background-position: 220% 0; } }
  @media (prefers-reduced-motion: reduce){
    .shine{ animation: none; background-image: none; color: var(--shine-base); -webkit-text-fill-color: var(--shine-base); }
  }

  html{ scrollbar-color:var(--accent) var(--surface-2); scrollbar-width:thin; }
  ::-webkit-scrollbar{ width:11px; height:11px; }
  ::-webkit-scrollbar-track{ background:var(--surface-2); }
  ::-webkit-scrollbar-thumb{ background:var(--accent); border-radius:6px; border:2px solid var(--surface-2); }
  ::-webkit-scrollbar-thumb:hover{ background:var(--accent-2); }


  /* ---------- reveal-on-scroll ---------- */
  .reveal{ opacity:1; transform:none; transition: opacity .6s ease, transform .6s ease; }
  @media (prefers-reduced-motion: no-preference){
    .reveal{ opacity:0; transform:translateY(18px); }
    .reveal.in{ opacity:1; transform:none; }
  }
  .reveal.d1{ transition-delay:.08s; } .reveal.d2{ transition-delay:.16s; }
  .reveal.d3{ transition-delay:.24s; } .reveal.d4{ transition-delay:.32s; }
  .reveal.d5{ transition-delay:.4s; }

  /* ---------- nav ---------- */
  header{
    position:sticky; top:0; z-index:50;
    backdrop-filter:saturate(140%) blur(10px);
    background:color-mix(in srgb, var(--bg) 82%, transparent);
    border-bottom:1px solid var(--border);
  }
  .navrow{ display:flex; align-items:center; justify-content:space-between; height:64px; padding-left:14px; }
  .brand{ display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink); }
  .brand-mark{ width:48px; height:48px; flex:none; object-fit:contain; display:block; }
  .foot-brand{ display:flex; align-items:center; gap:10px; }
  .foot-brand img{ width:26px; height:26px; object-fit:contain; flex:none; opacity:.9; }
  .brand-text{ display:flex; flex-direction:column; line-height:1.15; }
  .brand-text b{ font-family:"Big Shoulders Display"; font-weight:800; font-size:1.12rem; letter-spacing:.02em; }
  .brand-text span{ font-family:"IBM Plex Mono"; font-size:.62rem; letter-spacing:.12em; color:var(--ink-muted); text-transform:uppercase; }
  nav.links{ display:flex; gap:28px; }
  nav.links a{
    text-decoration:none; color:var(--ink-muted); font-size:.92rem; font-weight:500;
    padding:6px 2px; border-bottom:2px solid transparent; transition:color .15s, border-color .15s;
  }
  nav.links a:hover, nav.links a:focus-visible{ color:var(--ink); border-color:var(--accent); }
  .navcta{
    display:inline-flex; align-items:center; gap:8px; background:var(--ink); color:var(--bg);
    padding:9px 16px; border-radius:8px; font-size:.86rem; font-weight:600; text-decoration:none;
    white-space:nowrap;
  }
  @media (max-width: 860px){ nav.links{ display:none; } }

  section[id]{ scroll-margin-top:76px; }

  .nav-toggle{
    display:none; flex:none; width:42px; height:42px; margin-left:10px; border-radius:8px;
    border:1px solid var(--border); background:var(--surface); align-items:center; justify-content:center;
    cursor:pointer; padding:0;
  }
  .nav-toggle span, .nav-toggle span::before, .nav-toggle span::after{
    display:block; width:18px; height:2px; background:var(--ink); border-radius:1px;
  }
  .nav-toggle span{ position:relative; transition:background .15s ease; }
  .nav-toggle span::before, .nav-toggle span::after{ content:""; position:absolute; left:0; transition:transform .2s ease, top .2s ease; }
  .nav-toggle span::before{ top:-6px; }
  .nav-toggle span::after{ top:6px; }
  .nav-toggle[aria-expanded="true"] span{ background:transparent; }
  .nav-toggle[aria-expanded="true"] span::before{ top:0; transform:rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span::after{ top:0; transform:rotate(-45deg); }

  .mobile-nav{ display:none; flex-direction:column; gap:0; padding:6px clamp(20px,4vw,48px) 16px; background:var(--bg); border-bottom:1px solid var(--border); }
  .mobile-nav.open{ display:flex; }
  .mobile-nav a{ text-decoration:none; color:var(--ink); font-weight:500; font-size:1rem; padding:14px 4px; border-top:1px solid var(--border); }
  .mobile-nav a:first-child{ border-top:none; }
  .mobile-nav a.navcta{ margin-top:12px; border-top:none; justify-content:center; text-align:center; padding:13px 16px; }

  @media (max-width: 860px){
    .nav-toggle{ display:flex; }
    .navrow > .navcta{ display:none; }
  }

  a:focus-visible, button:focus-visible{ outline:2px solid var(--accent-2); outline-offset:2px; }

  /* ---------- trusted-by clients ---------- */
  .clients-band{ padding:clamp(24px,4vw,32px) 0; background:var(--surface-2); border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
  .clients-eyebrow{ display:block; text-align:center; margin-bottom:16px; }
  .clients-row{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:clamp(14px,3vw,22px); }
  .client-name{ font-family:"Big Shoulders Display"; font-weight:600; font-size:clamp(.98rem,2vw,1.28rem); letter-spacing:.01em; color:var(--ink-muted); white-space:nowrap; transition:color .15s ease; }
  .client-name:hover{ color:var(--ink); }
  /* logos get their own white card so the artwork always sits on the light ground it was designed for, in both themes */
  .client-item{
    display:inline-flex; align-items:center; justify-content:center; flex:none;
    background:#fff; padding:12px 20px; border-radius:10px;
    box-shadow:0 1px 3px rgba(20,18,17,.1);
    transition:box-shadow .2s ease, transform .2s ease;
  }
  .client-item:hover{ box-shadow:0 6px 16px rgba(20,18,17,.16); transform:translateY(-2px); }
  .client-logo{ height:36px; width:auto; max-width:168px; display:block; object-fit:contain; }
  @media (max-width: 560px){ .client-item{ padding:10px 16px; } .client-logo{ height:30px; max-width:120px; } }

  /* ---------- hero ---------- */
  .hero{ padding-top:clamp(48px,7vw,88px); padding-bottom:clamp(40px,6vw,64px); }
  .hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(28px,4vw,56px); align-items:center; }
  @media (max-width: 940px){ .hero-grid{ grid-template-columns:1fr; } }
  .hero h1{ font-size:clamp(2.5rem,5.6vw,4.1rem); font-weight:800; line-height:.98; margin-top:14px; }
  .hero h1 em{ font-style:normal; color:var(--accent-2); }
  .hero p.lede{ margin-top:20px; max-width:52ch; color:var(--ink-muted); font-size:1.08rem; }
  .cta-row{ display:flex; gap:14px; margin-top:30px; flex-wrap:wrap; }
  .btn{
    display:inline-flex; align-items:center; gap:8px; padding:13px 22px; border-radius:9px;
    font-weight:600; font-size:.94rem; text-decoration:none; border:1px solid transparent; cursor:pointer;
    transition:transform .15s ease, box-shadow .15s ease;
  }
  .btn:hover{ transform:translateY(-1px); }
  .btn-primary{ background:var(--accent); color:var(--accent-ink); box-shadow:var(--shadow); }
  .btn-ghost{ background:transparent; color:var(--ink); border-color:var(--border); }

  /* ---------- live SCADA panel ---------- */
  .panel{
    background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-radius:14px;
    padding:18px; box-shadow:var(--shadow); color:var(--band-dark-ink);
  }
  .panel-head{ display:flex; align-items:center; justify-content:space-between; padding:2px 4px 14px; border-bottom:1px solid var(--band-dark-border); margin-bottom:14px; }
  .panel-title{ font-family:"IBM Plex Mono"; font-size:.78rem; letter-spacing:.06em; color:var(--band-dark-ink-muted); }
  .live-dot{ display:inline-flex; align-items:center; gap:6px; font-family:"IBM Plex Mono"; font-size:.68rem; color:var(--ok); letter-spacing:.08em; }
  .live-dot::before{ content:""; width:7px; height:7px; border-radius:50%; background:var(--ok); box-shadow:0 0 0 0 rgba(44,140,90,.6); animation:pulse 1.8s infinite; }
  @media (prefers-reduced-motion: reduce){ .live-dot::before{ animation:none; } }
  @keyframes pulse{ 0%{box-shadow:0 0 0 0 rgba(44,140,90,.55);} 70%{box-shadow:0 0 0 8px rgba(44,140,90,0);} 100%{box-shadow:0 0 0 0 rgba(44,140,90,0);} }

  .turbine-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
  .tcard{ background:var(--band-dark-surface-2); border:1px solid var(--band-dark-border); border-radius:10px; padding:10px; }
  .tcard-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
  .tcard-id{ font-family:"IBM Plex Mono"; font-size:.72rem; color:var(--band-dark-ink-muted); }
  .status-dot{ width:7px; height:7px; border-radius:50%; }
  .status-dot.ok{ background:var(--ok); } .status-dot.warn{ background:var(--warn); }
  .rotor{ width:26px; height:26px; margin:2px auto 4px; }
  .rotor path{ transform-origin:13px 13px; }
  @media (prefers-reduced-motion: no-preference){ .rotor{ animation:spin 3.4s linear infinite; } }
  .rotor.slow{ animation-duration:5.6s; } .rotor.fast{ animation-duration:2.2s; }
  @keyframes spin{ to{ transform:rotate(360deg); } }
  .tcard-val{ font-family:"IBM Plex Mono"; font-size:.98rem; text-align:center; font-variant-numeric:tabular-nums; }
  .tcard-lbl{ font-family:"IBM Plex Mono"; font-size:.6rem; text-align:center; color:var(--band-dark-ink-muted); letter-spacing:.04em; }

  .panel-foot{ display:flex; align-items:center; justify-content:space-between; margin-top:14px; padding-top:12px; border-top:1px solid var(--band-dark-border); font-family:"IBM Plex Mono"; font-size:.76rem; color:var(--band-dark-ink-muted); }
  .panel-foot b{ color:var(--band-dark-ink); font-variant-numeric:tabular-nums; }
  .panel-note{ margin-top:10px; font-family:"IBM Plex Mono"; font-size:.66rem; color:var(--band-dark-ink-muted); text-align:right; letter-spacing:.02em; }

  /* ---------- generic band / section rhythm ---------- */
  .section{ padding:clamp(56px,8vw,96px) 0; }
  .section.dark{ background:var(--band-dark-bg); color:var(--band-dark-ink); }
  .section.dark .eyebrow{ color:var(--accent-2); }
  .section-head{ max-width:62ch; margin-bottom:clamp(32px,5vw,52px); }
  .section-head h2{ font-size:clamp(1.9rem,3.4vw,2.6rem); font-weight:700; margin-top:10px; }
  .section-head p{ margin-top:14px; color:var(--ink-muted); font-size:1.02rem; }
  .section.dark .section-head p{ color:var(--band-dark-ink-muted); }

  /* explainer two-col */
  .explain-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(28px,5vw,60px); align-items:start; }
  @media (max-width: 860px){ .explain-grid{ grid-template-columns:1fr; } }
  .explain-grid p + p{ margin-top:14px; }
  .explain-grid .body-copy{ color:var(--ink-muted); max-width:60ch; }
  .term-list{ display:flex; flex-direction:column; gap:14px; border-left:2px solid var(--border); padding-left:18px; }
  .term-list div b{ font-family:"IBM Plex Mono"; font-size:.82rem; color:var(--accent-2); text-transform:uppercase; letter-spacing:.05em; }
  .term-list div p{ margin-top:3px; color:var(--ink-muted); font-size:.94rem; }

  /* stats band */
  .stat-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--band-dark-border); border:1px solid var(--band-dark-border); border-radius:12px; overflow:hidden; }
  @media (max-width: 760px){ .stat-grid{ grid-template-columns:repeat(2,1fr); } }
  .stat{ background:var(--band-dark-surface); padding:26px 20px; }
  .stat b{ display:block; font-family:"IBM Plex Mono"; font-size:clamp(1.5rem,3vw,2.1rem); font-variant-numeric:tabular-nums; color:var(--accent-on-dark); }
  .stat span{ display:block; margin-top:6px; font-size:.82rem; color:var(--band-dark-ink-muted); }

  /* ---------- performance analytics ---------- */
  .analytics-grid{ display:grid; grid-template-columns:1.7fr 1fr; gap:20px; align-items:stretch; }
  @media (max-width: 880px){ .analytics-grid{ grid-template-columns:1fr; } }
  .chart-card{ background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-radius:14px; padding:clamp(18px,3vw,26px); display:flex; flex-direction:column; }
  .chart-card-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:6px; }
  .chart-card-head h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.02rem; color:var(--band-dark-ink); }
  .chart-legend{ display:flex; gap:16px; font-family:"IBM Plex Mono"; font-size:.7rem; color:var(--band-dark-ink-muted); }
  .chart-legend span{ display:inline-flex; align-items:center; gap:6px; }
  .chart-legend i{ width:14px; height:2px; display:inline-block; background:currentColor; }
  .chart-legend .actual{ color:var(--accent-on-dark); }
  .chart-legend .forecast i{ background:repeating-linear-gradient(to right, currentColor 0 4px, transparent 4px 7px); }
  .chart-card svg{ display:block; width:100%; height:auto; margin-top:8px; }
  .chart-line{ stroke-dasharray:1400; stroke-dashoffset:1400; }
  .reveal.in .chart-line{ animation:drawChart 1.6s ease forwards; }
  .reveal.in .chart-area{ animation:fadeArea 1.2s ease .3s forwards; opacity:0; }
  @keyframes drawChart{ to{ stroke-dashoffset:0; } }
  @keyframes fadeArea{ to{ opacity:1; } }
  @media (prefers-reduced-motion: reduce){
    .chart-line{ stroke-dashoffset:0; animation:none; }
    .reveal.in .chart-area{ animation:none; opacity:1; }
  }
  .chart-note{ margin-top:10px; font-family:"IBM Plex Mono"; font-size:.66rem; letter-spacing:.02em; color:var(--band-dark-ink-muted); }
  .mini-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--band-dark-border); border:1px solid var(--band-dark-border); border-radius:12px; overflow:hidden; margin-top:20px; }
  @media (max-width: 620px){ .mini-stats{ grid-template-columns:1fr; } }

  .alert-mock{ background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-radius:14px; padding:18px; display:flex; flex-direction:column; gap:12px; height:100%; }
  .alert-mock-head{ display:flex; align-items:center; gap:10px; }
  .alert-mock-icon{ width:32px; height:32px; border-radius:9px; background:#22A45D; display:flex; align-items:center; justify-content:center; color:#fff; flex:none; }
  .alert-mock-head b{ display:block; font-size:.86rem; color:var(--band-dark-ink); }
  .alert-mock-head span{ display:block; font-size:.72rem; color:var(--band-dark-ink-muted); }
  .alert-bubble{ background:var(--band-dark-surface-2); border-radius:12px; border-top-left-radius:3px; padding:13px 15px; }
  .alert-bubble .sev{ display:inline-block; font-family:"IBM Plex Mono"; font-size:.62rem; letter-spacing:.06em; color:var(--crit); background:rgba(178,59,59,.15); border:1px solid rgba(178,59,59,.35); border-radius:999px; padding:2px 8px; margin-bottom:8px; }
  .alert-bubble p{ font-size:.86rem; line-height:1.5; color:var(--band-dark-ink); margin:0; }
  .alert-bubble time{ display:block; margin-top:8px; font-family:"IBM Plex Mono"; font-size:.66rem; color:var(--band-dark-ink-muted); }
  .alert-mock-note{ margin-top:auto; font-family:"IBM Plex Mono"; font-size:.64rem; color:var(--band-dark-ink-muted); }

  /* ---------- scroll-scrubbed nacelle video ---------- */
  .scrub-section{ background:var(--band-dark-bg); padding-bottom:0; }
  .scrub-section .section-head p{ color:var(--band-dark-ink-muted); }
  .scrub-wrap{ position:relative; height:340vh; }
  .scrub-wrap.static{ height:auto; }
  .scrub-sticky{ position:sticky; top:64px; height:calc(100vh - 64px); height:calc(100dvh - 64px); max-height:760px; display:flex; align-items:center; padding:0 clamp(0px,3vw,24px); }
  .scrub-wrap.static .scrub-sticky{ position:static; height:auto; max-height:none; display:block; padding:0; }
  .scrub-frame{ position:relative; width:100%; height:100%; overflow:hidden; background:#000; }
  .scrub-wrap.static .scrub-frame{ height:auto; aspect-ratio:16/9; }
  .scrub-video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
  .scrub-wrap.static .scrub-video{ position:static; width:100%; height:auto; }
  .scrub-vignette{ position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.6), rgba(0,0,0,0) 32%, rgba(0,0,0,0) 60%, rgba(0,0,0,.66)); pointer-events:none; }
  .scrub-bar{ position:absolute; top:0; left:0; right:0; height:3px; background:rgba(255,255,255,.14); }
  .scrub-bar-fill{ height:100%; width:0%; background:var(--accent-on-dark); }
  .scrub-note{ position:absolute; top:16px; right:20px; margin:0; font-size:.64rem; letter-spacing:.08em; color:rgba(255,255,255,.6); text-transform:uppercase; }
  .scrub-callouts{ position:absolute; inset:0; }
  .scrub-wrap.static .scrub-callouts{ position:static; display:flex; flex-direction:column; gap:14px; margin-top:18px; }
  .scrub-callout{
    position:absolute; left:24px; right:24px; bottom:24px; max-width:460px;
    background:rgba(14,11,10,.6); backdrop-filter:blur(8px); border:1px solid rgba(255,255,255,.14);
    border-radius:12px; padding:16px 20px; color:#F1EEEC;
    opacity:0; transform:translateY(10px); transition:opacity .4s ease, transform .4s ease;
  }
  .scrub-wrap.static .scrub-callout{ position:static; opacity:1; transform:none; max-width:none; }
  .scrub-callout.active{ opacity:1; transform:none; }
  .scrub-tag{ display:block; font-size:.68rem; letter-spacing:.1em; color:#6FD9CC; margin-bottom:6px; }
  .scrub-callout p{ margin-top:2px; font-size:.88rem; line-height:1.55; color:#DAD5D2; }
  @media (max-width: 720px){
    .scrub-wrap{ height:280vh; }
    .scrub-callout{ left:14px; right:14px; bottom:14px; padding:13px 16px; max-width:none; }
  }

  /* architecture diagram */
  .diagram-wrap{ background:var(--surface); border:1px solid var(--border); border-radius:14px; padding:clamp(16px,3vw,28px); overflow-x:auto; box-shadow:var(--shadow); }
  .diagram-wrap svg{ display:block; min-width:640px; width:100%; height:auto; }
  .flow-dot{ animation:flow 3.2s linear infinite; }
  @media (prefers-reduced-motion: reduce){ .flow-dot{ animation:none; opacity:0; } }
  @keyframes flow{ to{ stroke-dashoffset:-120; } }

  /* feature cards */
  .feat-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  @media (max-width: 940px){ .feat-grid{ grid-template-columns:repeat(2,1fr); } }
  @media (max-width: 620px){ .feat-grid{ grid-template-columns:1fr; } }
  .feat{ background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:22px; display:flex; flex-direction:column; gap:10px; }
  .feat-icon{ width:38px; height:38px; border-radius:9px; background:var(--surface-2); display:flex; align-items:center; justify-content:center; color:var(--accent-2); }
  .feat h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.05rem; }
  .feat p{ color:var(--ink-muted); font-size:.92rem; }
  .feat .tag{ margin-top:auto; font-family:"IBM Plex Mono"; font-size:.68rem; color:var(--ink-muted); letter-spacing:.04em; padding-top:8px; border-top:1px dashed var(--border); }

  /* process */
  .process-list{ display:flex; flex-direction:column; }
  .proc-row{ display:grid; grid-template-columns:74px 1fr; gap:20px; padding:22px 0; border-top:1px solid var(--border); }
  .proc-row:last-child{ border-bottom:1px solid var(--border); }
  .proc-num{ font-family:"Big Shoulders Display"; font-weight:800; font-size:2.1rem; color:var(--border); font-variant-numeric:tabular-nums; }
  .proc-row h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.08rem; }
  .proc-row p{ margin-top:6px; color:var(--ink-muted); max-width:60ch; font-size:.95rem; }

  /* capabilities two column */
  .cap-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
  @media (max-width: 700px){ .cap-grid{ grid-template-columns:1fr; } }
  .track-record{ margin-top:14px; font-size:.78rem; letter-spacing:.03em; color:var(--ink-muted); }

  /* faq */
  .faq-list{ display:flex; flex-direction:column; max-width:74ch; }
  .faq-item{ padding:20px 0; border-top:1px solid var(--border); }
  .faq-item:last-child{ border-bottom:1px solid var(--border); }
  .faq-item h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.02rem; }
  .faq-item p{ margin-top:8px; color:var(--ink-muted); font-size:.94rem; }

  /* beyond-scada services */
  .svc-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
  @media (max-width: 860px){ .svc-grid{ grid-template-columns:repeat(2,1fr); } }
  @media (max-width: 480px){ .svc-grid{ grid-template-columns:1fr; } }
  .svc-card{ padding:18px 0; border-top:1px solid var(--band-dark-border); }
  .svc-card h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:.98rem; color:var(--band-dark-ink); }
  .svc-card p{ margin-top:6px; font-size:.86rem; color:var(--band-dark-ink-muted); }
  .cap-item{ display:flex; gap:14px; padding:18px; background:var(--surface); border:1px solid var(--border); border-radius:12px; }
  .cap-item .dot{ flex:none; width:9px; height:9px; border-radius:50%; margin-top:7px; background:var(--accent); }
  .cap-item h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1rem; }
  .cap-item p{ margin-top:4px; color:var(--ink-muted); font-size:.92rem; }

  /* fleet coverage */
  .oem-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px; }
  .oem-card{ background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:20px; display:flex; flex-direction:column; gap:10px; }
  .oem-card h3{ font-family:"Big Shoulders Display"; font-weight:700; font-size:1.35rem; }
  .oem-sub{ font-family:"IBM Plex Mono"; font-size:.66rem; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-muted); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .model-chips{ display:flex; flex-wrap:wrap; gap:6px; }
  .chip{ font-family:"IBM Plex Mono"; font-size:.72rem; padding:4px 10px; border-radius:999px; background:var(--surface-2); border:1px solid var(--border); color:var(--ink-muted); white-space:nowrap; }
  .chip.dev{ background:color-mix(in srgb, var(--accent) 14%, var(--surface-2)); border-color:color-mix(in srgb, var(--accent) 38%, var(--border)); color:var(--accent); }
  .dev-badge{ font-family:"IBM Plex Mono"; font-size:.6rem; letter-spacing:.05em; color:var(--accent); background:color-mix(in srgb, var(--accent) 10%, transparent); border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); border-radius:999px; padding:2px 8px; text-transform:none; }
  /* contact */
  .contact-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(28px,5vw,56px); }
  @media (max-width: 860px){ .contact-grid{ grid-template-columns:1fr; } }
  .contact-card{ background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-radius:14px; padding:26px; }
  .field-row{ display:flex; flex-direction:column; gap:4px; padding:14px 0; border-top:1px solid var(--band-dark-border); }
  .field-row:first-child{ border-top:none; padding-top:0; }
  .field-row span{ font-family:"IBM Plex Mono"; font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--band-dark-ink-muted); }
  .field-row a, .field-row b{ font-size:1rem; }
  .field-row a{ text-decoration:none; color:var(--band-dark-ink); }
  .field-row a:hover{ color:var(--accent-on-dark); }

  footer{ background:var(--band-dark-bg); color:var(--band-dark-ink-muted); border-top:1px solid var(--band-dark-border); }
  .foot-row{ display:flex; align-items:center; justify-content:space-between; padding-top:26px; padding-bottom:26px; flex-wrap:wrap; gap:12px; font-size:.82rem; }
  .foot-row nav{ display:flex; gap:18px; }
  .foot-row nav a{ text-decoration:none; color:var(--band-dark-ink-muted); }
  .foot-row nav a:hover{ color:var(--band-dark-ink); }

  /* =====================================================
     MOTION LAYER v2 — transitions & animations
     ===================================================== */
  html, body{ overflow-x:clip; }
  @media (max-width: 760px) and (prefers-reduced-motion: no-preference){
    .reveal.from-left:not(.in), .reveal.from-right:not(.in){ transform:translateY(18px) !important; }
  }
  .scroll-progress{
    position:fixed; top:0; left:0; right:0; height:3px; z-index:60; pointer-events:none;
    transform-origin:0 50%; transform:scaleX(0);
    background:linear-gradient(90deg, var(--accent), var(--accent-2));
  }
  header{ transition:box-shadow .3s ease, background .3s ease; }
  header.scrolled{ box-shadow:0 10px 28px -18px rgba(0,0,0,.45); }
  nav.links a.active{ color:var(--ink); border-color:var(--accent-2); }

  /* hero backdrop */
  .hero{ isolation:isolate; }
  .hero-bg{ position:absolute; inset:0; z-index:-1; overflow:hidden; pointer-events:none; }
  .hero-bg::before{
    content:""; position:absolute; inset:-44px;
    background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);
    background-size:44px 44px; opacity:.5;
    -webkit-mask-image:radial-gradient(ellipse 70% 60% at 65% 45%, #000 15%, transparent 72%);
            mask-image:radial-gradient(ellipse 70% 60% at 65% 45%, #000 15%, transparent 72%);
  }
  .orb{ position:absolute; border-radius:50%; filter:blur(70px); }
  .orb.o1{ width:380px; height:380px; background:var(--accent-2); top:-90px; right:4%; opacity:.22; }
  .orb.o2{ width:300px; height:300px; background:var(--accent); bottom:-80px; left:28%; opacity:.13; }
  @media (prefers-reduced-motion: no-preference){
    .hero-bg::before{ animation:gridDrift 24s linear infinite; }
    .orb.o1{ animation:orb1 14s ease-in-out infinite alternate; }
    .orb.o2{ animation:orb2 18s ease-in-out infinite alternate; }
  }
  @keyframes gridDrift{ to{ transform:translate(44px,44px); } }
  @keyframes orb1{ to{ transform:translate(-70px,60px) scale(1.15); } }
  @keyframes orb2{ to{ transform:translate(80px,-50px) scale(.88); } }

  /* hero headline: line-by-line rise */
  .hero h1 .ln{ display:block; overflow:hidden; padding-bottom:.08em; margin-bottom:-.08em; }
  .hero h1 .ln > span{ display:inline-block; }
  .hero h1 em{ background:linear-gradient(var(--accent-2), var(--accent-2)) 0 94% / 100% 4px no-repeat; padding-bottom:2px; }
  @media (prefers-reduced-motion: no-preference){
    .hero h1 .ln > span{ transform:translateY(108%); animation:lineUp 1s cubic-bezier(.2,.8,.2,1) forwards; }
    .hero h1 .ln:nth-child(2) > span{ animation-delay:.12s; }
    .hero h1 .ln:nth-child(3) > span{ animation-delay:.24s; }
    .hero h1 em{ background-size:0% 4px; animation:emLine .8s cubic-bezier(.2,.8,.2,1) 1s forwards; }
    .hero .lede, .hero .cta-row{ opacity:0; animation:fadeUp .8s ease .45s forwards; }
    .hero .cta-row{ animation-delay:.6s; }
    header{ animation:headerIn .7s cubic-bezier(.2,.8,.2,1) both; }
  }
  @keyframes lineUp{ to{ transform:none; } }
  @keyframes emLine{ to{ background-size:100% 4px; } }
  @keyframes fadeUp{ from{ opacity:0; transform:translateY(12px); } to{ opacity:1; transform:none; } }
  @keyframes headerIn{ from{ transform:translateY(-100%); } to{ transform:none; } }

  /* reveal variants */
  @media (prefers-reduced-motion: no-preference){
    .reveal{ transition:opacity .75s cubic-bezier(.2,.7,.2,1), transform .75s cubic-bezier(.2,.7,.2,1), filter .75s ease; }
    .reveal.from-left:not(.in){ transform:translateX(-36px); }
    .reveal.from-right:not(.in){ transform:translateX(36px); }
    .reveal.zoom:not(.in){ transform:scale(.94); }
    .reveal.blur:not(.in){ filter:blur(8px); }
  }

  /* section heading accent bar */
  .section-head h2::after{
    content:""; display:block; width:56px; height:3px; margin-top:14px; border-radius:2px;
    background:linear-gradient(90deg, var(--accent), var(--accent-2)); transform-origin:left;
  }
  @media (prefers-reduced-motion: no-preference){
    .section-head.reveal h2::after{ transform:scaleX(0); transition:transform .9s cubic-bezier(.2,.7,.2,1) .35s; }
    .section-head.reveal.in h2::after{ transform:none; }
  }

  /* cards: cursor spotlight + lift */
  .feat, .oem-card, .cap-item{
    --mx:-600px; --my:-600px;
    background:radial-gradient(280px circle at var(--mx) var(--my), color-mix(in srgb, var(--accent-2) 13%, transparent), transparent 70%), var(--surface);
  }
  .feat.settled, .oem-card.settled, .cap-item.settled{
    transition:transform .28s cubic-bezier(.2,.7,.2,1), box-shadow .28s ease, border-color .28s ease, opacity .6s ease;
    transition-delay:0s;
  }
  .feat:hover, .oem-card:hover, .cap-item:hover{
    transform:translateY(-5px); box-shadow:var(--shadow);
    border-color:color-mix(in srgb, var(--accent-2) 45%, var(--border));
  }
  .feat-icon{ transition:transform .4s cubic-bezier(.3,1.6,.5,1), background .25s ease, color .25s ease; }
  .feat:hover .feat-icon{ transform:rotate(-8deg) scale(1.12); background:var(--accent-2); color:var(--accent-2-ink); }
  .cap-item .dot{ transition:transform .3s ease, box-shadow .3s ease; }
  .cap-item:hover .dot{ transform:scale(1.5); box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 18%, transparent); }
  .chip{ transition:background .2s ease, color .2s ease, border-color .2s ease, opacity .45s ease, transform .45s ease; }
  .oem-card .chip:hover{ background:var(--accent-2); color:var(--accent-2-ink); border-color:var(--accent-2); }
  @media (prefers-reduced-motion: no-preference){
    .oem-card.reveal:not(.in) .chip{ opacity:0; transform:translateY(8px); }
    .faq-item h3{ transition:color .2s ease, transform .25s ease; }
    .faq-item:hover h3{ color:var(--accent-2); transform:translateX(4px); }
    .svc-card{ transition:border-color .3s ease, transform .3s ease; }
    .svc-card:hover{ border-color:var(--accent-2-on-dark); transform:translateY(-3px); }
    .stat{ transition:background .3s ease; }
    .stat:hover{ background:var(--band-dark-surface-2); }
  }

  /* clients pop-in */
  @media (prefers-reduced-motion: no-preference){
    .clients-row.reveal{ opacity:1; transform:none; }
    .clients-row.reveal .client-item{ opacity:0; }
    .clients-row.reveal.in .client-item{ animation:popIn .7s cubic-bezier(.2,.8,.2,1) forwards; }
    .clients-row .client-item:nth-child(2){ animation-delay:.08s; }
    .clients-row .client-item:nth-child(3){ animation-delay:.16s; }
    .clients-row .client-item:nth-child(4){ animation-delay:.24s; }
    .clients-row .client-item:nth-child(5){ animation-delay:.32s; }
    .clients-row .client-item:nth-child(6){ animation-delay:.40s; }
  }
  @keyframes popIn{ from{ opacity:0; transform:translateY(14px) scale(.9); } to{ opacity:1; transform:none; } }

  /* architecture: stages appear in sequence */
  @media (prefers-reduced-motion: no-preference){
    #architecture .diagram-wrap svg > g{ transition:opacity .6s ease; }
    #architecture .diagram-wrap:not(.in) svg > g{ opacity:0; }
    #architecture .diagram-wrap svg > g:nth-of-type(2){ transition-delay:.25s; }
    #architecture .diagram-wrap svg > g:nth-of-type(3){ transition-delay:.5s; }
    #architecture .diagram-wrap svg > g:nth-of-type(4){ transition-delay:.75s; }
    #architecture .diagram-wrap svg > g:nth-of-type(5){ transition-delay:.9s; }
  }

  /* buttons */
  .btn-primary{ position:relative; overflow:hidden; }
  .btn-primary::after{
    content:""; position:absolute; top:0; bottom:0; left:-60%; width:40%;
    background:linear-gradient(100deg, transparent, rgba(255,255,255,.38), transparent); transform:skewX(-20deg);
  }
  @media (prefers-reduced-motion: no-preference){ .btn-primary::after{ animation:btnShine 5s ease-in-out 1.6s infinite; } }
  @keyframes btnShine{ 0%{ left:-60%; } 28%,100%{ left:130%; } }
  .btn:hover{ box-shadow:0 12px 26px -12px color-mix(in srgb, var(--accent) 70%, transparent); }
  .btn-ghost:hover{ border-color:var(--accent-2); color:var(--accent-2); }
  .navcta{ transition:transform .2s ease, background .2s ease; }
  .navcta:hover{ transform:translateY(-1px); background:var(--accent); color:var(--accent-ink); }

  /* hero panel tilt */
  .panel{ transition:transform .25s ease-out; transform-style:preserve-3d; will-change:transform; }

  /* back to top */
  .to-top{
    position:fixed; right:18px; bottom:18px; z-index:55; width:46px; height:46px; border-radius:50%;
    border:1px solid var(--border); background:var(--surface); color:var(--ink); box-shadow:var(--shadow);
    display:flex; align-items:center; justify-content:center; cursor:pointer;
    opacity:0; transform:translateY(14px); pointer-events:none; transition:opacity .3s ease, transform .3s ease, background .2s ease;
  }
  .to-top.show{ opacity:1; transform:none; pointer-events:auto; }
  .to-top:hover{ background:var(--accent); color:var(--accent-ink); border-color:var(--accent); }

  /* =====================================================
     SLDC / RLDC — IEC 60870-5-104 section
     ===================================================== */
  .sldc-section{
    border-top:1px solid var(--border);
    background:
      radial-gradient(900px 400px at 85% 0%, color-mix(in srgb, var(--accent-2) 9%, transparent), transparent 70%),
      var(--bg);
  }
  .sldc-section .section-head{ max-width:72ch; }
  .ldc-panel{
    background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-radius:16px;
    box-shadow:var(--shadow); color:var(--band-dark-ink); padding:clamp(14px,2.4vw,22px);
  }
  .ldc-panel-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:0 4px 14px; border-bottom:1px solid var(--band-dark-border); }
  .ldc-scroll{ overflow-x:auto; margin-top:10px; -webkit-overflow-scrolling:touch; }
  .ldc-scroll svg{ display:block; width:100%; min-width:820px; height:auto; }
  .ldc-hint{ display:none; font-family:"IBM Plex Mono"; font-size:.64rem; color:var(--band-dark-ink-muted); margin-top:6px; }
  @media (max-width: 860px){ .ldc-hint{ display:block; } }

  .ldc-svg .zone{ font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.16em; fill:var(--band-dark-ink-muted); }
  .ldc-svg .nbox{ fill:var(--band-dark-surface-2); stroke:var(--band-dark-border); stroke-width:1.2; }
  .ldc-svg .nbox.hl{ stroke:var(--accent-2-on-dark); stroke-width:1.6; }
  .ldc-svg .nt{ font-family:"IBM Plex Sans"; font-weight:600; font-size:12.5px; fill:var(--band-dark-ink); text-anchor:middle; }
  .ldc-svg .ns{ font-family:"IBM Plex Mono"; font-size:9.5px; fill:var(--band-dark-ink-muted); text-anchor:middle; }
  .ldc-svg .nk{ font-family:"IBM Plex Mono"; font-size:9.5px; fill:var(--accent-2-on-dark); text-anchor:middle; }
  .ldc-svg .big{ font-family:"Big Shoulders Display"; font-weight:800; font-size:32px; fill:var(--band-dark-ink); text-anchor:middle; letter-spacing:.04em; }
  .ldc-svg .wire{ fill:none; stroke:var(--band-dark-border); stroke-width:2.2; }
  .ldc-svg .data{ fill:none; stroke:var(--accent-2-on-dark); stroke-width:2.2; stroke-dasharray:6 10; }
  .ldc-svg .cmd{ fill:none; stroke:var(--accent-on-dark); stroke-width:2.2; stroke-dasharray:2 16; stroke-linecap:round; }
  .ldc-svg .stby{ fill:none; stroke:var(--accent-2-on-dark); stroke-width:1.6; stroke-dasharray:3 7; opacity:.55; }
  .ldc-svg .ists{ fill:none; stroke:var(--band-dark-ink-muted); stroke-width:1.6; stroke-dasharray:3 7; opacity:.7; }
  .ldc-svg .pill rect{ fill:var(--band-dark-bg); stroke-width:1; }
  .ldc-svg .pill text{ font-family:"IBM Plex Mono"; font-size:8.5px; letter-spacing:.1em; text-anchor:middle; }
  .ldc-svg .ic{ fill:none; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round; }
  .ldc-svg .node{ transform-box:fill-box; transform-origin:center; transition:opacity .6s ease, transform .6s cubic-bezier(.2,.8,.2,1); transition-delay:var(--d,0s); }
  @media (prefers-reduced-motion: no-preference){
    .ldc-panel:not(.in) .node{ opacity:0; transform:translateY(12px) scale(.96); }
    .ldc-svg .data{ animation:flow 2.6s linear infinite; }
    .ldc-svg .stby{ animation:flow 6s linear infinite; }
    .ldc-svg .cmd{ animation:flowRev 3.2s linear infinite; }
    .ldc-svg .spin{ animation:spin 3s linear infinite; }
    .ldc-svg .led{ animation:ledBlink 1.1s steps(2, jump-none) infinite; }
    .ldc-svg .led.b{ animation-duration:.7s; }
    .ldc-svg .ring{ animation:ringPulse 2.4s ease-out infinite; transform-box:fill-box; transform-origin:center; }
  }
  @keyframes flowRev{ to{ stroke-dashoffset:120; } }
  @keyframes ledBlink{ 0%{ opacity:1; } 100%{ opacity:.2; } }
  @keyframes ringPulse{ 0%{ opacity:.7; transform:scale(.6); } 100%{ opacity:0; transform:scale(1.6); } }

  .ldc-legend{ display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:12px; padding:12px 4px 2px; border-top:1px solid var(--band-dark-border); font-family:"IBM Plex Mono"; font-size:.7rem; color:var(--band-dark-ink-muted); }
  .ldc-legend span{ display:inline-flex; align-items:center; gap:8px; }
  .ldc-legend i{ display:inline-block; width:22px; height:0; border-top:2px solid; }
  .ldc-legend .lg-data{ border-color:var(--accent-2-on-dark); border-top-style:dashed; }
  .ldc-legend .lg-cmd{ border-color:var(--accent-on-dark); border-top-style:dotted; border-top-width:3px; }
  .ldc-legend .lg-stby{ border-color:var(--accent-2-on-dark); border-top-style:dotted; opacity:.6; }
  .ldc-legend .lg-ists{ border-color:var(--band-dark-ink-muted); border-top-style:dotted; }

  .sldc-grid{ display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(22px,4vw,40px); margin-top:clamp(32px,5vw,48px); align-items:start; }
  @media (max-width: 900px){ .sldc-grid{ grid-template-columns:1fr; } }
  .sldc-top{ display:grid; grid-template-columns:1.35fr .9fr; gap:clamp(24px,4vw,48px); align-items:start; margin-bottom:clamp(32px,5vw,52px); }
  .sldc-top .section-head{ margin-bottom:0; }
  @media (max-width: 900px){ .sldc-top{ grid-template-columns:1fr; } }
  .raw-callout{ padding:22px 22px 20px; border-radius:14px; background:var(--surface); border:1px solid var(--border); border-top:4px solid var(--accent-2); box-shadow:var(--shadow); margin-top:clamp(0px,2vw,26px); }
  .raw-callout h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.08rem; margin-top:14px; }
  .raw-tag{ margin-top:4px; font-size:.66rem; letter-spacing:.12em; color:var(--accent-2); font-weight:600; }
  .raw-callout p:not(.raw-tag){ margin-top:10px; color:var(--ink-muted); font-size:.92rem; }
  .raw-callout ul{ list-style:none; margin:14px 0 0; padding:12px 0 0; border-top:1px dashed var(--border); display:flex; flex-direction:column; gap:8px; }
  .raw-callout li{ position:relative; padding-left:22px; font-size:.88rem; color:var(--ink); }
  .raw-callout li::before{ content:""; position:absolute; left:2px; top:.45em; width:10px; height:6px; border-left:2px solid var(--accent-2); border-bottom:2px solid var(--accent-2); transform:rotate(-45deg); }
  .raw-icon{ width:42px; height:42px; border-radius:10px; display:flex; align-items:center; justify-content:center; background:color-mix(in srgb, var(--accent-2) 14%, var(--surface-2)); color:var(--accent-2); }
  .sldc-makes{ margin-top:clamp(28px,4vw,40px); padding:22px; border-radius:14px; background:var(--surface); border:1px solid var(--border); }
  .sldc-makes-lead{ margin:8px 0 14px; color:var(--ink-muted); font-size:.95rem; max-width:80ch; }
  .sldc-makes .chip{ transition:background .2s, color .2s, border-color .2s, transform .2s; }
  .sldc-makes .chip:hover{ background:var(--accent-2); color:var(--accent-2-ink); border-color:var(--accent-2); transform:translateY(-2px); }
  .sldc-grid > *{ min-width:0; }
  .iec-line .m{ min-width:0; }
  .sub-h{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1.05rem; margin-bottom:14px; }
  .table-scroll{ overflow-x:auto; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
  .sig-table{ width:100%; border-collapse:collapse; font-size:.88rem; min-width:520px; }
  .sig-table th{ text-align:left; font-family:"IBM Plex Mono"; font-size:.66rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-muted); font-weight:600; padding:12px 14px; background:var(--surface-2); border-bottom:1px solid var(--border); }
  .sig-table td{ padding:11px 14px; border-bottom:1px solid var(--border); vertical-align:top; color:var(--ink); }
  .sig-table tr:last-child td{ border-bottom:none; }
  .sig-table td.mono{ font-size:.76rem; color:var(--accent-2); white-space:nowrap; }
  .sig-table td:last-child{ color:var(--ink-muted); }
  .sig-table tbody tr{ transition:background .2s ease; }
  .sig-table tbody tr:hover{ background:color-mix(in srgb, var(--accent-2) 8%, transparent); }
  .sig-table tr.cmd-row td.mono{ color:var(--accent); }
  @media (prefers-reduced-motion: no-preference){
    .reveal:not(.in) .sig-table tbody tr{ opacity:0; transform:translateX(-10px); }
    .sig-table tbody tr{ transition:opacity .5s ease, transform .5s ease, background .2s ease; }
  }
  .fine{ margin-top:12px; font-size:.8rem; color:var(--ink-muted); }

  .iec-log{ background:#0B0908; border:1px solid var(--band-dark-border); border-radius:14px; overflow:hidden; box-shadow:var(--shadow); }
  .iec-log-head{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:11px 14px; border-bottom:1px solid #2A2321; font-family:"IBM Plex Mono"; font-size:.7rem; color:#A69D98; }
  .iec-log-body{ height:318px; display:flex; flex-direction:column; justify-content:flex-end; padding:10px 14px; overflow:hidden; font-family:"IBM Plex Mono"; font-size:.7rem; line-height:1.55; }
  .iec-line{ display:grid; grid-template-columns:auto auto auto 1fr; gap:10px; color:#DAD5D2; white-space:nowrap; }
  .iec-line .t{ color:#6E6662; }
  .iec-line .d{ width:6.6em; }
  .iec-line.tx .d{ color:#4FC7BA; }
  .iec-line.rx .d{ color:#E8636A; }
  .iec-line .f{ display:inline-block; width:1.6em; text-align:center; border-radius:4px; background:#221C1A; color:#F1EEEC; }
  .iec-line .m{ overflow:hidden; text-overflow:ellipsis; }
  @media (prefers-reduced-motion: no-preference){ .iec-line.new{ animation:logIn .45s ease; } }
  @keyframes logIn{ from{ opacity:0; transform:translateY(8px); background:rgba(79,199,186,.12); } to{ opacity:1; transform:none; background:transparent; } }
  .iec-log-foot{ padding:9px 14px; border-top:1px solid #2A2321; font-family:"IBM Plex Mono"; font-size:.64rem; color:#7C736F; }
  @media (max-width: 480px){ .iec-line{ grid-template-columns:auto auto 1fr; } .iec-line .t{ display:none; } }

  .spec-row{ display:flex; flex-wrap:wrap; gap:8px; margin-top:clamp(26px,4vw,36px); }
  .spec-row .chip{ background:var(--surface); }

  .sldc-steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:clamp(28px,4vw,40px); }
  @media (max-width: 940px){ .sldc-steps{ grid-template-columns:repeat(2,1fr); } }
  @media (max-width: 560px){ .sldc-steps{ grid-template-columns:1fr; } }
  .sstep{ position:relative; background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:22px 20px 20px; overflow:hidden; }
  .sstep::before{ content:""; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg, var(--accent), var(--accent-2)); transform-origin:left; }
  @media (prefers-reduced-motion: no-preference){
    .sstep.reveal::before{ transform:scaleX(0); transition:transform 1s cubic-bezier(.2,.7,.2,1) .3s; }
    .sstep.reveal.in::before{ transform:none; }
  }
  .sstep-n{ font-family:"Big Shoulders Display"; font-weight:800; font-size:1.9rem; color:var(--accent-2); line-height:1; }
  .sstep h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1rem; margin-top:10px; }
  .sstep p{ margin-top:6px; color:var(--ink-muted); font-size:.9rem; }
  .h1-kicker{ display:block; line-height:1.5; margin-bottom:14px; font-weight:600; }
  .oem-seo{ font-size:.86rem; color:var(--ink-muted); line-height:1.5; }
  .tn-block{ margin-top:clamp(32px,5vw,48px); display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(22px,4vw,44px); align-items:start; }
  @media (max-width: 860px){ .tn-block{ grid-template-columns:1fr; } }
  .tn-block p + p{ margin-top:12px; }
  .tn-block .body-copy{ color:var(--ink-muted); }
  .tn-block h3{ font-family:"Big Shoulders Display"; font-weight:700; font-size:clamp(1.4rem,2.6vw,1.8rem); margin-bottom:12px; }
  .seo-brands{ margin-top:clamp(28px,4vw,40px); color:var(--ink-muted); font-size:.95rem; max-width:80ch; }
  .seo-brands p + p{ margin-top:10px; }
  .seo-brands strong{ color:var(--ink); }
  .foot-nap{ width:100%; font-size:.78rem; line-height:1.7; color:var(--band-dark-ink-muted); padding-bottom:22px; border-top:1px solid var(--band-dark-border); padding-top:18px; }
  .foot-nap b{ color:var(--band-dark-ink); font-weight:600; }

  /* =====================================================
     Multi-page additions
     ===================================================== */
  .page-hero{ isolation:isolate; padding-top:clamp(36px,6vw,72px); padding-bottom:clamp(40px,6vw,64px); }
  .page-hero h1{ font-size:clamp(2.3rem,5vw,3.7rem); font-weight:800; line-height:1.02; margin-top:12px; max-width:20ch; }
  .page-hero .lede{ margin-top:18px; max-width:62ch; color:var(--ink-muted); font-size:1.08rem; }
  .crumbs{ display:flex; gap:8px; align-items:center; font-size:.72rem; letter-spacing:.06em; color:var(--ink-muted); margin-bottom:22px; }
  .crumbs a{ color:var(--ink-muted); text-decoration:none; }
  .crumbs a:hover{ color:var(--accent-2); }
  .card-link{ display:inline-flex; align-items:center; gap:4px; margin-top:auto; padding-top:6px; font-size:.84rem; font-weight:600; color:var(--accent-2); text-decoration:none; transition:gap .2s ease, color .2s ease; }
  .card-link:hover{ gap:9px; color:var(--accent); }
  .oem-h{ font-family:"Big Shoulders Display"; font-weight:700; font-size:1.35rem; }
  .rel-chip{ text-decoration:none; }
  .rel-chip:hover{ background:var(--accent-2); color:var(--accent-2-ink); border-color:var(--accent-2); }
  .related-band{ padding:clamp(36px,5vw,56px) 0; border-top:1px solid var(--border); }
  .dark-feats .feat{ background:radial-gradient(280px circle at var(--mx) var(--my), rgba(79,199,186,.12), transparent 70%), var(--band-dark-surface); border-color:var(--band-dark-border); }
  .dark-feats .feat h3{ color:var(--band-dark-ink); }
  .dark-feats .feat p{ color:var(--band-dark-ink-muted); }
  .dark-feats .feat-icon{ background:var(--band-dark-surface-2); color:var(--accent-2-on-dark); }
  .dark-chips .chip{ background:var(--band-dark-surface); border-color:var(--band-dark-border); color:var(--band-dark-ink); font-size:.82rem; padding:7px 14px; }
  .foot-links{ display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; padding-top:20px; padding-bottom:18px; border-top:1px solid var(--band-dark-border); font-size:.8rem; }
  .foot-links span{ font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--band-dark-ink-muted); margin-right:4px; }
  .foot-links a{ color:var(--band-dark-ink); text-decoration:none; opacity:.85; }
  .foot-links a:hover{ color:var(--accent-on-dark); opacity:1; }
  .access-band{ background:var(--band-dark-bg); color:var(--band-dark-ink); padding:clamp(48px,7vw,80px) 0; }
  .access-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:clamp(24px,4vw,52px); align-items:center; }
  @media (max-width: 860px){ .access-grid{ grid-template-columns:1fr; } }
  .access-h{ font-size:clamp(1.7rem,3.2vw,2.4rem); font-weight:700; margin-top:10px; line-height:1.1; }
  .access-p{ margin-top:16px; color:var(--band-dark-ink-muted); max-width:56ch; }
  .access-levels{ display:flex; flex-direction:column; gap:12px; }
  .lvl{ position:relative; padding:16px 18px 16px 20px; border-radius:12px; background:var(--band-dark-surface); border:1px solid var(--band-dark-border); border-left:3px solid var(--accent-2-on-dark); }
  .lvl:nth-child(2){ margin-left:clamp(0px,2vw,18px); } .lvl:nth-child(3){ margin-left:clamp(0px,4vw,36px); border-left-color:var(--accent-on-dark); }
  .lvl-n{ font-size:.62rem; letter-spacing:.14em; color:var(--accent-2-on-dark); }
  .lvl h3{ font-family:"IBM Plex Sans"; font-weight:700; font-size:1rem; margin-top:4px; color:var(--band-dark-ink); }
  .lvl p{ margin-top:4px; font-size:.88rem; color:var(--band-dark-ink-muted); }

  /* ---------- turbine illustrations ---------- */
  .tb-spin{ transform-origin:0 0; }
  .tb-wind{ fill:none; stroke:var(--accent-2); stroke-width:1.4; stroke-linecap:round; stroke-dasharray:14 90; opacity:.45; }
  .tb-lbl{ font-family:"IBM Plex Mono"; font-size:9px; fill:var(--ink-muted); }
  @media (prefers-reduced-motion: no-preference){
    .tb-spin{ animation:spin 4s linear infinite; }
    .tb-wind{ animation:windDrift 5s linear infinite; }
  }
  @keyframes windDrift{ from{ stroke-dashoffset:104; } to{ stroke-dashoffset:-104; } }
  .oem-card{ overflow:hidden; }
  .oem-card .card-link{ margin-top:4px; }
  .oem-art{ position:relative; flex:1 1 auto; min-height:118px; margin:6px -20px -20px; border-top:1px dashed var(--border);
    background:linear-gradient(to top, color-mix(in srgb, var(--accent-2) 8%, transparent), transparent 70%); }
  .oem-art svg{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  .oem-card:hover .tb-spin{ animation-duration:1.4s !important; }
  .oem-fill{ background:linear-gradient(120deg, color-mix(in srgb, var(--accent-2) 10%, var(--surface)), var(--surface) 60%); border-style:dashed; }
  .fill-in{ display:flex; flex-wrap:wrap; gap:14px 22px; align-items:flex-end; height:100%; }
  .fill-txt{ flex:1 1 210px; display:flex; flex-direction:column; gap:8px; align-self:center; }
  .fill-txt h3{ font-family:"Big Shoulders Display"; font-weight:700; font-size:1.35rem; }
  .fill-art{ flex:1.6 1 240px; position:relative; min-height:150px; align-self:stretch; margin:0 -20px -20px 0; }
  .fill-art svg{ position:absolute; inset:0; width:100%; height:100%; }
  .page-hero-grid{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(20px,4vw,48px); align-items:end; }
  @media (max-width: 900px){ .page-hero-grid{ grid-template-columns:1fr; } .hero-art{ max-width:520px; } }
  .hero-art{ position:relative; min-height:240px; aspect-ratio:520/300; }
  .hero-art svg{ position:absolute; inset:0; width:100%; height:100%; }
  .model-art{ position:relative; height:clamp(170px,22vw,240px); margin-top:26px; border-radius:14px; overflow:hidden; border:1px solid var(--border);
    background:linear-gradient(to top, color-mix(in srgb, var(--accent-2) 9%, var(--surface)), var(--surface)); }
  .model-art svg{ position:absolute; inset:0; width:100%; height:100%; }

  /* ---------- drawn illustrations ---------- */
  .art-svg .ai-t{ font-family:"IBM Plex Mono"; font-size:9px; font-weight:600; text-anchor:middle; }
  @media (prefers-reduced-motion: no-preference){
    .art-led{ animation:ledBlink 1.2s steps(2, jump-none) infinite; }
    .art-led.b{ animation-duration:.7s; }
    .art-flow{ animation:flow 2.4s linear infinite; }
    .art-wave{ animation:waveP 1.8s ease-in-out infinite; }
    .art-rays{ animation:spin 24s linear infinite; transform-origin:0 0; }
    .art-sheen{ animation:sheen 5s ease-in-out infinite; }
    .reveal.in .art-draw{ stroke-dasharray:600; animation:drawChart 2.2s ease forwards; stroke-dashoffset:600; }
  }
  @keyframes waveP{ 0%,100%{ opacity:.25; } 50%{ opacity:1; } }
  @keyframes sheen{ 0%,100%{ opacity:0; } 50%{ opacity:1; } }
  .dash-art{ max-width:880px; margin:0 auto clamp(32px,5vw,52px); position:relative; }
  .dash-art svg{ display:block; width:100%; height:auto; filter:drop-shadow(0 20px 30px rgba(20,18,17,.18)); }
  .dash-cap{ text-align:center; margin-top:8px; font-family:"IBM Plex Mono"; font-size:.66rem; color:var(--ink-muted); letter-spacing:.04em; }

  /* ---------- section heading spot art ---------- */
  .head-row{ display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,300px); gap:clamp(24px,5vw,72px); align-items:end; margin-bottom:clamp(32px,5vw,52px); }
  .head-row .section-head{ margin-bottom:0; }
  .head-art{ --ha-a:var(--accent-2); --ha-m:var(--border); --ha-bg:var(--surface); --ha-on:var(--accent-2-ink);
    background:var(--ha-bg); border:1px solid var(--border); border-radius:14px; padding:14px 16px 12px; box-shadow:var(--shadow); }
  .section.dark .head-art, .access-band .head-art{ --ha-a:var(--accent-2-on-dark); --ha-m:var(--band-dark-border); --ha-bg:var(--band-dark-surface); --ha-on:#00201C; border-color:var(--band-dark-border); }
  .head-art svg{ display:block; width:100%; height:auto; max-height:130px; }
  .head-art-cap{ display:flex; align-items:baseline; gap:10px; margin-top:8px; padding-top:9px; border-top:1px dashed var(--ha-m); }
  .head-art-cap b{ font-size:1.25rem; color:var(--ha-a); font-weight:600; white-space:nowrap; }
  .head-art-cap span{ font-size:.78rem; color:var(--ink-muted); line-height:1.35; }
  .section.dark .head-art-cap span{ color:var(--band-dark-ink-muted); }
  @media (max-width: 760px){ .head-row{ grid-template-columns:1fr; } .head-art{ display:none; } }
  .head-art .ha-box{ fill:var(--ha-bg); stroke:var(--ha-m); stroke-width:1.6; }
  .head-art .ha-mf{ fill:var(--ha-m); }
  .head-art .ha-wire{ fill:none; stroke:var(--ha-m); stroke-width:2; }
  .head-art .ha-dash{ fill:none; stroke:var(--ha-a); stroke-width:2; stroke-dasharray:5 8; }
  .head-art .ha-line{ stroke:var(--ha-a); stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; }
  .head-art .ha-prog{ stroke:var(--ha-a); stroke-width:3; stroke-dasharray:180; stroke-dashoffset:180; }
  .head-art .ha-t{ font-family:"IBM Plex Mono"; font-size:10px; text-anchor:middle; fill:var(--ink-muted); }
  .section.dark .head-art .ha-t{ fill:var(--band-dark-ink-muted); }
  @media (prefers-reduced-motion: no-preference){
    .head-art .ha-dash{ animation:flow 2s linear infinite; }
    .head-art .ha-bar{ transform-box:fill-box; transform-origin:bottom; animation:barGrow 2.8s ease-in-out infinite alternate; }
    .head-art .ha-line{ stroke-dasharray:260; animation:haDraw 3.2s ease-in-out infinite; }
    .head-art .ha-prog{ animation:haProg 3s ease-in-out infinite; }
    .head-art .ha-step{ transform-box:fill-box; transform-origin:center; animation:haStep 3s ease-in-out infinite; }
    .head-art .ha-ring{ transform-box:fill-box; transform-origin:center; animation:haRing 2.4s ease-out infinite; }
    .head-art .ha-type{ transform-box:fill-box; transform-origin:left; animation:haType 3.6s ease-in-out infinite; }
    .head-art .ha-caret{ animation:ledBlink .9s steps(2, jump-none) infinite; }
    .head-art .ha-typing{ animation:haTyping 1.2s ease-in-out infinite; }
  }
  @keyframes barGrow{ from{ transform:scaleY(.55); } to{ transform:scaleY(1); } }
  @keyframes haDraw{ 0%{ stroke-dashoffset:260; } 55%,100%{ stroke-dashoffset:0; } }
  @keyframes haProg{ 0%{ stroke-dashoffset:180; } 70%,100%{ stroke-dashoffset:0; } }
  @keyframes haStep{ 0%,15%{ transform:scale(0); } 30%,100%{ transform:scale(1); } }
  @keyframes haRing{ from{ transform:scale(.8); opacity:.8; } to{ transform:scale(1.7); opacity:0; } }
  @keyframes haType{ 0%{ transform:scaleX(0); } 40%,85%{ transform:scaleX(1); } 100%{ transform:scaleX(0); } }
  @keyframes haTyping{ 0%,100%{ transform:translateY(0); opacity:.5; } 50%{ transform:translateY(-4px); opacity:1; } }
  /* v2 heading scenes */
  .head-art{ padding:10px 10px 12px; overflow:hidden; position:relative; }
  .head-art svg{ max-height:150px; border-radius:10px; }
  .head-art::before{ content:""; position:absolute; inset:-1px; border-radius:inherit; padding:1px; pointer-events:none;
    background:linear-gradient(135deg, color-mix(in srgb, var(--ha-a) 70%, transparent), transparent 40%, transparent 60%, color-mix(in srgb, #E8636A 60%, transparent));
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite:xor; mask-composite:exclude; }
  .head-art-cap{ padding:9px 6px 0; }
  .head-art-cap b{ font-size:1.35rem; background:linear-gradient(90deg, var(--ha-a), #E8636A); -webkit-background-clip:text; background-clip:text; color:transparent; }
  .head-art{ transition:transform .35s cubic-bezier(.2,.7,.2,1), box-shadow .35s ease; }
  .head-art:hover{ transform:translateY(-4px) rotate(-.6deg); box-shadow:0 22px 40px -22px rgba(0,0,0,.45); }
  .head-art .ha-pop{ transform-box:view-box; }
  @media (prefers-reduced-motion: no-preference){
    .head-art .ha-fade{ animation:sheen 4s ease-in-out infinite; }
    .head-art .ha-float{ animation:haFloat 2.6s ease-in-out infinite; }
    .head-art .ha-cloud{ animation:haCloud 16s linear infinite; }
    .head-art .ha-prog2{ stroke:url(#none); }
    .head-art .ha-pop{ animation:haPop 3.3s cubic-bezier(.3,1.6,.5,1) infinite; }
    .head-art .ha-orbit{ animation:spin 10s linear infinite; }
    .head-art .ha-check2{ stroke-dasharray:40; animation:haCheck 2.4s ease-in-out infinite; }
    .head-art .ha-gear{ animation:spin 6s linear infinite; }
    .head-art .ha-gear.r{ animation-direction:reverse; animation-duration:4s; }
    .head-art:hover .tb-spin{ animation-duration:1.2s !important; }
  }
  .head-art .ha-prog2{ fill:none; stroke:#E8636A; stroke-width:5; stroke-linecap:round; stroke-dasharray:320; stroke-dashoffset:320; }
  @media (prefers-reduced-motion: no-preference){ .head-art .ha-prog2{ animation:haProg2 3.3s ease-in-out infinite; } }
  @keyframes haProg2{ 0%{ stroke-dashoffset:320; } 80%,100%{ stroke-dashoffset:0; } }
  @keyframes haFloat{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px); } }
  @keyframes haCloud{ from{ transform:translateX(-60px); } to{ transform:translateX(240px); } }
  @keyframes haPop{ 0%{ transform:scale(.4); opacity:0; } 14%,82%{ transform:scale(1); opacity:1; } 100%{ transform:scale(1); opacity:0; } }
  @keyframes haCheck{ 0%{ stroke-dashoffset:40; } 40%,100%{ stroke-dashoffset:0; } }

  /* ---------- capabilities intro: copy + dashboard side by side ---------- */
  .cap-hero{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(28px,5vw,64px); align-items:center; margin-bottom:clamp(40px,6vw,64px); }
  @media (max-width: 900px){ .cap-hero{ grid-template-columns:1fr; } }
  .cap-copy h2{ font-size:clamp(1.9rem,3.4vw,2.6rem); font-weight:700; margin-top:10px; }
  .cap-copy h2::after{ content:""; display:block; width:56px; height:3px; margin-top:14px; border-radius:2px; background:linear-gradient(90deg, var(--accent), var(--accent-2)); }
  .cap-copy > p:not(.eyebrow){ margin-top:16px; color:var(--ink-muted); font-size:1.02rem; max-width:48ch; }
  .cap-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:24px; }
  .cap-stats div{ padding:12px 14px; border-radius:12px; background:var(--surface); border:1px solid var(--border); }
  .cap-stats b{ display:block; font-size:1.3rem; font-weight:600; background:linear-gradient(90deg, var(--accent-2), var(--accent)); -webkit-background-clip:text; background-clip:text; color:transparent; }
  .cap-stats span{ display:block; margin-top:2px; font-size:.76rem; color:var(--ink-muted); }
  .cap-hero .dash-art{ max-width:none; margin:0; position:relative; }
  .dash-glow{ position:absolute; inset:8% 6% 14%; border-radius:30px; background:radial-gradient(closest-side, color-mix(in srgb, var(--accent-2) 35%, transparent), transparent); filter:blur(30px); z-index:-1; }
  .cap-hero .dash-art{ isolation:isolate; }
  .dash-tag{ position:absolute; display:inline-flex; align-items:center; gap:7px; padding:7px 12px; border-radius:999px; font-size:.7rem; font-weight:600;
    background:var(--surface); color:var(--ink); border:1px solid var(--border); box-shadow:var(--shadow); white-space:nowrap; }
  .dash-tag i{ width:8px; height:8px; border-radius:50%; background:var(--ok); box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 25%, transparent); }
  .dash-tag.dt1{ left:-4%; top:30%; }
  .dash-tag.dt2{ right:-3%; top:6%; color:#fff; background:linear-gradient(90deg, #E8636A, #F3B562); border:none; }
  .dash-tag.dt3{ right:6%; bottom:14%; color:var(--accent-2); }
  @media (max-width: 560px){ .dash-tag.dt1{ left:0; } .dash-tag.dt2{ right:0; } }
  @media (prefers-reduced-motion: no-preference){
    .dash-tag{ animation:haFloat 3.4s ease-in-out infinite; }
    .dash-tag.dt2{ animation-delay:-1.1s; } .dash-tag.dt3{ animation-delay:-2.2s; }
  }
  .svc-link{ text-decoration:none; color:inherit; }
  .svc-link .card-link{ margin-top:auto; }

  /* ---------- scene cards & night band ---------- */
  .scene-card{ margin:0; border:1px solid var(--border); border-radius:14px; overflow:hidden; background:var(--surface); box-shadow:var(--shadow); }
  .scene-card svg{ display:block; width:100%; height:auto; }
  .scene-card figcaption{ padding:10px 14px; border-top:1px solid var(--border); font-family:"IBM Plex Mono"; font-size:.7rem; color:var(--ink-muted); letter-spacing:.02em; }
  .explain-grid .scene-card{ margin-top:24px; }
  .night{ position:relative; height:clamp(260px,30vw,360px); overflow:hidden; background:#050a09; color:#F1EEEC; }
  .night > svg{ position:absolute; inset:0; width:100%; height:100%; }
  .night .wrap{ position:relative; height:100%; display:flex; align-items:flex-end; justify-content:space-between; gap:20px; padding-bottom:clamp(26px,4vw,44px); }
  .night h2{ font-size:clamp(1.6rem,3.6vw,2.6rem); font-weight:700; line-height:1.12; max-width:18ch; text-shadow:0 2px 20px rgba(0,0,0,.6); }
  .night .night-tag{ font-family:"IBM Plex Mono"; font-size:.72rem; letter-spacing:.16em; color:#A69D98; white-space:nowrap; }
  @media (max-width: 640px){ .night .wrap{ flex-direction:column; align-items:flex-start; } }
  @media (prefers-reduced-motion: no-preference){
    .night .star{ animation:twinkle 3.2s ease-in-out infinite; }
    .avi{ animation:aviBlink 1.6s steps(1, end) infinite; }
    .gear-a{ animation:spin 4s linear infinite; } .gear-b{ animation:spin 2.6s linear infinite reverse; }
    .pulse-hot{ animation:sheen 2.4s ease-in-out infinite; }
    .callout{ animation:haFloat 3.2s ease-in-out infinite; }
    .gauge{ stroke-dasharray:90; animation:haDraw 3.6s ease-in-out infinite; }
  }
  @keyframes twinkle{ 0%,100%{ opacity:.25; } 50%{ opacity:1; } }
  @keyframes aviBlink{ 0%{ opacity:1; } 50%{ opacity:.15; } }
  .avi{ filter:drop-shadow(0 0 4px #FF4D4D); }
  .hero-art .art-svg.rounded{ border-radius:16px; box-shadow:var(--shadow); border:1px solid var(--border); }
  .scene-card .art-svg.rounded{ border-radius:0; box-shadow:none; border:0; }
  @media (max-width: 640px){ .night{ height:340px; } .night h2{ font-size:1.5rem; } }
  .term-row{ display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:14px 26px; margin-top:clamp(28px,4vw,40px); }
  .term-row > div{ padding-top:14px; border-top:2px solid var(--border); }
  .term-row b{ font-family:"IBM Plex Mono"; font-size:.8rem; color:var(--accent-2); text-transform:uppercase; letter-spacing:.05em; }
  .term-row p{ margin-top:5px; color:var(--ink-muted); font-size:.92rem; }
  .art-svg .ai-t, .ldc-svg text, .head-art text{ font-family:"IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace; }
  .ldc-svg .nt{ font-family:"IBM Plex Sans", system-ui, sans-serif; }
  /* alignment fixes */
  .dash-tag.dt1{ left:3%; top:34%; } .dash-tag.dt2{ right:3%; top:3%; } .dash-tag.dt3{ right:7%; bottom:16%; }
  .head-row{ align-items:center; }
  .iec-log-body{ height:262px; }
  .page-hero-grid{ align-items:center; }
