/* Industry — design-system tokens and component classes. This file is the source of truth for the system's look; retune it here and see readme.md. */

:root {
  --color-bg: #f2f2f3;
  --color-surface: #e9e9ea;
  --color-text: #1d1f20;
  --color-accent: #5980a6;
  --color-accent-2: #728fab;
  --color-divider: color-mix(in srgb, #1d1f20 16%, transparent);

  /* Tonal ramps — generated in OKLCH on one shared lightness scale, so the
     same step of any role matches the others in visual value. */
  --color-neutral-100: #f5f5f8;
  --color-neutral-200: #e7e7ea;
  --color-neutral-300: #d4d4d7;
  --color-neutral-400: #b7b7ba;
  --color-neutral-500: #98989b;
  --color-neutral-600: #7a7a7d;
  --color-neutral-700: #5d5d60;
  --color-neutral-800: #424244;
  --color-neutral-900: #2b2b2d;

  --color-accent-100: #eef6ff;
  --color-accent-200: #d6ebff;
  --color-accent-300: #b5d9fd;
  --color-accent-400: #94bce3;
  --color-accent-500: #749dc4;
  --color-accent-600: #597ea3;
  --color-accent-700: #416180;
  --color-accent-800: #2c455d;
  --color-accent-900: #1d2d3d;

  --color-accent-2-100: #eef6ff;
  --color-accent-2-200: #d6ebff;
  --color-accent-2-300: #bdd8f2;
  --color-accent-2-400: #9ebbd8;
  --color-accent-2-500: #7e9cb8;
  --color-accent-2-600: #627d98;
  --color-accent-2-700: #486077;
  --color-accent-2-800: #314457;
  --color-accent-2-900: #1f2d3a;

  --font-heading: "Barlow Condensed", system-ui, sans-serif;
  --font-heading-weight: 600;
  --font-body: "Barlow", system-ui, sans-serif;

  --space-1: 3.4px;
  --space-2: 6.8px;
  --space-3: 10.2px;
  --space-4: 13.6px;
  --space-6: 20.4px;
  --space-8: 27.2px;

  --radius-sm: 2px;
  --radius-md: 4px;
  --radius-lg: 7px;

  /* Elevation — derived from the ground: soft ink-tinted shadows on a
     light theme, a hairline edge + ambient darkness on a dark one. */
  --shadow-sm: 0 1px 2px color-mix(in srgb, #2b2b2d 14%, transparent);
  --shadow-md: 0 3px 10px color-mix(in srgb, #2b2b2d 16%, transparent);
  --shadow-lg: 0 12px 32px color-mix(in srgb, #2b2b2d 22%, transparent);
}

html {
  min-height: 100%;
  background-color: #e4e8ec;
}

body {
  min-height: 100vh;
  background-color: #e4e8ec;
  background-image:
    radial-gradient(
      ellipse 110% 80% at 50% -10%,
      #b5d0e8 0%,
      #c8dceb 35%,
      #e0e6ec 65%,
      #e4e8ec 100%
    ),
    linear-gradient(
      180deg,
      #b8d0e6 0%,
      #e4e8ec 50%,
      #eef0f2 100%
    );
  background-attachment: fixed;
  color: var(--color-text);
  font-family: var(--font-body);
}
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: var(--font-heading-weight); }

.blueprint {
  position: relative;
  border: 1px solid var(--color-divider);
  border-radius: 0;
}
/* The overlay image treatments (halftone, duotone) clip their overlay
   (overflow:hidden); a blueprint wrapper draws its registration marks
   outside the box, so when both classes share a wrapper the frame must
   win. */
.blueprint.halftone, .blueprint.plate, .blueprint.duotone { overflow: visible; }
.blueprint > .corner {
  position: absolute; width: 11px; height: 11px;
  color: color-mix(in srgb, var(--color-text) 55%, transparent);
}
.blueprint > .corner::before, .blueprint > .corner::after {
  content: ""; position: absolute; background: currentColor;
}
.blueprint > .corner::before { left: 5px; top: 0; width: 1px; height: 100%; }
.blueprint > .corner::after  { top: 5px; left: 0; width: 100%; height: 1px; }
.blueprint > .corner.tl { top: -6px; left: -6px; }
.blueprint > .corner.tr { top: -6px; right: -6px; }
.blueprint > .corner.bl { bottom: -6px; left: -6px; }
.blueprint > .corner.br { bottom: -6px; right: -6px; }

.duotone{position:relative;overflow:hidden}
.duotone::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:var(--color-accent);mix-blend-mode:color;opacity:.28}

/* ══════════════════════════════════════════════════════════════════════════
   Components — built with the tokens above. Plain CSS
   on plain HTML: no JavaScript, no build step. Each class is documented in
   readme.md and demonstrated in foundations/ and components/.
   ══════════════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; font-size: 15px; line-height: 1.55; font-weight: 400; }
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  line-height: 1.12; letter-spacing: -0.015em; margin: 0 0 var(--space-2);
}
h1 { font-size: 42px; }
h2 { font-size: 32px; }
h3 { font-size: 25px; }
h4 { font-size: 20px; }
h5 { font-size: 16px; }
h6 { font-size: 13px; }
h6 { letter-spacing: 0.08em; text-transform: uppercase; }
p { margin: 0 0 var(--space-3); }
a { color: var(--color-accent); text-underline-offset: 3px; }
img { display: block; max-width: 100%; }
figure { margin: 0; }
figcaption {
  font-size: 11px; margin-top: var(--space-1);
  color: color-mix(in srgb, var(--color-text) 55%, transparent);
}
.text-muted { color: color-mix(in srgb, var(--color-text) 55%, transparent); }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; }
::selection { background: color-mix(in srgb, var(--color-accent) 30%, transparent); }

/* — rules — */
.hr {
  height: 1px; border: 0; margin: var(--space-4) 0;
  background: var(--color-divider);
}

/* — buttons — */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  cursor: pointer; text-decoration: none;
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 14px; line-height: 1.2; color: var(--color-text); /* matches the .input's 14px —
     the pair sits side by side in sign-up rows */
  background: transparent; border: 1px solid transparent;
  padding: var(--space-2) calc(var(--space-3) * 1.2);
  border-radius: var(--radius-md);
}
.btn svg { display: block; }
.btn:disabled { opacity: 0.45; cursor: not-allowed; }
.btn-primary { background: var(--color-accent); color: var(--color-bg); }
.btn-primary:hover { background: var(--color-accent-600); }
.btn-primary:active { background: var(--color-accent-700); }
.btn-secondary { border-color: var(--color-divider); }
.btn-secondary:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.btn-secondary:active { background: color-mix(in srgb, var(--color-text) 14%, transparent); }
.btn-ghost { color: var(--color-accent); padding-inline: var(--space-1); }
.btn-ghost:hover { background: color-mix(in srgb, var(--color-accent) 10%, transparent); }
.btn-ghost:active { background: color-mix(in srgb, var(--color-accent) 18%, transparent); }
.btn-icon { width: 36px; height: 36px; padding: 0; }
.btn-block { width: 100%; margin-top: var(--space-2); }

/* — forms — */
.field > label {
  display: block; font-size: 12px; margin-bottom: 5px;
  color: color-mix(in srgb, var(--color-text) 70%, transparent);
}
.input {
  width: 100%; min-height: 36px; padding: 6px 10px; font: inherit;
  font-size: 14px; color: var(--color-text); caret-color: var(--color-accent);
  background: var(--color-surface);
  border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.input:hover { border-color: color-mix(in srgb, var(--color-text) 45%, transparent); }
.input:focus-visible { border-color: var(--color-accent); outline-offset: 0; }
textarea.input { min-height: 90px; resize: vertical; }
.radio { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-size: 14px; }
.radio input, .seg-opt input {
  position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none;
}
.radio .dot {
  width: 16px; height: 16px; flex: none; border-radius: 50%;
  border: 1.5px solid var(--color-divider);
}
.radio:hover .dot { border-color: var(--color-accent); }
.radio input:checked + .dot {
  border-color: var(--color-accent); background: var(--color-accent);
  box-shadow: inset 0 0 0 4px var(--color-bg);
}
.radio input:focus-visible + .dot { outline: 2px solid var(--color-accent); outline-offset: 2px; }
.seg {
  display: inline-flex; overflow: hidden;
  border: 1px solid var(--color-divider); border-radius: var(--radius-md);
}
.seg-opt {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; font-size: 13px; cursor: pointer;
}
.seg-opt + .seg-opt { border-left: 1px solid var(--color-divider); }
.seg-opt:has(input:checked) { background: var(--color-accent); color: var(--color-bg); }
.seg-opt:not(:has(input:checked)):hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }
.seg-opt:has(input:focus-visible) { outline: 2px solid var(--color-accent); outline-offset: -2px; }

/* — cards — */
.card {
  display: flex; flex-direction: column; gap: var(--space-2);
  padding: var(--space-3); border-radius: var(--radius-md); background: var(--color-surface);
}
.card-kicker { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-accent); }
.card-title {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 17px; line-height: 1.2;
}
.card-body { margin: 0; font-size: 13px; opacity: 0.8; flex: 1; }
.card-meta {
  display: flex; align-items: center; gap: 6px; font-size: 11px;
  color: color-mix(in srgb, var(--color-text) 50%, transparent);
}
.elev-sm { box-shadow: var(--shadow-sm); }
.elev-md { box-shadow: var(--shadow-md); }
.elev-lg { box-shadow: var(--shadow-lg); }

/* — tags — */
.tag {
  display: inline-flex; align-items: center; font-size: 11px;
  letter-spacing: 0.02em; padding: 3px 10px;
  border-radius: calc(var(--radius-md) * 0.75);
}
.tag-accent { background: var(--color-accent-100); color: var(--color-accent-800); }
.tag-accent-2 { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
.tag-neutral { background: var(--color-neutral-100); color: var(--color-neutral-800); }
.tag-outline { border: 1px solid var(--color-accent); color: var(--color-accent); }

/* — navigation — */
.nav {
  display: flex; align-items: center; gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-bottom: none;
}
.nav-brand {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 18px; margin-right: auto;
}
.nav a { color: inherit; text-decoration: none; font-size: 14px; }
.nav a:hover, .nav a[aria-current='page'] { color: var(--color-accent); }

/* — tables — */
.table { width: 100%; border-collapse: collapse; font-size: 14px; }
.table th {
  text-align: left; font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: color-mix(in srgb, var(--color-text) 60%, transparent);
  padding: var(--space-2); border-bottom: 1px solid var(--color-divider);
}
.table td {
  padding: var(--space-2);
  border-bottom: 1px solid color-mix(in srgb, var(--color-text) 8%, transparent);
}
.table tbody tr:hover { background: color-mix(in srgb, var(--color-text) 4%, transparent); }

/* — dialog — */
.dialog-backdrop {
  position: fixed; inset: 0; display: grid; place-items: center;
  padding: var(--space-4);
  background: color-mix(in srgb, var(--color-neutral-900) 50%, transparent);
}
.dialog {
  width: min(440px, 100%); display: flex; flex-direction: column; gap: var(--space-3);
  padding: var(--space-4); border-radius: var(--radius-lg);
  background: var(--color-surface); box-shadow: var(--shadow-lg);
}
.dialog-title {
  font-family: var(--font-heading); font-weight: var(--font-heading-weight);
  font-size: 20px;
}
.dialog-body { font-size: 14px; opacity: 0.85; }
.dialog-actions { display: flex; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-2); }

/* — blueprint frame: components are wireframe objects (see .blueprint
     and .corner above) — square, transparent, hairline-bordered — */
.card, .btn, .input, .tag, .seg, .dialog { border-radius: 0; }
.card, .dialog { background: transparent; border: 1px solid var(--color-divider); }
.btn { border: 1px solid var(--color-divider); }
.btn-primary { border-color: var(--color-accent); }
.btn-ghost { border-color: transparent; }

:root{--edge:clamp(20px,5vw,72px);--max:1280px;--u:24px}
html{scroll-behavior:smooth}
body{text-wrap:pretty}
a{color:var(--color-accent-700)}a:hover{color:var(--color-accent-800)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--edge)}
.kicker{display:block;font-size:13px;line-height:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--color-accent-700);margin:0 0 12px}
.rule{height:1px;border:0;margin:0 0 var(--u);background:var(--color-divider)}
.ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}
.corner{pointer-events:none}

/* — header / menu — */
.site-header{position:sticky;top:0;z-index:20;background:#0f1011;border-bottom:1px solid color-mix(in srgb,#fff 12%,transparent)}
.site-header .nav{max-width:var(--max);margin:0 auto;padding:14px var(--edge);gap:28px}
.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none;margin-right:auto;color:#f2f2f3!important;font-family:var(--font-heading);font-weight:600;font-size:24px;letter-spacing:.04em;text-transform:uppercase}
.brand-logo{display:block;height:40px;width:auto}
.brand-name{line-height:1;white-space:nowrap}
.nav-links{display:flex;align-items:center;gap:28px}
.nav-links > a,.menu-trigger{font-family:var(--font-heading);font-weight:600;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:#f2f2f3;text-decoration:none;background:none;border:0;padding:6px 0;cursor:pointer;display:flex;align-items:center;gap:4px;white-space:nowrap}
.nav-links > a:hover,.menu-trigger:hover,.menu-trigger[aria-expanded="true"],.nav-links > a[aria-current="page"]{color:var(--color-accent-400)}
.nav-actions{display:flex;align-items:center;gap:10px}
.nav-actions .btn{white-space:nowrap;font-size:14px;letter-spacing:.06em;text-transform:uppercase;padding:8px 16px}
.site-header .btn-secondary{color:#f2f2f3;border-color:color-mix(in srgb,#fff 22%,transparent)}
.site-header .btn-secondary:hover{background:color-mix(in srgb,#fff 10%,transparent)}
.site-header .btn-primary{color:var(--color-bg)}
.menu{position:relative}
.menu-trigger .ico{width:16px;height:16px;transition:transform .15s}
.menu:not(.menu--account) .menu-trigger[aria-expanded="true"] .ico{transform:rotate(180deg)}
.menu--account .menu-panel{left:auto;right:0;min-width:200px}
.menu-panel button[role="menuitem"]{display:flex;align-items:center;width:100%;padding:9px 20px;border:0;background:none;color:#f2f2f3;text-decoration:none;font-size:14px;font-family:inherit;text-align:left;cursor:pointer}
.menu-panel button[role="menuitem"]:hover{background:color-mix(in srgb,#fff 8%,transparent);color:#fff}
.menu-panel{position:absolute;top:calc(100% + 14px);left:-20px;min-width:280px;background:#161718;border:1px solid color-mix(in srgb,#fff 14%,transparent);box-shadow:var(--shadow-md);padding:8px 0;display:none}
.menu-panel.open{display:block}
.menu-panel .kicker{padding:10px 20px 0;margin-bottom:8px;color:var(--color-accent-400)}
.menu-panel a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 20px;color:#f2f2f3;text-decoration:none;font-size:14px}
.menu-panel a:hover{background:color-mix(in srgb,#fff 8%,transparent);color:#fff}
.menu-panel a .ico{width:14px;height:14px;opacity:.6}
.menu-panel a[aria-current="page"]{color:var(--color-accent-400)}
.menu-panel .menu-buy{color:var(--color-accent-400);font-weight:600}
.menu-panel hr{border:0;height:1px;background:color-mix(in srgb,#fff 14%,transparent);margin:8px 0}
.nav-toggle{display:none}
@media (max-width:980px){
.nav-toggle{display:inline-flex}
.nav-links{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;background:#0f1011;border-bottom:1px solid color-mix(in srgb,#fff 12%,transparent);padding:8px var(--edge) 16px}
.nav-links.open{display:flex}
.nav-links > a,.menu-trigger{padding:12px 0;width:100%;justify-content:space-between;border-bottom:1px solid color-mix(in srgb,#fff 12%,transparent)}
.menu-panel{position:static;box-shadow:none;border:0;min-width:0;padding:0 0 8px;background:transparent}
.menu-panel a{padding-inline:0}.menu-panel .kicker{padding-inline:0}
.nav-actions .nav-buy{display:none}
}

/* — login dialog — */
.dialog-backdrop{z-index:50;display:none}
.dialog-backdrop.open{display:grid}
.dialog{background:var(--color-bg);gap:16px;padding:28px}
.dialog .field{display:grid}
.dialog-head{display:flex;justify-content:space-between;align-items:flex-start}
.dialog-title{text-transform:uppercase;letter-spacing:.04em;font-size:24px}
.dialog-foot{font-size:13px;color:var(--color-neutral-700);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* — home — */
.hero{padding:calc(3*var(--u)) 0 calc(2*var(--u))}
.display{font-size:clamp(48px,7.4vw,112px);line-height:.98;letter-spacing:.005em;text-transform:uppercase;margin:0 0 0 -.05em}
.display .line{display:block}
.display .accent{color:var(--color-accent)}
.hero{text-align:center}.hero .display{margin-left:0}.hero .hero-lead{margin:calc(1.5*var(--u)) auto 0}
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--u) clamp(24px,5vw,80px);align-items:end;margin-top:calc(2*var(--u))}
.lead{font-size:clamp(17px,1.4vw,20px);line-height:1.55;margin:0;max-width:56ch}
.hero-meta{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;color:var(--color-neutral-700)}
.hero-meta span{display:flex;align-items:center;gap:8px}
.hero-meta span::before{content:"";width:6px;height:6px;background:var(--color-accent)}
.paths{padding:0 0 calc(4*var(--u))}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,40px)}.paths{margin-inline:calc(-1*clamp(0px,3vw,48px))}
.tile{position:relative;display:flex;flex-direction:column;text-decoration:none;color:var(--color-text);border:1px solid var(--color-divider);border-radius:12px;overflow:hidden;transition:border-color .15s;background:var(--color-bg)}
.tile:hover{border-color:var(--color-accent);color:var(--color-text)}
.tile-body{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:start;gap:12px 24px;padding:clamp(20px,2.5vw,32px);border-bottom:1px solid var(--color-divider)}
.tile-title{font-family:var(--font-heading);font-weight:600;font-size:clamp(36px,4.5vw,64px);line-height:.95;text-transform:uppercase;margin:0;grid-column:1;grid-row:1}
.tile-desc{grid-column:1;grid-row:2;margin:0;font-size:16px;line-height:1.5;color:var(--color-neutral-800);max-width:40ch}
.tile-go{grid-column:2;grid-row:1/3;align-self:center;width:56px;height:56px;display:grid;place-items:center;border:1px solid var(--color-divider);transition:background .15s,color .15s,border-color .15s}
.tile-go .ico{width:24px;height:24px;transition:transform .2s}
.tile:hover .tile-go{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg)}
.tile:hover .tile-go .ico{transform:translateX(3px)}
.tile-media{position:relative;aspect-ratio:16/10;overflow:hidden;min-height:160px}
.tile-media image-slot{position:absolute;inset:0;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.tile:hover .tile-media image-slot{transform:scale(1.03)}
@media (max-width:760px){.tiles{grid-template-columns:1fr}.tiles,.hero{text-align:center}.hero .display{margin-left:0}.hero .hero-lead{margin:calc(1.5*var(--u)) auto 0}
.tile-body{grid-template-columns:1fr;justify-items:center}
.tile-go{grid-column:1;grid-row:3;margin-top:8px}
.tile-desc{max-width:none}
.hero-grid{grid-template-columns:1fr}}

/* — product one-pager — */
.p-hero{padding:calc(3*var(--u)) 0 calc(2*var(--u))}
.crumbs{display:flex;gap:8px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;margin-bottom:calc(2*var(--u))}
.crumbs a{color:var(--color-neutral-700);text-decoration:none}.crumbs a:hover{color:var(--color-accent-700)}
.crumbs span{color:var(--color-neutral-500)}
.p-hero .row{display:flex;gap:12px;flex-wrap:wrap;margin-top:calc(1.5*var(--u))}
.p-hero .btn{font-size:15px;letter-spacing:.06em;text-transform:uppercase;padding:12px 22px}
.p-intro{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--u) clamp(24px,5vw,80px);align-items:end;margin-top:calc(1.5*var(--u))}
.frame{position:relative;border:1px solid var(--color-divider)}
.frame > .corner{position:absolute;width:15px;height:15px;color:color-mix(in srgb,var(--color-text) 55%,transparent);z-index:2}
.frame > .corner::before{content:"";position:absolute;left:7px;top:0;width:1px;height:100%;background:currentColor}
.frame > .corner::after{content:"";position:absolute;top:7px;left:0;width:100%;height:1px;background:currentColor}
.frame > .corner.tl{top:-8px;left:-8px}.frame > .corner.tr{top:-8px;right:-8px}.frame > .corner.bl{bottom:-8px;left:-8px}.frame > .corner.br{bottom:-8px;right:-8px}
.frame image-slot{display:block;width:100%;height:100%}
.p-media{aspect-ratio:16/9;margin:calc(1.5*var(--u)) 0 0}
.sec{padding:calc(3*var(--u)) 0}
.sec-title{font-size:clamp(32px,3.6vw,48px);text-transform:uppercase;letter-spacing:.01em;line-height:1;margin:0 0 var(--u)}
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--u) clamp(24px,5vw,96px);align-items:center}
.split.rev{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.split.rev .split-copy{order:2}
.split-copy p{font-size:16px;line-height:1.6;color:var(--color-neutral-800);max-width:52ch}
.split .frame{aspect-ratio:4/3}
.cells{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,40px)}
.cell{padding:24px;display:flex;flex-direction:column;gap:12px}
.cell-num{font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--color-accent-700)}
.cell h3{font-size:24px;text-transform:uppercase;letter-spacing:.02em;margin:0}
.cell p{margin:0;font-size:15px;color:var(--color-neutral-800)}
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,40px)}
.gallery .frame{aspect-ratio:1}
.gallery .frame.wide{grid-column:span 2;aspect-ratio:auto}
.cta{padding:calc(3*var(--u)) clamp(24px,4vw,56px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--u) 48px;align-items:center;margin:calc(2*var(--u)) 0 calc(4*var(--u))}
.cta h2{font-size:clamp(32px,4vw,56px);text-transform:uppercase;line-height:1;margin:0 0 12px}
.cta p{margin:0;color:var(--color-neutral-800);max-width:52ch}
.cta .row{display:flex;gap:12px;flex-wrap:wrap}
.cta .btn{font-size:15px;letter-spacing:.06em;text-transform:uppercase;padding:12px 22px}
@media (max-width:860px){.p-intro,.split,.split.rev,.cta{grid-template-columns:1fr}.split.rev .split-copy{order:0}.cells{grid-template-columns:1fr}.gallery{grid-template-columns:1fr 1fr}.gallery .frame.wide{grid-column:1/-1;aspect-ratio:16/9}}

.product-page .display{font-size:clamp(48px,7vw,96px);margin-bottom:var(--u)}
.product-page .sec{padding:calc(1.15*var(--u)) 0}
.product-page .p-hero{padding:calc(1.75*var(--u)) 0 var(--u)}
.product-page .p-hero > .lead{margin-bottom:0;max-width:none}
.product-page .p-intro{margin-top:calc(0.75*var(--u));grid-template-columns:minmax(0,1fr)}
.product-page .p-intro .lead{max-width:none}
.product-page .p-media{margin-top:calc(0.85*var(--u))}
.product-page .sec-title{margin-bottom:calc(0.55*var(--u))}
.product-page .frame{border-radius:12px;overflow:hidden}
.product-page .frame > .corner{display:none}
.product-page .frame img,
.product-page .frame .slot-ph{
  display:block;width:100%;height:100%;object-fit:cover;min-height:100%
}
.product-page .p-media{position:relative;overflow:hidden}
.product-page .p-media img,
.product-page .p-media video,
.product-page .p-media .slot-ph{position:absolute;inset:0}
.product-page .p-media video{display:block;width:100%;height:100%;object-fit:cover}
/* Hero video with native controls: avoid absolute positioning so timeline/fullscreen UI lay out correctly */
.product-page .p-media.p-media--video-controls{display:flex;align-items:center;justify-content:center;background:var(--color-bg,#0f1011)}
.product-page .p-media.p-media--video-controls video{
  position:relative;inset:auto;max-width:100%;max-height:100%;width:100%;height:auto;object-fit:contain
}
.product-page .p-media-youtube{position:absolute;inset:0;overflow:hidden}
.product-page .p-media-youtube iframe{
  position:absolute;top:50%;left:50%;width:100%;height:100%;
  border:0;transform:translate(-50%,-50%)
}
.product-page .split .split-figure{margin:0}
.product-page .split .frame{position:relative;min-height:240px}
.product-page .split .frame img,
.product-page .split .frame .slot-ph{position:absolute;inset:0}
.product-page .cell{border-radius:12px;background:color-mix(in srgb,#fff 55%,transparent)}
.product-page .cell-product{
  background:#e8e8ea;
  border-color:color-mix(in srgb,#1d1f20 10%,transparent);
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  column-gap:16px;
  row-gap:6px;
  align-items:start;
}
.product-page .cell-logo{
  display:block;
  width:72px;
  height:72px;
  object-fit:contain;
  margin:0;
  grid-column:1;
  grid-row:1 / 3;
  align-self:center;
}
.product-page .cell-product h3{
  grid-column:2;
  grid-row:1;
  margin:0;
}
.product-page .cell-product p{
  grid-column:2;
  grid-row:2;
}
.product-page .cta{border-radius:12px;background:color-mix(in srgb,#fff 55%,transparent)}
.product-page .cells-products{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:860px){.product-page .cells-products{grid-template-columns:1fr}}

/* VFX customers logo strip (below Capabilities; heading aligns with page, box matches content width) */
.product-page .capabilities-sec .customers-strip-wrap{margin-top:clamp(20px,3vw,40px)}
.product-page .customers-strip-heading{
  margin:0 0 clamp(12px,2vw,18px);
  font-family:var(--font-heading);
  font-weight:600;
  font-size:clamp(28px,3vw,40px);
  letter-spacing:.01em;
  line-height:1;
  text-transform:uppercase;
  color:var(--color-text);
}
.product-page .customers-strip{
  position:relative;
  border-radius:12px;
  overflow:hidden;
  padding:clamp(18px,3vw,28px) 0;
  background:
    linear-gradient(
      135deg,
      color-mix(in srgb, var(--color-accent-700) 12%, var(--color-neutral-200)) 0%,
      color-mix(in srgb, var(--color-neutral-300) 65%, #fff) 50%,
      color-mix(in srgb, var(--color-accent-500) 10%, var(--color-neutral-200)) 100%
    );
  border-color:color-mix(in srgb,var(--color-text) 12%,transparent);
}
.product-page .customers-strip::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:color-mix(in srgb,#fff 35%,transparent);
  mix-blend-mode:overlay;
  opacity:.85;
}
.product-page .customers-marquee{
  position:relative;
  z-index:1;
  overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}
.product-page .customers-marquee-track{
  display:flex;
  flex-direction:row;
  flex-wrap:nowrap;
  align-items:center;
  gap:clamp(32px,5vw,56px);
  width:max-content;
  animation:atoms-customers-marquee 85s linear infinite;
  will-change:transform;
}
.product-page .customers-marquee:hover .customers-marquee-track{animation-play-state:paused}
.product-page .customers-marquee-item{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:52px;
}
.product-page .customers-marquee-link{
  display:flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  opacity:.88;
  transition:opacity .2s ease;
}
.product-page a.customers-marquee-link:hover{opacity:1}
.product-page .customers-marquee-img{
  display:block;
  max-width:min(200px,28vw);
  max-height:48px;
  width:auto;
  height:auto;
  object-fit:contain;
  filter:grayscale(0.15);
}
@keyframes atoms-customers-marquee{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
@media (prefers-reduced-motion:reduce){
  .product-page .customers-marquee-track{animation:none}
}

.product-page .cells-stack{margin-top:clamp(20px,3vw,40px)}
.product-page .stack-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.product-page .stack-list li{font-size:15px;color:var(--color-neutral-800);padding-left:14px;position:relative}
.product-page .stack-list li::before{content:"";position:absolute;left:0;top:0.55em;width:5px;height:5px;border-radius:50%;background:var(--color-accent-700)}

.comparison-details{
  border:1px solid var(--color-divider);
  border-radius:12px;
  background:color-mix(in srgb,#fff 55%,transparent);
  overflow:hidden;
}
.comparison-summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:18px 22px;
  font-family:var(--font-heading);
  font-weight:600;
  font-size:clamp(22px,2.4vw,32px);
  letter-spacing:.01em;
  text-transform:uppercase;
  color:var(--color-text);
}
.comparison-summary::-webkit-details-marker{display:none}
.comparison-chevron{width:22px;height:22px;transition:transform .2s}
.comparison-details[open] .comparison-chevron{transform:rotate(180deg)}
.comparison-panel{border-top:1px solid var(--color-divider);padding:0 0 8px}
.comparison-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.comparison-table{
  width:100%;
  border-collapse:collapse;
  font-size:14px;
  min-width:720px;
}
.comparison-table th,
.comparison-table td{
  padding:12px 14px;
  border-bottom:1px solid color-mix(in srgb,var(--color-text) 10%,transparent);
  text-align:center;
  vertical-align:middle;
}
.comparison-table thead th{
  font-family:var(--font-heading);
  font-weight:600;
  font-size:13px;
  letter-spacing:.06em;
  text-transform:uppercase;
  background:#e8e8ea;
}
.comparison-table tbody th[scope="row"]{
  text-align:left;
  font-weight:500;
  color:var(--color-neutral-800);
  width:34%;
}
.comparison-group th{
  text-align:left;
  background:var(--color-accent);
  color:#fff;
  font-family:var(--font-heading);
  font-weight:600;
  font-size:13px;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:10px 14px;
  border-bottom:0;
}
.comparison-check{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:22px;height:22px;
  border-radius:50%;
  background:var(--color-accent);
  color:#fff;
  font-size:13px;
  line-height:1;
  font-weight:700;
}
.comparison-note{
  display:block;
  margin-top:4px;
  font-size:11px;
  line-height:1.35;
  color:var(--color-neutral-700);
}

.pricing-panel{padding:0 0 16px}
.pricing-intro{
  padding:20px 22px 8px;
  text-align:center;
}
.pricing-intro p{
  margin:0 0 8px;
  font-size:15px;
  line-height:1.45;
  color:var(--color-neutral-700);
}
.pricing-intro p:first-child{
  font-family:var(--font-heading);
  font-weight:600;
  font-size:clamp(18px,2vw,22px);
  color:var(--color-text);
  text-transform:none;
  letter-spacing:.01em;
}
.pricing-table{min-width:960px}
.pricing-table tbody th[scope="row"]{
  width:14%;
  font-family:var(--font-heading);
  font-weight:600;
  font-size:13px;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.pricing-desc{
  text-align:left!important;
  width:32%;
}
.pricing-desc p{margin:0 0 6px;font-size:13px;line-height:1.45}
.pricing-desc-meta,.pricing-desc-hosts{
  font-size:12px!important;
  color:var(--color-neutral-700);
}
.pricing-desc-hosts{padding-top:6px;border-top:1px solid color-mix(in srgb,var(--color-text) 12%,transparent)}
.pricing-price{white-space:nowrap}
.pricing-amount{display:block;font-weight:600;font-size:15px}
.pricing-period{display:block;font-size:11px;color:var(--color-neutral-700);text-transform:lowercase}
.pricing-buy .btn-sm{
  padding:8px 14px;
  font-size:12px;
  white-space:nowrap;
}
.pricing-footnotes{
  padding:12px 22px 4px;
  text-align:center;
}
.pricing-footnotes p{
  margin:0 0 8px;
  font-size:13px;
  line-height:1.45;
  color:var(--color-neutral-700);
}

/* — footer — */
.site-footer{border-top:1px solid var(--color-divider);padding:calc(2*var(--u)) 0;font-size:13px;color:var(--color-neutral-700)}
.site-footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.site-footer nav{display:flex;gap:20px;flex-wrap:wrap}
.site-footer a{color:var(--color-neutral-700);text-decoration:none}.site-footer a:hover{color:var(--color-accent-700)}
/* WP image placeholders for tiles */
.tile-media img,
.tile-media .slot-ph {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.tile:hover .tile-media img,
.tile:hover .tile-media .slot-ph { transform: scale(1.03); }
.slot-ph {
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, var(--color-neutral-300), var(--color-neutral-200));
  color: var(--color-neutral-600);
  font-size: 13px;
  letter-spacing: .08em;
  text-transform: uppercase;
  text-align: center;
  padding: 24px;
}
.screen-reader-text {
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px;
  word-wrap: normal !important;
}

/* Default page content area */
.page-main { padding: calc(3 * var(--u)) 0 calc(4 * var(--u)); }
.page-main .entry-title {
  font-size: clamp(36px, 5vw, 64px);
  text-transform: uppercase;
  letter-spacing: .01em;
  line-height: 1;
  margin: 0 0 var(--u);
}
.page-main .entry-content { max-width: 72ch; font-size: 16px; line-height: 1.65; }
.page-main .entry-content > *:last-child { margin-bottom: 0; }

/* — crowd background particles — */
.crowd-canvas {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: 0;
  pointer-events: none;
}
main,
.site-footer {
  position: relative;
  z-index: 1;
}

/* — account / license pages — */
.account-page {
  max-width: 960px;
}
.account-page .entry-title {
  margin-bottom: calc(1.25 * var(--u));
}
.account-page .lead,
.account-page .account-intro {
  max-width: 64ch;
  margin-bottom: var(--u);
}
.account-page .field {
  display: grid;
  gap: 6px;
  margin-bottom: var(--space-4);
}
.account-page .field > label {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: 14px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--color-neutral-800);
}
.account-page .field-hint {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--color-neutral-700);
  max-width: 48ch;
}
.account-page .field-row {
  display: grid;
  grid-template-columns: minmax(140px, 200px) minmax(0, 1fr);
  gap: 12px 20px;
  align-items: center;
  margin-bottom: var(--space-4);
}
.account-page .field-row > label {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: 14px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--color-neutral-800);
  margin: 0;
}
.account-page .field-actions {
  margin-top: var(--space-4);
}
.account-page .account-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: var(--space-3) 0;
  border-top: 1px solid var(--color-divider);
  border-bottom: 1px solid var(--color-divider);
  margin: var(--space-4) 0;
}
.account-page .account-total strong {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: 28px;
  letter-spacing: .02em;
  text-transform: uppercase;
}
.account-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  gap: calc(1.5 * var(--u)) clamp(24px, 4vw, 48px);
  align-items: start;
}
.account-aside {
  padding: var(--space-6);
  background: color-mix(in srgb, #fff 55%, transparent);
  border: 1px solid var(--color-divider);
}
.account-aside h2,
.account-aside h3,
.account-aside h4 {
  font-size: 18px;
  text-transform: uppercase;
  letter-spacing: .03em;
  margin: 0 0 var(--space-3);
}
.account-aside ul {
  margin: 0 0 var(--space-4);
  padding-left: 1.2em;
}
.account-aside li {
  margin-bottom: 6px;
  color: var(--color-neutral-800);
}
.account-aside .account-aside-note {
  margin: 0;
  font-weight: 600;
  color: var(--color-accent-800);
}
.account-aside + .account-aside-link,
.account-aside-link {
  display: block;
  margin-top: var(--space-4);
  font-weight: 600;
}
.account-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: var(--space-4) 0;
  font-size: 14px;
  line-height: 1.45;
}
.account-check input[type="checkbox"] {
  margin-top: 3px;
  flex: none;
  width: 16px;
  height: 16px;
  accent-color: var(--color-accent);
}
.account-alert {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-divider);
  background: color-mix(in srgb, #fff 55%, transparent);
  margin: 0 0 var(--u);
  font-size: 14px;
  line-height: 1.5;
}
.account-alert-warn {
  border-color: color-mix(in srgb, #b45309 40%, var(--color-divider));
  background: color-mix(in srgb, #b45309 8%, #fff);
  color: #7c2d12;
}
.account-alert-error {
  border-color: color-mix(in srgb, #b91c1c 35%, var(--color-divider));
  background: color-mix(in srgb, #b91c1c 7%, #fff);
  color: #7f1d1d;
}
.account-alert-ok {
  border-color: color-mix(in srgb, #15803d 35%, var(--color-divider));
  background: color-mix(in srgb, #15803d 7%, #fff);
  color: #14532d;
}
.account-page .table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: var(--space-4) 0 var(--u);
  border: 1px solid var(--color-divider);
  background: color-mix(in srgb, #fff 40%, transparent);
}
.account-page .table {
  margin: 0;
}
.account-page .table th,
.account-page .table td {
  white-space: nowrap;
  vertical-align: middle;
}
.account-page .table .btn,
.account-page .table a.btn {
  white-space: nowrap;
}
.account-page .btn.buy:disabled,
.account-page #buy:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  background: var(--color-neutral-300);
  border-color: var(--color-neutral-400);
  color: var(--color-neutral-700);
}
.account-page .btn.buy:disabled:hover,
.account-page #buy:disabled:hover {
  background: var(--color-neutral-300);
  border-color: var(--color-neutral-400);
  color: var(--color-neutral-700);
}
.account-resources {
  margin: 0 0 var(--u);
  padding-left: 1.2em;
}
.account-resources li {
  margin-bottom: 8px;
}
.account-section-title {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: clamp(22px, 2.5vw, 28px);
  text-transform: uppercase;
  letter-spacing: .02em;
  margin: calc(1.25 * var(--u)) 0 var(--space-4);
}
.account-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  border-bottom: 1px solid var(--color-divider);
  margin: var(--u) 0 0;
}
.account-tabs button,
.account-tabs .tablinks {
  appearance: none;
  background: transparent;
  border: 1px solid transparent;
  border-bottom: 0;
  margin: 0 0 -1px;
  padding: 12px 18px;
  cursor: pointer;
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: 15px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--color-neutral-700);
}
.account-tabs button:hover,
.account-tabs .tablinks:hover {
  color: var(--color-accent-800);
  background: color-mix(in srgb, var(--color-text) 4%, transparent);
}
.account-tabs button.active,
.account-tabs .tablinks.active {
  color: var(--color-text);
  background: color-mix(in srgb, #fff 55%, transparent);
  border-color: var(--color-divider);
  border-bottom-color: transparent;
}
.account-page .tabContent {
  display: none;
  padding: var(--u) 0 0;
  border: 0;
}
.account-page .account-form-panel {
  max-width: 560px;
}
.account-page .account-login-gate {
  margin: 0;
  font-size: 16px;
}
@media (max-width: 860px) {
  .account-grid {
    grid-template-columns: 1fr;
  }
  .account-page .field-row {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .account-tabs button,
  .account-tabs .tablinks {
    flex: 1 1 auto;
    text-align: center;
  }
}

/* Terms of agreement */
.terms-page .terms-content {
  max-width: 72ch;
  font-size: 16px;
  line-height: 1.65;
}
.terms-page .terms-content h2 {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: clamp(20px, 2.2vw, 26px);
  text-transform: uppercase;
  letter-spacing: .02em;
  margin: calc(1.5 * var(--u)) 0 var(--space-4);
}
.terms-page .terms-content h2:first-child {
  margin-top: 0;
}
.terms-page .terms-content h3 {
  font-family: var(--font-heading);
  font-weight: var(--font-heading-weight);
  font-size: clamp(17px, 1.8vw, 20px);
  margin: calc(1.25 * var(--u)) 0 var(--space-3);
}
.terms-page .terms-content h4 {
  font-size: 16px;
  font-weight: 700;
  margin: var(--u) 0 var(--space-3);
}
.terms-page .terms-content ol,
.terms-page .terms-content ul {
  margin: 0 0 var(--space-4);
  padding-left: 1.4em;
}
.terms-page .terms-content li {
  margin-bottom: var(--space-2);
}
.terms-page .terms-definitions {
  margin: 0 0 var(--space-4);
}
.terms-page .terms-definitions dt {
  font-weight: 700;
  margin-top: var(--space-4);
}
.terms-page .terms-definitions dd {
  margin: var(--space-1) 0 0;
}
.terms-page .terms-table {
  width: 100%;
  max-width: 100%;
  border-collapse: collapse;
  margin: 0 0 var(--u);
  font-size: 14px;
  line-height: 1.5;
}
.terms-page .terms-table th,
.terms-page .terms-table td {
  border: 1px solid var(--color-divider);
  padding: var(--space-3);
  text-align: left;
  vertical-align: top;
}
.terms-page .terms-table th {
  background: color-mix(in srgb, var(--color-text) 4%, transparent);
  font-weight: 700;
}
.terms-page .terms-table ol {
  margin: var(--space-2) 0 0;
}
