    :root {
      --bg: #030613;
      --text: #e8f7ff;
      --muted: #95afc5;
      --cyan: #34d8ff;
      --blue: #4d7cff;
      --purple: #b044ff;
      --pink: #ff4faf;
      --green: #38f5aa;
      --gold: #ffc14d;
      --amber: #ff9746;
    }

    * { box-sizing: border-box; }
    html { scroll-behavior: smooth; }

    body {
      margin: 0;
      min-height: 100vh;
      color: var(--text);
      font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      background:
        radial-gradient(circle at 50% 35%, rgba(30, 90, 180, 0.18), transparent 32%),
        radial-gradient(circle at 15% 60%, rgba(176, 68, 255, 0.12), transparent 28%),
        radial-gradient(circle at 85% 62%, rgba(255, 79, 175, 0.1), transparent 28%),
        linear-gradient(180deg, #02040d 0%, #050818 50%, #02040d 100%);
      overflow-x: hidden;
    }

    body::before {
      content: "";
      position: fixed;
      inset: 0;
      z-index: -3;
      pointer-events: none;
      background-image:
        linear-gradient(rgba(52, 216, 255, 0.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(52, 216, 255, 0.025) 1px, transparent 1px);
      background-size: 48px 48px;
      mask-image: linear-gradient(to bottom, transparent, black 25%, black);
    }

    body::after {
      content: "";
      position: fixed;
      inset: 0;
      z-index: -2;
      pointer-events: none;
      background:
        radial-gradient(circle at 10% 20%, white 0 1px, transparent 2px),
        radial-gradient(circle at 40% 12%, white 0 1px, transparent 2px),
        radial-gradient(circle at 70% 25%, white 0 1px, transparent 2px),
        radial-gradient(circle at 90% 15%, white 0 1px, transparent 2px),
        radial-gradient(circle at 60% 70%, white 0 1px, transparent 2px);
      background-size: 340px 260px;
      opacity: 0.28;
    }

    button, a { font: inherit; }
    a { color: inherit; text-decoration: none; }

    .shell {
      width: min(1600px, calc(100% - 32px));
      margin: 0 auto;
      padding: 18px 0 26px;
    }

    .glass {
      border: 1px solid rgba(95, 210, 255, 0.28);
      background: linear-gradient(135deg, rgba(34, 68, 130, 0.12), rgba(7, 15, 38, 0.72));
      box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.05),
        0 20px 60px rgba(0, 0, 0, 0.32),
        0 0 24px rgba(52, 216, 255, 0.06);
      backdrop-filter: blur(18px);
      -webkit-backdrop-filter: blur(18px);
    }

    .topbar {
      min-height: 74px;
      display: grid;
      grid-template-columns: 1fr auto 1fr;
      align-items: center;
      gap: 16px;
      padding: 10px 14px;
      border-radius: 24px;
    }

    /* framed Opti-Gen Core Systems banner in the header centre slot */
    .brand {
      border-radius: 18px;
      overflow: hidden;
      border: 1px solid rgba(255, 82, 100, 0.42);
      box-shadow:
        0 0 26px rgba(255, 60, 80, 0.18),
        inset 0 0 18px rgba(52, 216, 255, 0.08);
      background: #050810;
      line-height: 0;
    }

    .brand img {
      display: block;
      height: 108px;
      width: auto;
      max-width: min(920px, 58vw);
      object-fit: cover;
      object-position: center;
    }

    .top-actions { display: flex; align-items: center; gap: 10px; }
    .top-actions:last-child { justify-content: flex-end; }

    /* icon-only header controls — text lives in the tooltip/aria-label */
    .pill {
      width: 52px;
      height: 52px;
      display: grid;
      place-items: center;
      border: 1px solid rgba(113, 206, 255, 0.35);
      color: var(--text);
      background: rgba(9, 18, 45, 0.72);
      border-radius: 50%;
      font-size: 1.2rem;
      font-weight: 600;
      cursor: pointer;
      transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
    }

    .pill:hover {
      transform: translateY(-2px);
      border-color: rgba(113, 206, 255, 0.8);
      box-shadow: 0 0 24px rgba(52, 216, 255, 0.2);
    }

    .pill.portal { color: #ffd2a3; border-color: rgba(255, 151, 70, 0.45); }
    .pill.portal:hover { border-color: rgba(255, 151, 70, 0.85); box-shadow: 0 0 24px rgba(255, 151, 70, 0.25); }

    .pill.fb { color: #7fb4ff; font-family: Georgia, serif; font-size: 1.45rem; }
    .pill.li { color: #8fd0ff; font-size: 0.95rem; letter-spacing: 0.02em; }

    /* ---------- hero ---------- */

    .hero {
      position: relative;
      min-height: 920px;
      margin-top: 16px;
      border-radius: 34px;
      overflow: hidden;
      perspective: 1500px;
    }

    .hero::before {
      content: "";
      position: absolute;
      left: 50%;
      bottom: 60px;
      width: 1100px;
      height: 320px;
      transform: translateX(-50%);
      background: radial-gradient(ellipse, rgba(26, 123, 255, 0.26), rgba(9, 22, 65, 0.05) 55%, transparent 70%);
      filter: blur(18px);
      pointer-events: none;
    }

    .scene { position: absolute; inset: 0; transform-style: preserve-3d; }

    .globe-wrap {
      position: absolute;
      left: 50%;
      top: 38%;
      z-index: 30;
      width: 470px;
      height: 1000px; /* tall wrap: globe centred, projector floor at the bottom below the card arc */
      transform: translate(-50%, -50%);
      display: grid;
      place-items: center;
      pointer-events: none;
    }

    .globe {
      position: relative;
      width: 400px;
      height: 400px;
      border-radius: 50%;
      background:
        repeating-radial-gradient(circle at center, transparent 0 20px, rgba(52, 216, 255, 0.11) 21px 22px),
        repeating-linear-gradient(90deg, transparent 0 31px, rgba(52, 216, 255, 0.12) 32px 33px),
        radial-gradient(circle at 42% 38%, rgba(65, 194, 255, 0.34), rgba(3, 40, 92, 0.92) 45%, rgba(2, 10, 30, 0.97) 78%);
      background-color: #04101f; /* solid body so orbiting orbs genuinely vanish behind it */
      border: 1px solid rgba(76, 211, 255, 0.72);
      box-shadow:
        inset 0 0 40px rgba(52, 216, 255, 0.34),
        inset 0 0 100px rgba(58, 88, 255, 0.22),
        0 0 20px rgba(52, 216, 255, 0.55),
        0 0 80px rgba(22, 96, 255, 0.3);
      animation: globeFloat 5s ease-in-out infinite, globePulse 3s ease-in-out infinite;
      overflow: hidden;
    }

    .globe::before,
    .globe::after {
      content: "";
      position: absolute;
      inset: 0;
      border-radius: inherit;
    }

    .globe::before {
      border-top: 2px solid rgba(100, 225, 255, 0.85);
      border-bottom: 2px solid rgba(100, 225, 255, 0.35);
      transform: rotate(20deg) scaleY(0.55);
      box-shadow: 0 0 14px var(--cyan), inset 0 0 25px rgba(52, 216, 255, 0.3);
    }

    .globe::after {
      background:
        radial-gradient(circle at 28% 22%, rgba(255, 255, 255, 0.5), transparent 2%),
        radial-gradient(circle at 75% 30%, rgba(52, 216, 255, 0.8), transparent 1.5%),
        radial-gradient(circle at 55% 68%, rgba(52, 216, 255, 0.6), transparent 1.5%),
        radial-gradient(circle at 30% 72%, rgba(255, 255, 255, 0.4), transparent 1.2%);
      background-size: 80px 90px;
      opacity: 0.75;
      animation: starDrift 18s linear infinite;
    }

    .longitude, .latitude {
      position: absolute;
      inset: 10%;
      border: 1px solid rgba(52, 216, 255, 0.35);
      border-radius: 50%;
    }

    .longitude.one { transform: scaleX(0.42); }
    .longitude.two { transform: rotate(60deg) scaleX(0.42); }
    .longitude.three { transform: rotate(-60deg) scaleX(0.42); }
    .latitude.one { transform: scaleY(0.35); }
    .latitude.two { transform: scaleY(0.68); }

    .projector-beam {
      position: absolute;
      top: 430px;
      width: 560px;
      height: 525px;
      /* cone rooted at the CENTRE of the floor emblem: blazing at the
         source, spreading upward and dissolving into the background well
         before the top -- the gradient start at the disc plus the fade-out
         is what sells the 3D projection */
      clip-path: polygon(0 0, 100% 0, 53% 100%, 47% 100%);
      background: linear-gradient(0deg,
        rgba(150, 242, 255, 0.9) 0%,
        rgba(61, 210, 255, 0.42) 12%,
        rgba(31, 113, 255, 0.14) 42%,
        rgba(31, 113, 255, 0) 80%);
      filter: blur(4px);
      opacity: 0.95;
      animation: beamBreath 4.5s ease-in-out infinite;
    }

    @keyframes beamBreath {
      0%, 100% { opacity: 0.72; }
      50% { opacity: 1; }
    }

    @media (prefers-reduced-motion: reduce) {
      .projector-beam { animation: none; }
    }

    .projector {
      position: absolute;
      top: 905px;
      width: 470px;
      height: 96px;
      border-radius: 50%;
      background:
        radial-gradient(ellipse,
          rgba(61, 212, 255, 0.5) 0 8%,
          rgba(11, 92, 180, 0.34) 9% 24%,
          rgba(2, 9, 28, 0.96) 25% 55%,
          rgba(12, 32, 70, 0.95) 56% 100%);
      border: 1px solid rgba(83, 211, 255, 0.55);
      box-shadow: inset 0 0 35px rgba(52, 216, 255, 0.2), 0 0 45px rgba(52, 216, 255, 0.24);
    }

    /* Opti-Gen Core Systems badge baked into the projector floor,
       perspective-flattened so the globe projects up out of it */
    .projector-logo {
      position: absolute;
      top: 812px;
      z-index: 2;
      /* laid nearly flat to the horizon — the plate the globe projects from */
      transform: perspective(900px) rotateX(73deg);
    }

    .projector-logo img {
      display: block;
      width: 280px;
      height: 280px;
      border-radius: 50%;
      box-shadow:
        0 0 34px rgba(255, 60, 80, 0.4),
        0 0 70px rgba(52, 216, 255, 0.18);
    }

    /* particles rising through the projection beam (from the disc centre) */
    .beam-particles {
      position: absolute;
      top: 735px;
      width: 220px;
      height: 220px;
      pointer-events: none;
      z-index: 1;
    }

    .beam-particles i {
      position: absolute;
      bottom: 0;
      width: 5px;
      height: 5px;
      border-radius: 50%;
      background: #aef0ff;
      box-shadow: 0 0 8px #6fe0ff, 0 0 16px rgba(52, 216, 255, 0.5);
      opacity: 0;
      animation: particleRise 3.2s linear infinite;
    }

    @keyframes particleRise {
      0% { transform: translateY(0) scale(0.5); opacity: 0; }
      15% { opacity: 0.95; }
      75% { opacity: 0.65; }
      100% { transform: translateY(-210px) scale(1.05); opacity: 0; }
    }

    .orbit {
      position: absolute;
      left: 50%;
      top: 36%;
      z-index: 32; /* above the globe (30), below the front cards (55+) so cards partly obscure passing orbs */
      border: 1px solid rgba(84, 196, 255, 0.3);
      border-radius: 50%;
      pointer-events: none;
    }

    .orbit.one { width: 820px; height: 240px; transform: translate(-50%, -50%) rotate(-7deg); }
    .orbit.two { width: 720px; height: 310px; transform: translate(-50%, -50%) rotate(14deg); }

    /* orbs travel their orbital path (pure CSS — runs without JS) */
    .orb-path {
      position: absolute;
      left: 50%;
      top: 0%;
      width: 0;
      height: 0;
      animation: orbTravel 16s linear infinite;
    }

    .orbit.two .orb-path { animation-duration: 22s; animation-direction: reverse; }

    /* orbs fade out through the top arc — reads as passing behind the solid globe */
    @keyframes orbTravel {
      0%    { left: 50%;    top: 0%;    opacity: 0; }
      6%    {                           opacity: 0; }
      14%   {                           opacity: 1; }
      12.5% { left: 85.4%;  top: 14.6%; }
      25%   { left: 100%;   top: 50%; }
      37.5% { left: 85.4%;  top: 85.4%; }
      50%   { left: 50%;    top: 100%;  opacity: 1; }
      62.5% { left: 14.6%;  top: 85.4%; }
      75%   { left: 0%;     top: 50%; }
      86%   {                           opacity: 1; }
      87.5% { left: 14.6%;  top: 14.6%; }
      94%   {                           opacity: 0; }
      100%  { left: 50%;    top: 0%;    opacity: 0; }
    }

    .orb {
      position: absolute;
      width: 26px;
      height: 26px;
      border-radius: 50%;
      border: 1px solid rgba(255, 255, 255, 0.55);
      background:
        radial-gradient(circle at 35% 30%, white 0 3%, transparent 9%),
        radial-gradient(circle, var(--orb) 0 30%, transparent 72%);
      box-shadow:
        inset 0 0 8px var(--orb),
        0 0 10px var(--orb),
        0 0 22px color-mix(in srgb, var(--orb) 65%, transparent);
      animation: orbPulse 2.4s ease-in-out infinite;
    }

    .orb::before, .orb::after {
      content: "";
      position: absolute;
      inset: 4px;
      border: 1px solid rgba(255, 255, 255, 0.35);
      border-radius: 50%;
      transform: scaleY(0.4) rotate(30deg);
    }

    .orb::after { transform: scaleX(0.4) rotate(-30deg); }

    .orb-path .orb { left: -13px; top: -13px; }

    .orb-a { --orb: var(--cyan); }
    .orb-b { --orb: var(--pink); animation-delay: -0.4s; }
    .orb-c { --orb: var(--gold); animation-delay: -0.8s; }
    .orb-d { --orb: var(--green); animation-delay: -1.2s; }
    .orb-e { --orb: var(--purple); animation-delay: -1.6s; }
    .orb-f { --orb: #886aff; animation-delay: -2s; }

    /* ---------- orbital card ring ---------- */

    .carousel {
      position: absolute;
      left: 50%;
      top: 38%;
      width: 0;
      height: 0;
      transform-style: preserve-3d;
    }

    .portal-card {
      --accent: var(--cyan);
      --x: 0px;
      --y: 0px;
      --z: 0px;
      --ry: 0deg;
      --scale: 1;
      --opacity: 1;
      position: absolute;
      top: 0;
      left: 0;
      width: 248px;
      min-height: 340px;
      padding: 18px;
      border-radius: 24px;
      border: 1px solid color-mix(in srgb, var(--accent) 68%, transparent);
      background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 14%, transparent), rgba(4, 11, 31, 0.82));
      box-shadow:
        inset 0 0 25px color-mix(in srgb, var(--accent) 10%, transparent),
        0 0 24px color-mix(in srgb, var(--accent) 14%, transparent);
      backdrop-filter: blur(14px);
      -webkit-backdrop-filter: blur(14px);
      transform:
        translate(-50%, -50%)
        translateX(var(--x))
        translateY(var(--y))
        translateZ(var(--z))
        rotateY(var(--ry))
        scale(var(--scale));
      opacity: var(--opacity);
      cursor: pointer;
      overflow: hidden;
      transition:
        transform 850ms cubic-bezier(0.25, 0.8, 0.2, 1),
        opacity 850ms ease,
        filter 850ms ease,
        box-shadow 220ms ease;
    }

    .portal-card::before {
      content: "";
      position: absolute;
      inset: 10px;
      border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
      border-radius: 18px;
      pointer-events: none;
    }

    .portal-card.locked::before { border-style: dashed; }

    .portal-card:hover {
      box-shadow:
        inset 0 0 35px color-mix(in srgb, var(--accent) 15%, transparent),
        0 0 36px color-mix(in srgb, var(--accent) 38%, transparent);
    }

    .portal-card.active {
      filter: saturate(1.2);
      box-shadow:
        inset 0 0 30px color-mix(in srgb, var(--accent) 14%, transparent),
        0 0 46px color-mix(in srgb, var(--accent) 32%, transparent),
        0 30px 70px rgba(0, 0, 0, 0.45);
    }

    .group-chip {
      position: relative;
      z-index: 1;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      margin-bottom: 9px;
      padding: 4px 11px;
      border-radius: 999px;
      font-size: 0.6rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
      color: color-mix(in srgb, var(--accent) 75%, white);
      background: color-mix(in srgb, var(--accent) 10%, transparent);
    }

    .portal-card h2 {
      position: relative;
      z-index: 1;
      margin: 0;
      color: color-mix(in srgb, var(--accent) 72%, white);
      font-size: 1.22rem;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }

    .portal-card p {
      position: relative;
      z-index: 1;
      margin: 10px 0 12px;
      min-height: 62px;
      color: #c5d4e3;
      line-height: 1.5;
      font-size: 0.88rem;
    }

    .card-graphic {
      position: relative;
      display: grid;
      place-items: center;
      height: 118px;
      margin-top: 2px;
    }

    .card-icon {
      width: 84px;
      height: 84px;
      display: grid;
      place-items: center;
      border: 1px solid color-mix(in srgb, var(--accent) 70%, transparent);
      border-radius: 24px;
      color: color-mix(in srgb, var(--accent) 80%, white);
      font-size: 2.4rem;
      background: radial-gradient(circle, color-mix(in srgb, var(--accent) 28%, transparent), transparent 68%);
      box-shadow:
        0 0 26px color-mix(in srgb, var(--accent) 25%, transparent),
        inset 0 0 26px color-mix(in srgb, var(--accent) 12%, transparent);
      transform: rotate(45deg);
    }

    .card-icon span { transform: rotate(-45deg); }

    .card-status {
      position: relative;
      z-index: 1;
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-top: 8px;
      color: #a7bed2;
      font-size: 0.78rem;
    }

    .status-dot {
      width: 8px;
      height: 8px;
      display: inline-block;
      margin-right: 7px;
      border-radius: 50%;
      background: var(--accent);
      box-shadow: 0 0 9px var(--accent);
    }

    .nav-button {
      position: absolute;
      top: 52%;
      z-index: 40;
      width: 54px;
      height: 54px;
      display: grid;
      place-items: center;
      border: 1px solid rgba(102, 211, 255, 0.48);
      border-radius: 50%;
      color: white;
      font-size: 1.55rem;
      background: rgba(7, 16, 42, 0.82);
      box-shadow: inset 0 0 18px rgba(52, 216, 255, 0.12), 0 0 22px rgba(52, 216, 255, 0.15);
      transform: translateY(-50%);
      cursor: pointer;
      transition: transform 180ms ease, box-shadow 180ms ease;
    }

    .nav-button:hover {
      transform: translateY(-50%) scale(1.08);
      box-shadow: 0 0 30px rgba(52, 216, 255, 0.35);
    }

    .nav-button.prev { left: 18px; }
    .nav-button.next { right: 18px; }

    .ring-indicator {
      position: absolute;
      left: 50%;
      bottom: 28px;
      z-index: 40;
      transform: translateX(-50%);
      display: flex;
      gap: 9px;
      padding: 9px 16px;
      border-radius: 999px;
      background: rgba(6, 13, 34, 0.72);
      border: 1px solid rgba(95, 210, 255, 0.2);
    }

    .ring-indicator button {
      width: 10px;
      height: 10px;
      padding: 0;
      border-radius: 50%;
      border: 1px solid rgba(255, 255, 255, 0.35);
      background: transparent;
      cursor: pointer;
      transition: background 200ms ease, box-shadow 200ms ease;
    }

    .ring-indicator button.pub { border-color: rgba(52, 216, 255, 0.6); }
    .ring-indicator button.priv { border-color: rgba(255, 151, 70, 0.7); }
    .ring-indicator button.on.pub { background: var(--cyan); box-shadow: 0 0 10px var(--cyan); }
    .ring-indicator button.on.priv { background: var(--amber); box-shadow: 0 0 10px var(--amber); }

    /* welcome + GDPR panels sit below the hero so the tilted card orbit has the full stage */
    .info-row {
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 16px;
      align-items: stretch;
      margin-top: 16px;
    }

    .welcome, .privacy { padding: 20px 26px; border-radius: 22px; }

    .welcome { display: grid; grid-template-columns: 1.2fr auto; gap: 18px; align-items: center; }

    .welcome h3, .privacy h3 {
      margin: 0 0 8px;
      font-size: 1.02rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .welcome p, .privacy p { margin: 0; color: #b5c6d6; line-height: 1.6; font-size: 0.9rem; }

    .welcome p + p { margin-top: 10px; }

    .feature-row { display: flex; flex-wrap: wrap; gap: 18px; }

    .feature {
      display: grid;
      justify-items: center;
      gap: 7px;
      color: #cce5f6;
      font-size: 0.72rem;
      text-align: center;
      max-width: 96px;
    }

    .feature i {
      width: 42px;
      height: 42px;
      display: grid;
      place-items: center;
      border: 1px solid rgba(52, 216, 255, 0.34);
      border-radius: 50%;
      font-style: normal;
      font-size: 1.05rem;
      background: rgba(52, 216, 255, 0.08);
    }

    .feature:nth-child(2) i { border-color: rgba(56, 245, 170, 0.4); background: rgba(56, 245, 170, 0.08); }
    .feature:nth-child(3) i { border-color: rgba(255, 193, 77, 0.4); background: rgba(255, 193, 77, 0.08); }
    .feature:nth-child(4) i { border-color: rgba(176, 68, 255, 0.4); background: rgba(176, 68, 255, 0.08); }
    .feature:nth-child(5) i { border-color: rgba(255, 79, 175, 0.4); background: rgba(255, 79, 175, 0.08); }
    .feature:nth-child(6) i { border-color: rgba(77, 124, 255, 0.4); background: rgba(77, 124, 255, 0.08); }

    .privacy { width: 320px; display: flex; gap: 16px; align-items: center; }

    .privacy .gdpr-badge {
      flex: none;
      width: 62px;
      height: 62px;
      display: grid;
      place-items: center;
      border-radius: 50%;
      font-size: 1.5rem;
      border: 1px solid rgba(56, 245, 170, 0.45);
      background: radial-gradient(circle, rgba(56, 245, 170, 0.16), transparent 70%);
      box-shadow: 0 0 22px rgba(56, 245, 170, 0.18);
    }

    .privacy h3 { color: #a9f5d3; }

    /* ---------- Get in Touch drawer ---------- */

    .contact-tab {
      position: fixed;
      right: 0;
      top: 50%;
      z-index: 60;
      transform: translateY(-50%);
      writing-mode: vertical-rl;
      padding: 20px 12px;
      border-radius: 14px 0 0 14px;
      border: 1px solid rgba(255, 79, 175, 0.5);
      border-right: none;
      color: #ffc7e4;
      letter-spacing: 0.24em;
      text-transform: uppercase;
      font-size: 0.72rem;
      background: rgba(38, 8, 28, 0.82);
      box-shadow: 0 0 26px rgba(255, 79, 175, 0.22);
      cursor: pointer;
      backdrop-filter: blur(12px);
      transition: box-shadow 200ms ease, padding 200ms ease;
    }

    .contact-tab:hover { box-shadow: 0 0 40px rgba(255, 79, 175, 0.4); padding-right: 16px; }

    .contact-drawer {
      position: fixed;
      right: 0;
      top: 0;
      bottom: 0;
      z-index: 70;
      width: min(400px, 92vw);
      padding: 26px 26px 30px;
      overflow-y: auto;
      border-left: 1px solid rgba(255, 79, 175, 0.4);
      background: linear-gradient(200deg, rgba(58, 12, 44, 0.55), rgba(5, 8, 24, 0.94));
      backdrop-filter: blur(22px);
      -webkit-backdrop-filter: blur(22px);
      box-shadow: -30px 0 80px rgba(0, 0, 0, 0.55);
      transform: translateX(105%);
      transition: transform 420ms cubic-bezier(0.2, 0.75, 0.15, 1);
    }

    .contact-drawer.open { transform: translateX(0); }

    .contact-drawer h3 {
      margin: 6px 0 4px;
      font-size: 1.15rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: #ffd4ea;
    }

    .contact-drawer .sub { margin: 0 0 18px; color: #c39db4; font-size: 0.84rem; line-height: 1.5; }

    .drawer-close {
      position: absolute;
      top: 14px;
      right: 14px;
      width: 38px;
      height: 38px;
      border-radius: 50%;
      border: 1px solid rgba(255, 79, 175, 0.4);
      background: rgba(38, 8, 28, 0.6);
      color: #ffc7e4;
      font-size: 1.1rem;
      cursor: pointer;
    }

    .contact-drawer label {
      display: block;
      margin: 14px 0 6px;
      font-size: 0.72rem;
      letter-spacing: 0.16em;
      text-transform: uppercase;
      color: #d9a8c5;
    }

    .contact-drawer input,
    .contact-drawer select,
    .contact-drawer textarea {
      width: 100%;
      padding: 11px 13px;
      color: var(--text);
      font: inherit;
      font-size: 0.9rem;
      border-radius: 12px;
      border: 1px solid rgba(255, 79, 175, 0.28);
      background: rgba(10, 8, 25, 0.72);
      outline: none;
      transition: border-color 160ms ease, box-shadow 160ms ease;
    }

    .contact-drawer input:focus,
    .contact-drawer select:focus,
    .contact-drawer textarea:focus {
      border-color: rgba(255, 79, 175, 0.7);
      box-shadow: 0 0 18px rgba(255, 79, 175, 0.18);
    }

    .contact-drawer textarea { min-height: 96px; resize: vertical; }

    .consent-row {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      margin-top: 16px;
      color: #c3a8b8;
      font-size: 0.78rem;
      line-height: 1.5;
    }

    .consent-row input { width: auto; margin-top: 2px; }

    .send-button {
      width: 100%;
      margin-top: 18px;
      padding: 14px;
      border-radius: 14px;
      border: 1px solid rgba(255, 79, 175, 0.55);
      color: white;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      font-size: 0.82rem;
      background: linear-gradient(135deg, rgba(255, 79, 175, 0.35), rgba(176, 68, 255, 0.3));
      box-shadow: 0 0 24px rgba(255, 79, 175, 0.2);
      cursor: pointer;
    }

    .drawer-note {
      margin-top: 14px;
      padding: 12px 14px;
      border-radius: 12px;
      border: 1px dashed rgba(255, 193, 77, 0.4);
      color: #e8caa1;
      font-size: 0.76rem;
      line-height: 1.5;
      background: rgba(60, 40, 10, 0.25);
    }

    /* ---------- holding-page modal ---------- */

    .modal-backdrop {
      position: fixed;
      inset: 0;
      z-index: 90;
      display: grid;
      place-items: center;
      padding: 20px;
      background: rgba(2, 4, 13, 0.72);
      backdrop-filter: blur(6px);
      opacity: 0;
      pointer-events: none;
      transition: opacity 260ms ease;
    }

    .modal-backdrop.open { opacity: 1; pointer-events: auto; }

    .modal {
      width: min(560px, 100%);
      padding: 30px 32px;
      border-radius: 26px;
      border: 1px solid rgba(255, 151, 70, 0.5);
      background: linear-gradient(170deg, rgba(64, 34, 10, 0.4), rgba(5, 9, 26, 0.95));
      box-shadow: 0 0 60px rgba(255, 151, 70, 0.15), 0 30px 80px rgba(0, 0, 0, 0.5);
      backdrop-filter: blur(20px);
      transform: translateY(14px) scale(0.97);
      transition: transform 300ms cubic-bezier(0.2, 0.75, 0.15, 1);
    }

    .modal-backdrop.open .modal { transform: none; }

    .modal .state-chip {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      padding: 5px 13px;
      border-radius: 999px;
      font-size: 0.68rem;
      letter-spacing: 0.2em;
      text-transform: uppercase;
      color: #ffd8ae;
      border: 1px solid rgba(255, 151, 70, 0.5);
      background: rgba(255, 151, 70, 0.1);
    }

    .modal h3 {
      margin: 14px 0 10px;
      font-size: 1.35rem;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: #ffe3c4;
    }

    .modal p { margin: 0 0 12px; color: #cbb7a3; line-height: 1.65; font-size: 0.92rem; }

    .modal .future-list {
      margin: 14px 0 18px;
      padding: 0;
      list-style: none;
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 7px 18px;
      color: #b6c6d8;
      font-size: 0.82rem;
    }

    .modal .future-list li::before { content: "◇ "; color: var(--amber); }

    .modal-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; }

    .modal-actions .primary {
      padding: 12px 22px;
      border-radius: 999px;
      border: 1px solid rgba(255, 79, 175, 0.55);
      color: white;
      background: linear-gradient(135deg, rgba(255, 79, 175, 0.3), rgba(176, 68, 255, 0.25));
      cursor: pointer;
    }

    .modal-actions .ghost {
      padding: 12px 22px;
      border-radius: 999px;
      border: 1px solid rgba(113, 206, 255, 0.35);
      color: var(--text);
      background: transparent;
      cursor: pointer;
    }

    /* ---------- policy reader modal (footer Policies links) ---------- */

    .policy-modal {
      position: relative;
      width: min(680px, 100%);
      max-height: min(78vh, 720px);
      display: flex;
      flex-direction: column;
      border-color: rgba(113, 206, 255, 0.4);
      background: linear-gradient(170deg, rgba(10, 34, 64, 0.45), rgba(5, 9, 26, 0.96));
      box-shadow: 0 0 60px rgba(113, 206, 255, 0.12), 0 30px 80px rgba(0, 0, 0, 0.5);
    }

    .policy-modal .state-chip {
      align-self: flex-start;
      color: #bfe4ff;
      border-color: rgba(113, 206, 255, 0.45);
      background: rgba(113, 206, 255, 0.08);
    }

    .policy-close {
      position: absolute;
      top: 14px;
      right: 16px;
      width: 34px;
      height: 34px;
      border-radius: 50%;
      border: 1px solid rgba(113, 206, 255, 0.35);
      color: var(--text);
      background: rgba(5, 9, 26, 0.6);
      cursor: pointer;
      font-size: 0.9rem;
      line-height: 1;
    }

    .policy-close:hover { border-color: rgba(113, 206, 255, 0.7); }

    .policy-body {
      overflow-y: auto;
      margin-top: 12px;
      padding-right: 10px;
    }

    .policy-body h3 {
      margin: 6px 0 10px;
      font-size: 1.3rem;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: #d9ecff;
    }

    .policy-body h4 {
      margin: 16px 0 8px;
      font-size: 0.95rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: #9fd6ff;
    }

    .policy-body p {
      margin: 0 0 12px;
      color: #b6c6d8;
      line-height: 1.7;
      font-size: 0.92rem;
    }

    .policy-body blockquote {
      margin: 0 0 14px;
      padding: 10px 16px;
      border-left: 3px solid rgba(255, 193, 77, 0.7);
      border-radius: 0 12px 12px 0;
      background: rgba(255, 193, 77, 0.08);
      color: #ffd8ae;
      font-size: 0.85rem;
      line-height: 1.6;
    }

    .policy-body hr {
      border: none;
      border-top: 1px solid rgba(113, 206, 255, 0.2);
      margin: 14px 0;
    }

    .policy-body a { color: #71ceff; }

    /* ---------- public apps preview strip ---------- */

    .apps-section { margin-top: 16px; padding: 30px; border-radius: 28px; }

    .section-head {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 10px;
      margin-bottom: 20px;
    }

    .section-head h2 {
      margin: 0;
      font-size: 1.25rem;
      font-weight: 500;
      letter-spacing: 0.1em;
      text-transform: uppercase;
    }

    .section-head span { color: var(--muted); font-size: 0.8rem; }

    .app-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
      gap: 16px;
    }

    .app-card {
      --accent: var(--cyan);
      position: relative;
      padding: 18px;
      border-radius: 20px;
      border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
      background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 8%, transparent), rgba(4, 11, 31, 0.7));
      transition: transform 180ms ease, box-shadow 180ms ease;
    }

    .app-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 12px 34px rgba(0, 0, 0, 0.4), 0 0 26px color-mix(in srgb, var(--accent) 20%, transparent);
    }

    .app-thumb {
      height: 96px;
      display: grid;
      place-items: center;
      margin-bottom: 14px;
      border-radius: 14px;
      font-size: 2.2rem;
      color: color-mix(in srgb, var(--accent) 80%, white);
      border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
      background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--accent) 22%, transparent), transparent 75%);
    }

    .app-card h3 { margin: 0 0 6px; font-size: 1rem; letter-spacing: 0.04em; }
    .app-card p { margin: 0 0 12px; color: #a9bccd; font-size: 0.8rem; line-height: 1.5; min-height: 48px; }

    .app-meta {
      display: flex;
      justify-content: space-between;
      align-items: center;
      font-size: 0.72rem;
      color: #8fa5ba;
    }

    .app-chip {
      padding: 3px 10px;
      border-radius: 999px;
      letter-spacing: 0.14em;
      text-transform: uppercase;
      font-size: 0.62rem;
      border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent);
      color: color-mix(in srgb, var(--accent) 80%, white);
      background: color-mix(in srgb, var(--accent) 12%, transparent);
    }

    .app-launch {
      margin-top: 12px;
      width: 100%;
      padding: 10px;
      border-radius: 12px;
      border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent);
      color: color-mix(in srgb, var(--accent) 85%, white);
      background: color-mix(in srgb, var(--accent) 10%, transparent);
      letter-spacing: 0.1em;
      text-transform: uppercase;
      font-size: 0.72rem;
      cursor: pointer;
    }

    .app-launch[disabled] { opacity: 0.45; cursor: not-allowed; }

    /* ---------- footer ---------- */

    footer { margin-top: 16px; padding: 28px; border-radius: 28px; }

    .footer-grid {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr 1.2fr 1.4fr;
      gap: 24px;
    }

    footer h4 {
      margin: 0 0 12px;
      color: #bbaaff;
      font-size: 0.82rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    footer ul { list-style: none; margin: 0; padding: 0; }

    footer li, footer p, footer address {
      margin: 7px 0;
      color: #93a9bd;
      font-size: 0.82rem;
      line-height: 1.5;
      font-style: normal;
    }

    footer a:hover { color: var(--cyan); }

    .mission {
      padding: 16px 18px;
      border-radius: 16px;
      border: 1px solid rgba(176, 68, 255, 0.3);
      background: rgba(30, 12, 55, 0.25);
    }

    .mission p { color: #b9a8d6; font-size: 0.82rem; line-height: 1.6; }
    .mission .sig { text-align: right; color: #d0bfee; letter-spacing: 0.14em; font-size: 0.74rem; }

    .copyright {
      margin-top: 24px;
      padding-top: 18px;
      border-top: 1px solid rgba(107, 177, 225, 0.14);
      text-align: center;
      color: #687f96;
      font-size: 0.78rem;
    }

    @keyframes globeFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
    @keyframes globePulse { 0%, 100% { filter: brightness(0.9); } 50% { filter: brightness(1.18); } }
    @keyframes starDrift { from { transform: rotate(0deg) scale(1.05); } to { transform: rotate(360deg) scale(1.05); } }
    @keyframes orbPulse {
      0%, 100% { transform: scale(0.92); filter: brightness(0.9); }
      50% { transform: scale(1.08); filter: brightness(1.25); }
    }

    @media (max-width: 1080px) {
      .topbar { grid-template-columns: 1fr; }
      .top-actions, .top-actions:last-child { justify-content: center; }
      .brand { grid-row: 1; }
      .hero { min-height: 900px; }
      .globe-wrap { top: 32%; transform: translate(-50%, -50%) scale(0.8); }
      .carousel { top: 32%; }
      .nav-button { top: 46%; }
      .ring-indicator { bottom: 20px; }
      .info-row { grid-template-columns: 1fr; }
      .welcome { grid-template-columns: 1fr; }
      .privacy { width: auto; }
      .footer-grid { grid-template-columns: repeat(2, 1fr); }
    }

    @media (max-width: 700px) {
      .shell { width: min(100% - 16px, 1600px); }
      .top-actions { flex-wrap: wrap; }
      .hero { min-height: 860px; }
      .globe-wrap { top: 27%; transform: translate(-50%, -50%) scale(0.6); }
      .carousel { top: 28%; }
      .nav-button { top: 44%; width: 46px; height: 46px; }
      .nav-button.prev { left: 5px; }
      .nav-button.next { right: 5px; }
      .portal-card { width: 210px; min-height: 310px; }
      .footer-grid { grid-template-columns: 1fr; }
      .modal .future-list { grid-template-columns: 1fr; }
    }

    @media (prefers-reduced-motion: reduce) {
      *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
      }
      .portal-card { transition-duration: 0.01ms !important; }
    }
  