/* Self-hosted variable fonts (fontsource 5.3.0, SIL Open Font License).
   Declared under the family names the site already uses, so no other CSS changes.
   unicode-range means latin-ext is only fetched when a page actually needs it. */
@font-face {font-family: 'Archivo'; font-style: normal; font-display: swap; font-weight: 100 900; font-stretch: 62% 125%; src: url(fonts/archivo-latin-wdth-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face {font-family: 'Archivo'; font-style: normal; font-display: swap; font-weight: 100 900; font-stretch: 62% 125%; src: url(fonts/archivo-latin-ext-wdth-normal.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face {font-family: 'Instrument Sans'; font-style: normal; font-display: swap; font-weight: 400 700; src: url(fonts/instrument-sans-latin-wght-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face {font-family: 'Instrument Sans'; font-style: normal; font-display: swap; font-weight: 400 700; src: url(fonts/instrument-sans-latin-ext-wght-normal.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face {font-family: 'JetBrains Mono'; font-style: normal; font-display: swap; font-weight: 100 800; src: url(fonts/jetbrains-mono-latin-wght-normal.woff2) format('woff2'); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face {font-family: 'JetBrains Mono'; font-style: normal; font-display: swap; font-weight: 100 800; src: url(fonts/jetbrains-mono-latin-ext-wght-normal.woff2) format('woff2'); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

*,::after,::before{box-sizing:border-box}*{margin:0}canvas,img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}[hidden]{display:none!important}/* v3.12.3 tokens: one short list every rule below draws from.
   Colors are the raw palette; the semantic names further down (--night, --leaf, --ink and so on) point at these. */
:root{
  --c-white:#FFFFFF;
  --c-white-rgb:255 255 255;
  --c-black:#000000;
  --c-black-rgb:0 0 0;
  --c-amber-50:#FFF1D6;
  --c-amber-300:#E2A23C;
  --c-amber-600:#8A5A00;
  --c-blue-350:#5BA8E0;
  --c-blue-350-rgb:91 168 224;
  --c-blue-650:#33507A;
  --c-blue-650-rgb:51 80 122;
  --c-gray-50:#F3F5F8;
  --c-gray-60:#EDF0F5;
  --c-green-50:#EAF3DD;
  --c-green-210:#A3D858;
  --c-green-210-rgb:163 216 88;
  --c-green-250:#95CC4D;
  --c-green-300:#86C042;
  --c-green-350:#7AB332;
  --c-green-350-rgb:122 179 50;
  --c-green-360:#74B232;
  --c-green-370:#6AA92F;
  --c-green-400:#5E9E2C;
  --c-green-500:#438009;
  --c-green-500-rgb:67 128 9;
  --c-green-510:#5A8A26;
  --c-green-550:#3F750A;
  --c-green-560:#447C2E;
  --c-green-570:#4D7B00;
  --c-green-600:#3A7009;
  --c-green-610:#356608;
  --c-green-650:#2F5F0A;
  --c-navy-750:#2A4166;
  --c-navy-800:#203455;
  --c-navy-800-rgb:32 52 85;
  --c-navy-810:#22364F;
  --c-navy-850:#16263F;
  --c-navy-850-rgb:22 38 63;
  --c-navy-860:#1A2B47;
  --c-navy-860-rgb:26 43 71;
  --c-navy-900:#0F1E33;
  --c-navy-950:#0A1628;
  --c-navy-950-rgb:10 22 40;
  --c-navy-960:#08131F;
  --c-navy-960-rgb:8 19 31;
  --c-red-350:#FF6B5E;
  --c-red-350-rgb:255 107 94;
  --c-red-400:#FF5A4E;
  --c-red-400-rgb:255 90 78;
  --c-slate-50:#E8EEF6;
  --c-slate-50-rgb:232 238 246;
  --c-slate-100:#DDE2E9;
  --c-slate-150:#C9D0DA;
  --c-slate-250:#A9B6C8;
  --c-slate-300:#94AAC8;
  --c-slate-300-rgb:148 170 200;
  --c-slate-310:#9FB0C6;
  --c-slate-360:#8E9CB2;  /* rc1.1: dark-zone --ink-3, lifted from slate-400 to pass 4.5:1 on panels */
  --c-slate-400:#7F8DA3;
  --c-slate-550:#626A78;
  --c-slate-600:#58606E;
  --c-slate-650:#4F5766;
  --c-slate-900:#1A1A2E;
  --c-teal-750:#0D4845;
  --c-teal-750-rgb:13 72 69;
  --c-violet-200:#C9C6FA;
  --c-violet-250:#B4B0F5;
  --c-violet-250-rgb:180 176 245;
  --c-violet-260:#BEACF7;
  --c-violet-260-rgb:190 172 247;
  --c-violet-400:#8D89E4;
  --c-violet-400-rgb:141 137 228;
  --c-violet-550:#5C57C4;
  --c-violet-550-rgb:92 87 196;
  --c-violet-800:#2C127D;
  --c-violet-800-rgb:44 18 125;
  --c-violet-900:#1A0B48;
  --c-violet-1000:#0A0321;
  --c-violet-1000-rgb:10 3 33;
  --rad-2:2px;
  --rad-4:4px;
  --rad-6:6px;
  --rad-8:8px;
  --rad-10:10px;
  --rad-12:12px;
  --rad-14:14px;
  --rad-16:16px;
  --rad-pill:999px;
  --fs-10:10px;
  --fs-10_5:10.5px;
  --fs-11:11px;
  --fs-11_5:11.5px;
  --fs-12:12px;
  --fs-12_5:12.5px;
  --fs-13:13px;
  --fs-13_5:13.5px;
  --fs-14:14px;
  --fs-14_5:14.5px;
  --fs-15:15px;
  --fs-15_5:15.5px;
  --fs-16:16px;
  --fs-16_5:16.5px;
  --fs-17:17px;
  --fs-18:18px;
  --fs-20:20px;
  --fs-24:24px;
  --sh-dark-md:0 12px 30px -10px rgb(0 0 0 / .55);
  --sh-light-sm:0 10px 24px -14px rgb(16 34 60 / .35);
  --sh-light-lg:0 30px 60px -30px rgb(10 22 40 / .45);
  --sh-plate:0 50px 90px -40px rgb(10 22 40 / .65),0 0 0 1px rgb(255 255 255 / .06) inset;
}
:root{color-scheme:dark;--night:var(--c-navy-950);--night-2:var(--c-navy-900);--night-3:var(--c-navy-850);--panel:var(--c-navy-860);--paper:var(--c-gray-50);--paper-2:var(--c-white);--leaf:var(--c-green-350);--leaf-hi:var(--c-green-210);--leaf-ink:var(--c-green-600);--leaf-btn:var(--c-green-500);--sky:var(--c-green-400);--violet:var(--c-violet-400);--violet-d:var(--c-violet-550);--f-display:"Archivo","Arial Narrow","Segoe UI",system-ui,sans-serif;--f-body:"Instrument Sans","Segoe UI",system-ui,-apple-system,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;--page:1240px;--gutter:clamp(1rem, 4vw, 3rem);--bay:clamp(4.5rem, 9vw, 8rem);--r:var(--rad-14);--r-sm:var(--rad-8);--ease:cubic-bezier(0.2, 0.8, 0.25, 1);--bg:var(--night);--surface:var(--panel);--surface-2:var(--c-navy-800);--ink:var(--c-slate-50);--ink-2:var(--c-slate-250);--ink-3:var(--c-slate-360);--line:rgb(var(--c-slate-300-rgb) / .16);--line-2:rgb(var(--c-slate-300-rgb) / .28);--accent:var(--leaf);--accent-ink:var(--leaf-hi);--btn-bg:var(--leaf);--btn-fg:var(--c-navy-960);--btn-bg-hover:var(--leaf-hi);--shadow:0 20px 50px -24px rgb(var(--c-black-rgb) / .7)}.zone-dark{color-scheme:dark;--bg:var(--night);--surface:var(--panel);--surface-2:var(--c-navy-800);--ink:var(--c-slate-50);--ink-2:var(--c-slate-250);--ink-3:var(--c-slate-360);--line:rgb(var(--c-slate-300-rgb) / .16);--line-2:rgb(var(--c-slate-300-rgb) / .28);--accent:var(--leaf);--accent-ink:var(--leaf-hi);--btn-bg:var(--leaf);--btn-fg:var(--c-navy-960);--btn-bg-hover:var(--leaf-hi);--shadow:0 20px 50px -24px rgb(var(--c-black-rgb) / .7);background:var(--bg);color:var(--ink)}.zone-dark.alt{--bg:var(--night-2)}.zone-light{color-scheme:light;--bg:var(--paper);--surface:var(--paper-2);--surface-2:var(--c-gray-60);--ink:var(--c-slate-900);--ink-2:var(--c-slate-650);--ink-3:var(--c-slate-550);--line:var(--c-slate-100);--line-2:var(--c-slate-150);--accent:var(--leaf);--accent-ink:var(--leaf-ink);--btn-bg:var(--leaf-btn);--btn-fg:var(--c-white);--btn-bg-hover:var(--leaf-ink);--shadow:0 18px 40px -22px rgb(var(--c-navy-850-rgb) / .28);background:var(--bg);color:var(--ink)}html{scroll-behavior:smooth;scroll-padding-top:84px;background:var(--night)}body{margin:0;background:var(--night);color:var(--ink);font-family:var(--f-body);font-size:var(--fs-17);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.wrap{overflow-x:clip}h1,h2,h3,h4{font-family:var(--f-display);font-weight:700;font-stretch:118%;line-height:1.02;letter-spacing:-.025em;text-wrap:balance}p{text-wrap:pretty}::selection{background:var(--leaf);color:var(--c-navy-960)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--rad-6)}.skip{position:absolute;left:-9999px;top:0;z-index:300;background:var(--leaf);color:var(--c-navy-960);padding:.8rem 1.2rem;font-weight:600}.skip:focus{left:0}.shell{width:100%;max-width:calc(var(--page) + 2 * var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}section{position:relative;padding-block:var(--bay)}.stack>*+*{margin-top:1.1rem}.eyebrow{font-family:var(--f-mono);font-size:var(--fs-12);font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:inline-flex;align-items:flex-start;gap:.75em;line-height:1.5}.eyebrow::before{content:"";width:10px;height:10px;flex:none;margin-top:.3em;background:var(--accent);clip-path:polygon(0 0,100% 50%,0 100%)}.h2{font-size:clamp(2rem, 4.6vw, 3.6rem);max-width:20ch}.h3{font-size:clamp(1.25rem, 2vw, 1.6rem);letter-spacing:-.02em}.lede{font-size:clamp(1.05rem, 1.35vw, 1.22rem);color:var(--ink-2);max-width:58ch;line-height:1.55}.muted{color:var(--ink-2)}.head{display:grid;gap:1.1rem;max-width:62rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55em;font-family:var(--f-body);font-weight:600;font-size:var(--fs-15);padding:.8em 1.4em;border-radius:var(--rad-pill);border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:transform .25s var(--ease),background .25s,border-color .25s,color .25s,box-shadow .3s}.btn .arr{transition:transform .25s var(--ease)}.btn:hover .arr{transform:translateX(4px)}.btn-primary{background:var(--btn-bg);color:var(--btn-fg);box-shadow:0 10px 30px -12px rgb(var(--c-green-350-rgb) / .8)}.btn-primary:hover{background:var(--btn-bg-hover)}.btn-ghost{border-color:var(--line-2);color:var(--ink);background:color-mix(in oklab,var(--surface) 40%,transparent)}.btn-ghost:hover{border-color:var(--accent);background:color-mix(in oklab,var(--accent) 16%,transparent)}.btn-lg{font-size:var(--fs-16_5);padding:1em 1.8em}.arrow-link{color:var(--accent-ink);font-weight:600;display:inline-flex;gap:.4em;align-items:center}.arrow-link .arr{transition:transform .25s var(--ease)}.arrow-link:hover .arr{transform:translateX(4px)}.nav{position:sticky;top:env(safe-area-inset-top,0);z-index:100;transition:border-color .3s;border-bottom:1px solid transparent;background:0 0}.nav::before{content:"";position:absolute;inset:0;z-index:-1;background:rgb(var(--c-navy-950-rgb) / .35);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);transition:background .3s}.nav.scrolled{border-bottom-color:var(--line)}.nav.open::before,.nav.scrolled::before{background:rgb(var(--c-navy-950-rgb) / .95)}.nav .shell{display:flex;align-items:center;gap:1.25rem;height:72px}.brand{display:flex;align-items:center;flex:none}.brand img{height:36px;width:auto}.nav-links{margin-left:auto;display:flex;align-items:center;gap:clamp(.9rem,2vw,1.8rem)}.nav-links a:not(.btn){font-size:var(--fs-14_5);color:var(--ink-2);position:relative;padding-block:6px;transition:color .2s}.nav-links a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:var(--rad-2);background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}.nav-links a:not(.btn):hover,.nav-links a[aria-current]{color:var(--ink)}.nav-links a:not(.btn):hover::after,.nav-links a[aria-current]::after{transform:scaleX(1)}.nav-links .btn{padding:.62em 1.15em;font-size:var(--fs-14_5)}.menu-btn{display:none;margin-left:auto;width:44px;height:44px;border-radius:var(--rad-12);border:1px solid var(--line-2);background:0 0;cursor:pointer;place-items:center}.menu-btn span,.menu-btn span::after,.menu-btn span::before{display:block;width:18px;height:2px;background:var(--ink);border-radius:var(--rad-2);position:relative;transition:transform .3s var(--ease),background .2s}.menu-btn span::after,.menu-btn span::before{content:"";position:absolute;left:0}.menu-btn span::before{top:-6px}.menu-btn span::after{top:6px}.nav.open .menu-btn span{background:0 0}.nav.open .menu-btn span::before{transform:translateY(6px) rotate(45deg)}.nav.open .menu-btn span::after{transform:translateY(-6px) rotate(-45deg)}@media (max-width:980px){.menu-btn{display:grid}.nav-links{position:fixed;left:0;right:0;top:calc(72px + env(safe-area-inset-top,0px));bottom:0;flex-direction:column;align-items:stretch;gap:0;padding:1rem var(--gutter) calc(2rem + env(safe-area-inset-bottom,0px));background:rgb(var(--c-navy-950-rgb) / .97);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transform:translateY(-8px);opacity:0;visibility:hidden;transition:opacity .25s,transform .3s var(--ease),visibility .25s;overflow-y:auto}.nav.open .nav-links{opacity:1;transform:none;visibility:visible}.nav-links a:not(.btn){font-family:var(--f-display);font-stretch:115%;font-weight:600;font-size:1.6rem;color:var(--ink);padding-block:0.9rem;border-bottom:1px solid var(--line)}.nav-links a:not(.btn)::after{display:none}.nav-links .btn{margin-top:1.5rem;font-size:var(--fs-16);padding:1em 1.4em}}@media (max-width:560px){.brand img{height:30px}}.hero{position:relative;isolation:isolate;padding-block:clamp(3rem,7vw,6rem) clamp(2.5rem,5vw,4rem);min-height:min(56rem,calc(100svh - 72px));display:grid;align-items:center;overflow:hidden;background:radial-gradient(60rem 40rem at 78% 40%,rgb(var(--c-blue-350-rgb) / .16),transparent 60%),radial-gradient(40rem 30rem at 70% 70%,rgb(var(--c-green-350-rgb) / .14),transparent 60%),linear-gradient(180deg,var(--c-navy-950) 0,var(--c-navy-900) 60%,var(--c-navy-950) 100%)}.hero::before,.page-head::before{content:"";position:absolute;inset:auto -20% -10% -20%;height:55%;z-index:-2;background-image:linear-gradient(to right,rgb(var(--c-slate-300-rgb) / .1) 1px,transparent 1px),linear-gradient(to bottom,rgb(var(--c-slate-300-rgb) / .1) 1px,transparent 1px);background-size:64px 64px;transform:perspective(600px) rotateX(62deg);transform-origin:50% 100%;-webkit-mask-image:linear-gradient(to top,var(--c-black) 10%,transparent 85%);mask-image:linear-gradient(to top,var(--c-black) 10%,transparent 85%)}#hero-gl{position:absolute;inset:0;width:100%;height:100%;z-index:-1}.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgb(var(--c-navy-950-rgb) / .78) 0,rgb(var(--c-navy-950-rgb) / .45) 38%,rgb(var(--c-navy-950-rgb) / 0) 62%)}.hero-fallback{position:absolute;inset:0;z-index:-1;display:none;pointer-events:none}.hero.no-gl .hero-fallback{display:block}.hero.no-gl #hero-gl{display:none}.hero-fallback .fb-mark{position:absolute;right:8%;top:50%;width:min(34vw,460px);aspect-ratio:205/200;overflow:hidden;transform:translateY(-50%)}.hero-fallback .fb-mark img{height:100%;width:auto;max-width:none}@media (max-width:900px){.hero-fallback .fb-mark{right:-12%;top:auto;bottom:4%;transform:none;width:60vw;opacity:.7}}.hero-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,0.7fr);gap:2rem;align-items:center}.hero-copy{position:relative;z-index:2}.hero h1{font-size:clamp(2.5rem, 5.1vw, 4.4rem);font-weight:800;font-stretch:112%;letter-spacing:-.035em;line-height:.95;margin-block:1.3rem 1.5rem}.hero h1 .ln{display:block;overflow:hidden;padding-bottom:.08em}@media (min-width:901px){.hero h1 .ln{white-space:nowrap}}.hero h1 .ln>span{display:inline-block;animation:lineup 1s var(--ease) both}.hero h1 .ln:nth-child(2)>span{animation-delay:.12s;color:var(--leaf-hi)}@keyframes lineup{from{transform:translateY(105%)}to{transform:none}}.hero .lede{color:var(--c-slate-150);max-width:33rem}.hero-cta{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.1rem}.hero-proof{margin-top:clamp(2.2rem,4vw,3.2rem);display:grid;grid-template-columns:repeat(3,minmax(0,auto));gap:0 2rem;justify-content:start}.hero-proof div{display:grid;gap:.15rem;align-content:start}.hero-proof b{font-family:var(--f-display);font-stretch:118%;font-weight:700;font-size:clamp(1.4rem, 2.4vw, 1.9rem);letter-spacing:-.03em;color:var(--c-white);font-variant-numeric:tabular-nums}.hero-proof span{font-size:var(--fs-13);color:var(--c-slate-310);line-height:1.35;max-width:18ch}.scroll-cue{position:absolute;left:50%;bottom:1.1rem;transform:translateX(-50%);width:22px;height:34px;border:1.5px solid var(--line-2);border-radius:var(--rad-12);z-index:2}.scroll-cue::after{content:"";position:absolute;left:50%;top:7px;width:3px;height:7px;margin-left:-1.5px;border-radius:var(--rad-2);background:var(--leaf);animation:cue 2s var(--ease) infinite}@keyframes cue{0%{transform:translateY(0);opacity:1}70%{transform:translateY(10px);opacity:0}100%{opacity:0}}@media (max-width:900px){.hero{min-height:0;padding-block:3rem 3.5rem}.hero-grid{grid-template-columns:1fr}.hero-spacer{display:none}#hero-gl{opacity:.8}.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgb(var(--c-navy-950-rgb) / .55),rgb(var(--c-navy-950-rgb) / .72) 45%,rgb(var(--c-navy-950-rgb) / .35) 80%,rgb(var(--c-navy-950-rgb) / .2))}.scroll-cue{display:none}}@media (max-width:520px){.hero-proof{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 1rem}.hero-proof span{font-size:var(--fs-12)}}.proof{padding-block:2.25rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.proof .shell{display:flex;align-items:center;gap:clamp(1.5rem,5vw,4rem);flex-wrap:wrap;justify-content:space-between}.proof-label{font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);max-width:24ch;line-height:1.5}.logos{display:flex;align-items:center;gap:clamp(1.75rem,6vw,4.5rem);flex-wrap:wrap}
.hero-clients .logos{gap:clamp(3.5rem,11vw,10rem)}.logo{display:flex;align-items:center;height:46px}.logo img{height:40px;width:auto;opacity:.92;transition:opacity .2s,transform .25s var(--ease)}.logo img.sm{height:28px}.logo:hover img{opacity:1;transform:translateY(-2px)}.logo .name{display:none;font-family:var(--f-display);font-stretch:110%;font-weight:700;font-size:1.35rem;letter-spacing:-.02em;color:var(--ink)}.logo.failed img{display:none}.logo.failed .name{display:inline}.rise{transform:translateY(18px);transition:transform .9s var(--ease)}.rise.in{transform:none}[data-tilt]{--rx:0deg;--ry:0deg;--gx:50%;--gy:0%;--ga:0;transform:perspective(1000px) rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .6s var(--ease),box-shadow .4s;will-change:transform}[data-tilt].tilting{transition:transform .12s linear,box-shadow .4s}[data-tilt]::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(28rem 20rem at var(--gx) var(--gy),rgb(var(--c-white-rgb) / .14),transparent 55%);opacity:var(--ga);transition:opacity .4s}.zone-light [data-tilt]::after{background:radial-gradient(28rem 20rem at var(--gx) var(--gy),rgb(var(--c-green-350-rgb) / .12),transparent 55%)}.wedge-top{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,0.9fr);gap:clamp(1.5rem,4vw,4rem);align-items:end}.conds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:clamp(2.5rem,5vw,4rem)}.cond{position:relative;border-radius:var(--r);padding:1.6rem 1.5rem 1.7rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:.75rem;align-content:start}.cond .glyph{width:52px;height:52px;transform:translateZ(40px)}.cond h3{font-size:1.3rem;letter-spacing:-.02em;transform:translateZ(28px)}.cond p{color:var(--ink-2);font-size:var(--fs-15_5);transform:translateZ(16px)}.cond .tag{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink)}@media (max-width:900px){.wedge-top{grid-template-columns:1fr}.conds{grid-template-columns:1fr}}@property --lift{syntax:"<length>";inherits:true;initial-value:0px}.svc{display:grid;grid-template-columns:minmax(0,0.95fr) minmax(0,1.05fr);gap:clamp(2rem,5vw,5rem);margin-top:clamp(2.5rem,5vw,4rem)}.stairs-col{position:relative}.stairs-sticky{position:sticky;top:110px}.stairs-scene{height:clamp(300px,34vw,440px);perspective:1400px;perspective-origin:50% 20%;display:grid;place-items:center;position:relative}.stairs-scene::before{content:"";position:absolute;inset:10% 5% 0;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--c-green-350-rgb) / .22),transparent 70%);filter:blur(10px)}.stairs-world{--u:clamp(24px, 2.8vw, 38px);--s:calc(var(--u) * 3.1);--g:calc(var(--u) * 0.45);position:relative;width:calc(var(--s) * 2 + var(--g));height:calc(var(--s) * 2 + var(--g));transform-style:preserve-3d;transform:rotateX(58deg) rotateZ(calc(-40deg + var(--spin,0deg)));transition:transform 1.2s var(--ease)}.step{position:absolute;width:var(--s);height:var(--s);left:calc(var(--x) * (var(--s) + var(--g)));top:calc(var(--y) * (var(--s) + var(--g)));transform-style:preserve-3d;--h:calc(var(--u) * 0.55 + var(--lift));transition:--lift .7s var(--ease)}.step.on{--lift:calc(var(--u) * 1.3)}.step .f{position:absolute;transition:background .5s,box-shadow .5s;backface-visibility:visible}.step .top{inset:0;transform:translateZ(var(--h));background:var(--c-navy-750);border:1px solid rgb(var(--c-green-210-rgb) / .12);display:grid;place-items:center}.step .top span{font-family:var(--f-mono);font-size:calc(var(--u) * .3);font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--c-slate-250);transition:color .4s}.step .front{left:0;top:var(--s);width:var(--s);height:var(--h);transform-origin:top;transform:rotateX(90deg);background:var(--c-navy-860)}.step .side{left:var(--s);top:0;width:var(--h);height:var(--s);transform-origin:left;transform:rotateY(-90deg);background:var(--c-navy-850)}.step.on .top{background:var(--leaf);box-shadow:0 0 40px rgb(var(--c-green-210-rgb) / .55)}.step.on .top span{color:var(--c-navy-960)}.step.on .front{background:var(--c-green-510)}.step.on .side{background:var(--c-green-600)}.stairs-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem;margin-top:.9rem}.stairs-legend button{appearance:none;border:1px solid var(--line-2);background:0 0;border-radius:var(--rad-pill);font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:.4em .8em;cursor:pointer;transition:all .25s}.stairs-legend button[aria-pressed=true]{border-color:var(--leaf);color:var(--leaf-hi);background:rgb(var(--c-green-350-rgb) / .1)}.rungs{display:block;padding-bottom:6vh}.rung-anchor{display:block;height:0;scroll-margin-top:calc(var(--stack-top) + var(--k) * var(--stack-step))}.rungs{--stack-top:104px;--stack-step:30px}.rung{position:sticky;top:calc(var(--stack-top) + var(--k) * var(--stack-step));margin-bottom:34vh;border-radius:var(--r);padding:clamp(1.4rem,2.5vw,2rem);border:1px solid var(--line-2);background:var(--surface);box-shadow:0 -18px 40px -22px rgb(var(--c-black-rgb) / .75),0 24px 50px -30px rgb(var(--c-black-rgb) / .8);transform-origin:50% 0;transform:scale(calc(1 - var(--depth,0) * .04));transition:border-color .4s,background .4s}.rung:last-child{margin-bottom:0}.rung::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;background:var(--night);opacity:calc(var(--depth, 0) * .28)}.rung.on{border-color:rgb(var(--c-green-350-rgb) / .6)}.rung-anchor:first-of-type,.rung:first-of-type{--k:0}.rung-anchor:nth-of-type(2),.rung:nth-of-type(2){--k:1}.rung-anchor:nth-of-type(3),.rung:nth-of-type(3){--k:2}.rung-anchor:nth-of-type(4),.rung:nth-of-type(4){--k:3}@media (max-width:900px){.rungs{--stack-top:86px;--stack-step:20px}.rung{margin-bottom:24vh}}.rung-top{display:flex;align-items:center;gap:.8rem;margin-bottom:.9rem}.rung .lvl{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--leaf-hi);border:1px solid rgb(var(--c-green-350-rgb) / .4);padding:.3em .75em;border-radius:var(--rad-pill)}.rung h3{font-size:clamp(1.3rem, 2.2vw, 1.75rem);letter-spacing:-.025em;margin-bottom:.6rem}.rung p{color:var(--ink-2);font-size:var(--fs-15_5);max-width:56ch}.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.chips span{font-size:var(--fs-13);color:var(--ink-2);border:1px solid var(--line);border-radius:var(--rad-pill);padding:.25em .75em;background:color-mix(in oklab,var(--surface-2) 60%,transparent)}@media (max-width:900px){.svc{grid-template-columns:1fr}.stairs-sticky{position:relative;top:0}.stairs-col{order:-1}.stairs-scene{height:240px}}.work-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:end}.tabs{display:inline-grid;grid-auto-flow:column;gap:.25rem;padding:.3rem;border:1px solid var(--line);border-radius:var(--rad-pill);background:var(--surface);box-shadow:var(--sh-light-sm)}.tab{appearance:none;border:0;background:0 0;cursor:pointer;padding:.65em 1.1em;border-radius:var(--rad-pill);font-weight:600;font-size:var(--fs-14_5);color:var(--ink-2);display:inline-flex;align-items:center;gap:.5em;white-space:nowrap;transition:background .25s,color .25s}.tab svg{width:18px;height:18px}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{background:var(--night-2);color:var(--c-white)}.tab[aria-selected=true] svg{color:var(--leaf-hi)}.monitor-stage{perspective:1600px;margin-top:clamp(2rem,4vw,3rem)}.monitor{--tilt:0deg;--sc:1;transform:rotateX(var(--tilt)) scale(var(--sc));transform-origin:50% 85%;border-radius:var(--rad-16);padding:clamp(6px,1vw,12px);background:linear-gradient(160deg,var(--c-navy-810),var(--c-navy-900));box-shadow:var(--sh-plate);will-change:transform}.screen{position:relative;aspect-ratio:16/9;border-radius:var(--rad-12);overflow:hidden;background:var(--c-navy-900);color:var(--c-slate-50)}.screen>iframe,.screen>video{position:absolute;inset:0;width:100%;height:100%;border:0}.ph-badge{position:absolute;top:12px;right:12px;z-index:5;font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.12em;text-transform:uppercase;background:rgb(var(--c-navy-950-rgb) / .8);border:1px dashed rgb(var(--c-green-210-rgb) / .6);color:var(--leaf-hi);padding:.35em .8em;border-radius:var(--rad-pill)}.work-foot{margin-top:1.75rem;max-width:60ch}.work-foot .panel-copy h3{font-size:1.35rem;margin-bottom:.4rem}.work-foot .panel-copy p{color:var(--ink-2);font-size:var(--fs-15_5)}@media (max-width:900px){.work-head{grid-template-columns:1fr}.tabs{width:100%;grid-auto-flow:row;grid-template-columns:repeat(3,minmax(0,1fr));border-radius:var(--rad-16)}.tab{justify-content:center;border-radius:var(--rad-12);padding:.7em .5em;font-size:var(--fs-13_5);white-space:normal;text-align:center}.work-foot{grid-template-columns:1fr}}@media (max-width:460px){.tab svg{display:none}}.mock{position:absolute;inset:0;display:grid;grid-template-rows:auto 1fr;font-size:clamp(8px, 1.1vw, 13px)}.mock-bar{display:flex;align-items:center;gap:.6em;padding:.7em 1em;background:var(--c-navy-850);border-bottom:1px solid rgb(var(--c-slate-300-rgb) / .14)}.mock-bar i{width:.75em;height:.75em;border-radius:50%;background:var(--c-navy-750)}.mock-bar .url{margin-left:1em;flex:1;max-width:26em;background:var(--c-navy-900);border-radius:var(--rad-pill);padding:.3em 1em;color:var(--c-slate-400);font-family:var(--f-mono);font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mock-body{display:grid;grid-template-columns:16% 1fr;min-height:0}.mock-side{background:var(--c-navy-850);padding:1.2em .9em;display:grid;gap:.7em;align-content:start}.mock-side span{height:.7em;border-radius:var(--rad-4);background:var(--c-navy-800)}.mock-side span.on{background:rgb(var(--c-green-350-rgb) / .6)}.mock-main{padding:1.5em;display:grid;gap:1em;grid-template-rows:auto auto minmax(0,1fr);position:relative;min-width:0}.mock-h{height:1.3em;width:38%;border-radius:var(--rad-4);background:var(--c-navy-750)}.mock-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9em}.mock-cards div{height:6.5em;border-radius:var(--rad-8);background:var(--c-navy-860);border:1px solid rgb(var(--c-slate-300-rgb) / .12);position:relative}.mock-cards div::before{content:"";position:absolute;left:1em;top:1em;width:40%;height:.6em;border-radius:var(--rad-4);background:var(--c-navy-750)}.mock-cards div::after{content:"";position:absolute;left:1em;bottom:1.1em;width:55%;height:1.5em;border-radius:var(--rad-4);background:var(--c-blue-650)}.mock-cards div:first-child::after{background:var(--leaf);width:35%}.mock-chart{border-radius:var(--rad-8);background:var(--c-navy-860);border:1px solid rgb(var(--c-slate-300-rgb) / .12);display:flex;align-items:flex-end;justify-content:space-around;gap:3%;padding:1.5em 1.5em 0;background-image:repeating-linear-gradient(to top,rgb(var(--c-slate-300-rgb) / .08) 0 1px,transparent 1px 25%)}.mock-chart b{flex:1;max-width:3.4em;background:var(--c-blue-650);border-radius:var(--rad-4) var(--rad-4) 0 0}.mock-chart b:nth-child(6){background:linear-gradient(to top,var(--c-green-510),var(--leaf-hi))}.hotspot{position:absolute;width:2.4em;height:2.4em;border-radius:50%;left:64%;top:30%}.hotspot::after,.hotspot::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--leaf-hi)}.hotspot::after{animation:ping 1.8s var(--ease) infinite}@keyframes ping{from{transform:scale(1);opacity:1}to{transform:scale(2.4);opacity:0}}.callout{position:absolute;left:calc(64% + 3.2em);top:calc(30% - .6em);max-width:17em;background:var(--c-white);color:var(--c-slate-900);border-radius:var(--rad-8);padding:.8em 1em;box-shadow:var(--sh-dark-md);font-size:1em;line-height:1.35}.callout small{display:block;font-family:var(--f-mono);color:var(--c-green-600);font-size:.8em;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.3em}.callout .next{display:inline-block;margin-top:.6em;background:var(--c-green-500);color:var(--c-white);border-radius:var(--rad-pill);padding:.25em .9em;font-weight:600;font-size:.9em}.mock-share{position:absolute;inset:0;display:grid;place-items:center;background:radial-gradient(40em 20em at 50% 0,rgb(var(--c-green-350-rgb) / .18),transparent),var(--c-navy-900)}.share-card{width:min(34em,78%);background:var(--c-white);color:var(--c-slate-900);border-radius:var(--rad-12);overflow:hidden;box-shadow:0 30px 60px -20px rgb(var(--c-black-rgb) / .6);transform:rotate(-2deg)}.share-card .thumb{aspect-ratio:16/7;background:linear-gradient(135deg,var(--c-navy-850),var(--c-navy-800));position:relative}.share-card .thumb::after{content:"";position:absolute;left:50%;top:50%;width:3.2em;height:3.2em;margin:-1.6em;border-radius:50%;background:var(--leaf);box-shadow:0 0 0 .6em rgb(var(--c-green-350-rgb) / .25)}.share-card .meta{padding:1em 1.2em 1.2em;display:grid;gap:.35em}.share-card .meta b{font-family:var(--f-display);font-stretch:110%;font-size:1.3em}.share-card .meta span{color:var(--c-slate-600)}.share-card .meta .go{justify-self:start;margin-top:.4em;background:var(--c-green-500);color:var(--c-white);border-radius:var(--rad-pill);padding:.35em 1.1em;font-weight:600}.mock-video{position:absolute;inset:0;background:radial-gradient(50em 30em at 30% 20%,rgb(var(--c-green-350-rgb) / .2),transparent 60%),radial-gradient(40em 30em at 80% 70%,rgb(var(--c-green-350-rgb) / .22),transparent 60%),var(--c-navy-950);display:grid;place-items:center}.mock-video .play{width:5em;height:5em;border-radius:50%;background:rgb(var(--c-white-rgb) / .12);border:1px solid rgb(var(--c-white-rgb) / .4);display:grid;place-items:center;backdrop-filter:blur(6px)}.mock-video .play::after{content:"";width:0;height:0;border-left:1.4em solid var(--c-white);border-top:.85em solid transparent;border-bottom:.85em solid transparent;margin-left:.3em}.mock-video .scrub{position:absolute;left:4%;right:4%;bottom:7%;display:grid;gap:.6em}.mock-video .track{height:.35em;border-radius:var(--rad-pill);background:rgb(var(--c-white-rgb) / .2);position:relative}.mock-video .track::before{content:"";position:absolute;inset:0 62% 0 0;border-radius:inherit;background:var(--leaf-hi)}.mock-video .chap{display:flex;justify-content:space-between;font-family:var(--f-mono);color:var(--c-slate-250);font-size:.85em}.mock-video .title{position:absolute;left:4%;top:8%;font-family:var(--f-display);font-stretch:118%;font-weight:700;font-size:2.1em;line-height:1;max-width:12em}.ros{margin-top:clamp(2.5rem,5vw,4rem);position:relative}.ros-track{position:absolute;left:0;right:0;top:27px;height:2px;background:var(--line-2);border-radius:var(--rad-2);overflow:hidden}.ros-track::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--leaf),var(--leaf-hi));transform:scaleX(var(--p,1));transform-origin:left;box-shadow:0 0 12px var(--leaf)}.ros ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;position:relative}.ros li{display:grid;gap:.7rem;align-content:start}.ros .node{width:56px;height:56px;border-radius:var(--rad-16);display:grid;place-items:center;background:var(--surface);border:1px solid var(--line-2);font-family:var(--f-mono);font-size:var(--fs-13);color:var(--leaf-hi);box-shadow:var(--sh-dark-md);transform:perspective(300px) rotateX(18deg) rotateY(-14deg);transition:transform .5s var(--ease),border-color .4s,background .4s}.ros li.hit .node{border-color:var(--leaf);background:#213719;transform:perspective(300px) rotateX(0) rotateY(0) translateY(-3px)}.ros .tc{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.1em;color:var(--ink-3);font-variant-numeric:tabular-nums}.ros h3{font-size:1.2rem;letter-spacing:-.02em}.ros p{font-size:var(--fs-14_5);color:var(--ink-2)}.ros .gate{color:var(--leaf-hi)}@media (max-width:980px){.ros-track{left:27px;right:auto;top:0;bottom:0;width:2px;height:auto}.ros-track::after{transform:scaleY(var(--p,1));transform-origin:top}.ros ol{grid-template-columns:1fr;gap:1.75rem}.ros li{grid-template-columns:56px minmax(0,1fr);column-gap:1.25rem}.ros li>:not(.node){grid-column:2}.ros .node{grid-row:1/span 3}}.record{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.stat{position:relative;border-radius:var(--r);padding:1.6rem 1.4rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:.5rem;align-content:start;overflow:hidden}.stat .n{font-family:var(--f-display);font-stretch:122%;font-weight:800;font-size:clamp(2.3rem, 4.4vw, 3.5rem);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;transform:translateZ(30px)}.stat .n .u{font-size:.45em;font-weight:600;color:var(--accent-ink);letter-spacing:0}.stat .l{font-size:var(--fs-14);color:var(--ink-2);line-height:1.4;transform:translateZ(14px)}.stat .bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--leaf);transform:scaleX(0);transform-origin:left;transition:transform 1.1s var(--ease)}.stat.in .bar{transform:scaleX(1)}@media (max-width:900px){.record{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:400px){.record{grid-template-columns:1fr}}.quote-slot{margin-top:1.25rem;border-radius:var(--r);border:1.5px dashed var(--line-2);padding:clamp(1.5rem,3vw,2.25rem);display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.25rem;align-items:start;background:color-mix(in oklab,var(--surface) 60%,transparent)}.quote-slot .qm{font-family:var(--f-display);font-size:4rem;line-height:.7;color:var(--accent);font-weight:800}.quote-slot blockquote{font-family:var(--f-display);font-stretch:105%;font-weight:600;font-size:clamp(1.15rem, 2vw, 1.5rem);letter-spacing:-.015em;line-height:1.3;color:var(--ink-3)}.quote-slot .who{margin-top:.8rem;font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.quote-slot .flag{display:inline-block;margin-bottom:.7rem;font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.14em;text-transform:uppercase;color:var(--c-amber-600);background:var(--c-amber-50);border-radius:var(--rad-pill);padding:.3em .8em}.regale-sec{--accent:var(--violet);--accent-ink:var(--c-violet-250);background:radial-gradient(50rem 30rem at 80% 30%,rgb(var(--c-violet-550-rgb) / .28),transparent 60%),radial-gradient(30rem 20rem at 10% 90%,rgb(var(--c-green-350-rgb) / .1),transparent 60%),var(--night-2)}.regale-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5rem);align-items:center}.regale-sec .eyebrow::before{background:var(--violet)}.regale-sec h2 em{font-style:normal;color:var(--c-violet-250)}.surfaces{display:grid;gap:.75rem;margin-top:1.75rem}.surface{display:grid;grid-template-columns:40px minmax(0,1fr);gap:1rem;align-items:start;padding:1.1rem 1.2rem;border-radius:var(--rad-12);border:1px solid rgb(var(--c-violet-400-rgb) / .25);background:rgb(var(--c-navy-860-rgb) / .6);transition:border-color .3s,background .3s}.surface.on,.surface:hover{border-color:rgb(var(--c-violet-400-rgb) / .7);background:rgb(var(--c-navy-800-rgb) / .8)}.surface .ic{width:40px;height:40px;border-radius:var(--rad-10);display:grid;place-items:center;background:rgb(var(--c-violet-550-rgb) / .25);color:var(--c-violet-200)}.surface .ic svg{width:22px;height:22px}.surface b{display:block;font-family:var(--f-display);font-stretch:112%;font-size:var(--fs-17);letter-spacing:-.01em}.surface span{display:block;font-size:var(--fs-14_5);color:var(--ink-2);line-height:1.5;margin-top:.2rem}.regale-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.75rem;align-items:center}.btn-violet{background:var(--violet);color:#0b0a1a;box-shadow:0 10px 30px -12px rgb(var(--c-violet-400-rgb) / .8)}.btn-violet:hover{background:var(--c-violet-250)}.layers-scene{height:clamp(320px,38vw,480px);perspective:1600px;display:grid;place-items:center}.layers-world{--gap:clamp(46px, 5vw, 70px);position:relative;width:min(380px,70vw);aspect-ratio:16/10.5;transform-style:preserve-3d;transform:rotateX(56deg) rotateZ(-32deg) rotateX(var(--lx,0deg)) rotateZ(var(--lz,0deg));transition:transform 1s var(--ease)}.layer{position:absolute;inset:0;border-radius:var(--rad-14);overflow:hidden;transform:translateZ(calc(var(--k) * var(--gap)));transition:transform .9s var(--ease),box-shadow .5s,border-color .4s;border:1px solid rgb(var(--c-violet-250-rgb) / .35);box-shadow:0 30px 60px -30px rgb(var(--c-black-rgb) / .8);display:grid;grid-template-rows:auto 1fr}.layers-scene.spread .layer{transform:translateZ(calc(var(--k) * var(--gap) * 1.5))}.layer.on{border-color:var(--c-violet-200);box-shadow:0 0 0 1px var(--c-violet-200),0 0 50px -8px rgb(var(--c-violet-400-rgb) / .8)}.layer .lb{font-family:var(--f-mono);font-size:var(--fs-10);letter-spacing:.14em;text-transform:uppercase;padding:.6em .9em;color:#e4e2ff;background:rgb(var(--c-black-rgb) / .25);display:flex;justify-content:space-between}.layer-studio{background:linear-gradient(145deg,var(--c-navy-860),var(--c-navy-850))}.layer-portal{background:linear-gradient(145deg,#2c2a63,#1f1d4a)}.layer-buyer{background:linear-gradient(145deg,#3c38a0,#2a2780)}.l-ui{padding:10px;display:grid;gap:7px}.l-ui.studio{grid-template-columns:22% 1fr 18%}.l-ui.studio div{border-radius:var(--rad-4);background:rgb(var(--c-white-rgb) / .07)}.l-ui.studio div:nth-child(2){background:rgb(var(--c-white-rgb) / .12);position:relative}.l-ui.studio div:nth-child(2)::after{content:"";position:absolute;left:30%;top:35%;width:28%;height:22%;border:1.5px dashed var(--c-green-210);border-radius:var(--rad-4)}.l-ui.portal{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}.l-ui.portal div{border-radius:var(--rad-4);background:rgb(var(--c-white-rgb) / .1)}.l-ui.buyer{place-items:center}.l-ui.buyer div{width:38px;height:38px;border-radius:50%;background:var(--c-green-210);box-shadow:0 0 0 8px rgb(var(--c-green-210-rgb) / .2)}@media (max-width:900px){.regale-grid{grid-template-columns:1fr}.layers-scene{order:-1;height:300px}}.faq-grid{display:grid;grid-template-columns:minmax(0,0.8fr) minmax(0,1.2fr);gap:clamp(2rem,5vw,5rem);align-items:start}.faq-list{border-top:1px solid var(--line)}.faq-list details{border-bottom:1px solid var(--line)}.faq-list summary{list-style:none;cursor:pointer;padding:1.25rem 0;display:flex;gap:1rem;justify-content:space-between;align-items:center;font-family:var(--f-display);font-stretch:108%;font-weight:600;font-size:clamp(1.05rem, 1.6vw, 1.22rem);letter-spacing:-.01em}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary .pm{flex:none;width:30px;height:30px;border-radius:50%;border:1px solid var(--line-2);position:relative;transition:transform .35s var(--ease),background .25s,border-color .25s}.faq-list summary .pm::after,.faq-list summary .pm::before{content:"";position:absolute;left:50%;top:50%;width:11px;height:1.5px;margin:-.75px 0 0 -5.5px;background:var(--ink)}.faq-list summary .pm::after{transform:rotate(90deg);transition:transform .35s var(--ease)}.faq-list details[open] summary .pm{background:var(--leaf);border-color:var(--leaf)}.faq-list details[open] summary .pm::after{transform:rotate(0)}.faq-list summary:hover .pm{border-color:var(--accent-ink)}.faq-list .a{padding:0 3rem 1.4rem 0;color:var(--ink-2);font-size:var(--fs-15_5);max-width:62ch}.trust-list{display:grid;gap:.9rem;margin-top:2rem}.trust-list div{display:grid;grid-template-columns:22px minmax(0,1fr);gap:.8rem;font-size:var(--fs-15);color:var(--ink-2)}.trust-list svg{width:22px;height:22px;color:var(--accent-ink);margin-top:1px}.trust-list b{color:var(--ink);font-weight:600}@media (max-width:900px){.faq-grid{grid-template-columns:1fr}.faq-list .a{padding-right:0}}.careers-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,0.8fr);gap:clamp(1.5rem,4vw,4rem);align-items:end}.values{list-style:none;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.value{position:relative;border-radius:var(--r);overflow:hidden;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;grid-template-rows:auto 1fr}.value figure{margin:0;aspect-ratio:4/3.4;overflow:hidden;background:var(--surface-2)}.value img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.value:hover img{transform:scale(1.06)}.value .txt{padding:1rem 1.05rem 1.2rem;display:grid;gap:.35rem;align-content:start}.value h3{font-size:var(--fs-17);letter-spacing:-.01em}.value p{font-size:var(--fs-13_5);color:var(--ink-2);line-height:1.5}@media (max-width:1100px){.values{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:760px){.values{grid-template-columns:repeat(2,minmax(0,1fr))}.careers-top{grid-template-columns:1fr}}@media (max-width:420px){.values{grid-template-columns:1fr}}.benefits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(2.5rem,5vw,3.5rem);border-top:1px solid var(--line)}.benefit{padding:1.5rem 1.25rem .5rem;border-left:1px solid var(--line)}.benefit:first-child{border-left:0;padding-left:0}.benefit h3{font-size:var(--fs-16);letter-spacing:-.01em;margin-bottom:.7rem;font-stretch:110%}.benefit ul{list-style:none;padding:0;display:grid;gap:.45rem}.benefit li{font-size:var(--fs-14);color:var(--ink-2);padding-left:1rem;position:relative;line-height:1.45}.benefit li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;background:var(--accent);clip-path:polygon(0 0,100% 50%,0 100%)}@media (max-width:900px){.benefits{grid-template-columns:repeat(2,minmax(0,1fr))}.benefit:nth-child(3){border-left:0;padding-left:0}.benefit:nth-child(n+3){border-top:1px solid var(--line);margin-top:1rem}}@media (max-width:520px){.benefits{grid-template-columns:1fr}.benefit{border-left:0;padding-left:0}.benefit+.benefit{border-top:1px solid var(--line);margin-top:1rem}}.join{margin-top:clamp(2.5rem,5vw,3.5rem);display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;padding:clamp(1.5rem,3vw,2.25rem);border-radius:var(--r);background:var(--night-2);color:var(--c-slate-50)}.join h3{font-size:clamp(1.4rem, 2.6vw, 2rem)}.join p{color:var(--c-slate-250);max-width:52ch;margin-top:.4rem;font-size:var(--fs-15_5)}.join .acts{display:flex;gap:1.25rem;align-items:center;flex-wrap:wrap}.join .arrow-link{color:var(--leaf-hi)}.join .btn-primary{background:var(--leaf);color:var(--c-navy-960)}.join .btn-primary:hover{background:var(--leaf-hi)}.contact-sec{background:radial-gradient(60rem 30rem at 20% 0,rgb(var(--c-green-350-rgb) / .12),transparent 60%),var(--night)}.contact-grid{display:grid;grid-template-columns:minmax(0,0.9fr) minmax(0,1.1fr);gap:clamp(2rem,5vw,5rem);align-items:start}.contact-sec .h2{font-size:clamp(2.2rem, 5vw, 4rem)}.next-steps{list-style:none;padding:0;display:grid;gap:1rem;margin-top:2rem;counter-reset:s}.next-steps li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:.9rem;color:var(--ink-2);font-size:var(--fs-15_5);counter-increment:s}.next-steps li::before{content:counter(s,decimal-leading-zero);font-family:var(--f-mono);font-size:var(--fs-12);color:var(--leaf-hi);border:1px solid rgb(var(--c-green-350-rgb) / .4);border-radius:var(--rad-8);height:30px;display:grid;place-items:center}.next-steps b{color:var(--ink)}.form{border-radius:var(--rad-16);padding:clamp(1.25rem,3vw,2.25rem);background:var(--panel);border:1px solid var(--line);box-shadow:0 40px 80px -40px rgb(var(--c-black-rgb) / .8);display:grid;gap:1.1rem}.form .row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.field{display:grid;gap:.4rem;min-width:0}.field label,.field legend{font-size:var(--fs-13_5);font-weight:600;color:var(--ink)}.field input,.field select,.field textarea{width:100%;border-radius:var(--rad-10);border:1px solid var(--line-2);background:var(--c-navy-900);color:var(--ink);padding:.8em .95em;font-size:var(--fs-15_5);transition:border-color .2s,box-shadow .2s}.field textarea{min-height:120px;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#6f7e95}.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--leaf);box-shadow:0 0 0 3px rgb(var(--c-green-350-rgb) / .25)}fieldset.field{border:0;padding:0}.pills{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.2rem}.pill{position:relative}.pill input{position:absolute;opacity:0;inset:0;cursor:pointer}.pill span{display:inline-block;font-size:var(--fs-14);padding:.5em .95em;border-radius:var(--rad-pill);border:1px solid var(--line-2);color:var(--ink-2);transition:all .2s}.pill input:checked+span{border-color:var(--leaf);background:rgb(var(--c-green-350-rgb) / .16);color:var(--c-white)}.pill input:focus-visible+span{outline:2px solid var(--leaf);outline-offset:2px}.form .fine{font-size:var(--fs-13);color:var(--ink-3)}.form-status{font-size:var(--fs-14_5);border-radius:var(--rad-10);padding:.8rem 1rem;background:rgb(var(--c-green-350-rgb) / .12);border:1px solid rgb(var(--c-green-350-rgb) / .4);color:#dcefc3}.form-status.err{background:rgb(var(--c-red-400-rgb) / .1);border-color:rgb(var(--c-red-400-rgb) / .45);color:#ffd3cf}@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}@media (max-width:520px){.form .row{grid-template-columns:1fr}}footer{border-top:1px solid var(--line);padding-block:3rem calc(2.5rem + env(safe-area-inset-bottom,0px))}.foot{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:2rem}.foot img{height:30px;width:auto}.foot p{color:var(--ink-3);font-size:var(--fs-14);margin-top:1rem;max-width:34ch}.foot h4,.foot .foot-h{max-width:none;font-family:var(--f-mono);font-weight:500;font-stretch:100%;font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.8rem}.foot ul{list-style:none;padding:0;display:grid;gap:.5rem;font-size:var(--fs-14_5)}.foot a{color:var(--ink-2);transition:color .2s}.foot a:hover{color:var(--leaf-hi)}.foot-base{margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:var(--fs-13);color:var(--ink-3)}@media (max-width:800px){.foot{grid-template-columns:repeat(2,minmax(0,1fr))}.foot>:first-child{grid-column:1/-1}}html[data-motion=off] *,html[data-motion=off] ::after,html[data-motion=off] ::before{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important;scroll-behavior:auto!important}html[data-motion=off] .rise{transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.rise{transform:none}}.page-head{position:relative;isolation:isolate;overflow:hidden;padding-block:clamp(4rem,9vw,7rem) clamp(3rem,6vw,4.5rem);background:radial-gradient(50rem 30rem at 85% 30%,rgb(var(--c-blue-350-rgb) / .14),transparent 60%),radial-gradient(36rem 24rem at 75% 90%,rgb(var(--c-green-350-rgb) / .12),transparent 60%),var(--night);border-bottom:1px solid var(--line)}.page-head .shell{position:relative;z-index:1}.page-head h1{font-size:clamp(2.4rem, 5.4vw, 4.4rem);font-weight:800;font-stretch:114%;letter-spacing:-.035em;line-height:.98;max-width:16ch;margin-block:1.1rem 1.2rem}.page-head .lede{color:var(--c-slate-150)}.deco{position:absolute;right:clamp(1rem,8vw,9rem);top:50%;width:clamp(140px,18vw,240px);aspect-ratio:1;transform:translateY(-50%);perspective:900px;z-index:0;pointer-events:none}.prism{position:absolute;inset:0;transform-style:preserve-3d;animation:prism 22s linear infinite;--w:clamp(140px, 18vw, 240px)}.prism i{position:absolute;left:0;top:12%;width:100%;height:76%;border-radius:var(--rad-10);background:linear-gradient(160deg,rgb(var(--c-green-350-rgb) / .22),rgb(var(--c-green-350-rgb) / .08));border:1px solid rgb(var(--c-green-210-rgb) / .45);box-shadow:inset 0 0 30px rgb(var(--c-green-210-rgb) / .12);transform:rotateY(calc(var(--k) * 120deg)) translateZ(calc(var(--w) * .2887));backface-visibility:visible}.prism i:first-child{--k:0}.prism i:nth-child(2){--k:1}.prism i:nth-child(3){--k:2}@keyframes prism{from{transform:rotateX(-16deg) rotateY(0)}to{transform:rotateX(-16deg) rotateY(360deg)}}@media (max-width:900px){.deco{opacity:.35;right:-30px}}@media (prefers-reduced-motion:reduce){.prism{animation:none;transform:rotateX(-16deg) rotateY(30deg)}}.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;flex-wrap:wrap}.work-head .head .arrow-link{margin-top:.25rem}.built-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.built{position:relative;border-radius:var(--r);padding:1.5rem 1.4rem 1.4rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:.9rem;grid-template-rows:auto 1fr auto;min-height:13rem;transition:border-color .3s,transform .6s var(--ease),box-shadow .4s}.built:hover{border-color:var(--accent)}.built h3{font-size:1.28rem;letter-spacing:-.02em;line-height:1.12;transform:translateZ(26px)}.built .go{justify-self:start;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line-2);color:var(--accent-ink);transition:background .25s,color .25s,transform .3s var(--ease)}.built:hover .go{background:var(--leaf);color:var(--c-navy-960);border-color:var(--leaf);transform:translateX(4px)}.lvl{justify-self:start;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink);border:1px solid color-mix(in oklab,var(--leaf) 45%,transparent);padding:.3em .75em;border-radius:var(--rad-pill)}.lvl-violet{color:var(--violet-d);border-color:rgb(var(--c-violet-550-rgb) / .4)}@media (max-width:1000px){.built-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:520px){.built-grid{grid-template-columns:1fr}.built{min-height:0}}.zone-dark .tabs{background:var(--night-3);box-shadow:none}.zone-dark .tab[aria-selected=true]{background:var(--leaf);color:var(--c-navy-960)}.zone-dark .tab[aria-selected=true] svg{color:var(--c-navy-960)}.zone-dark .monitor{box-shadow:0 50px 90px -40px rgb(var(--c-black-rgb) / .9),0 0 0 1px rgb(var(--c-white-rgb) / .08) inset,0 0 80px -30px rgb(var(--c-green-350-rgb) / .35)}.cta-band .shell{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap}.cta-band .h2{max-width:16ch}.caps{list-style:none;padding:0;margin-top:clamp(2rem,4vw,3rem);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.caps li{background:var(--bg);padding:1.35rem 1.25rem;display:flex;gap:.7em;align-items:baseline;font-family:var(--f-display);font-stretch:108%;font-weight:600;font-size:var(--fs-16_5);letter-spacing:-.01em;transition:background .3s}.caps li::before{content:"";width:8px;height:8px;flex:none;background:var(--leaf);clip-path:polygon(0 0,100% 50%,0 100%)}.caps li:hover{background:var(--surface)}@media (max-width:900px){.caps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:460px){.caps{grid-template-columns:1fr}}.logos-ink{margin-top:clamp(2rem,4vw,3rem);padding-block:1.75rem;border-block:1px solid var(--line);justify-content:space-between}.logos-ink .logo img{filter:invert(1) brightness(.15)}.regale-hero{padding-block:clamp(4rem,8vw,6.5rem)}.regale-hero h1{font-size:clamp(2.4rem, 5.4vw, 4.4rem);font-weight:800}.choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.choice-card{position:relative;border-radius:var(--r);padding:clamp(1.5rem,3vw,2.25rem);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:.9rem;align-content:start}.choice-card h3{font-size:clamp(1.4rem, 2.4vw, 1.9rem);letter-spacing:-.025em}.choice-card p{color:var(--ink-2);max-width:44ch}.choice-card .btn{justify-self:start;margin-top:.5rem}.zone-light .btn-violet{background:var(--violet-d);color:var(--c-white)}.zone-light .btn-violet:hover{background:#4a45a8}@media (max-width:760px){.choice{grid-template-columns:1fr}}.trust-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.trust{position:relative;border-radius:var(--r);padding:1.5rem 1.4rem;background:var(--surface);border:1px solid var(--line);display:grid;gap:.6rem;align-content:start}.trust svg{width:30px;height:30px;color:var(--leaf-hi);margin-bottom:.4rem;transform:translateZ(30px)}.trust h3{font-size:1.15rem;letter-spacing:-.015em}.trust p{color:var(--ink-2);font-size:var(--fs-15)}@media (max-width:1000px){.trust-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:520px){.trust-grid{grid-template-columns:1fr}}.contact-page{padding-block:clamp(3.5rem,7vw,6rem)}.contact-page h1.h2{font-size:clamp(2.2rem, 4.4vw, 3.6rem);font-weight:800}.trust-clients{margin-top:clamp(2.5rem,5vw,3.5rem);padding-top:2rem;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:clamp(1.5rem,5vw,4rem);flex-wrap:wrap}.careers-sec .benefits{border-top-color:var(--line)}.careers-sec .join{background:var(--panel);border:1px solid var(--line-2)}.ros li{transition:opacity .6s ease,transform .7s var(--ease)}.ros-sec.seq .ros li:not(.hit){opacity:.12;transform:translateY(26px)}.ros-sec.pin{padding-block:0;height:calc(100vh + 110vh);height:calc(100svh + 110svh)}.ros-sec.pin .ros-pin{position:sticky;top:72px;height:calc(100vh - 72px);height:calc(100svh - 72px);display:flex;align-items:center}.ros-sec.pin .ros-pin>.shell{width:100%}.zone-light .ros li.hit .node{background:var(--c-green-50);color:var(--leaf-ink)}.ros-sec.pin .ros h3{font-size:clamp(1.25rem, 1.7vw, 1.55rem)}.ros-sec.pin .ros p{font-size:var(--fs-15_5)}.ros-sec.pin .ros{margin-top:clamp(3rem,6vw,5rem)}.pov{--g:clamp(2.5rem, 5vw, 4.5rem);position:relative;margin-top:clamp(1.75rem,3.5vw,2.75rem)}.pov-sample{position:absolute;right:0;top:0;z-index:3;font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.12em;text-transform:uppercase;color:var(--c-amber-600);background:var(--c-amber-50);border-radius:var(--rad-pill);padding:.3em .8em}.pov-toggle{display:none}.pov-stage{position:relative;container-type:inline-size;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--g);perspective:1800px}.pov-side{margin:0;display:grid;gap:.75rem;align-content:start;min-width:0}.pov-label{height:18px;line-height:18px;display:flex;align-items:center;gap:.6em;white-space:nowrap;font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}.pov-label .dot{width:8px;height:8px;border-radius:50%;background:var(--leaf);flex:none}.pov-customer .pov-label .dot{background:var(--sky)}.pov-label .sub{font-family:var(--f-body);text-transform:none;letter-spacing:0;color:var(--ink-3);font-size:var(--fs-13)}.pov-frame{position:relative;border-radius:var(--rad-16);padding:8px;background:linear-gradient(160deg,var(--c-navy-810),var(--c-navy-900));box-shadow:var(--sh-plate);transition:transform .9s var(--ease)}.pov-seller .pov-frame{transform-origin:100% 50%;transform:rotateY(var(--pt,0deg))}.pov-customer .pov-frame{transform-origin:0 50%;transform:rotateY(calc(var(--pt,0deg) * -1))}.pov-screen{position:relative;aspect-ratio:16/9;border-radius:var(--rad-10);overflow:hidden;background:var(--c-navy-900);color:var(--c-slate-50);container-type:inline-size}.pov-screen>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.pov-notes{margin-top:8px;border-radius:var(--rad-10);background:var(--c-navy-950);border:1px solid rgb(var(--c-slate-300-rgb) / .16);padding:.95rem 1.1rem 1.05rem;min-height:7.25rem}.pov-notes-h{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.45rem;font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.12em;text-transform:uppercase;color:var(--c-slate-400)}.pov-notes-h span:first-child{color:var(--leaf-hi)}.pov-note{color:var(--c-slate-50);font-size:var(--fs-15);line-height:1.5;transition:opacity .25s}.pov-note.swap{opacity:0}.pov-private{margin-top:8px;display:flex;gap:.6em;align-items:center;padding:.8rem .95rem;border-radius:var(--rad-10);border:1px dashed rgb(var(--c-slate-300-rgb) / .28);font-size:var(--fs-13_5);color:var(--c-slate-250)}.pov-private svg{width:18px;height:18px;flex:none;color:var(--sky)}.pov-link{position:absolute;left:50%;width:calc(var(--g) + 24px);z-index:2;pointer-events:none;top:calc(18px + .75rem + 8px + (50cqw - var(--g)/ 2 - 16px) * .28125);transform:translate(-50%,-50%);display:grid;place-items:center}.pov-link::before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1.5px dashed var(--leaf);opacity:.7}.pov-link span{position:relative;display:inline-flex;align-items:center;gap:.35em;white-space:nowrap;font-family:var(--f-mono);font-size:var(--fs-10);letter-spacing:.1em;text-transform:uppercase;padding:.4em .7em;border-radius:var(--rad-pill);background:var(--surface);border:1px solid var(--leaf);color:var(--accent-ink)}.pov-link svg{width:12px;height:12px}.pov-link.flash span{animation:syncflash .7s ease-out}@keyframes syncflash{from{box-shadow:0 0 0 0 rgb(var(--c-green-350-rgb) / .6)}to{box-shadow:0 0 0 12px rgb(var(--c-green-350-rgb) / 0)}}.pov-controls{display:flex;align-items:center;gap:.9rem 1.1rem;margin-top:1.5rem;flex-wrap:wrap}.pov-prev{width:46px;height:46px;padding:0;font-size:var(--fs-18)}.pov-next:disabled,.pov-prev:disabled{opacity:.4;cursor:default;transform:none}.pov-dots{list-style:none;padding:0;display:flex;gap:6px}.pov-dots button{appearance:none;border:0;background:0 0;padding:12px 0;cursor:pointer;width:26px;transition:width .35s var(--ease)}.pov-dots button::before{content:"";display:block;height:5px;border-radius:var(--rad-4);background:var(--line-2);transition:background .3s}.pov-dots button:hover::before{background:var(--ink-3)}.pov-dots button.done::before{background:color-mix(in oklab,var(--leaf) 45%,var(--line-2))}.pov-dots button[aria-current=step]{width:42px}.pov-dots button[aria-current=step]::before{background:var(--leaf)}.pov-title{flex:1;min-width:12ch;display:flex;align-items:baseline;gap:.7em}.pov-num{font-family:var(--f-mono);font-size:var(--fs-12);letter-spacing:.08em;color:var(--ink-3);font-variant-numeric:tabular-nums}.pov-name{font-family:var(--f-display);font-stretch:108%;font-weight:600;font-size:1.1rem;letter-spacing:-.01em}@media (max-width:900px){.pov-sample{position:static;display:inline-block;margin-bottom:.9rem}.pov-toggle{display:inline-flex;gap:2px;padding:3px;margin-bottom:1rem;border:1px solid var(--line-2);border-radius:var(--rad-pill);background:var(--surface)}.pov-toggle button{appearance:none;border:0;background:0 0;color:var(--ink-2);font-weight:600;font-size:var(--fs-14);padding:.55em 1em;border-radius:var(--rad-pill);cursor:pointer}.pov-toggle button[aria-pressed=true]{background:var(--night-2);color:var(--c-white)}.zone-dark .pov-toggle button[aria-pressed=true]{background:var(--leaf);color:var(--c-navy-960)}.pov-stage{grid-template-columns:1fr;perspective:none}.pov-link{display:none}.pov[data-view=customer] .pov-seller,.pov[data-view=seller] .pov-customer{display:none}.pov-frame{transform:none!important}.pov-title{order:-1;flex-basis:100%}.pov-controls{gap:.75rem .6rem}.pov-controls .pov-next{margin-left:auto;padding-inline:1.1em}.pov-dots{gap:4px}.pov-dots button{width:16px}.pov-dots button[aria-current=step]{width:28px}}.pm{position:absolute;inset:0;display:grid;grid-template-rows:auto 1fr;font-size:clamp(6px, 1.9cqw, 13px)}.pm-bar{display:flex;align-items:center;gap:.55em;padding:.7em 1em;background:var(--c-navy-850);border-bottom:1px solid rgb(var(--c-slate-300-rgb) / .14)}.pm-bar i{width:.75em;height:.75em;border-radius:50%;background:var(--c-navy-750)}.pm-url{margin-left:.8em;flex:1;max-width:26em;background:var(--c-navy-900);border-radius:var(--rad-pill);padding:.25em 1em;color:var(--c-slate-400);font-family:var(--f-mono);font-size:.9em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pm-body{position:relative;display:grid;grid-template-columns:16% 1fr;min-height:0}.pm-side{background:var(--c-navy-850);padding:1.3em .9em;display:grid;gap:.9em;align-content:start}.pm-side span{height:.7em;border-radius:var(--rad-4);background:var(--c-navy-800);transition:background .4s}.pm-side span.on{background:var(--leaf)}.pm-main{padding:1.3em 1.4em 0;display:grid;gap:.9em;grid-template-rows:auto auto minmax(0,1fr);min-width:0}.pm-h{height:1.2em;width:34%;border-radius:var(--rad-4);background:var(--c-navy-750)}.pm-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8em}.pm-cards div{border-radius:var(--rad-8);background:var(--c-navy-860);border:1px solid rgb(var(--c-slate-300-rgb) / .12);padding:.75em .9em;display:grid;gap:.15em;transition:border-color .4s}.pm-cards b{font-family:var(--f-display);font-stretch:112%;font-size:1.9em;line-height:1;letter-spacing:-.02em;transition:color .4s}.pm-cards small{color:var(--c-slate-250);font-size:.85em}.pm-cards div.bad{border-color:rgb(var(--c-red-350-rgb) / .55)}.pm-cards div.bad b{color:#ff8a7e}.pm-cards div.good{border-color:rgb(var(--c-green-210-rgb) / .55)}.pm-cards div.good b{color:var(--leaf-hi)}.pm-chart{border-radius:var(--rad-8) var(--rad-8) 0 0;background:var(--c-navy-860);border:1px solid rgb(var(--c-slate-300-rgb) / .12);border-bottom:0;display:flex;align-items:flex-end;justify-content:space-around;gap:3%;padding:1.2em 1.4em 0;background-image:repeating-linear-gradient(to top,rgb(var(--c-slate-300-rgb) / .08) 0 1px,transparent 1px 25%)}.pm-chart b{flex:1;max-width:3.2em;border-radius:var(--rad-4) var(--rad-4) 0 0;background:var(--c-blue-650);transition:height .8s var(--ease),background .5s}.pm-chart b.red{background:var(--c-red-350)}.pm-chart.green b{background:linear-gradient(to top,var(--c-green-510),var(--leaf-hi))}.pm-modal{position:absolute;left:50%;top:52%;width:44%;transform:translate(-40%,-50%) scale(.96);opacity:0;pointer-events:none;background:var(--c-white);color:var(--c-slate-900);border-radius:var(--rad-10);padding:1em 1.2em 1.1em;box-shadow:0 20px 40px -12px rgb(var(--c-black-rgb) / .6);transition:opacity .35s,transform .45s var(--ease);display:grid;gap:.6em}.pm-modal.open{opacity:1;transform:translate(-40%,-50%) scale(1)}.pm-modal b{font-family:var(--f-display);font-stretch:110%;font-size:1.25em}.pm-modal .row{height:1.9em;border-radius:var(--rad-6);background:var(--c-gray-60);display:flex;align-items:center;padding-inline:0.6em;gap:.4em;color:var(--c-slate-600);font-size:.9em}.pm-modal .chip{background:var(--c-green-50);color:var(--c-green-600);border-radius:var(--rad-pill);padding:.1em .7em;font-weight:600}.pm-modal .go{justify-self:end;background:var(--c-green-500);color:var(--c-white);border-radius:var(--rad-pill);padding:.35em 1.1em;font-weight:600;font-size:.9em}.pm-hot{position:absolute;width:2.4em;height:2.4em;margin:-1.2em 0 0 -1.2em;border-radius:50%;transition:left .6s var(--ease),top .6s var(--ease);z-index:2}.pm-hot::after,.pm-hot::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--leaf-hi)}.pm-hot::after{animation:ping 1.8s var(--ease) infinite}.pm-tip{position:absolute;max-width:16em;z-index:3;background:var(--c-white);color:var(--c-slate-900);border-radius:var(--rad-8);padding:.7em .9em;box-shadow:var(--sh-dark-md);line-height:1.35;transition:left .6s var(--ease),right .6s var(--ease),top .6s var(--ease),opacity .25s}.pm-tip small{display:block;font-family:var(--f-mono);color:var(--c-green-600);font-size:.8em;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.25em}.work-head .tabs{justify-self:start}.hero{min-height:0;padding-block:clamp(3.5rem,7vw,5.5rem) clamp(3rem,6vw,5rem);align-items:start}.hero::after{display:none}.hero-center{display:grid;justify-items:center;text-align:center}.hero-copy{display:grid;justify-items:center;max-width:52rem}.hero .lede{margin-inline:auto;max-width:40rem}.hero-cta{justify-content:center}.hero h1 .ln{white-space:normal}.hero-band{position:relative;width:100%;height:clamp(420px,44vw,700px);margin-top:clamp(1rem,2.5vw,2rem);pointer-events:none}.hero-proof{justify-content:center;margin-top:0}.hero-proof div{justify-items:center}.hero-proof span{max-width:20ch}.hero-fallback{position:absolute;inset:0;z-index:0}.hero.no-gl .hero-fallback{display:grid;place-items:center}.hero-fallback .fb-mark{position:static;transform:none;height:100%;width:auto;aspect-ratio:205/200}@media (max-width:900px){.hero{padding-block:3rem 3rem}.hero-band{height:clamp(300px,88vw,460px)}.hero-fallback .fb-mark{width:auto;opacity:1}}.page-head .shell{display:grid;justify-items:center;text-align:center}.page-head h1{max-width:15ch;margin-inline:auto}.page-head .lede{margin-inline:auto}.deco{right:clamp(.5rem,3vw,3rem)}@media (max-width:1200px){.deco{opacity:.3}}.regale-head{background:radial-gradient(50rem 30rem at 50% 30%,rgb(var(--c-violet-550-rgb) / .28),transparent 60%),var(--night)}.regale-head .eyebrow::before{background:var(--violet)}.regale-head h1 em{font-style:normal;color:var(--c-violet-250)}.regale-head .regale-cta{justify-content:center}.contact-page{padding-top:clamp(2.5rem,5vw,4rem)}.contact-page .h3{margin-bottom:.25rem}.proof-label{max-width:38ch}.values-ros .ros li{gap:.8rem}.ros-shot{margin:0;border-radius:var(--rad-12);overflow:hidden;aspect-ratio:4/3;border:1px solid var(--line);background:var(--surface-2)}.ros-shot img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.values-ros li.hit .ros-shot img{transform:scale(1.03)}.values-ros .ros h3{font-size:1.15rem}.values-ros .ros p{font-size:var(--fs-14_5)}.zone-light .ros .node{background:var(--c-white);color:var(--leaf-ink);box-shadow:var(--sh-light-sm)}.zone-light .ros li.hit .node{background:var(--c-green-50);border-color:var(--leaf)}@media (max-width:980px){.values-ros .ros li{grid-template-columns:56px minmax(0,1fr)}.values-ros .ros .node{grid-row:1/span 3}.values-ros .ros-shot{max-width:22rem}}.page-head.has-scene{padding-block:clamp(2.5rem,5vw,4rem)}.page-head.has-scene .shell.ph-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:center;justify-items:stretch;text-align:left}.ph-copy{display:grid;justify-items:start;gap:0;position:relative;z-index:1}.page-head.has-scene h1{margin-inline:0;max-width:14ch}.page-head.has-scene .lede{margin-inline:0}.page-head.has-scene .regale-cta{justify-content:flex-start;margin-top:1.75rem}.ph-scene{position:relative;height:clamp(340px,36vw,520px)}.ph-scene::before{content:"";position:absolute;inset:12%;border-radius:50%;z-index:-1;background:radial-gradient(closest-side,rgb(var(--c-green-350-rgb) / .16),transparent 72%);filter:blur(12px)}.regale-head .ph-scene::before{background:radial-gradient(closest-side,rgb(var(--c-violet-400-rgb) / .22),transparent 72%)}.ph-scene canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.ph-fallback{display:none;position:absolute;inset:0;place-items:center}.ph-fallback img{height:62%;width:auto;max-width:none;aspect-ratio:auto;object-fit:cover;object-position:left center;clip-path:inset(0 68% 0 0);transform:translateX(34%)}.ph-scene.no-gl canvas{display:none}.ph-scene.no-gl .ph-fallback{display:grid}@media (max-width:900px){.page-head.has-scene .shell.ph-grid{grid-template-columns:1fr}.ph-scene{height:clamp(260px,78vw,360px);margin-top:-.5rem}}.proof-label .partner{display:block;margin-top:.45em;color:var(--accent-ink)}.zone-dark .proof-label .partner{color:var(--leaf)}.partner-line{font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}.proj-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}.proj{position:relative;border-radius:var(--r);padding:1.5rem 1.4rem 1.4rem;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);display:grid;gap:.8rem;grid-template-rows:auto auto 1fr auto;min-height:15rem;transition:border-color .3s,transform .6s var(--ease),box-shadow .4s}.proj:hover{border-color:var(--accent)}.proj-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.proj-client{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.proj h3{font-size:1.28rem;letter-spacing:-.02em;line-height:1.12}.proj p{color:var(--ink-2)}.proj-go{display:inline-flex;align-items:center;gap:.4em;font-weight:600;color:var(--accent-ink)}.proj-go svg{width:1em;height:1em}@media (max-width:1000px){.proj-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:520px){.proj-grid{grid-template-columns:1fr}.proj{min-height:0}}.belief{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(1.5rem,5vw,5rem);align-items:start;margin-bottom:clamp(2.5rem,6vw,4.5rem)}.belief-copy{display:grid;gap:1rem}.belief-copy p:not(.lede){color:var(--ink-2);max-width:60ch}@media (max-width:860px){.belief{grid-template-columns:1fr}}.form-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem 1.5rem;flex-wrap:wrap}.form-legal{font-size:var(--fs-13);color:var(--ink-3);max-width:40ch}.foot-base a,.form-legal a{color:inherit;text-decoration:underline;text-underline-offset:3px}.foot-base a:hover,.form-legal a:hover{color:var(--leaf)}.zone-dark .partner-line{color:var(--leaf)}.proj-tags{flex-direction:column;align-items:flex-start;gap:.6rem}.hero{background:radial-gradient(64rem 38rem at 50% 66%,rgb(var(--c-blue-650-rgb) / .42),transparent 70%),linear-gradient(180deg,var(--c-navy-900) 0,var(--c-navy-850) 100%)}.hero::before{display:none}.btn-primary{box-shadow:0 6px 16px -10px rgb(var(--c-green-350-rgb) / .5)}.dive{--a:0;--b:0;position:relative;height:260vh;height:260svh;background:radial-gradient(60rem 36rem at 75% 40%,rgb(var(--c-blue-650-rgb) / .35),transparent 70%),var(--night)}.dive-pin{position:sticky;top:72px;height:calc(100vh - 72px);height:calc(100svh - 72px);overflow:hidden;isolation:isolate}.dive-pin::after{content:"";position:absolute;left:0;right:0;bottom:0;height:22%;z-index:1;pointer-events:none;background:linear-gradient(to top,var(--bg),transparent)}.dive .dive-scene{position:absolute;inset:0;height:auto;z-index:0}.dive .dive-scene::before{display:none}.dive-grid{position:relative;z-index:2;height:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:center}.dive-slot{height:clamp(340px,36vw,520px)}.dive h1{font-size:clamp(2.4rem, 5.4vw, 4.4rem);font-weight:800;font-stretch:114%;letter-spacing:-.035em;line-height:.98;max-width:14ch;margin-block:1.1rem 1.2rem}.dive .lede{color:var(--c-slate-150)}.dive-a{opacity:calc(1 - var(--a));filter:blur(calc(var(--a) * 10px));transform:translateY(calc(var(--a) * -28px))}.dive-b{position:absolute;inset:0;z-index:2;display:grid;align-items:end;padding-bottom:clamp(3rem,9vh,6rem);pointer-events:none;opacity:var(--b);background:linear-gradient(to top,rgb(var(--c-navy-950-rgb) / .9) 0,rgb(var(--c-navy-950-rgb) / .55) 40%,rgb(var(--c-navy-950-rgb) / 0) 75%)}.dive-b .shell{display:flex;justify-content:flex-end}.dive-b-copy{max-width:34rem;display:grid;gap:1rem;filter:blur(calc((1 - var(--b)) * 10px));transform:translateY(calc((1 - var(--b)) * 28px))}.projects-sec{padding-top:clamp(1rem,3vw,2rem)}@media (max-width:900px){.dive{height:220vh;height:220svh}.dive-grid{grid-template-columns:1fr;align-content:center;gap:0}.dive-slot{height:clamp(240px,70vw,340px)}.dive-b .shell{justify-content:flex-start}}@media (prefers-reduced-motion:reduce){.dive{height:auto}.dive-pin{position:relative;top:0;height:auto}.dive-grid{height:auto;padding-block:clamp(2.5rem,5vw,4rem)}.dive-a,.dive-b-copy{opacity:1;filter:none;transform:none}.dive-b{position:relative;inset:auto;opacity:1;background:0 0;padding-block:0 clamp(2rem,4vw,3rem)}.dive-b .shell{justify-content:flex-start}}.record{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:900px){.record{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:640px){.record{grid-template-columns:1fr}}.foot a .ext,.nav-links a .ext{width:.8em;height:.8em;margin-left:.3em;vertical-align:-.05em;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.regale-choice{margin-top:clamp(3rem,6vw,4.5rem);padding-top:clamp(2rem,4vw,3rem);border-top:1px solid var(--line)}.regale-choice .h3{font-size:clamp(1.5rem, 2.6vw, 2rem);letter-spacing:-.025em}.regale-choice .choice-card .btn{justify-self:start}.zone-dark .lvl-violet{color:var(--c-violet-250);border-color:rgb(var(--c-violet-250-rgb) / .45)}.foot a:has(.ext),.nav-links a:has(.ext){display:inline-flex;align-items:center;white-space:nowrap}.regale-sec .choice-card .lvl:not(.lvl-violet){color:var(--leaf-hi);border-color:color-mix(in oklab,var(--leaf) 45%,transparent)}.ways{margin-top:1.75rem;display:grid;border-top:1px solid var(--line)}.ways-h{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding-block:1rem 0.25rem}.way{display:flex;align-items:center;justify-content:space-between;gap:1rem 1.5rem;flex-wrap:wrap;padding-block:1rem;border-bottom:1px solid var(--line)}.way>div{display:grid;gap:.35rem;justify-items:start;min-width:0;flex:1 1 15rem}.way b{font-family:var(--f-display);font-stretch:112%;font-size:1.15rem;letter-spacing:-.015em}.way .way-p{font-size:var(--fs-14_5);color:var(--ink-2);line-height:1.5}.way .btn{padding:.7em 1.15em;font-size:var(--fs-14_5);white-space:nowrap}.way .btn svg{width:1em;height:1em}.regale-sec .way .lvl:not(.lvl-violet){color:var(--leaf-hi);border-color:color-mix(in oklab,var(--leaf) 45%,transparent)}@media (max-width:900px){#regale .layers-scene{height:220px}}.dive-side .dive-b{display:block;padding:0;background:0 0}.dive-side .dive-b .shell{height:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:center;justify-content:stretch}.dive-slot-b{height:min(62vh,540px);height:min(62svh,540px)}.dive-side .dive-b-copy p:not(.lede):not(.eyebrow){color:var(--ink-2);max-width:52ch}@media (max-width:900px){.dive-side .dive-b .shell{grid-template-columns:1fr;align-content:center;gap:1.25rem;justify-content:stretch}.dive-slot-b{height:clamp(200px,36svh,320px)}}@media (prefers-reduced-motion:reduce){.dive-slot-b{display:none}}.dive:not(.dive-side) .dive-scene{opacity:calc(1 - var(--b) * .5)}
/* ---- Home hero: copy left, globe right, rotating headline (from V2) ---- */
.hero.hero-split{min-height:min(52rem,calc(100svh - 72px));align-items:center}
.hero-split .hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.5rem,4vw,3rem);align-items:center}
.hero-split .hero-copy{max-width:41rem;justify-items:start;text-align:left}
.hero-split .lede{margin-inline:0}
.hero-split .hero-cta{justify-content:flex-start}
.hero-split h1{font-size:clamp(2.4rem, 4.4vw, 3.9rem)}
.hero-split h1 .ln{white-space:normal}
.hero-split h1 .ln>.rot{display:inline-grid;vertical-align:top;justify-items:start;white-space:nowrap}
.rot>span{grid-area:1/1;color:var(--leaf-hi);opacity:0;transform:translateY(.32em);transition:opacity .55s var(--ease),transform .7s var(--ease)}
.rot>span.on{opacity:1;transform:none}
.rot>span.out{opacity:0;transform:translateY(-.32em);transition:opacity .4s ease,transform .55s var(--ease)}
.hero-split .hero-band{height:auto;aspect-ratio:1/1;width:100%;max-width:32rem;margin-top:0;justify-self:center}
.hero-split .hero-fallback .fb-mark{height:auto;width:72%}
@media (min-width:901px){.hero.hero-split::after{display:block;background:linear-gradient(90deg,rgb(var(--c-navy-950-rgb) / .7) 0,rgb(var(--c-navy-950-rgb) / .35) 38%,rgb(var(--c-navy-950-rgb) / 0) 58%)}}
@media (max-width:900px){.hero.hero-split{min-height:0}.hero-split .hero-grid{grid-template-columns:1fr}.hero-split .hero-band{max-width:20rem;order:-1;margin-bottom:-1rem}}

/* ---- Contact: calm hero. No grid floor, no glow behind the mark ---- */
.page-head.calm{background:radial-gradient(50rem 30rem at 80% 40%,rgb(var(--c-blue-350-rgb) / .1),transparent 62%),var(--night)}
.page-head.calm::before,.page-head.calm .ph-scene::before{display:none}

/* ---- Home intro: copy waits while the globe plays centre stage ---- */
.hero-split .hero-copy{transition:opacity .9s var(--ease),transform .9s var(--ease)}
.hero.intro .hero-copy{opacity:0;transform:translateY(14px)}
.hero.intro .hero-copy *{animation-play-state:paused}
.hero.intro::after{opacity:0}
.hero.hero-split::after{transition:opacity 1.2s ease}

/* ---- Contact: "How the process flows" ---- */
.flow-title{margin-top:.9rem;font-size:clamp(1.9rem, 3.4vw, 2.7rem)}
.flow-steps{list-style:none;padding:0;margin:2rem 0 0;counter-reset:s;position:relative}
.flow-steps li{position:relative;counter-increment:s;padding:0 0 1.6rem 3.4rem;min-height:2.4rem;font-size:var(--fs-17);color:var(--ink-2)}
.flow-steps li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:-.2rem;width:2.3rem;height:2.3rem;border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-size:var(--fs-12);color:var(--leaf-hi);background:var(--night);border:1.5px solid rgb(var(--c-green-350-rgb) / .55);z-index:1}
.flow-steps li::after{content:"";position:absolute;left:calc(1.15rem - .75px);top:2.1rem;bottom:-.1rem;width:1.5px;background:linear-gradient(rgb(var(--c-green-350-rgb) / .55),rgb(var(--c-green-350-rgb) / .15))}
.flow-steps li:last-child{padding-bottom:0}
.flow-steps li:last-child::after{display:none}
.flow-steps b{display:block;color:var(--ink);font-weight:650;line-height:1.35}
.flow-steps li>span{display:block;margin-top:.25rem;font-size:var(--fs-15);color:var(--ink-3,var(--c-slate-310))}
.flow-steps .fork{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.flow-steps .branch{display:block;border:1px solid var(--line-2);border-radius:var(--rad-12);padding:.85rem 1rem;background:rgb(var(--c-white-rgb) / .03)}
.flow-steps .branch:first-child{border-color:rgb(var(--c-green-350-rgb) / .5)}
.flow-steps .tag{display:block;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.08em;text-transform:uppercase;color:var(--leaf-hi);margin-bottom:.35rem}
.flow-steps .branch:last-child .tag{color:var(--c-slate-310)}
@media (max-width:520px){.flow-steps .fork{grid-template-columns:1fr}}

/* ===================================================================
   Focused version additions
   1. .hero-clients  client logos inside the hero, above the fold
   2. .deliv         the deliverable detail blocks on Services
   =================================================================== */
.hero-clients{position:relative;z-index:2;align-self:end;width:100%;margin-top:clamp(1.75rem,3.5vw,2.75rem);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.hc-row{padding-top:clamp(1.1rem,2.2vw,1.6rem);border-top:1px solid rgb(var(--c-slate-300-rgb) / .18);display:flex;align-items:center;gap:clamp(1.25rem,5vw,3.5rem);flex-wrap:wrap;justify-content:space-between}
.hero-clients .hc-label{margin:0;font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);line-height:1.5;max-width:38ch}
.hero-clients .hc-label .partner{display:block;margin-top:.45em;color:var(--leaf)}
.hero-clients .logo{height:40px}
.hero-clients .logo img{height:34px}
.hero-clients .logo img.sm{height:24px}
.hero.intro .hero-clients{opacity:0;transform:translateY(14px)}
@media (max-width:760px){.hc-row{gap:1.1rem;justify-content:flex-start}.hero-clients .logos{gap:4rem}}

.deliv-list{display:grid;gap:clamp(1rem,2vw,1.5rem);margin-top:clamp(2rem,4vw,3rem)}
.deliv{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(1.25rem,3vw,2.75rem);padding:clamp(1.5rem,3vw,2.25rem);border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);align-items:start}
.deliv-head h3{font-size:clamp(1.35rem, 2.4vw, 1.8rem);letter-spacing:-.025em;margin-top:.6rem}
.deliv-head p{color:var(--ink-2);margin-top:.7rem;font-size:var(--fs-15_5);max-width:40ch}
.deliv-facts{display:grid;gap:1rem;margin:0}
.deliv-facts div{display:grid;grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);gap:.2rem 1.25rem;padding-top:1rem;border-top:1px solid var(--line)}
.deliv-facts div:first-child{padding-top:0;border-top:0}
.deliv-facts dt{font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding-top:.25em}
.deliv-facts dd{margin:0;color:var(--ink-2);font-size:var(--fs-15_5)}
.deliv-note{margin-top:clamp(1.5rem,3vw,2.25rem);color:var(--ink-2);font-size:var(--fs-15_5);max-width:62ch}
@media (max-width:900px){.deliv{grid-template-columns:1fr;gap:1.25rem}.deliv-facts div{grid-template-columns:1fr;gap:.3rem}}

/* v1.1: the process band, shared by Home ("How it starts.") and Services
   ("How an engagement runs."). Built on the same grid as .caps. */
.flowband{list-style:none;padding:0;margin-top:clamp(2rem,4vw,3rem);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.flowband li{background:var(--bg);padding:1.4rem 1.35rem 1.5rem;display:grid;gap:.4rem;align-content:start}
.flowband .n{font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;color:var(--ink-3)}
.flowband b{font-family:var(--f-display);font-stretch:108%;font-weight:600;font-size:var(--fs-17);letter-spacing:-.015em}
.flowband p{margin:0;color:var(--ink-2);font-size:var(--fs-14_5);line-height:1.5}
@media (max-width:900px){.flowband{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.flowband{grid-template-columns:1fr}}
.page-head .hero-clients{align-self:auto}
.page-head .shell.hc-row{display:flex;align-items:center;justify-items:stretch;text-align:left;gap:clamp(1.25rem,5vw,3.5rem);flex-wrap:wrap;justify-content:space-between}

/* v1.2: the "and everything around them" list, now inside .deliv-sec */
.caps-block{margin-top:clamp(2.5rem,5vw,3.5rem);padding-top:clamp(2rem,4vw,2.75rem);border-top:1px solid var(--line)}
.caps-h{font-size:clamp(1.25rem, 2.2vw, 1.6rem);letter-spacing:-.02em;margin-top:.5rem}
.caps-block .caps{margin-top:clamp(1.25rem,2.5vw,1.75rem);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr))}

/* v1.4: About, Careers and Contact page heads were 647px because the 3D scene
   is 518px, while their copy is only ~253px. That left a 180px sliver of the
   next section at a 900px viewport - too little to read, too much to look
   deliberate. Services keeps the full height: its client strip earns it. */
@media (min-width:900px){
  .page-head.compact .ph-scene{height:clamp(300px,26vw,380px)}
}

/* v1.5: where a dark section follows a dark page head (Services, Contact) the
   step from --night to --night-2 alone is too quiet to read as a boundary, so
   the join gets a hairline. Pages whose first section is light never match. */
.page-head + .zone-dark{border-top:1px solid var(--line-2)}

/* v1.6: long-form legal/prose pages */
.prose-wrap{display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}
.prose-toc{position:sticky;top:96px}
.prose-toc ol{list-style:none;padding:0;margin:.9rem 0 0;display:grid;gap:.55rem;counter-reset:toc}
.prose-toc li{counter-increment:toc;font-size:var(--fs-14)}
.prose-toc li::before{content:counter(toc,decimal-leading-zero);font-family:var(--f-mono);font-size:var(--fs-11);color:var(--ink-3);margin-right:.6rem}
.prose-toc a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid transparent}
.prose-toc a:hover{color:var(--ink);border-bottom-color:var(--accent)}
.prose{max-width:68ch}
.prose h2{font-size:clamp(1.15rem, 2vw, 1.45rem);letter-spacing:-.02em;margin:2.4rem 0 .6rem;scroll-margin-top:96px}
.prose h2:first-of-type{margin-top:1.6rem}
.prose h3{font-size:var(--fs-17);margin:1.6rem 0 .4rem}
.prose p{color:var(--ink-2);margin:0 0 1rem;line-height:1.7}
.prose ul,.prose ol{color:var(--ink-2);margin:0 0 1rem;padding-left:1.25rem;display:grid;gap:.45rem;line-height:1.7}
.prose a{color:var(--ink-green);text-underline-offset:3px}
.prose-meta{font-family:var(--f-mono);font-size:var(--fs-12);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.prose-flag{border-left:3px solid var(--accent);background:var(--surface);border-radius:var(--r-sm,6px);
  padding:1rem 1.15rem;font-size:var(--fs-14_5);color:var(--ink-2);margin-bottom:1.6rem}
.prose-flag b{color:var(--ink)}
.todo,.todo-inline{color:var(--ink-3);font-style:italic}
.todo{border-left:2px dashed var(--line-2);padding-left:.9rem}
@media (max-width:900px){.prose-wrap{grid-template-columns:1fr}.prose-toc{position:static}}

/* Regale lock-up on the Services page's "Regale by 3Sharp" band.
   The white horizontal SVG sits straight on the navy - no tile, no plate.
   White on #0A1628 is 18.4:1, and an SVG stays sharp at any size.
   NOTE: the vendor's "White" lock-up ships with a full-size black artboard
   rectangle baked in, which would have rendered as a black box here. The file
   in use has that one <rect> removed and nothing else; the untouched
   originals are all in source-assets/regale-logos/, OUTSIDE site/ so they
   are not shipped or embedded into the single-file builds.
   assets/regale/regale-logomark-white.svg is the mark on its own, if this
   should ever become a badge. */
.regale-lockup{display:flex;width:fit-content;margin:0 0 1rem}
.regale-lockup img{display:block;width:164px;height:auto}
@media (max-width:640px){.regale-lockup img{width:136px}}

/* The three work panels must start at the same distance below the tab row.
   .monitor-stage (the self-guided and video panels) already had this; the
   SimDemo panel's wrapper had no top margin, so it sat flush against the
   tabs while the other two did not. Same value, one place. */
.work-panel > .stage-wide.live-inset{margin-top:clamp(2rem,4vw,3rem)}

/* v3.0: .prose-flag was written for the privacy page, where it opens the
   article. On the Services placeholder it follows a section lede and needs
   room above it. */
#process .prose-flag{margin-top:clamp(1.75rem,3.5vw,2.5rem)}

/* ===================================================================
   EXAMPLES ON SERVICES - v2.2, step 1
   Each deliverable card gains a third column holding a still of its
   example; clicking it opens that example over the page, so the card
   list underneath never moves. Mockup variant B4.
   STEP 1 ships the layout and the overlay with PLACEHOLDER content.
   Step 2 puts the real SimDemo, DTC page and video inside .ex-modal-body.
   Everything here is prefixed .ex- and none of those names existed in
   this stylesheet before.
   =================================================================== */
.deliv-sec .deliv{grid-template-columns:minmax(0,.78fr) minmax(0,1fr) minmax(0,.8fr)}
.ex-col{display:grid;gap:.8rem;align-content:start}
.ex-cap{margin:0;color:var(--ink-3);font-size:var(--fs-13_5)}
/* The example slot: three glass panes in perspective, one accent per
   deliverable. Replaced the screenshot thumbnails in v2.3. Since v3.9.21
   each card's arrangement hints at its deliverable (see below); the glass
   styling and the accent colour are still shared.
   Every class here is prefixed .ex- except the k-* accent switches; .dot was
   already taken by the site, which is why the glow is .ex-dot. */
.ex-world{position:absolute;inset:0 0 20% 0;z-index:2;perspective:900px;display:grid;place-items:center}
/* the tilt lives in two registered properties so the play arrow can read
   the same turn and undo it, and both animate together on hover */
@property --ex-rx{syntax:"<angle>";inherits:true;initial-value:0deg}
@property --ex-rz{syntax:"<angle>";inherits:true;initial-value:0deg}
.ex-stack{position:relative;width:62%;height:64%;transform-style:preserve-3d;
  --ex-rx:8deg;--ex-rz:-3deg;
  transform:rotateX(var(--ex-rx)) rotateZ(var(--ex-rz));transition:--ex-rx .5s var(--ease),--ex-rz .5s var(--ease)}
.ex-still:hover .ex-stack,.ex-still:focus-visible .ex-stack{--ex-rx:0deg;--ex-rz:0deg}
.ex-pane{position:absolute;inset:0;border-radius:var(--rad-10);border:1px solid rgb(var(--c-slate-300-rgb) / .32);
  background:linear-gradient(150deg,color-mix(in oklab,var(--acc) 13%,transparent),rgb(var(--c-slate-300-rgb) / .07));
  box-shadow:0 18px 30px -22px rgb(var(--c-black-rgb) / .9)}
.ex-pane:nth-child(1){transform:translateZ(0)}
.ex-pane:nth-child(2){transform:translateZ(26px)}
.ex-pane:nth-child(3){transform:translateZ(52px);
  background:linear-gradient(150deg,color-mix(in oklab,var(--acc) 30%,transparent),color-mix(in oklab,var(--acc) 8%,transparent));
  border-color:color-mix(in oklab,var(--acc) 55%,transparent)}
.ex-line{position:absolute;left:9%;right:9%;top:12%;height:5px;border-radius:var(--rad-4);background:rgb(var(--c-slate-50-rgb) / .22)}
.ex-line:nth-of-type(2){top:30%;right:34%}
.ex-line:nth-of-type(3){top:48%;right:22%}
/* v3.9.21: each card's panes now hint at the deliverable itself, in the same
   glass style. Interactive demo = presenter view beside the customer view.
   Direct to customer = a demo embedded in a web page. Demo video = a frame
   with a play arrow lifted off it. */
.ex-sim .ex-pane{width:47%}
.ex-sim .ex-pane:nth-child(1){inset:0 auto 0 0;transform:translateZ(14px)}
.ex-sim .ex-pane:nth-child(2){inset:0 0 0 auto;transform:translateZ(14px);
  background:linear-gradient(150deg,color-mix(in oklab,var(--acc) 30%,transparent),color-mix(in oklab,var(--acc) 8%,transparent));
  border-color:color-mix(in oklab,var(--acc) 55%,transparent)}
.ex-dtc .ex-pane:nth-child(1){transform:translateZ(0)}
.ex-dtc .ex-pane:nth-child(1) .ex-line:nth-of-type(n+2){right:62%}
.ex-dtc .ex-pane:nth-child(2){inset:auto;left:42%;top:28%;width:50%;height:58%;transform:translateZ(34px);
  background:linear-gradient(150deg,color-mix(in oklab,var(--acc) 30%,transparent),color-mix(in oklab,var(--acc) 8%,transparent));
  border-color:color-mix(in oklab,var(--acc) 55%,transparent)}
.ex-dtc .ex-pane:nth-child(2) .ex-line{top:18%}
.ex-dtc .ex-pane:nth-child(2) .ex-line:nth-of-type(2){top:40%}
.ex-vid .ex-pane{transform:translateZ(0)}
.ex-vid .ex-pane .ex-line{top:auto;bottom:12%;right:9%}
/* turned back by the stack's own --ex-rz, so the arrow points right at
   any tilt, including mid-hover */
.ex-tri{position:absolute;left:30%;top:14%;width:40%;height:72%;overflow:visible;transform:translateZ(40px) rotateZ(calc(var(--ex-rz) * -1))}
.ex-tri path{fill:color-mix(in oklab,var(--acc) 30%,transparent);stroke:color-mix(in oklab,var(--acc) 60%,transparent);
  stroke-width:3;stroke-linejoin:round}
.ex-dot{position:absolute;right:11%;bottom:30%;z-index:3;width:14px;height:14px;border-radius:50%;
  background:var(--acc);box-shadow:0 0 22px 6px color-mix(in oklab,var(--acc) 45%,transparent)}
/* The accent lives on the CARD, not the slot, so the "Presented live" /
   "Sent to the buyer" / "Produced" pill above the heading matches the artwork
   beside it. Two values per deliverable:
     --acc      the bright colour, for the glass panes, the glow and the border
     --acc-ink  a darkened version of it, for TEXT on the white card
   The bright sky and amber are 2.59:1 and 2.22:1 on white - nowhere near
   legible as small text - so they cannot double as the pill colour. The inked
   versions sit in the same contrast band as the existing green so the three
   pills carry equal weight: green 6.0:1, sky 6.4:1, amber 5.8:1. */
/* --acc-ink is the TEXT colour and it has to follow the ground the card sits
   on. The defaults below are tuned for a light card (the Services page, where
   this section used to live): 6.0 / 6.4 / 5.8 against white.
   In v3.0 the section moved to the home page, which is zone-dark - and on the
   dark card those same values measure 2.37 / 2.21 / 2.47, i.e. unreadable. So
   the dark zone gets light tints instead, picked to sit in their own matched
   band: 8.5 / 7.9 / 7.9 against #1A2B47. */
.deliv-sec .deliv.k-sim{--acc:var(--leaf);--acc-ink:var(--leaf-ink)}
.deliv-sec .deliv.k-dtc{--acc:var(--c-green-400);--acc-ink:var(--c-green-600)}
.deliv-sec .deliv.k-vid{--acc:var(--c-amber-300);--acc-ink:var(--c-amber-600)}
/* NOTE the compound selectors: the section carries BOTH classes itself
   (class="zone-dark alt deliv-sec"), so a descendant selector never matches.
   Both forms are listed so this keeps working if the section is ever nested
   inside a zone wrapper instead of being one. */
.zone-dark.deliv-sec .deliv.k-sim,.zone-dark .deliv-sec .deliv.k-sim{--acc-ink:var(--leaf-hi)}
.zone-dark.deliv-sec .deliv.k-dtc,.zone-dark .deliv-sec .deliv.k-dtc{--acc-ink:var(--c-green-210)}
.zone-dark.deliv-sec .deliv.k-vid,.zone-dark .deliv-sec .deliv.k-vid{--acc-ink:#EDB85F}
/* scoped override of the site-wide green .lvl, deliberately, not a duplicate */
.deliv-sec .deliv .lvl{color:var(--acc-ink);
  border-color:color-mix(in oklab,var(--acc) 48%,transparent)}
html[data-motion="off"] .ex-stack,html[data-motion="off"] .ex-still,
html[data-motion="off"] .ex-go .arr{transition:none}
.ex-still{position:relative;display:block;width:100%;padding:0;cursor:pointer;
  border-radius:var(--rad-10);overflow:hidden;aspect-ratio:16/9;
  border:1px solid var(--line);
  background:radial-gradient(120% 120% at 20% 0%,var(--c-navy-850) 0%,var(--c-navy-950) 62%);
  transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.ex-still:hover,.ex-still:focus-visible{border-color:color-mix(in oklab,var(--acc) 60%,transparent);
  transform:translateY(-2px);box-shadow:0 16px 34px -22px rgb(var(--c-black-rgb) / .8)}
.ex-still:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* The bar along the foot of the slot. This is what makes the slot look
   clickable WITHOUT being hovered first - the previous version faded a pill in
   from opacity 0 over a darkening scrim, which meant no affordance at rest and
   a half-strength control for the length of the transition. Nothing here
   fades: the bar is simply present.
   The name is allowed to shrink and ellipsize; the invitation never does,
   because "Direct to customer demo" is long and the slot is only ~334px wide. */
.ex-bar{position:absolute;z-index:4;left:0;right:0;bottom:0;
  display:flex;align-items:center;justify-content:space-between;gap:.9rem;
  padding:.6rem .85rem;background:rgb(var(--c-navy-960-rgb) / .92);
  border-top:1px solid color-mix(in oklab,var(--acc) 40%,transparent)}
.ex-name{min-width:0;font-family:var(--f-body);font-weight:600;font-size:var(--fs-13);color:var(--c-slate-50);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-go{flex:none;display:inline-flex;align-items:center;gap:.45em;white-space:nowrap;
  font-family:var(--f-body);font-weight:500;font-size:var(--fs-12_5);color:var(--acc)}
.ex-go .arr{transition:transform .25s var(--ease)}
.ex-still:hover .ex-go .arr,.ex-still:focus-visible .ex-go .arr{transform:translateX(4px)}
/* the still itself, and the placeholder that stands in for it until step 2 */
.ex-ph{position:relative;aspect-ratio:16/9;border-radius:var(--rad-10);overflow:hidden;background:var(--night-2);
  border:1px solid rgb(var(--c-slate-300-rgb) / .25);display:grid;place-items:center;text-align:center}
.ex-ph::before{content:"";position:absolute;inset:0;
  background-image:linear-gradient(to right,rgb(var(--c-slate-300-rgb) / .12) 1px,transparent 1px),
                   linear-gradient(to bottom,rgb(var(--c-slate-300-rgb) / .12) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(70% 62% at 50% 50%,var(--c-black),transparent 78%);
          mask-image:radial-gradient(70% 62% at 50% 50%,var(--c-black),transparent 78%)}
.ex-ph b{position:relative;font-family:var(--f-mono);font-size:var(--fs-11_5);font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--c-slate-250)}
.ex-ph small{position:relative;display:block;margin-top:.5rem;font-size:var(--fs-13);color:var(--c-slate-400)}
/* the overlay */
.ex-modal{position:fixed;inset:0;z-index:200;/* above the sticky nav, which is z-index:100 - at 90 the header sat on
   top of the dimmed backdrop and swallowed clicks meant for it */
  display:grid;place-items:center;
  padding:clamp(1rem,4vw,3rem);background:rgb(var(--c-navy-960-rgb) / .82);backdrop-filter:blur(3px)}
.ex-modal[hidden]{display:none}
.ex-modal-card{width:min(1400px,100%);/* 1400px matches .stage-wide on Home, so the workspace is the same width
   in both places and the Backstage inside it lays out identically */
  max-height:100%;overflow:auto;border-radius:var(--r);
  background:var(--c-white);color:var(--c-slate-900);box-shadow:0 40px 90px -30px rgb(var(--c-black-rgb) / .7)}
.ex-modal-head{position:sticky;top:0;display:flex;gap:1rem;align-items:center;justify-content:space-between;
  flex-wrap:wrap;padding:1rem 1.25rem;border-bottom:1px solid var(--c-slate-100);background:var(--c-gray-60)}
.ex-modal-head b{font-size:var(--fs-16)}
.ex-modal-head p{margin:.2rem 0 0;color:var(--c-slate-650);font-size:var(--fs-13_5)}
.ex-modal-body{padding:clamp(1rem,2vw,1.5rem)}

/* v2.3: what sits inside the overlay. The SimDemo brings its own styling with
   it (.live-inset), so only the single-frame examples need sizing here. */
.ex-holder{display:block}
.ex-frame{display:block;width:100%;aspect-ratio:16/9;border:0;border-radius:var(--rad-10);background:var(--c-black)}
.ex-modal-body .live-inset{--shadow:none}
.ex-modal-body .live-workspace{box-shadow:none}
@media (max-width:1080px){.deliv-sec .deliv{grid-template-columns:1fr}}

/* ===================================================================
   LIVE DEMO WORKSPACE - migrated from v21 in v2.0
   The real two-pane Regale workspace: the seller's private Backstage on
   the left, the prospect's shared view on the right, both driven by one
   Regale player over postMessage.

   Three things changed on the way in.

   1. Every rule is scoped under .live-inset, and four classes were
      renamed. This site already uses .screen (the monitor mock), .step
      (the capability animation) and .who (the quote byline) for other
      things. Scoping alone would NOT have been enough - the site's own
      unscoped .screen and .step rules would still cascade into the
      workspace - so the incoming ones became .lw-screen, .lw-screens,
      .lw-step, .lw-steps and .lw-who, in the markup as well as here.
   2. .live-inset re-declares THIS site's zone-light palette rather than
      the old build's hardcoded one, so the workspace matches the rest of
      the design. It also aliases the few token names the ported rules
      use (--card, --paper-3, --green*) onto this site's tokens, so the
      ported CSS did not have to be rewritten rule by rule.
   3. .stage-bay was dropped - the work panel supplies that spacing.
   =================================================================== */

/* the light inset: this site's zone-light palette, plus the aliases */
.live-inset{color-scheme:light;
  --bg:var(--paper);--surface:var(--paper-2);--surface-2:var(--c-gray-60);
  --ink:var(--c-slate-900);--ink-2:var(--c-slate-650);--ink-3:var(--c-slate-550);
  --line:var(--c-slate-100);--line-2:var(--c-slate-150);
  --accent:var(--leaf);--accent-ink:var(--leaf-ink);
  --btn-bg:var(--leaf-btn);--btn-fg:var(--c-white);--btn-bg-hover:var(--leaf-ink);
  --shadow:0 18px 40px -22px rgb(var(--c-navy-850-rgb) / .28);
  --card:var(--paper-2);--paper-3:var(--c-gray-60);
  --green:var(--leaf);--green-deep:var(--leaf-btn);--ink-green:var(--leaf-ink);--green-lift:var(--leaf-hi);
  --measure:68ch;
  color:var(--ink)}
.stage-wide{
  width: min(1400px, calc(100vw - 2 * var(--gutter)));
  max-width: none;
  margin-inline: calc((100% - min(1400px, 100vw - 2 * var(--gutter))) / 2);
}.live-inset .howto{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--green-deep);
 border-radius:var(--r);box-shadow:var(--shadow);margin:0 0 1.25rem;overflow:hidden}.live-inset .howto-head{display:flex;align-items:center;gap:.7rem;padding:.9rem 1.35rem .75rem}.live-inset .howto-mark{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--c-slate-50);
 color:var(--ink-green);display:grid;place-items:center;font-size:var(--fs-17);line-height:1}.live-inset .howto-head h2{margin:0;font-size:var(--fs-16_5);font-weight:400}.live-inset .howto-head h2 strong{font-weight:700}.live-inset .howto-head p{margin:0;color:var(--ink-3);font-size:var(--fs-14)}.live-inset .howto-head .sep{color:var(--line);margin:0 .1rem}.live-inset .lw-steps{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-2)}.live-inset .lw-step{padding:1rem 1.35rem 1.15rem;display:flex;gap:.8rem;align-items:flex-start}.live-inset .lw-step+.lw-step{border-left:1px solid var(--line-2)}.live-inset .lw-step i{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:var(--btn-bg);color:var(--btn-fg);
 display:grid;place-items:center;font-family:var(--f-display);font-size:var(--fs-13_5);font-weight:600;font-style:normal}.live-inset .lw-step b{display:block;font-size:var(--fs-15);margin-bottom:.15rem}.live-inset .lw-step p{margin:0;font-size:var(--fs-14);color:var(--ink-2)}.live-inset .lw-step strong{color:var(--ink);font-weight:600}
@media (max-width:820px){.live-inset .lw-steps{grid-template-columns:1fr}.live-inset .lw-step+.lw-step{border-left:0;border-top:1px solid var(--line-2)}}.live-inset .live-workspace{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}.live-inset .live-toolbar{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;padding:1.1rem 1.35rem;border-bottom:1px solid var(--line);background:var(--paper-2)}.live-inset .live-toolbar b{display:block;font-size:var(--fs-16_5)}.live-inset .live-toolbar p{margin:.25rem 0 0;color:var(--ink-2);font-size:var(--fs-14_5)}.live-inset .live-actions{display:flex;gap:.6rem;flex-wrap:wrap}.live-inset .live-screens{display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,1fr);gap:0;align-items:stretch}.live-inset .lw-screen{min-width:0;padding:1rem 1.15rem 1.15rem;display:flex;flex-direction:column}.live-inset .lw-screen.private{border-right:1px solid var(--line);background:var(--paper-3)}.live-inset .screen-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;margin-bottom:.8rem}.live-inset .screen-head b{font-family:var(--f-mono);font-weight:500;font-size:var(--fs-11_5);letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}.live-inset .screen-head .lw-who{font-size:var(--fs-15);font-weight:700;letter-spacing:.08em}.live-inset .screen-head span{font-size:var(--fs-13);color:var(--ink-3)}.live-inset .frame-stage{position:relative;border-radius:var(--r-sm);overflow:hidden;background:var(--c-black)}.live-inset .lw-screen.public{background:var(--card)}.live-inset .audience-room,.live-inset .seller-room{flex:1;display:flex;flex-direction:column;justify-content:flex-start;
  padding:22px 18px;position:relative;
  background:radial-gradient(ellipse at 50% 30%,var(--c-white) 0%,var(--c-gray-50) 58%,var(--c-slate-50) 100%);
  border-radius:var(--r-sm)}.live-inset .room-eyebrow{text-align:center;font-family:var(--f-mono);font-size:var(--fs-10);font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--c-slate-600);margin-bottom:18px}.live-inset .room-eyebrow span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green-deep);margin:0 7px 1px 0}.live-inset .prospect-monitor,.live-inset .seller-monitor{width:100%;margin:0 auto;filter:drop-shadow(0 10px 12px rgb(var(--c-navy-860-rgb) / .1))}.live-inset .monitor-bezel{background:#252C39;border:1px solid var(--c-navy-950);border-radius:var(--rad-12);padding:13px 7px 8px;position:relative}.live-inset .monitor-camera{position:absolute;top:4px;left:calc(50% - 2px);width:4px;height:4px;background:var(--c-slate-550);border-radius:50%}.live-inset .audience-stage,.live-inset .seller-stage{width:100%;height:auto;background:#202020;border-radius:var(--rad-4);isolation:isolate}.live-inset .audience-stage{aspect-ratio:16/9}.live-inset .seller-stage{aspect-ratio:16/9}.live-inset .seller-stage iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}.live-inset .audience-stage iframe{border:0;display:block}.live-inset .monitor-chin{display:flex;justify-content:space-between;align-items:center;padding:7px 7px 1px;
  color:#909AA9;font-family:var(--f-mono);font-size:8px;letter-spacing:.09em;text-transform:uppercase}.live-inset .monitor-chin i{width:4px;height:4px;border-radius:50%;background:#ABBFC0;display:block}.live-inset .monitor-stand{width:68px;height:25px;margin:0 auto;
  background:linear-gradient(90deg,var(--c-slate-400),#BAC2CE 50%,var(--c-slate-400));
  clip-path:polygon(25% 0,75% 0,90% 100%,10% 100%)}.live-inset .monitor-foot{width:138px;height:8px;border-radius:50%;margin:-1px auto 0;
  background:linear-gradient(#929DAF,var(--c-slate-150));box-shadow:0 4px 5px rgb(var(--c-navy-850-rgb) / .09)}.live-inset .audience-people,.live-inset .seller-people{position:relative;width:min(78%,224px);margin:11px auto 0}.live-inset .seller-people{width:min(52%,128px)}.live-inset .audience-people svg,.live-inset .seller-people svg{width:100%;height:auto;display:block}.live-inset .audience-caption{text-align:center;margin:3px 0 0;color:var(--c-slate-600);font-size:var(--fs-12)}.live-inset .audience-caption strong{color:var(--c-navy-810);display:block;font-family:var(--f-display);font-size:var(--fs-14);font-weight:600;margin-bottom:3px}.live-inset .audience-caption span{font-size:var(--fs-11)}.live-inset .audience-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:18px;gap:12px;background:var(--c-gray-50)}.live-inset .audience-placeholder h3{margin:0;font-size:var(--fs-20);max-width:270px;color:var(--ink)}.live-inset .audience-placeholder p{margin:0;font-size:var(--fs-12);color:#656477;line-height:1.5}.live-inset .live-orbit{border-radius:50%;width:42px;height:42px;background:var(--c-slate-50);color:var(--ink-green);font-size:var(--fs-24);display:grid;place-items:center}.live-inset .live-bottom{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;padding:.9rem 1.35rem;border-top:1px solid var(--line);background:var(--paper-2)}.live-inset .live-bottom p{margin:0;font-size:var(--fs-14);color:var(--ink-2)}.live-inset .live-bottom span{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}

@media (max-width:1000px){.live-inset .live-screens{grid-template-columns:1fr}.live-inset .lw-screen.private{border-right:0;border-bottom:1px solid var(--line)}
}.live-inset .live-inset .howto{ margin-bottom: 1.1rem; }
@media (max-width: 1000px) {.stage-wide{ width: 100%; margin-inline: 0; } }

/* Home "What we deliver": the cards stack on scroll, the same way the Services
   rungs do. Only switched on (.stacking, by site.js) when every card fits on
   screen; below that the list stays a plain column so nothing is hidden. */
.deliv-anchor{display:none}
.deliv-list.stacking{display:block;--stack-top:104px;--stack-step:30px;padding-bottom:6vh}
.deliv-list.stacking .deliv-anchor{display:block;height:0}
.deliv-list.stacking .deliv{position:sticky;top:calc(var(--stack-top) + var(--k,0) * var(--stack-step));margin-bottom:34vh;border-color:var(--line-2);box-shadow:0 -18px 40px -22px rgb(var(--c-black-rgb) / .75),0 24px 50px -30px rgb(var(--c-black-rgb) / .8);transform-origin:50% 0;transform:scale(calc(1 - var(--depth,0) * .04));transition:border-color .4s,background .4s}
.deliv-list.stacking .deliv:last-child{margin-bottom:0}
.deliv-list.stacking .deliv::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;background:var(--night);opacity:calc(var(--depth,0) * .28)}
.deliv-list.stacking .deliv.on{border-color:rgb(var(--c-green-350-rgb) / .6)}

/* Regale section (Home): the logo sits inside the eyebrow, in place of the
   word "Regale"; the copy and the layer stack share the top row; the two ways
   run full width underneath, side by side, so neither column runs long. */
.regale-eyebrow{align-items:center;gap:.65em}
.regale-eyebrow::before{display:none}
.regale-eyebrow img{display:block;height:22px;width:auto}
.regale-grid{row-gap:clamp(1.5rem,3vw,2.5rem)}
@media (min-width:901px){#regale .layers-scene{height:clamp(320px,30vw,400px)}}
.regale-grid .ways{grid-column:1/-1;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(2rem,5vw,5rem);margin-top:0}
.regale-grid .ways-h{grid-column:1/-1}
.regale-grid .way{align-items:flex-start}
.regale-grid .way>.btn{align-self:center}
@media (max-width:900px){.regale-grid .ways{grid-template-columns:1fr}}

/* ===================================================================
   HOW AN ENGAGEMENT RUNS - Services, v3.9.5
   One section, with a review-only control bar for the ground and the
   palette, so the twelve combinations can be compared live.

   THE POINT OF THIS VERSION is that nothing below hard-codes navy any
   more. Every earlier build wrote #E8EEF6 for text and
   rgb(148 170 200) for lines, which meant "light mode" was impossible
   without a rewrite. It is all written against the site's own zone
   tokens now - --ink, --ink-2, --ink-3, --line, --line-2, --surface -
   which is how the rest of the site already flips between
   .zone-dark and .zone-light.

   Two things do not come from the zone and so are declared per plate:
     --on-ink    the numeral sitting ON a filled station. Near-black on
                 navy, where the fills are bright; white on paper, where
                 they are dark.
     --disc-edge the rim of a filled station: white on navy, the
                 station's own colour on paper.
   =================================================================== */

/* ---------- the review-only control bar. Goes when we choose. ------ */

/* ---------- the two-column frame ---------------------------------- */
.pr-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1fr);
  gap:clamp(2rem,5vw,5rem);margin-top:clamp(1.5rem,3vw,2.5rem)}
/* The heading rides WITH the dial. It used to sit full-width above the
   grid, so it scrolled away the moment the plate pinned and stayed gone
   for the ~2400px it takes to read the six blades - you lost the section
   title exactly while you needed it. */
.pr-stick{position:sticky;top:110px}
.pr-stick .sec-head{display:block;margin:0 0 clamp(1.1rem,2vw,1.6rem)}
.pr-stick .sec-head .lede{max-width:46ch}
/* a sticky block taller than the viewport can never scroll its own bottom
   into view, which would cut off the dial. Shrink the plate on short
   screens rather than let that happen. Checked at 900/800/720. */
/* the plate shares the column with a heading and a caption now, so it is
   smaller here than the stand-alone 400px default */
/* Nothing follows .pr-grid now, and the section's own bottom padding is
   trimmed, so the sticky block releases level with the section's end
   instead of being pushed up under the nav - which is what took the
   heading away again right at the finish. */
.proc-sec{padding-bottom:clamp(1.25rem,2.4vw,2rem)}
/* ONE source of truth for the plate's height. The dial is square and was
   sized by width alone - min(100%,460px) - so it never knew the plate's
   height and only ever fitted because the plate happened to be ~460px
   tall. Shrinking the plate cropped stations 03/04/05 clean off. Both
   now read --plate-h, so they cannot drift apart again. */
.pr-stick{--plate-h:clamp(255px,25vw,360px)}
.pr-stick .x1-plate{height:var(--plate-h);display:grid;place-items:center}
.pr-stick .xr-dial{width:min(100%,var(--plate-h))}
.pr-stick .pr-note{margin-top:clamp(1rem,1.8vw,1.5rem);max-width:46ch}
@media (max-height:860px){.pr-stick{--plate-h:clamp(210px,19vw,258px)}}
@media (max-height:780px){
  .pr-stick{--plate-h:clamp(200px,18vw,250px)}
  .pr-stick .sec-head .lede{display:none}
}
.pr-steps{display:grid}
.pr-note{margin-top:clamp(1.75rem,3.5vw,2.75rem);color:var(--ink-3);font-size:var(--fs-15);max-width:62ch}

/* ---------- the plate --------------------------------------------- */
.x1-plate{position:relative;border-radius:var(--r);overflow:hidden;
  border:1px solid var(--line);box-shadow:var(--shadow);
  transition:background .4s var(--ease),border-color .4s var(--ease)}
/* a dark plate carries the dark zone's tokens whatever page it is on,
   so the instrument inside it does not need to know where it is */
.x1-plate[data-plate=dark]{
  --surface:var(--c-navy-860);--ink:var(--c-slate-50);--ink-2:var(--c-slate-250);--ink-3:var(--c-slate-360);
  --line:rgb(var(--c-slate-300-rgb) / .16);--line-2:rgb(var(--c-slate-300-rgb) / .3);
  --on-ink:var(--c-navy-960);--disc-edge:var(--c-white);--dot:rgb(var(--c-slate-300-rgb) / .14);
  border-color:rgb(var(--c-slate-300-rgb) / .18);
  background:radial-gradient(125% 115% at 20% 0%,var(--c-navy-850) 0%,var(--c-navy-950) 64%);
  box-shadow:0 34px 80px -46px rgb(var(--c-navy-960-rgb) / .95)}
.x1-plate[data-plate=light]{
  --on-ink:var(--c-white);--disc-edge:var(--c);--dot:rgb(var(--c-navy-860-rgb) / .1);
  background:var(--surface)}
.x1-plate::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  background-image:radial-gradient(var(--dot) 1px,transparent 1px);
  background-size:26px 26px;
  mask-image:radial-gradient(118% 92% at 50% 45%,var(--c-black) 26%,transparent 76%)}
.xr-dial{position:relative;margin-inline:auto;padding:clamp(.6rem,1.4vw,1rem);
  width:min(100%,460px)}
.xr-svg{display:block;width:100%;height:auto;overflow:visible;position:relative;z-index:1}

/* ---------- the orrery -------------------------------------------- */
.x1-amb{fill:none;stroke:var(--line-2);transform-origin:220px 220px}
.x1-amb.a{stroke-dasharray:3 13;stroke-width:1.5;animation:x1spin 54s linear infinite}
.x1-amb.b{stroke-dasharray:28 18;stroke-width:1;animation:x1spin 38s linear infinite reverse}
.x1-amb.c{stroke-dasharray:2 9;stroke-width:1.5;animation:x1spin 26s linear infinite}
@keyframes x1spin{to{transform:rotate(360deg)}}
.x1-track{fill:none;stroke:var(--line-2);stroke-width:3}
.x1-fill{fill:none;stroke-width:5;stroke-linecap:round;
  filter:drop-shadow(0 0 12px color-mix(in oklab,var(--now,var(--c-green-350)) 70%,transparent))}
.x1-head{fill:var(--surface);stroke:var(--now,var(--c-green-210));stroke-width:3;
  transition:opacity .3s linear,stroke .5s var(--ease);
  filter:drop-shadow(0 0 20px color-mix(in oklab,var(--now,var(--c-green-350)) 80%,transparent))}
.x1-glowc{transition:fill .6s var(--ease)}
.x1-orbit{transform-origin:220px 220px;fill:var(--ink-3);opacity:.55}
.x1-orbit.o0{animation:x1spin 30s linear infinite}
.x1-orbit.o1{animation:x1spin 44s linear infinite reverse}
.x1-orbit.o2{animation:x1spin 21s linear infinite}
.x1-orbit.o3{animation:x1spin 61s linear infinite reverse}
.x1-disc{fill:var(--surface);stroke:var(--line-2);stroke-width:2;
  transition:fill .5s var(--ease),stroke .5s var(--ease),r .5s var(--elastic)}
.x1-ring2{fill:none;stroke:var(--c);stroke-width:1.5;opacity:0;transition:opacity .5s var(--ease)}
/* The numeral on a station you have NOT reached yet is still
   information, so it has to clear AA against the disc it sits on.
   --ink-3 measures 4.22 on the dark plate's #1A2B47 - it has been
   under the line since the first dial and no earlier audit caught it,
   because they only ever sampled the lit stations. --ink-2 is 6.90.
   The hierarchy still reads: a reached station is filled with colour,
   an unreached one is not. */
.x1-stn > text{font-family:var(--f-mono);font-size:var(--fs-12);letter-spacing:.06em;
  fill:var(--ink-2);transition:fill .5s var(--ease)}
.x1-stn.on .x1-disc{fill:var(--c);stroke:var(--disc-edge)}
.x1-stn.on > text{fill:var(--on-ink)}
.x1-stn.on .x1-ring2{opacity:.55}
/* these must stay AFTER the .on rules - same specificity, later wins */
.x1-stn.now .x1-disc{r:26;fill:var(--n,var(--c))}
.x1-stn.now .x1-ring2{opacity:.9;r:34;stroke:var(--n,var(--c))}
.x1-burst{opacity:0}
.x1-burst line{stroke:var(--n,var(--c));stroke-width:2.5;stroke-linecap:round;
  transform-box:fill-box;transform-origin:center}
.x1-burst .x1-shock{fill:none;stroke:var(--n,var(--c));stroke-width:2;
  transform-box:fill-box;transform-origin:center}
.x1-burst.go{animation:x1fade .9s linear}
.x1-burst.go line{animation:x1ray .55s var(--ease)}
.x1-burst.go .x1-shock{animation:x1shock .85s var(--ease)}
@keyframes x1fade{0%,70%{opacity:1}100%{opacity:0}}
@keyframes x1ray{from{transform:scale(.25);opacity:1}to{transform:scale(1);opacity:0}}
@keyframes x1shock{from{transform:scale(.7);opacity:.9}to{transform:scale(2.3);opacity:0}}

/* ---------- the readout in the middle ----------------------------- */
.xr-mid{position:absolute;inset:26%;display:grid;place-items:center;text-align:center;
  z-index:3;pointer-events:none}
.xr-mid > div{transition:opacity .28s var(--ease),transform .4s var(--ease)}
.xr-mid.swap > div{opacity:0;transform:translateY(8px)}
.xr-num{font-family:var(--f-display);font-stretch:108%;font-size:clamp(2.6rem, 5.5vw, 3.6rem);
  line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin:0;
  color:var(--c,var(--accent-ink));transition:color .4s var(--ease)}
.xr-nm{font-family:var(--f-display);font-stretch:108%;font-size:clamp(1rem, 1.6vw, 1.2rem);
  letter-spacing:-.01em;color:var(--ink);margin:.3rem 0 0;max-width:12ch}
.xr-lab{font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.16em;
  text-transform:uppercase;color:var(--l,var(--c,var(--ink-3)));margin:.7rem 0 0;
  transition:color .4s var(--ease)}

/* ---------- Z3, the blade ----------------------------------------- */
.z3-blade{min-height:44vh;display:grid;align-content:center}
/* the last slot held a full 44vh of scroll behind a 168px card, which read
   as a void before the next section. The run's progress comes from the
   SECTION's rect, not from blade offsets, so a shorter last slot just
   rescales the run - it does not desync the dial. */
.z3-blade:last-child{min-height:0;padding-bottom:clamp(1rem,2vw,1.6rem)}
.z3-card{position:relative;padding:0 0 .9rem;
  opacity:.38;transform:translateX(12px);
  transition:opacity .5s var(--ease),transform .55s var(--ease)}
.z3-blade.on .z3-card{opacity:1;transform:none}
.z3-card::before,.z3-card::after{content:"";position:absolute;width:16px;height:16px;
  border-color:var(--line-2);border-style:solid;pointer-events:none;
  transition:border-color .5s var(--ease)}
.z3-card::before{left:0;top:0;border-width:1px 0 0 1px}
.z3-card::after{right:0;bottom:0;border-width:0 1px 1px 0}
.z3-blade.on .z3-card::before,.z3-blade.on .z3-card::after{border-color:var(--c)}
.z3-bar{display:flex;align-items:center;gap:.8rem;margin-left:16px;
  padding:.5rem .8rem;border-radius:var(--r-sm) var(--r-sm) 0 0;
  background:color-mix(in oklab,var(--ink-3) 12%,transparent);
  border-bottom:2px solid var(--line-2);
  font-family:var(--f-mono);font-size:var(--fs-10_5);letter-spacing:.16em;text-transform:uppercase;
  transition:background .5s var(--ease),border-color .5s var(--ease)}
.z3-blade.on .z3-card .z3-bar{border-bottom-color:var(--c);
  background:color-mix(in oklab,var(--c) 14%,transparent)}
.z3-no{color:var(--ink-2);transition:color .5s var(--ease)}
.z3-blade.on .z3-card .z3-no{color:var(--l)}
.z3-key{color:var(--ink-2);flex:1;transition:color .5s var(--ease)}
.z3-blade.on .z3-card .z3-key{color:var(--ink)}
.z3-of{color:var(--ink-2)}
.z3-main{margin-left:16px;padding:.9rem .8rem 0}
.z3-main h3{font-family:var(--f-display);font-stretch:108%;
  font-size:clamp(1.3rem, 2.3vw, 1.75rem);letter-spacing:-.02em;margin:0;color:var(--ink)}
.z3-main p{margin:.45rem 0 0;color:var(--ink-2);font-size:var(--fs-15_5);line-height:1.6;max-width:46ch}
.z3-ticks{display:flex;gap:5px;margin:1rem 0 0 calc(16px + .8rem)}
.z3-ticks i{display:block;width:26px;height:3px;border-radius:var(--rad-2);
  background:var(--line-2);transition:background .5s var(--ease)}
.z3-ticks i.past{background:var(--ink-3);opacity:.7}
.z3-ticks i.here{background:var(--c);opacity:1}
.z3-blade.on .z3-card .z3-ticks i.here{box-shadow:0 0 12px -2px var(--c)}
.z3-blade.fire .z3-card .z3-bar{animation:z3bar .5s var(--ease)}
.z3-blade.fire .z3-card .z3-main{animation:z3main .55s var(--ease) .08s both}
.z3-blade.fire .z3-card .z3-ticks i.here{animation:z3tick .5s var(--elastic) .2s both}
@keyframes z3bar{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes z3main{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes z3tick{from{transform:scaleX(.2)}to{transform:scaleX(1)}}

@media (max-width:900px){
  .pr-grid{grid-template-columns:1fr;gap:1.25rem}
  /* stacked: pinning the whole block would hold 507px of an 844px phone
     screen. The heading and the caption scroll normally here - they are
     read once, at the top - and only the plate pins, which is what this
     layout did before the heading moved into the column. */
  .pr-stick{position:static;background:none;padding-block:0}
  .pr-stick .x1-plate{position:sticky;top:64px;z-index:4}
  .pr-stick .sec-head{margin-bottom:1rem}
  .xr-dial{width:min(100%,320px)}
  .z3-blade{min-height:0;margin:0 0 1.25rem}
  .z3-card{opacity:1;transform:none}
  .z3-ticks i{width:18px}
}

/* reduced motion ---------------------------------------------------- */
html[data-motion=off] .z3-card{opacity:1;transform:none}
html[data-motion=off] .x1-amb,html[data-motion=off] .x1-orbit,
html[data-motion=off] .x1-burst.go,html[data-motion=off] .x1-burst.go line,
html[data-motion=off] .x1-burst.go .x1-shock{animation:none}
@media (prefers-reduced-motion:reduce){
  .z3-card{opacity:1;transform:none}
  .x1-amb,.x1-orbit,.x1-burst,.x1-burst line,.x1-burst .x1-shock{animation:none !important}
  .z3-blade.fire .z3-card .z3-bar,.z3-blade.fire .z3-card .z3-main,
  .z3-blade.fire .z3-card .z3-ticks i.here{animation:none !important}
}

/* ===================================================================
   PRIVACY POLICY - the supplied legal text, v3.9.7
   The page already had .prose, .prose-toc and friends from when it was
   a placeholder; this only adds what the real document needs.

   NOTHING HERE CHANGES A WORD. The bolded lead-ins below ("With your
   consent.", "Information you provide us.") are emphasis applied to
   words already in the text, and the nested list under "For legal
   reasons." is the sub-points that were already sub-points.
   =================================================================== */

/* The sections carry their own numbers - "1. Information We Collect" -
   because those numbers are part of the legal text and cross-references
   inside it point at them. The TOC's own 01/02 counter would print a
   second, different set of numbers beside them, so it is off here. */
.page-privacy .prose-toc li::before{content:none}
.page-privacy .prose-toc li{counter-increment:none;line-height:1.45}

/* the lead-in phrase that opens several of the list items */
.prose .pp-list > li > b{color:var(--ink);font-weight:600}
/* the four sub-points under "For legal reasons." */
.prose .pp-sub{margin:.55rem 0 0;padding-left:1.1rem;list-style:circle}
.prose .pp-list{padding-left:1.15rem}

/* a policy is read, not skimmed: give the body a little more room than
   the marketing pages and keep the measure honest */
.page-privacy .prose p{margin-bottom:1.1rem}
.page-privacy .prose h2{margin-top:2.8rem}

/* ===================================================================
   THE REGALE SCENE - Home, v3.9.15 (chosen)
   A field of small logomarks lighting in a diagonal wave, with the
   full horizontal wordmark over it. Chosen from v3.9.14's T3/U1/U2/U3;
   the three variants, the review flags and the earlier concepts are
   gone, and site.css was rebuilt from the v3.9.10 base so nothing
   survives from v3.9.11-14.

   Purple and teal only - Regale's own ramps, read off their running
   site. The yellow and magenta are deliberately not here.
     purple  #beacf7 #8970d8 #6141c5 #462a9d #2c127d #1a0b48 #0a0321
     teal    #7eddd7 #36b0a8 #186460 #0d4845

   The mark's two mirrored paths are inlined from
   assets/regale/regale-logomark-white.svg via <symbol>/<use>, so the
   geometry is the brand asset's and cannot drift from it.
   =================================================================== */
.rg-plate{
  --rg-p2:var(--c-violet-260);--rg-p4:#8970d8;--rg-p5:#6141c5;--rg-p6:#462a9d;
  --rg-p7:var(--c-violet-800);--rg-p8:var(--c-violet-900);--rg-p9:var(--c-violet-1000);
  --rg-t3:#7eddd7;--rg-t5:#36b0a8;--rg-t7:#186460;--rg-t8:var(--c-teal-750);
  position:relative;border-radius:var(--r);overflow:hidden;
  border:1px solid rgb(var(--c-violet-260-rgb) / .2);
  background:radial-gradient(120% 110% at 22% 0%,var(--c-violet-900) 0%,var(--c-violet-1000) 66%);
  box-shadow:0 34px 80px -46px rgb(5 2 20 / .95);
  height:clamp(300px,32vw,400px);display:grid;place-items:center}
.rg-scene{position:relative;width:100%;height:100%;display:grid;place-items:center}
/* Regale's own hero: nested circles fading downward. Two now, not
   three, and both in the purple/teal ramps. */
.rg-bands{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.rg-bands i{position:absolute;left:50%;top:104%;width:210%;aspect-ratio:1;
  border-radius:50%;transform:translateX(-50%);
  animation:rgdrift 26s ease-in-out infinite alternate}
.rg-bands i:nth-child(1){background:linear-gradient(var(--rg-p7) 0%,rgb(var(--c-violet-800-rgb) / .4) 12%,transparent 26%)}
.rg-bands i:nth-child(2){top:111%;animation-duration:31s;animation-direction:alternate-reverse;
  background:linear-gradient(var(--rg-t8) 0%,rgb(var(--c-teal-750-rgb) / .4) 12%,transparent 26%)}
.rg-bands i:nth-child(3){display:none}   /* was the magenta */
@keyframes rgdrift{from{transform:translateX(-52%) scale(1)}to{transform:translateX(-48%) scale(1.06)}}
.rg-plate .rg-scene > svg{height:auto;overflow:visible}

/* the field svgs all fill the plate and sit behind the lockup */
.t3-field{position:absolute;inset:0;width:100%;height:100% !important;z-index:1}
.t3-logo{position:relative;z-index:3;height:auto}

/* ---- the chosen scene: a field of marks behind the wordmark ---- */
.rg-plate.t3{background:radial-gradient(110% 120% at 50% 50%,var(--c-violet-900) 0%,var(--c-violet-1000) 72%)}
.t3-tiles use{fill:var(--rg-p2);opacity:.07;
  animation:t3wave 5.6s ease-in-out infinite;animation-delay:var(--d)}
@keyframes t3wave{0%,70%,100%{opacity:.07}22%{opacity:.5}}
.t3-logo{width:min(62%,300px);
  filter:drop-shadow(0 10px 36px rgb(var(--c-violet-1000-rgb) / .95)) drop-shadow(0 0 28px rgb(var(--c-violet-1000-rgb) / .9))}

@media (max-width:900px){.rg-plate{height:280px}}
@media (prefers-reduced-motion:reduce){
  .rg-bands i,.t3-tiles use{animation:none}
  .t3-tiles use{opacity:.16}
}
html[data-motion=off] .rg-bands i,
html[data-motion=off] .t3-tiles use{animation:none}
html[data-motion=off] .t3-tiles use{opacity:.16}

/* ===================================================================
   THE CLOSER - Home, v3.9.18
   The Regale section and the "Start with a brief" band are merged into
   one closing section: 3Sharp first, Regale second, no image. V2 of
   three was chosen, on white. Violet stays on the Regale side.
   =================================================================== */
.cx{padding-block:clamp(3.5rem,7vw,5.5rem)}
.cx-l3 img{height:30px;width:auto;display:block}
.zone-light .cx-l3 .on-dark,.zone-dark .cx-l3 .on-light{display:none}
.cx-rg{height:28px;width:auto;display:block;color:var(--ink)}
.cx .btn svg{width:1em;height:1em;flex:none}
.cx .cx-rgs em{font-style:normal;color:var(--violet)}
.zone-light.cx .cx-rgs em{color:var(--violet-d)}
.cx-h{font-family:var(--f-display);font-size:clamp(1.6rem, 2.8vw, 2.4rem);line-height:1.08;letter-spacing:-.02em;margin:0;color:var(--ink)}



/* V2 - 3Sharp leads, Regale as a side door */
.cx-lead{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.cx-main{display:flex;flex-direction:column;align-items:flex-start;gap:1.1rem}
.cx-main .h2,.cx-main .lede{margin:0}
.cx-aside{border-left:1px solid var(--line-2);padding-left:clamp(1.5rem,4vw,3.5rem);
  display:flex;flex-direction:column;align-items:flex-start;gap:.85rem}
.cx-aside h3{font-family:var(--f-display);font-size:1.4rem;line-height:1.15;margin:0;color:var(--ink)}
.cx-aside p{margin:0;color:var(--ink-2);max-width:40ch}



@media (max-width:860px){
  .cx-lead{grid-template-columns:1fr}
  .cx-aside{border-left:0;padding-left:0;border-top:1px solid var(--line-2);padding-top:1.5rem}
}

/* ===================================================================
   THE MERGE, round 2 - Home, v3.9.23
   Regale on its own dark band, then a light closer that carries the
   brief and the four steps as a short timeline. V2 of three was chosen.
   =================================================================== */
.cx-rgband{padding-block:clamp(2.75rem,5vw,3.75rem)}
.cx-rgband .shell{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:center}
.cx-rgcopy{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}
.cx-rgband h2{font-family:var(--f-display);font-size:clamp(1.5rem, 2.6vw, 2.1rem);line-height:1.1;margin:0;color:var(--ink)}
.cx-rgband p{margin:0;color:var(--ink-2);max-width:60ch}

.mg{padding-block:clamp(3.5rem,7vw,5.5rem)}
.mg .h2{margin:0}
.mg .lede{margin:.8rem 0 0;max-width:56ch}
.mg-lab{margin:0 0 1rem;font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.mg .n{display:block;font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.14em;color:var(--accent-ink)}
.mg ol{list-style:none;margin:0;padding:0}
.mg ol b{display:block;font-family:var(--f-display);font-weight:600;font-size:var(--fs-17);letter-spacing:-.01em;color:var(--ink)}
.mg ol p{margin:.3rem 0 0;color:var(--ink-2);font-size:var(--fs-14_5);line-height:1.5}



/* brief left, steps right */
.mg-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(2.5rem,6vw,5.5rem);align-items:center}
.mg-main{display:flex;flex-direction:column;align-items:flex-start;gap:1.4rem}
.mg-main .lede{margin:0}

/* V2 - a short vertical timeline, titles only */
.mg .mg-tl{position:relative;display:grid;gap:1.35rem;padding-left:1.75rem}
.mg-tl::before{content:"";position:absolute;left:5px;top:.5rem;bottom:.5rem;width:2px;background:var(--line-2)}
.mg-tl li{position:relative;display:flex;align-items:baseline;gap:.9rem}
.mg-tl li::before{content:"";position:absolute;left:calc(-1.75rem + 0px);top:.35rem;width:12px;height:12px;border-radius:50%;
  background:var(--bg);border:2px solid var(--line-2)}
.mg-tl li:first-child::before{border-color:var(--accent);background:var(--accent)}
.mg-tl .n{display:inline}



@media (max-width:860px){
  .cx-rgband .shell,.mg-split{grid-template-columns:1fr}
}

/* ===================================================================
   SERVICE TILES - Home, v3.10.1 (chosen: Y1)
   White cards with an oversized faint icon in the card's colour, and a
   slim dark header carrying the tag. Bright shade --c for navy, deep shade --cd for white,
   from the Journey ramp. The green cursor glare stays off.
   =================================================================== */
.btx .built:nth-child(1){--c:var(--c-green-400);--cd:var(--c-green-650)}
.btx .built:nth-child(2){--c:var(--c-green-370);--cd:var(--c-green-610)}
.btx .built:nth-child(3){--c:var(--c-green-360);--cd:var(--c-green-600)}
.btx .built:nth-child(4){--c:var(--c-green-300);--cd:var(--c-green-550)}
.btx .built:nth-child(5){--c:var(--c-green-210);--cd:var(--c-green-560)}
.btx [data-tilt]::after{display:none}
.btx .built{overflow:hidden;grid-template-rows:auto 1fr;min-height:17rem}
.btx .built h3,.btx .lvl{position:relative;z-index:1}
.w-bar{position:absolute;left:0;right:0;bottom:0;height:4px;z-index:1;background:var(--cd);transform:scaleX(.16);transform-origin:left;transition:transform .45s var(--ease)}
.btx .built:hover .w-bar{transform:scaleX(1)}
.w1-ic{position:absolute;z-index:0;right:-22px;bottom:-22px;width:132px;height:132px;color:var(--cd);opacity:.13;
  transition:opacity .45s var(--ease),transform .45s var(--ease),color .35s}
.w1-ic svg{width:100%;height:100%}
/* the shared white card */
.bt-lt .built{background:var(--surface);border-color:var(--line)}
.bt-lt .built h3{color:var(--ink)}
.bt-lt .lvl{color:var(--cd);border-color:color-mix(in oklab,var(--cd) 40%,transparent)}
.bt-lt .built:hover{border-color:var(--cd)}
.bt-lt .built:hover .w1-ic{opacity:.45;transform:translate(-6px,-6px)}

/* Y1 - a dark header carrying the tag */
.y1-hd{display:flex;align-items:center;margin:-1.5rem -1.4rem .4rem;padding:0 1.4rem;height:58px;
  background:radial-gradient(120% 170% at 15% 0%,var(--c-navy-850) 0%,var(--c-navy-950) 75%);transition:background .35s var(--ease)}
.bt-y1 .y1-hd .lvl{color:var(--c);border-color:color-mix(in oklab,var(--c) 45%,transparent)}
.bt-y1 .built:hover .y1-hd{background:radial-gradient(120% 180% at 15% 0%,color-mix(in oklab,var(--c) 38%,var(--c-navy-950)) 0%,var(--c-navy-950) 80%)}

/* ===================================================================
   WHAT WE DO ON WHITE - Services, v3.10.3
   The section moved from dark to light to keep the page alternating.
   Its tag, active button and card stack were tuned for navy:
   - leaf-hi green on white measured 1.7:1, so they take accent-ink
   - the buried cards were dimmed toward navy and cast near-black
     shadows, which read as heavy grey bars on white; on light they dim
     toward the page grey and the shadows soften
   =================================================================== */
.zone-light .rung .lvl{color:var(--accent-ink);border-color:color-mix(in oklab,var(--leaf) 45%,transparent)}
.zone-light .stairs-legend button[aria-pressed=true]{color:var(--accent-ink)}
.zone-light .rung{box-shadow:0 -12px 28px -20px rgb(var(--c-navy-850-rgb) / .28),0 22px 44px -30px rgb(var(--c-navy-850-rgb) / .35)}
.zone-light .rung::after{background:var(--c-slate-100);opacity:calc(var(--depth,0) * .55)}
/* Also on offer now has its own dark band, so the divider and the extra
   space that separated it from a white section above are no longer needed */
#also .caps-block{margin-top:0;padding-top:0;border-top:0}

/* ===================================================================
   WHAT WE DO, COLOUR MATCHED - Services, v3.10.4
   Each situation takes the colour its tile has on Home (the Journey
   ramp): Sales blue, Pre-release teal-blue, Multi-product teal, Live
   green. --c is the bright shade, --cd the deep one for text on white.
   Resting blocks are a dark navy tinted with their colour; the raised
   block lights up in full colour, and the glow under the scene follows it.
   =================================================================== */
#stairs .step:nth-child(1),.rung:nth-of-type(1),.stairs-legend button:nth-child(1){--c:var(--c-green-400);--cd:var(--c-green-650)}
#stairs .step:nth-child(2),.rung:nth-of-type(2),.stairs-legend button:nth-child(2){--c:var(--c-green-370);--cd:var(--c-green-610)}
#stairs .step:nth-child(3),.rung:nth-of-type(3),.stairs-legend button:nth-child(3){--c:var(--c-green-360);--cd:var(--c-green-600)}
#stairs .step:nth-child(4),.rung:nth-of-type(4),.stairs-legend button:nth-child(4){--c:var(--c-green-300);--cd:var(--c-green-550)}
#stairs .step .top{background:color-mix(in oklab,var(--cd) 42%,var(--c-navy-850));border-color:color-mix(in oklab,var(--c) 22%,transparent)}
#stairs .step .front{background:color-mix(in oklab,var(--cd) 35%,var(--c-navy-900))}
#stairs .step .side{background:color-mix(in oklab,var(--cd) 30%,var(--c-navy-950))}
#stairs .step .top span{color:color-mix(in oklab,var(--c) 55%,var(--c-slate-50))}
#stairs .step.on .top{background:var(--c);box-shadow:0 0 40px color-mix(in oklab,var(--c) 60%,transparent)}
#stairs .step.on .top span{color:var(--c-navy-960)}
#stairs .step.on .front{background:color-mix(in oklab,var(--c) 70%,var(--c-navy-950))}
#stairs .step.on .side{background:color-mix(in oklab,var(--c) 52%,var(--c-navy-950))}
.stairs-scene:has(.step:nth-child(1).on)::before{--glow:var(--c-green-400)}
.stairs-scene:has(.step:nth-child(2).on)::before{--glow:var(--c-green-370)}
.stairs-scene:has(.step:nth-child(3).on)::before{--glow:var(--c-green-360)}
.stairs-scene:has(.step:nth-child(4).on)::before{--glow:var(--c-green-300)}
.stairs-scene::before{background:radial-gradient(closest-side,color-mix(in oklab,var(--glow,var(--c-green-350)) 24%,transparent),transparent 70%)}
.zone-light .rung .lvl{color:var(--cd);border-color:color-mix(in oklab,var(--cd) 40%,transparent)}
.rung.on{border-color:color-mix(in oklab,var(--cd) 70%,transparent)}
.zone-light .stairs-legend button[aria-pressed=true]{color:var(--cd);border-color:var(--cd);background:color-mix(in oklab,var(--c) 12%,transparent)}
/* The blocks were built with only two walls; turned at -40deg, one of the
   missing ones faced the viewer and showed as a gap on white. All four
   walls now exist, so each block is solid from any angle. */
.step .back{left:0;top:0;width:var(--s);height:var(--h);transform-origin:top;transform:rotateX(90deg)}
.step .left{left:0;top:0;width:var(--h);height:var(--s);transform-origin:left;transform:rotateY(-90deg)}
#stairs .step .back{background:color-mix(in oklab,var(--cd) 35%,var(--c-navy-900))}
#stairs .step .left{background:color-mix(in oklab,var(--cd) 30%,var(--c-navy-950))}
#stairs .step.on .back{background:color-mix(in oklab,var(--c) 70%,var(--c-navy-950))}
#stairs .step.on .left{background:color-mix(in oklab,var(--c) 52%,var(--c-navy-950))}

/* v3.10.4: cull walls facing away from camera (far walls were painting over the top) */
.step .f:not(.top){backface-visibility:hidden}
.step .front{transform:rotateX(90deg) rotateY(180deg)}
.step .side{transform:rotateY(-90deg) rotateX(180deg)}

/* keep hidden quote slot hidden even though .quote-slot sets display */
.quote-slot[hidden]{display:none !important}

/* About: Who we are photo */
.who-photo{display:block;width:100%;height:auto;aspect-ratio:3.4/1;object-fit:cover;object-position:center 62%;margin-top:clamp(2.5rem,5vw,4rem);border-radius:var(--rad-14);box-shadow:var(--sh-light-lg)}
@media (max-width:720px){.who-photo{aspect-ratio:16/10;border-radius:var(--rad-10)}}

/* About: Careers pointer, copy beside photo */
.cp-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,4.5rem);align-items:center}
.cp-split .arrow-link{display:inline-flex;margin-top:1.5rem}
.cp-photo{display:block;width:100%;height:clamp(300px,26vw,380px);object-fit:cover;object-position:62% center;border-radius:var(--rad-14);box-shadow:var(--sh-light-lg)}
@media (max-width:860px){.cp-split{grid-template-columns:1fr}.cp-photo{height:clamp(220px,60vw,300px);border-radius:var(--rad-10)}}

/* Services: photo at the top of each What we do card */
.rung-photo{display:block;width:100%;height:auto;aspect-ratio:2.2/1;object-fit:cover;border-radius:var(--rad-10);margin:0 0 1.1rem}
.rung-ph{display:grid;place-content:center;gap:.35rem;text-align:center;padding:1rem;background:color-mix(in oklab,var(--cd,var(--c-green-400)) 8%,transparent);border:1.5px dashed color-mix(in oklab,var(--cd,var(--c-green-400)) 45%,transparent)}
.rung-ph .ph-k{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--cd,var(--c-green-650))}
.rung-ph .ph-t{font-size:var(--fs-14);color:var(--ink-2);max-width:40ch}
/* Services: Other demo services, copy beside photo */
.also-split{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:clamp(2rem,5vw,4rem);align-items:center}
.also-photo{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--rad-14);border:1px solid rgb(var(--c-white-rgb) / .08)}
@media (max-width:860px){.also-split{grid-template-columns:1fr}.also-photo{aspect-ratio:16/10;border-radius:var(--rad-10)}}

/* rung-photo short screens: keep the stacked cards inside the viewport */
@media (min-width:861px) and (max-height:820px){.rung-photo{aspect-ratio:2.8/1}}

/* ===== v3.11.1 design update ===== */
/* P1: palette notes. Light sections use the deeper blue/green below; the bright #5E9E2C / #7AB332 are for dark sections.
   F11 BUTTON RULE: the primary button is bright green (--leaf) with dark text on dark sections, and deep green
   (--leaf-btn #438009) with white text on light sections. Same button, two fills, chosen for contrast. Keep it that way. */
:root{--sky-btn:var(--c-green-500);--sky-ink:var(--c-green-600)}
.zone-light{--sky:var(--sky-btn)}

/* F3: one tag colour system. The blue-to-green ramp belongs to the five situations only;
   the three formats share the brand green and their tags are neutral. */
.deliv-sec .deliv.k-dtc,.deliv-sec .deliv.k-vid{--acc:var(--leaf);--acc-ink:var(--leaf-ink)}
.zone-dark.deliv-sec .deliv.k-dtc,.zone-dark .deliv-sec .deliv.k-dtc,
.zone-dark.deliv-sec .deliv.k-vid,.zone-dark .deliv-sec .deliv.k-vid{--acc-ink:var(--leaf-hi)}
.deliv-sec .deliv .lvl{color:var(--ink-2);border-color:var(--line-2)}

/* F6: one size for section headings, and the Home hero matches the inner-page heroes */
.hero-split h1{font-size:clamp(2.4rem, 5.4vw, 4.4rem)}
.caps-h.h2{font-size:clamp(2rem, 4.6vw, 3.6rem);letter-spacing:normal;margin-top:1.1rem}

/* F7: the three promises use the same card treatment everywhere */
.trust-list div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.1rem}
.trust-list svg{color:var(--leaf-hi)}

/* F4 + F7: Contact form section is a light section; steps use the Home timeline */
.contact-sec.zone-light{background:var(--bg)}
.zone-light .form{background:var(--surface);border-color:var(--line);box-shadow:var(--shadow)}
.zone-light .field input:not([type=checkbox]),.zone-light .field select,.zone-light .field textarea{background:var(--c-white);border-color:var(--line-2);color:var(--ink)}
.zone-light .field input::placeholder,.zone-light .field textarea::placeholder{color:var(--c-slate-400)}
.zone-light .field input:focus,.zone-light .field select:focus,.zone-light .field textarea:focus{border-color:var(--leaf-btn);box-shadow:0 0 0 3px rgb(var(--c-green-500-rgb) / .18)}
.zone-light .pill input:checked+span{border-color:var(--leaf-btn);background:rgb(var(--c-green-350-rgb) / .14);color:var(--ink)}
.zone-light .form-status{color:var(--c-green-650)}
.zone-light .form-status.err{color:#9B1C12}
.contact-page .flow .mg{margin-top:2rem;padding:0;background:none;border:0}
.flow-note{margin:1.4rem 0 0 1.75rem;font-size:var(--fs-15);color:var(--ink-2)}

/* F1 + F5: How we work, J2 "Building the stage" and the restyled step cards */
.pr-stick .x1-plate{height:auto;display:block;padding:clamp(.75rem,1.6vw,1.25rem) clamp(.75rem,1.6vw,1.25rem) 0;
  background:radial-gradient(120% 120% at 20% 0%,var(--c-navy-850),var(--c-navy-950) 70%)}
.pj-svg{display:block;width:100%;height:auto;max-height:var(--plate-h);margin-inline:auto;position:relative;z-index:3}
.pj-ghost{fill:none;stroke:var(--c-slate-400);stroke-dasharray:3 5;stroke-width:1.5;opacity:.35;transition:opacity .4s var(--ease)}
.pj-solid{opacity:0;transform:translateY(-22px);transition:opacity .45s var(--ease),transform .55s var(--ease)}
.pj-blk.on .pj-ghost{opacity:0}
.pj-blk.on .pj-solid{opacity:1;transform:none}
.pj-glow{opacity:.28;transition:cx .5s var(--ease),cy .5s var(--ease),r .5s var(--ease),fill .4s}
.pj-flag{opacity:0;transform:translateY(12px);transition:opacity .4s var(--ease) .25s,transform .5s var(--ease) .25s}
.pj-done .pj-flag{opacity:1;transform:none}
.pj-still .pj-solid,.pj-still .pj-flag,.pj-still .pj-ghost,.pj-still .pj-glow{transition:none}
.pj-cap{position:relative;z-index:3;display:flex;gap:.9rem;align-items:baseline;margin:0;padding:.4rem .5rem 1rem;color:var(--c-slate-50)}
.pj-cap span{font-family:var(--f-mono);font-size:var(--fs-11_5);letter-spacing:.12em;color:var(--c-green-210);white-space:nowrap}
.pj-cap b{font-family:var(--f-display);font-stretch:108%;font-weight:700;font-size:clamp(1.05rem, 1.5vw, 1.25rem)}
.pr-steps{gap:clamp(1rem,2vw,1.25rem)}
.pj-card{--c:var(--c-green-650);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:1.4rem 1.5rem 1.5rem;display:grid;gap:.6rem;opacity:.5;transition:opacity .4s var(--ease),border-color .4s var(--ease);
  margin-bottom:22vh}
.pj-card:last-child{margin-bottom:0}
.pj-card:nth-child(2){--c:var(--c-green-610)}.pj-card:nth-child(3){--c:var(--c-green-600)}.pj-card:nth-child(4){--c:var(--c-green-550)}.pj-card:nth-child(5){--c:var(--c-green-560)}.pj-card:nth-child(6){--c:var(--c-green-570)}
.pj-card.on{opacity:1;border-color:var(--c)}
.pj-card .lvl{justify-self:start;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;
  color:var(--c);border:1px solid color-mix(in oklab,var(--c) 40%,transparent);border-radius:var(--rad-pill);padding:.3em .75em}
.pj-card h3{font-size:clamp(1.25rem, 2vw, 1.55rem);letter-spacing:-.02em;line-height:1.15;margin:0}
.pj-card p{color:var(--ink-2);font-size:var(--fs-15_5);margin:0;max-width:52ch}
.pj-dash{display:flex;gap:6px;margin-top:.35rem}
.pj-dash i{width:22px;height:3px;border-radius:var(--rad-2);background:var(--line-2)}
.pj-dash i.on{background:var(--leaf)}
@media (max-width:860px){.pj-card{margin-bottom:1rem}.pj-card{opacity:1}}

/* F2 review: Home tiles in the Services card style. T2 = photo thumbnail, T3 = icon tile. */
.rv-tag{display:inline-block;margin:0 0 1.5rem;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.12em;text-transform:uppercase;
  color:var(--c-amber-600);background:var(--c-amber-50);border:1px dashed var(--c-amber-300);border-radius:var(--rad-6);padding:.35em .7em}
.bt-v2 .built,.bt-v3 .built{min-height:0;align-content:start;grid-template-rows:none}
.bt-v2 .built .lvl,.bt-v3 .built .lvl{justify-self:start;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;
  color:var(--cd);border:1px solid color-mix(in oklab,var(--cd) 40%,transparent);border-radius:var(--rad-pill);padding:.3em .75em;line-height:1.4}
.bt-v2 .built{padding:0 0 1.6rem;gap:.85rem}
.bt-v2 .t2-img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border-bottom:1px solid var(--line)}
.bt-v2 .built .lvl,.bt-v2 .built h3{margin-inline:1.15rem}
.bt-v2 .built:hover .t2-img{filter:saturate(1.08) brightness(1.03)}
.bt-v3 .built{padding:1.4rem 1.25rem 1.8rem;gap:1rem;min-height:12.5rem}
.t3-row{display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.t3-ic{width:46px;height:46px;flex:none;border-radius:var(--rad-12);display:grid;place-items:center;color:var(--cd);
  background:color-mix(in oklab,var(--c) 16%,var(--c-white))}
.t3-ic svg{width:26px;height:26px}
.bt-v3 .t3-row .lvl{white-space:nowrap}

/* F1 + F5 (final): How we work as a timeline of cards (K2). Replaces the orbit dial and J2.
   Orbit dial script kept as process-orbit-dial-v3.10.js; process.js (J2) is no longer loaded. */
.jt-sec{padding-bottom:var(--bay)}
.jt{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,5vw,4.5rem);align-items:start;margin-top:clamp(1.5rem,3vw,2.5rem)}
.jt-side{position:sticky;top:110px}
.jt-note{margin-top:1.1rem;color:var(--ink-2);font-size:var(--fs-15_5);max-width:42ch}
.jt-list{list-style:none;margin:0;padding:0 0 0 64px;position:relative;display:grid;gap:14px}
.jt-list::before{content:"";position:absolute;left:21px;top:24px;bottom:60px;width:4px;border-radius:var(--rad-2);background:linear-gradient(var(--c-green-400),var(--c-green-210))}
.jt-c{--c:var(--c-green-400);--cd:var(--c-green-650);position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);
  padding:1.05rem 1.35rem 1.15rem;display:grid;grid-template-columns:7.6rem minmax(0,1fr);gap:.25rem 1rem;align-items:baseline}
.jt-c:nth-child(2){--c:var(--c-green-370);--cd:var(--c-green-610)}.jt-c:nth-child(3){--c:var(--c-green-360);--cd:var(--c-green-600)}.jt-c:nth-child(4){--c:var(--c-green-300);--cd:var(--c-green-550)}.jt-c:nth-child(5){--c:var(--c-green-250);--cd:var(--c-green-560)}.jt-c:nth-child(6){--c:var(--c-green-210);--cd:var(--c-green-570)}
.jt-dot{position:absolute;left:-64px;top:.8rem;width:46px;height:46px;border-radius:50%;background:var(--bg);border:3px solid var(--c);
  display:grid;place-items:center;color:var(--cd);font-family:var(--f-mono);font-size:var(--fs-12)}
.jt-c .lvl{grid-row:1/3;align-self:start;justify-self:start;margin-top:.2rem;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;
  color:var(--cd);border:1px solid color-mix(in oklab,var(--cd) 40%,transparent);border-radius:var(--rad-pill);padding:.3em .75em;white-space:nowrap}
.jt-c h3{grid-column:2;margin:0;font-size:clamp(1.1rem, 1.6vw, 1.25rem);letter-spacing:-.015em;line-height:1.2}
.jt-c p{grid-column:2;margin:0;color:var(--ink-2);font-size:var(--fs-15);line-height:1.5}
.jt-c.end{border-color:var(--leaf);background:linear-gradient(90deg,#F2F8EC,var(--surface) 60%)}
.jt-c.end .jt-dot{background:var(--c-green-210);border-color:var(--c-green-210);color:var(--c-navy-950);box-shadow:0 0 0 7px rgb(var(--c-green-210-rgb) / .25)}
@media (max-width:860px){
  .jt{grid-template-columns:1fr}
  .jt-side{position:static}
  .jt-list{padding-left:52px}
  .jt-list::before{left:17px}
  .jt-dot{left:-52px;width:38px;height:38px;font-size:var(--fs-11)}
  .jt-c{grid-template-columns:1fr;gap:.45rem}
  .jt-c .lvl{grid-row:auto;justify-self:start;margin:0}
  .jt-c h3,.jt-c p{grid-column:1}
}

/* timeline line: one segment per step, stopping at the last dot */
.jt-list::before{display:none}
.jt-c:not(:last-child)::before{content:"";position:absolute;left:calc(-64px + 21px);width:4px;border-radius:var(--rad-2);
  top:calc(.8rem + 23px);bottom:calc(-14px - .8rem - 23px);background:linear-gradient(var(--c),var(--n,var(--c)))}
.jt-c:nth-child(1){--n:var(--c-green-370)}.jt-c:nth-child(2){--n:var(--c-green-360)}.jt-c:nth-child(3){--n:var(--c-green-300)}.jt-c:nth-child(4){--n:var(--c-green-250)}.jt-c:nth-child(5){--n:var(--c-green-210)}
.jt-dot{z-index:1}
@media (max-width:860px){.jt-c:not(:last-child)::before{left:calc(-52px + 17px);top:calc(.8rem + 19px);bottom:calc(-14px - .8rem - 19px)}}

/* How we work: working-session photo under the intro, pinned with it */
.jt-photo{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;object-position:60% 50%;margin-top:clamp(1.5rem,3vw,2rem);
  border-radius:var(--r);box-shadow:var(--sh-light-lg)}
@media (max-width:860px){.jt-photo{aspect-ratio:16/10}}

/* v3.11.2 review: one shared card for Home "The challenging ones" and About "What you can count on".
   Home cards take the situation ramp (--c/--cd from .btx nth-child); About cards take the brand green. */
.sc{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:1.5rem 1.4rem 1.6rem;display:grid;gap:.6rem;align-content:start;color:inherit;text-decoration:none;
  transition:border-color .25s var(--ease),transform .25s var(--ease)}
a.sc:hover{border-color:var(--cd);transform:translateY(-2px)}
.sc-grid .sc:nth-child(1){--c:var(--c-green-400);--cd:var(--c-green-650)}.sc-grid .sc:nth-child(2){--c:var(--c-green-370);--cd:var(--c-green-610)}.sc-grid .sc:nth-child(3){--c:var(--c-green-360);--cd:var(--c-green-600)}
.sc-grid .sc:nth-child(4){--c:var(--c-green-300);--cd:var(--c-green-550)}.sc-grid .sc:nth-child(5){--c:var(--c-green-210);--cd:var(--c-green-560)}
.sc-brand{--c:var(--c-green-350);--cd:var(--c-green-600)}
.sc svg{width:30px;height:30px;color:var(--cd);flex:none}
.sc h3{margin:0;font-size:1.15rem;letter-spacing:-.015em;line-height:1.15;color:var(--ink)}
.sc p{margin:0;color:var(--ink-2);font-size:var(--fs-15);line-height:1.5}
.sc-k{font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;color:var(--cd)}
.sc-s1 > svg{margin-bottom:.4rem}
.sc-s2{padding-bottom:1.9rem}
.sc-ib{width:46px;height:46px;border-radius:var(--rad-12);display:grid;place-items:center;background:color-mix(in oklab,var(--c) 16%,var(--c-white));margin-bottom:.5rem}
.sc-ib svg{width:24px;height:24px}
.sc-bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--c)}
.sc-s3{border-top:3px solid var(--c);padding-top:1.3rem;box-shadow:var(--shadow)}
.sc-row{display:flex;align-items:center;gap:.6rem;margin-bottom:.35rem}
.sc-row svg{width:22px;height:22px}
.sc-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,4vw,3rem)}
@media (max-width:1080px){.sc-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:720px){.sc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.sc-grid{grid-template-columns:1fr}}

/* S3 with pills: the Services pill replaces the icon + label row on Home */
.sc-pill .lvl{justify-self:start;margin-bottom:.35rem;font-family:var(--f-mono);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;
  color:var(--cd);border:1px solid color-mix(in oklab,var(--cd) 40%,transparent);border-radius:var(--rad-pill);padding:.3em .75em;line-height:1.4}

/* v3.11.3 final shared card: white card, colour bar along the bottom.
   About = icon + title + text in brand green; Home = Services pill + headline in the situation colours. */
.sc-icon,.sc-pill{padding-bottom:1.9rem;box-shadow:var(--shadow)}
.sc-icon > svg{margin-bottom:.4rem}
.sc-pill{border-top:1px solid var(--line);padding-top:1.5rem}

/* v3.11.4 experiment: green only. Every blue/teal accent from the journey ramp was mapped to a green of similar
   weight (bright greens for bars/blocks, deep greens for text on light). Compare with v3.11.3 to undo. */

/* How we work, four steps: ramp spread across 4 (deep to bright green, matching the green-only palette) */
.jt-c:nth-child(1){--c:var(--c-green-400);--cd:var(--c-green-650);--n:var(--c-green-360)}
.jt-c:nth-child(2){--c:var(--c-green-360);--cd:var(--c-green-600);--n:var(--c-green-250)}
.jt-c:nth-child(3){--c:var(--c-green-250);--cd:var(--c-green-560);--n:var(--c-green-210)}
.jt-c:nth-child(4){--c:var(--c-green-210);--cd:var(--c-green-570)}

/* v3.11.6: What we do by audience (Sales teams, Your customers, Live events) + "hard parts" strip */
.sc-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.sc-grid-4 .sc:nth-child(1){--c:var(--c-green-400);--cd:var(--c-green-650)}.sc-grid-4 .sc:nth-child(2){--c:var(--c-green-360);--cd:var(--c-green-600)}
.sc-grid-4 .sc:nth-child(3){--c:var(--c-green-300);--cd:var(--c-green-550)}.sc-grid-4 .sc:nth-child(4){--c:var(--c-green-210);--cd:var(--c-green-560)}
@media (max-width:1080px){.sc-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.sc-grid-4{grid-template-columns:1fr}}
.chal{margin-top:clamp(2.5rem,5vw,4rem);padding-top:clamp(2rem,4vw,3rem);border-top:1px solid var(--line)}
.chal-h{font-size:clamp(1.3rem, 2.2vw, 1.7rem);letter-spacing:-.02em;margin:0;max-width:34ch}
.chal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:860px){.chal-grid{grid-template-columns:1fr}}

/* v3.12.1: Interactive demo dialog, "screens first" (M2). Scoped to the dialog only. */
/* v3.12.1: every dialog shares one limit - at most 90% of the window wide and 85% tall, so the site
   always shows around it - and its width follows what is inside, so nothing scrolls */
.ex-modal{padding:0}
.ex-modal-card{max-width:90vw;max-height:85vh}
/* interactive demo: two 16:9 panes side by side (about 300px of header, how-to and labels) */
.ex-modal-card[data-kind="sim"]{width:min(90vw, calc((85vh - 300px) * 3.55 + 90px))}
/* video and DTC: one 16:9 pane (about 120px of header and padding) */
.ex-modal-card[data-kind="dtc"],.ex-modal-card[data-kind="vid"]{width:min(90vw, calc((85vh - 120px) * 16 / 9 + 32px))}
.ex-modal-head{padding:12px 20px}
.ex-head-acts{display:flex;gap:.6rem;align-items:center;flex:none}
.ex-head-acts #restart-demo{background:var(--c-white);color:var(--c-slate-900);border:1px solid var(--c-slate-150)}
.ex-head-acts #restart-demo:hover,.ex-modal-head [data-example-close]:hover{border-color:var(--c-green-500);color:var(--c-green-600);background:var(--c-white)}
/* Close is a dark-zone ghost button sitting on the light dialog header - give it the same white button as Restart */
.ex-modal-head [data-example-close]{background:var(--c-white);color:var(--c-slate-900);border:1px solid var(--c-slate-150)}
.ex-modal-body{padding:12px 16px 16px}
.ex-modal-body .seller-people,.ex-modal-body .audience-people,.ex-modal-body .audience-caption,.ex-modal-body .room-eyebrow,
.ex-modal-body .monitor-stand,.ex-modal-body .monitor-foot,.ex-modal-body .monitor-chin,.ex-modal-body .monitor-camera,
.ex-modal-body .live-toolbar,.ex-modal-body .live-bottom{display:none!important}
.ex-modal-body .howto{display:flex;align-items:center;gap:18px;padding:10px 16px}
.ex-modal-body .howto-head{border:0;padding:0;margin:0;flex:none}
.ex-modal-body .howto-head h2{font-size:var(--fs-14);margin:0;white-space:nowrap}
.ex-modal-body .lw-steps{display:flex;gap:22px;flex:1;border:0;grid-template-columns:none}
.ex-modal-body .lw-step{padding:0;border:0;display:flex;gap:8px;align-items:center}
.ex-modal-body .lw-step+.lw-step{padding-left:18px}/* room between the divider and the number */
/* v3.12.2: a step lights up while you hover it (and rings its target in the Backstage) */
.ex-modal-body .lw-step{position:relative;cursor:default}
.ex-modal-body .lw-step::before{content:"";position:absolute;inset:-7px -8px;border-radius:var(--rad-10);border:1px solid transparent;
  transition:background .2s,border-color .2s;pointer-events:none}
.ex-modal-body .lw-step+.lw-step::before{left:10px}
.ex-modal-body .lw-step:hover::before{background:rgb(var(--c-green-350-rgb) / .14);border-color:var(--c-green-500)}
.ex-modal-body .lw-step:hover i{box-shadow:0 0 0 2px var(--c-white),0 0 0 4px var(--c-green-500)}
.ex-modal-body .lw-step i{width:20px;height:20px;font-size:var(--fs-11);flex:none}
.ex-modal-body .lw-step>div{display:block}
.ex-modal-body .lw-step b{font-size:var(--fs-13_5)}
.ex-modal-body .lw-step p{font-size:var(--fs-12_5);margin:0;line-height:1.35}
.ex-modal-body .live-workspace{margin-top:10px}
.ex-modal-body .lw-screen{padding:10px 12px 12px}
.ex-modal-body .screen-head{margin-bottom:8px}
.ex-modal-body .seller-room,.ex-modal-body .audience-room{padding:0;background:none;border:0;box-shadow:none}
.ex-modal-body .monitor-bezel{padding:0;background:none;border:1px solid var(--line,var(--c-slate-100));border-radius:var(--rad-10);overflow:hidden;
  box-shadow:var(--sh-light-sm)}

/* rc1.5: How we work, scroll progress (jt-progress.js adds .jt-anim; without it, or with reduced
   motion, the timeline keeps its static all-green look). Grey track that fills with green; the current
   step's circle fills and glows and its card gets a green outline; passed steps keep a green ring;
   the Delivered flag lights up last. Cards are not faded. */
.jt-anim .jt-c:not(:last-child)::before{background:linear-gradient(var(--c),var(--n,var(--c))) top/100% var(--f,0%) no-repeat,var(--line-2)}
.jt-anim .jt-dot{border-color:var(--line-2);color:var(--ink-3);background:var(--bg);box-shadow:none;
  transition:background .35s,border-color .35s,color .35s,box-shadow .35s,transform .45s var(--ease)}
.jt-anim .jt-c.done .jt-dot{border-color:var(--c);color:var(--cd)}
.jt-anim .jt-c.on .jt-dot{background:var(--c);border-color:var(--c);color:var(--c-navy-950);transform:scale(1.14);
  box-shadow:0 0 0 7px rgb(var(--c-green-350-rgb) / .22),0 0 26px 4px rgb(var(--c-green-350-rgb) / .45)}
.jt-anim .jt-c.end .jt-dot svg{opacity:.45;transition:opacity .35s,transform .45s var(--ease)}
.jt-anim .jt-c.end.on .jt-dot{background:var(--c-green-210);border-color:var(--c-green-210)}
.jt-anim .jt-c.end.on .jt-dot svg{opacity:1;transform:rotate(-8deg) scale(1.08)}
.jt-anim .jt-c{transition:border-color .35s,box-shadow .35s,background .35s}
.jt-anim .jt-c.end:not(.on){background:var(--surface);border-color:var(--line)}
.jt-anim .jt-c.on{border-color:var(--leaf);box-shadow:var(--shadow),0 0 0 1px var(--leaf)}
.jt-anim .jt-c.end:not(.on) .jt-dot{background:var(--bg);border-color:var(--line-2);color:var(--ink-3);box-shadow:none}
/* rc1.5: pinned mode - the section is made taller by jt-progress.js and its content holds under the nav */
.jt-sec.jt-pin>.shell{position:sticky;top:var(--jt-top,88px)}
.jt-sec.jt-pin .jt-side{position:static}

/* rc1.5: contact form honeypot - off-screen, not display:none (some bots skip hidden fields) */
.hp-field{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
