/* Metro Tech — gradient theme (pink → violet), mobile-first. See docs/design/DESIGN_SYSTEM.md */

:root{
  --g1:#11b7fd; --g2:#0875f6; --g3:#5c27c3; --g4:#ed7efd;
  --grad:linear-gradient(120deg,var(--g1) 0%,var(--g2) 38%,var(--g3) 72%,var(--g4) 100%);
  --grad-soft:linear-gradient(120deg,#e3f3ff 0%,#eae3ff 60%,#fbe6ff 100%);
  --grad-dark:linear-gradient(120deg,#061a3d 0%,#0b0a2e 55%,#1e0a3a 100%);
  --page:#ffffff; --tint:#f3f6ff; --tint-2:#f7f0ff; --card:#ffffff;
  --ink:#0f1435; --ink-2:#434a6b; --ink-3:#737a99; --line:#e4e8f5;
  --dark:#0b0a2e; --on-dark:#ffffff; --on-dark-2:#c9cfe6;
  --pink:#0875f6; --violet:#5c27c3; --green:#15a36a; --green-soft:#e3f7ee; --amber:#ffb020; --amber-soft:#fff2d6;
  --font:"Segoe UI",Roboto,"Helvetica Neue",Helvetica,Arial,"Noto Sans",sans-serif;
  --fs-xs:.75rem; --fs-sm:.875rem; --fs-md:1rem; --fs-lg:1.125rem; --fs-xl:1.375rem; --fs-2xl:1.75rem;
  --fs-3xl:clamp(1.9rem,5.5vw,2.5rem); --fs-4xl:clamp(2rem,5.6vw,3.4rem); --fs-hero:clamp(2.2rem,8vw,4.2rem);
  --s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4rem;--s-9:5.5rem;
  --r-sm:8px;--r-md:14px;--r-lg:22px;--r-xl:30px;
  --shadow:0 10px 30px rgba(10,30,120,.10); --shadow-lg:0 26px 60px rgba(10,30,120,.20); --glow:0 10px 30px rgba(8,117,246,.30);
  --container:1200px; --ease:cubic-bezier(.2,.7,.2,1);
  /* aliases for inline styles on older pages */
  --brand-indigo:var(--violet);--brand-teal:var(--green);--brand-emerald:var(--green);--text-primary:var(--ink);--text-secondary:var(--ink-2);--text-muted:var(--ink-3);
  --bg-surface:#fff;--bg-subtle:var(--tint);--border-card:var(--line);--border-subtle:var(--line);--radius-xl:var(--r-lg);--radius-lg:var(--r-md);--radius-md:var(--r-sm);--shadow-sm:var(--shadow);
  --orange:var(--pink);--orange-2:var(--violet);--navy:var(--dark);--cream:var(--tint);--sky:#d9c9ff;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--font);font-size:var(--fs-md);line-height:1.6;color:var(--ink);background:var(--page);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video,svg{max-width:100%;display:block}
a{color:var(--violet);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--pink);outline-offset:3px}
h1,h2,h3,h4{font-weight:700;line-height:1.12;letter-spacing:-.02em;margin:0 0 var(--s-4);color:var(--ink)}
h1{font-size:var(--fs-hero)}h2{font-size:var(--fs-4xl)}h3{font-size:var(--fs-xl)}h4{font-size:var(--fs-lg)}
p{margin:0 0 var(--s-4)}ul,ol{margin:0 0 var(--s-4);padding-left:1.25rem}
.container{width:min(100% - 2rem,var(--container));margin-inline:auto}
.wrap,.narrow{width:min(100% - 2rem,800px);margin-inline:auto}
.skip-link{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:var(--s-2) var(--s-4);z-index:100}.skip-link:focus{left:var(--s-4)}
.eyebrow{display:inline-block;font-size:var(--fs-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:var(--s-3)}
.muted{color:var(--ink-3)}
.lead{font-size:var(--fs-lg);color:var(--ink-2);max-width:60ch}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:48px;padding:0 var(--s-5);border-radius:999px;font:inherit;font-size:var(--fs-sm);font-weight:700;border:2px solid transparent;cursor:pointer;white-space:nowrap;transition:transform .2s var(--ease),box-shadow .2s,background .2s}
.btn:hover{text-decoration:none;transform:translateY(-2px)}
.btn-primary,.btn-orange,.btn-grid{background:var(--grad);color:#fff;box-shadow:var(--glow)}
.btn-primary:hover,.btn-orange:hover,.btn-grid:hover{color:#fff;box-shadow:0 14px 34px rgba(92,39,195,.35)}
.btn-secondary,.btn-ghost{background:#fff;color:var(--ink);border-color:var(--line)}
.btn-secondary:hover,.btn-ghost:hover{border-color:var(--violet);color:var(--violet)}
.btn-sm{min-height:40px;padding:0 var(--s-4)}
.btn .ico{width:16px;height:16px}
.link-arrow{display:inline-flex;align-items:center;gap:var(--s-2);font-weight:700;color:var(--violet)}
.link-arrow::after{content:"→";transition:transform .2s}
.link-arrow:hover{text-decoration:none}.link-arrow:hover::after{transform:translateX(4px)}

/* ---------- Header ---------- */
.topbar{display:none}
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav-wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);min-height:64px}
.brand-logo{display:inline-flex;align-items:center;gap:10px;color:var(--ink);font-weight:800;font-size:1.2rem;letter-spacing:-.02em}
.brand-logo:hover{text-decoration:none}
.brand-logo .mark{width:36px;height:36px;border-radius:11px;background:var(--grad);display:grid;place-items:center;color:#fff;font-weight:900;box-shadow:var(--glow)}
.brand-logo small{display:none}
.nav-menu{display:none;list-style:none;margin:0;padding:0;gap:var(--s-1)}
.nav-menu>li{position:relative}
.nav-menu>li>a,.nav-menu>li>span{display:inline-flex;align-items:center;gap:6px;height:64px;padding:0 var(--s-4);color:var(--ink);font-size:var(--fs-sm);font-weight:600;cursor:default}
.nav-menu>li>a:hover{text-decoration:none;color:var(--violet)}
.nav-menu>li>span::after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .2s}
.nav-menu>li:hover>span::after{transform:translateY(1px) rotate(225deg)}
.nav-menu>li.is-current>span,.nav-menu>li.is-current>a{box-shadow:inset 0 -3px 0 var(--pink)}
.nav-dropdown{position:absolute;top:100%;left:0;min-width:300px;margin:0;padding:var(--s-3) 0;list-style:none;background:#fff;color:var(--ink);border-radius:var(--r-md);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s var(--ease),transform .2s var(--ease),visibility 0s .2s}
.nav-menu>li:hover .nav-dropdown,.nav-menu>li:focus-within .nav-dropdown{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.nav-dropdown a{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-5);color:var(--ink);font-size:var(--fs-sm)}
.nav-dropdown a:hover{background:var(--tint);color:var(--violet);text-decoration:none}
.nav-dropdown .idx{font-size:var(--fs-xs);font-weight:800;color:var(--pink);min-width:1.4em}
.nav-dropdown li.sep{height:1px;background:var(--line);margin:var(--s-2) var(--s-4)}
.nav-dropdown small{color:var(--ink-3)}
.nav-actions{display:none}
.btn-grid .dots{display:grid;grid-template-columns:repeat(3,4px);gap:2px}.btn-grid .dots i{width:4px;height:4px;background:currentColor;border-radius:1px}
.nav-mobile{position:static}
.nav-mobile summary{list-style:none;cursor:pointer;color:var(--ink);font-size:var(--fs-sm);font-weight:700;border:2px solid var(--line);border-radius:999px;padding:10px 16px;min-height:44px;display:inline-flex;align-items:center;gap:8px}
.nav-mobile summary::-webkit-details-marker{display:none}
.nav-mobile summary::before{content:"";width:18px;height:2px;background:currentColor;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor}
.nav-mobile[open] summary{background:var(--grad);color:#fff;border-color:transparent}
.nav-mobile-panel{position:fixed;left:0;right:0;top:64px;bottom:0;background:#fff;padding:var(--s-4) var(--s-5) var(--s-8);z-index:60;overflow:auto}
.nav-mobile-panel h4{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--pink);margin:var(--s-5) 0 var(--s-2)}
.nav-mobile-panel a{display:block;padding:12px 0;color:var(--ink);border-bottom:1px solid var(--line);font-size:var(--fs-md);font-weight:500}
.nav-mobile-panel .btn{margin-top:var(--s-5);width:100%}
@media(min-width:960px){.nav-menu{display:flex}.nav-actions{display:block}.nav-mobile{display:none}}

/* ---------- Hero ---------- */
.hero{position:relative;color:#fff;overflow:hidden;background:var(--grad-dark);display:flex;flex-direction:column;justify-content:space-between;min-height:min(100svh,820px)}
.hero video,.hero .hero-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.hero .hero-poster{background-size:cover;background-position:center}
.hero video.hero-clip{opacity:0;transition:opacity .9s var(--ease)}.hero video.hero-clip.is-active{opacity:1}
.hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(120deg,rgba(255,47,142,.72) 0%,rgba(138,43,226,.70) 55%,rgba(40,10,80,.80) 100%);mix-blend-mode:multiply}
.hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(20,8,40,.15),rgba(20,8,40,.55) 100%)}
.hero>.container{position:relative;z-index:2}
.hero-top{padding:var(--s-8) 0 var(--s-5)}
.hero h1{color:#fff;max-width:13ch;margin-bottom:var(--s-5);text-shadow:0 2px 24px rgba(0,0,0,.25)}
.hero-stat{padding-top:var(--s-4);border-top:1px solid rgba(255,255,255,.4);max-width:420px}
.hero-stat b{display:block;font-size:var(--fs-3xl);font-weight:800;line-height:1.1}
.hero-stat>span{font-size:var(--fs-sm);color:#e9efff}
.hero-ctas{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-5)}
.hero-ctas .btn-primary{background:#fff;color:var(--violet);box-shadow:0 10px 30px rgba(0,0,0,.25)}
.hero-ctas .btn-ghost{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.5);backdrop-filter:blur(6px)}
.hero-ctas .btn-ghost:hover{background:#fff;color:var(--violet)}
.hero-bottom{padding:var(--s-5) 0 var(--s-7);display:grid;gap:var(--s-4);align-items:center}
.hero-bottom p{max-width:28ch;color:#e9efff;margin:0;font-size:var(--fs-sm)}
.tiles{display:flex;gap:var(--s-3);overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tiles::-webkit-scrollbar{display:none}
.tile{position:relative;flex:0 0 78%;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:space-between;min-height:92px;padding:var(--s-4);border-radius:var(--r-md);background:rgba(255,255,255,.14);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.25);color:#fff;transition:background .2s,transform .2s var(--ease)}
.tile:hover{background:rgba(255,255,255,.24);text-decoration:none;transform:translateY(-3px)}
.tile b{font-size:var(--fs-lg);font-weight:800}.tile small{font-size:var(--fs-xs);color:#f0e8ff}
.tile .ext{position:absolute;right:12px;bottom:12px;width:16px;height:16px;opacity:.9}
@media(min-width:640px){.tiles{display:grid;grid-template-columns:repeat(3,1fr);overflow:visible}.tile{flex:auto}}
@media(min-width:900px){.hero-bottom{grid-template-columns:1fr 2fr;gap:var(--s-8)}.hero-top{padding-top:var(--s-9)}}
.hero-nav{position:absolute;right:12px;top:12px;z-index:3;display:flex;align-items:center;gap:6px;background:rgba(6,14,40,.5);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.25);border-radius:999px;padding:4px}
.hero-arrow{width:40px;height:40px;border-radius:50%;border:0;background:#fff;color:var(--violet);font-size:1.4rem;line-height:1;cursor:pointer;display:grid;place-items:center}
.hero-arrow:hover{background:var(--pink);color:#fff}
.hero-clip-name{color:#fff;font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;padding:0 6px;white-space:nowrap}
@media(max-width:640px){.hero-clip-name{display:none}}
.wave{display:block;width:100%;height:60px;margin-top:-1px}
.wave path{fill:var(--page)}

/* ---------- Sections ---------- */
.sec{position:relative;padding:var(--s-8) 0}
@media(min-width:900px){.sec{padding:var(--s-9) 0}}
.sec-white{background:var(--page)}.sec-tint{background:var(--tint)}.sec-cream,.sec-cloud{background:var(--tint)}
.sec-grad{background:var(--grad);color:#fff}
.sec-dark,.sec-navy{background:var(--grad-dark);color:#fff}
.sec-grad h2,.sec-dark h2,.sec-navy h2,.sec-grad h3,.sec-dark h3,.sec-navy h3{color:#fff}
.sec-grad p,.sec-dark p,.sec-navy p{color:#e6e9ff}
.sec-grad .eyebrow,.sec-dark .eyebrow,.sec-navy .eyebrow{background:none;color:#bfe3ff}
.spine::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(180deg,transparent,rgba(92,39,195,.18) 15%,rgba(17,183,253,.18) 85%,transparent);pointer-events:none}
.spine .dot{position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--grad);box-shadow:0 0 0 8px rgba(8,117,246,.14)}
@media(max-width:899px){.spine::before,.spine .dot{display:none}}
.two{display:grid;gap:var(--s-6);align-items:center}
@media(min-width:900px){.two{grid-template-columns:1fr 1fr;gap:var(--s-9)}.two.flip>:first-child{order:2}}
.two h2{max-width:16ch}
.sec-head{max-width:720px;margin-bottom:var(--s-6)}
.sec-head p{font-size:var(--fs-lg);color:var(--ink-2)}
.bullets{list-style:none;padding:0;margin:0 0 var(--s-5)}
.bullets li{position:relative;padding-left:1.6rem;margin-bottom:var(--s-3)}
.bullets li::before{content:"✓";position:absolute;left:0;top:0;width:20px;height:20px;border-radius:50%;background:var(--grad);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center;margin-top:3px}
.big{display:block;font-size:clamp(2.6rem,9vw,4.6rem);font-weight:800;letter-spacing:-.03em;line-height:1;margin:var(--s-4) 0 var(--s-2)}
.big+.cap{display:block;font-size:var(--fs-md);color:var(--ink-2)}
.sec-dark .big+.cap,.sec-navy .big+.cap,.banner .cap{color:#e6e9ff}

/* ---------- Photo card + slides + phone ---------- */
.photo-card{position:relative;max-width:560px;margin-inline:auto;width:100%}
.photo-card .ph{position:relative;z-index:1;border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/3;box-shadow:var(--shadow-lg);background:var(--tint)}
.photo-card .ph img,.photo-card .ph video{width:100%;height:100%;object-fit:cover}
.photo-card::after{content:"";position:absolute;inset:18px -14px -14px 18px;border-radius:var(--r-lg);background:var(--grad);opacity:.9;z-index:0}
@media(min-width:900px){.photo-card::after{inset:26px -26px -26px 26px}}
.photo-card.soft::after{background:var(--grad-soft);opacity:1}
.photo-card.tall .ph{aspect-ratio:3/4}
.photo-card.wide .ph{aspect-ratio:16/10}
.slides{position:relative}
.slides>img,.slides>.slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.1s var(--ease)}
.slides>.is-on{opacity:1}
.slides .dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:6px;z-index:2}
.slides .dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.55);transition:transform .2s,background .2s}
.slides .dots i.on{background:#fff;transform:scale(1.35)}
.play{position:absolute;z-index:2;left:-10px;bottom:-10px;width:60px;height:60px;border-radius:50%;background:var(--grad);color:#fff;border:3px solid #fff;display:grid;place-items:center;cursor:pointer;box-shadow:var(--glow);transition:transform .2s var(--ease)}
.play:hover{transform:scale(1.08)}.play svg{width:22px;height:22px;margin-left:3px}
.phone{position:relative;width:min(260px,70%);aspect-ratio:390/800;border-radius:34px;background:#111;padding:10px;box-shadow:var(--shadow-lg)}
.phone::before{content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);width:34%;height:18px;background:#111;border-radius:0 0 14px 14px;z-index:3}
.phone .scr{position:relative;width:100%;height:100%;border-radius:26px;overflow:hidden;background:#fff}
.phone .scr img{width:100%;height:100%;object-fit:cover;object-position:top}
.phone.float{position:absolute;z-index:3;left:-6px;bottom:-24px;width:38%;min-width:120px;padding:6px;border-radius:22px}
.phone.float::before{height:10px;width:30%}
.phone.float .scr{border-radius:17px}
.phone-center{display:flex;justify-content:center;padding:var(--s-4) 0}
.photo-stage{position:relative;max-width:560px;margin-inline:auto;padding-bottom:28px}

/* ---------- Banner ---------- */
.banner{position:relative;color:#fff;overflow:hidden;background:var(--dark)}
.banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%}
.banner::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,47,142,.75),rgba(138,43,226,.8) 60%,rgba(20,8,40,.9));mix-blend-mode:multiply}
.banner .container{position:relative;z-index:1;padding:var(--s-8) 0;display:grid}
.banner .copy{max-width:520px}
.banner h2{color:#fff}
@media(min-width:900px){.banner .container{padding:var(--s-9) 0}.banner .copy{justify-self:end}}

/* ---------- Cards (carousel on phone, grid on desktop) ---------- */
.cards{display:flex;gap:var(--s-4);overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 6px 18px;margin:0 -6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.cards::-webkit-scrollbar{display:none}
.card{flex:0 0 84%;scroll-snap-align:start;position:relative;display:flex;flex-direction:column;background:var(--card);color:var(--ink);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);transition:transform .25s var(--ease),box-shadow .25s;text-decoration:none}
.card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);text-decoration:none}
.card .pic{aspect-ratio:16/10;overflow:hidden;background:var(--tint);position:relative}
.card .pic img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.card:hover .pic img{transform:scale(1.05)}
.card .body{padding:var(--s-5);display:flex;flex-direction:column;gap:var(--s-3);flex:1}
.card .num{font-size:var(--fs-xs);font-weight:800;color:var(--pink);letter-spacing:.1em}
.card h3{margin:0;color:var(--ink)}
.card p{color:var(--ink-2);margin:0;flex:1;font-size:var(--fs-sm)}
.card .btn{align-self:flex-start}
@media(min-width:640px){.cards{display:grid;grid-template-columns:repeat(2,1fr);overflow:visible;padding:0;margin:0}.card{flex:auto}}
@media(min-width:1000px){.cards{grid-template-columns:repeat(3,1fr)}}
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:var(--fs-xs);font-weight:800;letter-spacing:.04em;background:var(--green-soft);color:var(--green)}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.badge.dev,.badge-dev{background:var(--amber-soft);color:#9a5b00}
.badge-live{background:var(--green-soft);color:var(--green)}

/* ---------- Stats ---------- */
.stats{display:grid;gap:var(--s-5);grid-template-columns:repeat(2,1fr);border-top:1px solid var(--line);padding-top:var(--s-6)}
@media(min-width:1000px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat b{display:block;font-size:var(--fs-3xl);font-weight:800;letter-spacing:-.03em;line-height:1.05;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat>span{color:var(--ink-2);font-size:var(--fs-sm)}
.sec-dark .stats,.sec-navy .stats{border-color:rgba(255,255,255,.15)}
.sec-dark .stat b,.sec-navy .stat b{background:none;color:#fff}
.sec-dark .stat>span,.sec-navy .stat>span{color:#c9cfe6}

/* ---------- Journey (how a project runs) ---------- */
.journey{display:grid;gap:var(--s-5)}
.journey-tabs{display:flex;gap:var(--s-2);overflow-x:auto;scrollbar-width:none;padding:4px;margin:0 -4px}
.journey-tabs::-webkit-scrollbar{display:none}
.journey-tab{flex:0 0 auto;display:flex;align-items:center;gap:10px;min-height:48px;padding:0 16px;border-radius:999px;background:#fff;border:2px solid var(--line);font:inherit;font-size:var(--fs-sm);font-weight:700;color:var(--ink);cursor:pointer;white-space:nowrap;transition:all .2s}
.journey-tab i{width:26px;height:26px;border-radius:50%;background:var(--tint);color:var(--violet);display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:800}
.journey-tab.on{background:var(--grad);color:#fff;border-color:transparent;box-shadow:var(--glow)}
.journey-tab.on i{background:rgba(255,255,255,.25);color:#fff}
.journey-panel{display:none;background:#fff;border-radius:var(--r-lg);box-shadow:var(--shadow);overflow:hidden}
.journey-panel.on{display:grid;animation:fadeUp .5s var(--ease)}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.journey-panel .txt{padding:var(--s-5)}
.journey-panel .when{display:inline-block;font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--pink);margin-bottom:var(--s-2)}
.journey-panel h3{font-size:var(--fs-2xl)}
.journey-panel .vis{background:var(--grad-soft);display:grid;place-items:center;padding:var(--s-5);min-height:260px}
.journey-panel .vis img{max-height:320px;width:auto;border-radius:var(--r-md);box-shadow:var(--shadow-lg)}
.journey-panel .vis .phone{width:min(200px,60%)}
.journey-progress{height:4px;background:var(--line);border-radius:4px;overflow:hidden}
.journey-progress i{display:block;height:100%;background:var(--grad);width:0;transition:width .3s}
.journey-progress i.run{animation:prog 6s linear forwards}
@keyframes prog{from{width:0}to{width:100%}}
@media(min-width:900px){.journey-panel.on{grid-template-columns:1fr 1fr}.journey-panel .txt{padding:var(--s-7)}}

/* ---------- Automation diagram ---------- */
.diagram{position:relative;max-width:560px;margin-inline:auto}
.diagram svg{width:100%;height:auto}
.diagram .lnk{stroke:url(#gline);stroke-width:2.5;fill:none;stroke-dasharray:8 8;animation:dash 1.6s linear infinite}
@keyframes dash{to{stroke-dashoffset:-32}}
.diagram .node{filter:drop-shadow(0 10px 20px rgba(60,20,120,.18))}
.diagram .pulse{animation:pulse 2.4s ease-in-out infinite;transform-origin:center;transform-box:fill-box}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@media(prefers-reduced-motion:reduce){.diagram .lnk,.diagram .pulse,.journey-progress i.run{animation:none}}

/* ---------- Steps / logos / help ---------- */
.steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-4);counter-reset:s}
@media(min-width:900px){.steps{grid-template-columns:repeat(3,1fr)}}
.steps li{background:#fff;border-radius:var(--r-md);padding:var(--s-5);box-shadow:var(--shadow)}
.steps li::before{counter-increment:s;content:"0" counter(s);display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--grad);color:#fff;font-weight:800;font-size:var(--fs-sm);margin-bottom:var(--s-3)}
.steps h3{font-size:var(--fs-lg);margin-bottom:var(--s-2)}.steps p{margin:0;color:var(--ink-2);font-size:var(--fs-sm)}
.logos{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-5)}
.logos span{padding:10px 16px;border-radius:999px;background:#fff;box-shadow:var(--shadow);font-weight:700;font-size:var(--fs-sm);color:var(--ink)}
.help{background:var(--grad);color:#fff;padding:var(--s-7) 0}
.help .container{display:grid;gap:var(--s-5);align-items:center}
@media(min-width:900px){.help .container{grid-template-columns:1fr auto}}
.help h2{color:#fff;font-size:var(--fs-2xl);margin-bottom:var(--s-2)}
.help p{margin:0 0 var(--s-3);color:#e3f3ff}
.help .link-arrow{color:#fff}
.help .btn-orange{background:#fff;color:var(--violet);box-shadow:0 10px 30px rgba(0,0,0,.2)}

/* ---------- Inner page banner ---------- */
.page-banner{position:relative;background:var(--grad-dark);color:#fff;overflow:hidden}
.page-banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.page-banner::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,47,142,.8),rgba(138,43,226,.8) 60%,rgba(6,14,40,.92));mix-blend-mode:multiply}
.page-banner .container{position:relative;z-index:1;padding:var(--s-7) 0}
@media(min-width:900px){.page-banner .container{padding:var(--s-8) 0}}
.page-banner h1{color:#fff;font-size:var(--fs-4xl);max-width:18ch}
.page-banner .lead{color:#e9efff}
.page-banner .eyebrow{background:none;color:#bfe3ff}
.crumbs{font-size:var(--fs-xs);color:#d8e4ff;margin-bottom:var(--s-4)}.crumbs a{color:#fff}

/* ---------- Definition list / cols / aside ---------- */
.defs{display:grid;gap:0;margin:0;background:#fff;border-radius:var(--r-md);box-shadow:var(--shadow);overflow:hidden}
.defs>div{display:grid;gap:4px;padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--line)}
.defs>div:last-child{border-bottom:0}
.defs dt{font-size:var(--fs-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.defs dd{margin:0;font-size:var(--fs-lg);overflow-wrap:anywhere}
@media(min-width:640px){.defs>div{grid-template-columns:200px 1fr;align-items:baseline}}
.cols{display:grid;gap:var(--s-6)}
@media(min-width:900px){.cols{grid-template-columns:2fr 1fr;gap:var(--s-8);align-items:start}}
.aside-card{background:#fff;border-radius:var(--r-md);box-shadow:var(--shadow);padding:var(--s-5);margin-bottom:var(--s-5)}
.aside-card h4{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--pink);margin-bottom:var(--s-3)}
.aside-card ul{list-style:none;padding:0;margin:0}
.aside-card li{padding:var(--s-2) 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}
.aside-card li:last-child{border-bottom:0}.aside-card li a{color:var(--ink)}
.aside-card.navy{background:var(--grad-dark);color:#fff}.aside-card.navy h4{color:#bfe3ff}.aside-card.navy p{color:#e6e9ff}

/* ---------- Prose / legal / case studies ---------- */
.legal,.prose,.case-prose{max-width:70ch}
.legal h2,.prose h2,.case-prose h2{font-size:var(--fs-2xl);margin-top:var(--s-7)}
.legal h3,.prose h3,.case-prose h3{font-size:var(--fs-xl);margin-top:var(--s-6)}
.legal li,.prose li,.case-prose li{margin-bottom:var(--s-2)}
.hero.legal-hero{min-height:0;display:block;background:var(--grad-dark);padding:var(--s-7) 0 var(--s-6);margin-bottom:var(--s-6)}
.hero.legal-hero::before,.hero.legal-hero::after{display:none}
.hero.legal-hero h1{color:#fff;font-size:var(--fs-4xl)}.hero.legal-hero .eyebrow{background:none;color:#bfe3ff}.hero.legal-hero .meta{color:#d9cff0;font-size:var(--fs-sm)}
.block{padding:var(--s-7) 0}.legal-hero+.block{padding-top:0}
.toc{background:var(--tint);border-radius:var(--r-md);padding:var(--s-5);margin:var(--s-6) 0}
.toc strong{display:block;font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--pink);margin-bottom:var(--s-3)}
.toc ol{margin:0;padding-left:1.4rem}.toc li{margin-bottom:var(--s-1);font-size:var(--fs-sm)}.toc a{color:var(--ink)}
@media(min-width:760px){.toc ol{columns:2;column-gap:var(--s-6)}}
.table-wrap{overflow-x:auto;margin:var(--s-5) 0;background:#fff;border-radius:var(--r-md);box-shadow:var(--shadow)}
table{border-collapse:collapse;width:100%}
.table-wrap th,.table-wrap td,.legal table th,.legal table td{text-align:left;vertical-align:top;padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--line);font-size:var(--fs-sm)}
.table-wrap th,.legal table th{background:var(--tint);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.notice{background:var(--tint-2);border-left:4px solid var(--pink);border-radius:var(--r-sm);padding:var(--s-4) var(--s-5);margin:var(--s-5) 0}.notice p:last-child{margin:0}
.case-hero{background:var(--grad-dark);color:#fff;padding:var(--s-7) 0 var(--s-6)}
.case-hero h1{color:#fff;font-size:var(--fs-4xl);max-width:20ch}.case-hero .eyebrow{background:none;color:#bfe3ff}
.case-hero .hero-lead{color:#e6e9ff!important;font-size:var(--fs-lg)!important;max-width:64ch!important}
.case-hero-meta{display:grid;gap:var(--s-3);margin-top:var(--s-6);grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.case-hero-meta{grid-template-columns:repeat(4,1fr)}}
.case-meta-item{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:var(--r-sm);padding:var(--s-3) var(--s-4);display:grid;gap:2px}
.case-meta-item strong{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:#bfe3ff;font-weight:800}
.case-body{padding:var(--s-7) 0}
.case-content-grid{display:grid;gap:var(--s-6)}
@media(min-width:900px){.case-content-grid{grid-template-columns:2fr 1fr;gap:var(--s-8);align-items:start}}
.case-prose h2:first-child{margin-top:0}
.case-metrics-row{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s-4);margin:var(--s-5) 0}
.case-metric{background:#fff;border-radius:var(--r-md);box-shadow:var(--shadow);padding:var(--s-4) var(--s-5)}
.case-metric strong,.case-metric b{display:block;font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.02em;line-height:1.1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.case-metric span,.case-metric small{font-size:var(--fs-xs);color:var(--ink-3)}
.case-prose blockquote{margin:var(--s-6) 0;padding:var(--s-5) var(--s-6);background:var(--tint);border-left:4px solid var(--pink);border-radius:var(--r-sm);font-size:var(--fs-lg);font-style:italic}
.case-prose blockquote footer{font-size:var(--fs-xs)!important;font-style:normal!important;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)!important;margin-top:var(--s-3)}
.case-sidebar{display:grid;gap:var(--s-5)}
.case-sidebar-card{background:#fff;border-radius:var(--r-md);box-shadow:var(--shadow);padding:var(--s-5)}
.case-sidebar-card h3,.case-sidebar-card h4{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--pink);margin-bottom:var(--s-3)}
.case-sidebar-card ul{list-style:none;padding:0;margin:0}.case-sidebar-card li{padding:var(--s-2) 0;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}.case-sidebar-card li:last-child{border-bottom:0}
.case-sidebar-card p{font-size:var(--fs-sm);color:var(--ink-2)}
.sidebar-cta{background:var(--grad-dark)!important;color:#fff}.sidebar-cta h4{color:#bfe3ff!important}.sidebar-cta p{color:#e6e9ff!important}
.case-figure{margin:var(--s-6) 0;display:grid;gap:var(--s-4);grid-template-columns:repeat(2,1fr)}
.case-figure img{border-radius:var(--r-md);box-shadow:var(--shadow)}
.case-figure figcaption{grid-column:1/-1;font-size:var(--fs-sm);color:var(--ink-3)}
.tech-tag-list{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.tech-tag{font-size:var(--fs-xs);font-weight:700;padding:4px 10px;border-radius:999px;background:var(--tint);color:var(--violet)}
.cta-strip,.cta-banner{background:var(--grad-dark);color:#fff;padding:var(--s-8) 0}
.cta-strip h2,.cta-banner h2{color:#fff;max-width:22ch}.cta-strip p,.cta-banner p{color:#e6e9ff;max-width:60ch}
.cta-strip .actions,.cta-actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-5)}
.cta-strip .btn-secondary,.cta-banner .btn-secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.cta-strip .btn-secondary:hover,.cta-banner .btn-secondary:hover{background:#fff;color:var(--violet)}
.section>.container>.cta-banner{padding:var(--s-7);border-radius:var(--r-lg)}.section{padding:var(--s-8) 0}

/* ---------- Footer ---------- */
.site-footer{background:var(--grad-dark);color:#c9cfe6;padding:var(--s-8) 0 var(--s-6)}
.footer-grid{display:grid;gap:var(--s-6);grid-template-columns:1fr 1fr}
.footer-brand{grid-column:1/-1}
@media(min-width:760px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr 1fr}.footer-brand{grid-column:auto}}
.footer-brand .brand-logo{color:#fff}
.footer-brand p{font-size:var(--fs-sm);max-width:32ch;color:#aab3d6}
.footer-contact-info{font-size:var(--fs-sm);line-height:1.9;overflow-wrap:anywhere}.footer-contact-info a{color:#fff}
.footer-heading{font-size:var(--fs-md);font-weight:800;color:#bfe3ff;margin:0 0 var(--s-3)}
.footer-nav{list-style:none;margin:0;padding:0}.footer-nav li{margin-bottom:var(--s-2)}.footer-nav a{color:#c9cfe6;font-size:var(--fs-sm)}.footer-nav a:hover{color:#fff}
.footer-legal-line{margin-top:var(--s-6);padding-top:var(--s-4);border-top:1px solid rgba(255,255,255,.12);font-size:var(--fs-xs);color:#8f98bd;display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-5);justify-content:space-between}
.footer-legal-line a{color:#c9cfe6}

/* ---------- Motion ---------- */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal="left"]{transform:translateX(-28px)}[data-reveal="right"]{transform:translateX(28px)}
[data-reveal].in{transform:none}
.stagger>*{opacity:0;transform:translateY(20px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.stagger.in>*{opacity:1;transform:none}
.stagger.in>*:nth-child(2){transition-delay:.1s}.stagger.in>*:nth-child(3){transition-delay:.2s}.stagger.in>*:nth-child(4){transition-delay:.3s}.stagger.in>*:nth-child(5){transition-delay:.4s}.stagger.in>*:nth-child(6){transition-delay:.5s}
@media(prefers-reduced-motion:reduce){[data-reveal],.stagger>*{opacity:1;transform:none;transition:none}.card,.tile,.btn{transition:none}}
.modal{position:fixed;inset:0;z-index:100;background:rgba(6,14,40,.92);display:none;place-items:center;padding:var(--s-4)}
.modal.open{display:grid}
.modal video{width:min(100%,1100px);border-radius:var(--r-md);box-shadow:var(--shadow-lg)}
.modal .close{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:50%;border:0;background:#fff;color:var(--ink);font-size:1.4rem;cursor:pointer}
@media print{.topbar,.site-header,.site-footer,.help,.cta-strip,.nav-mobile,.modal{display:none!important}body{background:#fff}}

/* banner photo: keep the subject clear of the text */
.banner img{object-position:80% center}
.banner .copy{padding:var(--s-4) 0}
@media(max-width:899px){.banner::before{background:linear-gradient(180deg,rgba(255,47,142,.55),rgba(60,10,110,.92) 70%)}.banner img{object-position:100% center}}
@media(min-width:900px){.banner img{object-position:left center}}
/* banner v2: subject on the right, copy on the left */
.banner img{object-position:70% center}
.banner::before{background:linear-gradient(90deg,rgba(40,10,80,.92) 0%,rgba(138,43,226,.55) 50%,rgba(255,47,142,.35) 100%)}
.banner .copy{text-shadow:0 2px 16px rgba(0,0,0,.35)}
@media(min-width:900px){.banner img{object-position:right center}.banner .copy{justify-self:start}}
@media(max-width:899px){.banner img{object-position:75% center}.banner::before{background:linear-gradient(180deg,rgba(60,10,110,.35),rgba(40,10,80,.92) 65%)}.banner .container{padding-top:40vw}}
/* banner v3: plain overlay, no blend (readable on bright photos) */
.banner::before{mix-blend-mode:normal;background:linear-gradient(90deg,rgba(30,8,70,.94) 0%,rgba(70,20,140,.78) 45%,rgba(120,40,160,.35) 100%)}
@media(max-width:899px){.banner::before{background:linear-gradient(180deg,rgba(40,10,80,.25) 0%,rgba(30,8,70,.96) 58%)}.banner .container{padding-top:58vw;padding-bottom:var(--s-7)}.banner img{object-position:70% top}}
.banner::before{z-index:1}.banner .container{z-index:2}

/* hero v2: three clips side by side, neutral overlay */
.hero-panes{position:absolute;inset:0;z-index:0;display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.hero-pane{position:relative;overflow:hidden}
.hero-pane video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-pane+.hero-pane{border-left:2px solid rgba(255,255,255,.18)}
.hero::before{mix-blend-mode:normal;background:linear-gradient(90deg,rgba(10,10,14,.78) 0%,rgba(10,10,14,.45) 50%,rgba(10,10,14,.25) 100%)}
.hero::after{background:linear-gradient(180deg,rgba(10,10,14,.1),rgba(10,10,14,.65) 100%)}
.hero{min-height:min(88svh,760px);justify-content:center}
.hero-top{padding:var(--s-8) 0}
.hero-ctas .btn-primary{background:var(--grad);color:#fff}
@media(max-width:640px){.hero-panes{grid-template-columns:1fr}.hero-pane+.hero-pane{display:none}}
/* phone frame v2: plain bezel, no notch, sized by the screenshot */
.phone{aspect-ratio:auto;border-radius:22px;padding:7px;background:#1a1a1f;width:min(240px,66%)}
.phone::before{display:none}
.phone .scr{border-radius:16px;height:auto}
.phone .scr img{height:auto;object-fit:fill;object-position:center}
.phone .scr.slides{aspect-ratio:737/1342}
.phone .scr.slides>img{height:100%;object-fit:cover;object-position:top}
.phone.float{width:36%;min-width:120px;padding:5px;border-radius:16px}
.phone.float .scr{border-radius:12px}
.journey-panel .vis .phone{width:min(190px,56%)}
.phone.mock .scr.slides{aspect-ratio:390/800}
.journey-panel .vis .ill{width:min(260px,70%);height:auto}
.journey-panel .vis{min-height:220px}
.work-visual{position:relative;display:block;color:inherit;text-decoration:none}
.work-visual:hover{text-decoration:none}
.work-visual .photo-card .ph{transition:transform .3s var(--ease)}
.work-visual:hover .photo-card .ph{transform:translateY(-4px)}

/* ---------- Fluid sections (no hard horizontal cuts) ---------- */
main{position:relative;overflow:hidden}
main::before,main::after{content:"";position:absolute;z-index:0;pointer-events:none;border-radius:50%;filter:blur(90px);opacity:.55}
main::before{width:60vw;height:60vw;max-width:800px;max-height:800px;left:-22vw;top:32%;background:radial-gradient(circle,#9fd8ff,transparent 65%)}
main::after{width:60vw;height:60vw;max-width:800px;max-height:800px;right:-22vw;top:62%;background:radial-gradient(circle,#d9c6ff,transparent 65%)}
main>*{position:relative;z-index:1}
.sec,.sec-white,.sec-tint{background:transparent}
.sec+.sec{padding-top:var(--s-6)}
.swoosh{position:relative;height:120px;margin:-60px 0;z-index:0;pointer-events:none;overflow:visible}
.swoosh svg{position:absolute;inset:0;width:100%;height:100%}
.swoosh path{fill:url(#swg)}
.sec-grad-soft{background:var(--grad-soft);border-radius:60px 0 60px 0}
.page-banner{border-radius:0 0 48px 48px}
.hero{border-radius:0 0 48px 48px}
.help{border-radius:48px 48px 0 0;position:relative;z-index:1}
.site-footer{position:relative}
.photo-card::after{inset:22px -22px -22px 22px;transform:rotate(-3deg);border-radius:28px}
.photo-card.soft::after{transform:rotate(3deg)}
@media(max-width:640px){.hero,.page-banner{border-radius:0 0 28px 28px}.help{border-radius:28px 28px 0 0}.swoosh{height:70px;margin:-35px 0}}

/* ---------- Round 9 ---------- */
.hero,.page-banner{border-radius:0!important}
.help{display:none}
.sec-auto{padding-top:var(--s-9);padding-bottom:var(--s-9)}
.auto-grid{align-items:center}
@media(min-width:900px){.auto-grid{grid-template-columns:5fr 7fr;gap:var(--s-8)}}
.sec-auto .diagram{max-width:760px}
.sec-auto .diagram svg{overflow:visible}
.auto-grid h2{font-size:clamp(2.2rem,5vw,3.6rem);max-width:12ch}
/* reach-out */
.reach{position:relative;z-index:2;background:#fff;padding:var(--s-9) 0;border-top:1px solid var(--line)}
.reach-grid{display:grid;gap:var(--s-7)}
@media(min-width:900px){.reach-grid{grid-template-columns:1fr 1fr;gap:var(--s-9);align-items:start}}
.reach h2{font-size:var(--fs-4xl);max-width:14ch}
.reach-alt{color:var(--ink-2);line-height:2}
.reach-alt a{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.reach-form{display:grid;gap:var(--s-4);background:var(--tint);padding:var(--s-6);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.reach-form label{display:grid;gap:6px;font-size:var(--fs-xs);font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.reach-form input,.reach-form textarea{font:inherit;font-size:var(--fs-md);letter-spacing:0;text-transform:none;color:var(--ink);background:#fff;border:2px solid var(--line);border-radius:var(--r-md);padding:12px 14px;min-height:48px;width:100%}
.reach-form textarea{resize:vertical}
.reach-form input:focus,.reach-form textarea:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(8,117,246,.14)}
.reach-form .btn{justify-self:start;min-width:200px}
/* premium bounce reveals, replay each time */
[data-reveal]{transition:opacity 1s var(--ease),transform 1.1s cubic-bezier(.22,1.4,.36,1)}
[data-reveal]:not(.in){opacity:0;transform:translateY(60px) scale(.94)}
[data-reveal="right"]:not(.in){transform:translateX(50px) scale(.96)}
[data-reveal="left"]:not(.in){transform:translateX(-50px) scale(.96)}
.photo-card[data-reveal]:not(.in),.work-visual[data-reveal]:not(.in),.diagram[data-reveal]:not(.in){transform:translateY(90px) scale(.86)}
.stagger>*{transition:opacity .9s var(--ease),transform 1s cubic-bezier(.22,1.3,.36,1)}
/* footer: inclined top, revealed from beneath */
body{position:relative}
main,.reach,.site-header{position:relative;z-index:2;background:#fff}
.site-header{background:rgba(255,255,255,.88)}
.site-footer{position:sticky;bottom:0;z-index:1;margin-top:-1px;padding-top:calc(var(--s-9) + 4vw);clip-path:polygon(0 6vw,100% 0,100% 100%,0 100%)}
.site-footer::before{content:"";position:absolute;inset:0;background:var(--grad-dark);z-index:-1}
.site-footer{background:transparent}
@media(prefers-reduced-motion:reduce){[data-reveal],.stagger>*{opacity:1!important;transform:none!important}}
.sec-auto .diagram{width:100%;max-width:none}
.sec-auto .diagram svg{width:100%!important;max-width:none;height:auto}
.reach-alt .ico{width:16px;height:16px}
.hero{min-height:calc(100svh - 64px)}
.reach h2{font-size:clamp(2.2rem,5vw,3.4rem)}
.reach-mail{font-size:var(--fs-lg)}
.reach-mail a{color:var(--ink);font-weight:600}

/* ---------- Round 11: dark glass header over hero, centred form ---------- */
.site-header{position:fixed;top:0;left:0;right:0;background:transparent;border-bottom:0;backdrop-filter:none;transition:background .3s,backdrop-filter .3s,box-shadow .3s}
.site-header.solid{background:rgba(6,14,40,.72);backdrop-filter:blur(14px);box-shadow:0 1px 0 rgba(255,255,255,.08)}
.nav-wrap{min-height:52px}
.brand-logo{color:#fff;font-size:1.05rem}
.brand-logo .mark{width:30px;height:30px;border-radius:9px;font-size:.95rem}
.nav-menu>li>a,.nav-menu>li>span{height:52px;color:#fff;font-size:var(--fs-sm)}
.nav-menu>li>a:hover{color:#bfe3ff}
.nav-mobile summary{color:#fff;border-color:rgba(255,255,255,.45);min-height:40px;padding:6px 14px}
.nav-mobile-panel{top:52px}
body{padding-top:0}
.hero{min-height:100svh;padding-top:52px}
.page-banner .container,.case-hero,.hero.legal-hero{padding-top:calc(var(--s-8) + 52px)}
.page-banner,.case-hero,.hero.legal-hero{background:var(--grad-dark)}
.reach{text-align:center}
.reach-wrap{display:grid;justify-items:center;gap:var(--s-6)}
.reach h2{margin:0}
.reach-form{width:min(100%,640px);text-align:left;background:#fff;border:2px solid transparent;background-image:linear-gradient(#fff,#fff),var(--grad);background-origin:border-box;background-clip:padding-box,border-box;box-shadow:var(--shadow-lg)}
.reach-form .btn{justify-self:center;min-width:220px}
.site-header{z-index:50!important}
.gap{height:var(--s-8)}
.more-projects{padding-top:0}

/* ---------- Logo ---------- */
.brand-logo{gap:10px;align-items:center}
.brand-logo .mark-img{height:34px;width:auto}
.brand-logo .word-img{height:16px;width:auto}
.nav-wrap{min-height:56px}
.nav-menu>li>a,.nav-menu>li>span{height:56px}
.nav-mobile-panel{top:56px}
.hero{padding-top:56px}
@media(min-width:900px){.brand-logo .mark-img{height:40px}.brand-logo .word-img{height:18px}.nav-wrap{min-height:64px}.nav-menu>li>a,.nav-menu>li>span{height:64px}.hero{padding-top:64px}}
.footer-brand .brand-logo .mark-img{height:48px}.footer-brand .brand-logo .word-img{height:20px}
.reach{text-align:left}
.reach-grid{display:grid;gap:var(--s-6);align-items:center}
@media(min-width:900px){.reach-grid{grid-template-columns:1fr 1fr;gap:var(--s-9)}}
.reach-intro{display:grid;justify-items:start;gap:var(--s-3)}
.reach-logo{width:min(220px,55%);height:auto}
.reach-intro .lead{margin:0;font-weight:700;color:var(--ink)}
.reach-form{width:100%;max-width:640px;justify-self:end}
.reach-form .btn{justify-self:start}

/* rolling hero stat */
.hero-roll{display:inline-grid;height:1.15em;overflow:hidden;vertical-align:bottom}
.hero-roll span{grid-area:1/1;display:block;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:0;transform:translateY(100%);transition:transform .7s var(--ease),opacity .5s}
.hero-roll span.on{opacity:1;transform:none}
.hero-roll span.off{opacity:0;transform:translateY(-100%)}
.hero-stat b{font-size:var(--fs-3xl)!important;line-height:1.15}
.reach-brand{display:flex;align-items:center;gap:14px}
.reach-brand img{width:88px;height:auto}
.reach-brand b{font-size:var(--fs-xl);color:var(--ink)}
.reach-form .btn{justify-self:center!important}

/* ---------- Premium buttons + warm hero ---------- */
.btn-primary,.btn-orange,.btn-grid{background:linear-gradient(135deg,var(--g2) 0%,var(--g3) 100%);box-shadow:0 1px 2px rgba(10,30,120,.25),0 8px 24px -8px rgba(8,117,246,.45),inset 0 1px 0 rgba(255,255,255,.18);letter-spacing:.02em;border:1px solid rgba(255,255,255,.12)}
.btn-primary:hover,.btn-orange:hover,.btn-grid:hover{box-shadow:0 2px 4px rgba(10,30,120,.25),0 14px 30px -10px rgba(92,39,195,.5),inset 0 1px 0 rgba(255,255,255,.22);filter:brightness(1.06)}
.grad-text,.eyebrow,.stat b,.case-metric strong,.case-metric b,.hero-roll span{background:linear-gradient(110deg,var(--g2) 0%,var(--g3) 70%,#8a4bdc 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;color:transparent!important}
.hero-stat{border-top-color:rgba(255,255,255,.3)}
.hero-roll span{filter:drop-shadow(0 2px 10px rgba(0,0,0,.35))}
.hero::before{background:linear-gradient(90deg,rgba(14,10,30,.62) 0%,rgba(14,10,30,.35) 50%,rgba(14,10,30,.15) 100%)}
.hero::after{background:linear-gradient(180deg,rgba(255,176,96,.22) 0%,rgba(255,120,80,.12) 40%,rgba(10,8,30,.55) 100%),radial-gradient(ellipse at 85% 10%,rgba(255,200,120,.55),transparent 45%)}
.hero-pane video{filter:saturate(1.1) contrast(1.02) sepia(.18) brightness(1.04)}
.typed.typing::after{content:"";display:inline-block;width:.06em;height:.95em;margin-left:.08em;background:#fff;vertical-align:-.08em;animation:caret 1s steps(1) infinite}
@keyframes caret{50%{opacity:0}}
.hero h1{min-height:3.3em}
.hero-roll span{background:linear-gradient(110deg,#7fdcff 0%,#b9c6ff 45%,#f0a6ff 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;filter:drop-shadow(0 2px 12px rgba(0,0,0,.45))}
.hero-roll span{background:linear-gradient(110deg,#22c8ff 0%,#6aa8ff 40%,#c97bff 75%,#ff8af3 100%)!important;-webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;filter:drop-shadow(0 2px 10px rgba(0,0,0,.5)) saturate(1.3)}
.hero::before{background:linear-gradient(90deg,rgba(12,8,28,.78) 0%,rgba(12,8,28,.5) 45%,rgba(12,8,28,.22) 100%)}
.typed .ch{opacity:0;transform:translateY(.25em);display:inline-block;animation:chIn .55s var(--ease) forwards}
.typed .ch.sp{white-space:pre}
@keyframes chIn{to{opacity:1;transform:none}}
.typed .wd{display:inline-block;white-space:nowrap}

/* ---------- Round 15: mobile polish ---------- */
.work-side{display:grid;gap:var(--s-4);justify-items:center}
.work-visual{width:100%}
.work-actions{margin:0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s-3)}
.work-actions .btn{min-height:42px;padding:0 var(--s-5);font-size:var(--fs-sm)}
.project-end{display:none}
@media(max-width:899px){
  .project{padding:var(--s-7) 0 var(--s-5)}
  .project+.project{padding-top:var(--s-6)}
  .project-end{display:flex;justify-content:center;gap:8px;padding:var(--s-6) 0 0}
  .project-end i{width:6px;height:6px;border-radius:50%;background:var(--line)}
  .project-end i:nth-child(2){background:var(--g2);opacity:.6}
  .work-side{margin-top:var(--s-2)}
  .reach-intro{justify-items:center;text-align:center}
  .reach-brand{justify-content:center}
  .reach-form .btn{justify-self:center}
}
/* 4. footer reveal: no stray white band on desktop */
.site-footer{position:relative;bottom:auto;clip-path:none;margin-top:0;padding-top:var(--s-8)}
.site-footer::before{display:none}
.site-footer{background:var(--grad-dark)}
.reach{border-bottom:0}
/* 5. drawer */
.nav-mobile{display:none}
.nav-toggle{display:none;width:44px;height:44px;border:0;background:transparent;border-radius:12px;position:relative;cursor:pointer}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{content:"";position:absolute;left:11px;width:22px;height:2px;background:#fff;border-radius:2px;transition:transform .35s var(--ease),opacity .25s}
.nav-toggle span{top:21px}.nav-toggle span::before{left:0;top:-7px}.nav-toggle span::after{left:0;top:7px}
.drawer-open .nav-toggle span{background:transparent}.drawer-open .nav-toggle span::before{transform:translateY(7px) rotate(45deg)}.drawer-open .nav-toggle span::after{transform:translateY(-7px) rotate(-45deg)}
.drawer-backdrop{position:fixed;inset:0;background:rgba(6,14,40,.45);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:opacity .4s,visibility 0s .4s;z-index:70}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(84vw,340px);background:#fff;z-index:71;transform:translateX(104%);transition:transform .55s cubic-bezier(.22,1,.36,1);overflow:auto;padding:var(--s-4) var(--s-5) var(--s-8);box-shadow:-20px 0 60px rgba(10,30,120,.18);border-radius:24px 0 0 24px}
.drawer-open .drawer{transform:none}.drawer-open .drawer-backdrop{opacity:1;visibility:visible;transition-delay:0s}
.drawer-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--s-4)}
.drawer-head img{height:30px;width:auto}
.drawer-close{width:40px;height:40px;border:0;border-radius:50%;background:var(--tint);color:var(--ink);font-size:1.4rem;cursor:pointer}
.drawer-group{padding:var(--s-3) 0;border-top:1px solid var(--line)}
.drawer-group h4{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;margin:var(--s-2) 0 var(--s-2);background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.drawer-group a{display:block;padding:10px 0;color:var(--ink);font-size:var(--fs-md);font-weight:500;opacity:0;transform:translateX(16px);transition:opacity .4s var(--ease),transform .5s var(--ease)}
.drawer-open .drawer-group a{opacity:1;transform:none}
.drawer-open .drawer-group:nth-child(2) a{transition-delay:.1s}.drawer-open .drawer-group:nth-child(3) a{transition-delay:.18s}.drawer-open .drawer-group:nth-child(4) a{transition-delay:.26s}.drawer-open .drawer-group:nth-child(5) a{transition-delay:.34s}
.drawer-open{overflow:hidden}
@media(max-width:959px){.nav-toggle{display:block}}
/* 6. phone hero: three clips stacked vertically */
@media(max-width:640px){.hero-panes{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(3,1fr)}.hero-pane+.hero-pane{display:block;border-left:0;border-top:2px solid rgba(255,255,255,.18)}}

/* ---------- Round 17 ---------- */
html{overflow-x:hidden}
body{overflow-x:clip}
.drawer{visibility:hidden;transition:transform .55s cubic-bezier(.22,1,.36,1),visibility 0s .55s}
.drawer-open .drawer{visibility:visible;transition-delay:0s}
.hero-pane+.hero-pane{border:0}
.hero-pane+.hero-pane::before{content:"";position:absolute;left:0;top:0;bottom:0;width:48px;background:linear-gradient(90deg,rgba(10,8,30,.55),transparent);z-index:1;pointer-events:none}
@media(max-width:640px){.hero-pane+.hero-pane::before{left:0;right:0;bottom:auto;width:auto;height:56px;background:linear-gradient(180deg,rgba(10,8,30,.6),transparent)}}
.sec-auto{padding-top:var(--s-8)}
.portfolio-head{padding-top:var(--s-7)}
@media(max-width:899px){.portfolio-head{text-align:center;padding-top:var(--s-8)}.portfolio-head h2{margin-inline:auto}.project .eyebrow,.project h2,.project .lead{text-align:left}}
.hero-pane video{object-position:center 40%}
