/* VectorOwl Studio — site styles
   Layout idea: a drawing board. Calm single column, wide "ledger" lists,
   anchor-point squares as bullets, the dashed "closing line" as a recurring rule. */

/* Fonts are self-hosted (Latin subset, SIL Open Font License): no third-party request, nothing blocking the first paint.
   Sora is one variable font file covering 400 to 700. */
@font-face{font-family:"Sora";font-style:normal;font-weight:400 700;font-display:swap;src:url("../fonts/sora-latin.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/plex-mono-400-latin.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/plex-mono-500-latin.woff2") format("woff2")}

:root{
  --paper:#F6F5F1; --card:#FFFFFF; --ink:#15171C; --muted:#5A5E68; --line:#DDDBD3; --dot:#D6D4CC;
  --accent:#3E63FF; --tint:#DCE4FF; --accent-ink:#2E4FE0; --on-accent:#FFFFFF;
  --display:"Sora","Avenir Next","Segoe UI",system-ui,sans-serif;
  --body:"Sora","Avenir Next","Segoe UI",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --wrap:1180px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --paper:#0F1014; --card:#1B1D24; --ink:#F2F1EC; --muted:#A7AAB4; --line:#2C2F38; --dot:#262932; color-scheme:dark;
}}
:root[data-theme="dark"]{--paper:#0F1014; --card:#1B1D24; --ink:#F2F1EC; --muted:#A7AAB4; --line:#2C2F38; --dot:#262932; color-scheme:dark}

/* Owl color themes (accent = marks & buttons, tint = owl face & soft fills, accent-ink = accent used as text) */
:root[data-owl="cobalt"]{--accent:#3E63FF;--tint:#DCE4FF;--accent-ink:#2E4FE0;--on-accent:#FFFFFF}
:root[data-owl="teal"]{--accent:#0F8A8A;--tint:#CDEDEA;--accent-ink:#0B6E6E;--on-accent:#FFFFFF}
:root[data-owl="violet"]{--accent:#7A5AF8;--tint:#E7E0FF;--accent-ink:#5F3FE0;--on-accent:#FFFFFF}
:root[data-owl="rose"]{--accent:#E0457B;--tint:#FBDCE6;--accent-ink:#B8285E;--on-accent:#15171C}
:root[data-owl="sunflower"]{--accent:#E7B416;--tint:#FBF0C6;--accent-ink:#7D6000;--on-accent:#15171C}
:root[data-owl="forest"]{--accent:#2E7D4F;--tint:#D7EEDF;--accent-ink:#236B42;--on-accent:#FFFFFF}
:root[data-owl="graphite"]{--accent:#5B606B;--tint:#E4E4E7;--accent-ink:#4A4F59;--on-accent:#FFFFFF}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"])[data-owl="cobalt"]{--accent-ink:#9DB0FF;--tint:#C9D5FF}
  :root:not([data-theme="light"])[data-owl="teal"]{--accent-ink:#5CC9C3;--tint:#BDE6E2}
  :root:not([data-theme="light"])[data-owl="violet"]{--accent-ink:#B9A8FF;--tint:#D9CEFF}
  :root:not([data-theme="light"])[data-owl="rose"]{--accent-ink:#F590B4;--tint:#F7C9D8}
  :root:not([data-theme="light"])[data-owl="sunflower"]{--accent-ink:#F0CC55;--tint:#F5E4A6}
  :root:not([data-theme="light"])[data-owl="forest"]{--accent-ink:#74CB9A;--tint:#C4E5CF}
  :root:not([data-theme="light"])[data-owl="graphite"]{--accent-ink:#BCC0C9;--tint:#D4D5DA}
}
:root[data-theme="dark"][data-owl="cobalt"]{--accent-ink:#9DB0FF;--tint:#C9D5FF}
:root[data-theme="dark"][data-owl="teal"]{--accent-ink:#5CC9C3;--tint:#BDE6E2}
:root[data-theme="dark"][data-owl="violet"]{--accent-ink:#B9A8FF;--tint:#D9CEFF}
:root[data-theme="dark"][data-owl="rose"]{--accent-ink:#F590B4;--tint:#F7C9D8}
:root[data-theme="dark"][data-owl="sunflower"]{--accent-ink:#F0CC55;--tint:#F5E4A6}
:root[data-theme="dark"][data-owl="forest"]{--accent-ink:#74CB9A;--tint:#C4E5CF}
:root[data-theme="dark"][data-owl="graphite"]{--accent-ink:#BCC0C9;--tint:#D4D5DA}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.6;transition:background .4s}
img,svg{max-width:100%}
[hidden]{display:none!important}
a{color:var(--accent-ink)}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:8px;z-index:50;background:var(--card);color:var(--ink);padding:10px 16px;border-radius:10px}
.skip-link:focus{left:16px}
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}

h1,h2,h3{font-family:var(--display);letter-spacing:-.03em;text-wrap:balance;margin:0;line-height:1.08}
h1{font-size:clamp(2.4rem,5.4vw,4.4rem);font-weight:600}
h2{font-size:clamp(1.9rem,3.6vw,2.9rem);font-weight:600}
h3{font-size:1.3rem;font-weight:600;letter-spacing:-.02em}
p{margin:0;max-width:62ch}
.lead{font-size:1.15rem;color:var(--muted)}
.label{font-family:var(--mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.label b{color:var(--accent-ink);font-weight:500}
.label a{color:inherit}
em.hl{font-style:normal;color:var(--accent-ink)}

.btn{display:inline-flex;align-items:center;gap:.6em;min-height:48px;padding:0 1.4em;border-radius:999px;font:600 1rem/1 var(--display);text-decoration:none;border:2px solid var(--ink);color:var(--ink);background:transparent;cursor:pointer;transition:transform .15s,background .2s}
.btn:hover{transform:translateY(-2px)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.ctas{display:flex;gap:12px;flex-wrap:wrap}
.arrow-link{font-weight:600;text-decoration:none;color:var(--accent-ink);display:inline-flex;gap:.4em;align-items:center}
.arrow-link::after{content:"→";transition:transform .15s}
.arrow-link:hover::after{transform:translateX(3px)}

/* header */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:30;background:var(--paper)}
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:20px;min-height:68px;flex-wrap:wrap;padding-block:8px;position:relative}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font:600 1.15rem/1 var(--display);letter-spacing:-.03em;margin-right:auto}
.brand .wm span{font-weight:400;color:var(--muted)}
.brand svg{width:38px;height:38px;flex:none}
nav.links{display:flex;gap:22px;flex-wrap:wrap}
nav.links a{color:var(--ink);text-decoration:none;font-size:.95rem;padding-block:6px;border-bottom:2px solid transparent}
nav.links a:hover{color:var(--accent-ink)}
nav.links a[aria-current="page"]{border-bottom-color:var(--accent)}
.color-btn{display:flex;text-decoration:none;white-space:nowrap;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:500 .85rem var(--body);cursor:pointer}
.actions{display:flex;align-items:center;gap:8px}
.mode-btn{display:grid;place-items:center;width:44px;height:44px;padding:0;border-radius:50%;border:1.5px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer}
.mode-btn:hover,.color-btn:hover{border-color:var(--ink)}
.mode-btn .i-sun{display:none}
:root[data-theme="dark"] .mode-btn .i-sun{display:block}
:root[data-theme="dark"] .mode-btn .i-moon{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .mode-btn .i-sun{display:block}:root:not([data-theme="light"]) .mode-btn .i-moon{display:none}}
.color-btn i{width:16px;height:16px;border-radius:50%;background:var(--accent);display:block}
@media (max-width:820px){nav.links{order:3;width:100%;gap:18px;font-size:.9rem;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}}

/* owl svg behavior */
.owl .happy{display:none}
.owl-wrap:hover .owl .happy,.owl-card:focus-visible .owl .happy,.owl.is-happy .happy{display:inline}
.owl-wrap:hover .owl .open,.owl-card:focus-visible .owl .open,.owl.is-happy .open{display:none}
.owl .fill-r{opacity:0;transition:opacity .6s ease .15s}
.owl .close-line{transition:stroke-dasharray .4s}
.owl.done .fill-r{opacity:1}
.owl.done .close-line{stroke-dasharray:0}
.owl.done .anchors{opacity:0;transition:opacity .3s}

/* picker */
.picker{position:relative;padding-block:clamp(40px,7vw,84px) clamp(32px,5vw,56px);background-image:radial-gradient(var(--dot) 1.2px,transparent 1.3px);background-size:22px 22px}
.picker .intro{display:grid;gap:14px;justify-items:center;text-align:center}
.picker .intro p{color:var(--muted)}
.owls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(12px,2.4vw,28px);margin-top:clamp(28px,4vw,48px)}
@media (max-width:820px){.owls{grid-template-columns:repeat(2,minmax(0,1fr))}}
.owl-card{display:grid;justify-items:center;gap:10px;padding:clamp(14px,2vw,24px) 10px 18px;border-radius:24px;border:1.5px solid var(--line);background:var(--card);cursor:pointer;color:var(--ink);font:inherit;transition:transform .2s,border-color .2s,box-shadow .2s}
.owl-card:hover,.owl-card:focus-visible{transform:translateY(-4px);border-color:var(--c);box-shadow:0 14px 30px color-mix(in srgb,var(--c) 22%,transparent)}
.owl-card svg{width:100%;max-width:220px;height:auto;aspect-ratio:1}
.owl-card .nm{font:600 1.05rem var(--display);letter-spacing:-.02em}
.owl-card .hx{font-family:var(--mono);font-size:.75rem;color:var(--muted)}
/* returning visitors: show the hero straight away, before site.js runs (site.js removes .has-owl) */
.has-owl #picker{display:none}
.has-owl #hero{display:block}
.picker .skip{display:flex;justify-content:center;margin-top:22px}
.picker .skip button{background:none;border:0;font:inherit;font-size:.9rem;color:var(--muted);text-decoration:underline;cursor:pointer;min-height:44px}

/* home hero */
.hero{padding-block:clamp(40px,6vw,80px)}
.hero .wrap{display:grid;grid-template-columns:1.25fr .9fr;gap:clamp(24px,5vw,64px);align-items:center}
@media (max-width:860px){.hero .wrap{grid-template-columns:1fr}.hero .owl-wrap{max-width:320px;justify-self:center}}
.hero .copy{display:grid;gap:22px;min-width:0}
.hero .copy p{font-size:1.12rem;color:var(--muted)}
.hero .owl-wrap{display:grid;gap:10px;justify-items:center}
.hero .owl-wrap svg{width:100%;max-width:420px;height:auto}
.hero .owl-wrap .label button{background:none;border:0;padding:4px;color:var(--accent-ink);font:inherit;text-decoration:underline;cursor:pointer}

/* inner page hero */
.page-hero{padding-block:clamp(44px,7vw,96px) clamp(32px,4vw,56px)}
.page-hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(24px,5vw,64px);align-items:end}
.page-hero .copy{display:grid;gap:20px;min-width:0}
.page-hero .side{width:clamp(140px,18vw,220px)}
.page-hero .side svg{width:100%;height:auto}
@media (max-width:700px){.page-hero .wrap{grid-template-columns:1fr}.page-hero .side{display:none}}
.crumbs{font-family:var(--mono);font-size:.78rem;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap}
.crumbs a{color:var(--muted)}

/* sections */
section.block{padding-block:clamp(56px,8vw,104px);border-top:1px solid var(--line)}
.sec-head{display:grid;gap:14px;margin-bottom:clamp(28px,4vw,48px)}
.sec-head p{color:var(--muted);font-size:1.05rem}
.split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,5vw,64px);align-items:start}
@media (max-width:860px){.split{grid-template-columns:1fr}}
.stack{display:grid;gap:18px;min-width:0}
.stack p{color:var(--muted)}

/* home services: highlight cards (3 on top, 2 below) */
.svc-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:16px}
.svc-card{grid-column:span 2;position:relative;display:grid;gap:10px;align-content:start;min-width:0;padding:24px;background:var(--card);border:1px solid var(--line);border-radius:20px;color:var(--ink);text-decoration:none;transition:transform .25s,border-color .2s,box-shadow .25s}
.svc-card:nth-child(n+4){grid-column:span 3}
.svc-card:hover,.svc-card:focus-visible{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 14px 30px rgb(0 0 0 / .08)}
.svc-card .ico{margin-bottom:6px;transition:transform .3s}
.svc-card:hover .ico,.svc-card:focus-visible .ico{transform:rotate(-4deg) scale(1.06)}
.svc-card p{color:var(--muted);font-size:.97rem}
.svc-card .go{position:absolute;top:22px;right:22px;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--line);color:var(--accent-ink);font-weight:600;transition:transform .25s,background .2s,color .2s,border-color .2s}
.svc-card:hover .go,.svc-card:focus-visible .go{transform:translateX(3px) rotate(-45deg);background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
@media (max-width:860px){.svc-grid{grid-template-columns:1fr 1fr}.svc-card,.svc-card:nth-child(n+4){grid-column:auto}.svc-card:last-child{grid-column:1 / -1}}
@media (max-width:560px){.svc-grid{grid-template-columns:1fr}}
/* tint stays light in both modes, so icons on it keep dark lines (see the #15171C rule) and hollow fills */
.ico{--ink:#15171C;--card:var(--tint);width:56px;height:56px;border-radius:14px;background:var(--tint);display:grid;place-items:center;flex:none}
.ico svg{width:34px;height:34px;overflow:visible}

/* icon animations: play once when a card scrolls into view (.play, added by site.js) and on hover/focus */
.svc-card svg *{transform-box:fill-box;transform-origin:center}
/* logo: the diamond draws itself like a pen path, then the anchor pops in */
.svc-card[data-svc="logo"]:is(.play,:hover,:focus-visible) path{stroke-dasharray:82;animation:vo-draw 1.1s ease-out}
.svc-card[data-svc="logo"]:is(.play,:hover,:focus-visible) line{stroke-dasharray:18;animation:vo-draw18 .5s .6s ease-out backwards}
.svc-card[data-svc="logo"]:is(.play,:hover,:focus-visible) rect{animation:vo-pop .45s .9s cubic-bezier(.3,1.6,.5,1) backwards}
/* brand: the three panels fan out like a swatch book */
.svc-card[data-svc="brand"]:is(.play,:hover,:focus-visible) rect:nth-of-type(1){transform-origin:bottom center;animation:vo-fan-l 1.2s ease-in-out}
.svc-card[data-svc="brand"]:is(.play,:hover,:focus-visible) rect:nth-of-type(3){transform-origin:bottom center;animation:vo-fan-r 1.2s ease-in-out}
.svc-card[data-svc="brand"]:is(.play,:hover,:focus-visible) rect:nth-of-type(2){animation:vo-lift 1.2s ease-in-out}
/* web: the page loads in, block first, then the lines of text type across */
.svc-card[data-svc="web"]:is(.play,:hover,:focus-visible) rect:nth-of-type(2){animation:vo-pop .45s .1s cubic-bezier(.3,1.6,.5,1) backwards}
.svc-card[data-svc="web"]:is(.play,:hover,:focus-visible) line:nth-of-type(2){transform-origin:left center;animation:vo-type .4s .45s ease-out backwards}
.svc-card[data-svc="web"]:is(.play,:hover,:focus-visible) line:nth-of-type(3){transform-origin:left center;animation:vo-type .35s .75s ease-out backwards}
/* ai: the two inputs pulse in turn and the accent node lights up */
.svc-card[data-svc="ai"]:is(.play,:hover,:focus-visible) rect:nth-of-type(1){animation:vo-pulse .5s ease-in-out}
.svc-card[data-svc="ai"]:is(.play,:hover,:focus-visible) rect:nth-of-type(2){animation:vo-pulse .5s .3s ease-in-out}
.svc-card[data-svc="ai"]:is(.play,:hover,:focus-visible) rect:nth-of-type(3){animation:vo-spin .7s .6s cubic-bezier(.3,1.4,.5,1)}
/* photo: the aperture turns and the camera clicks */
.svc-card[data-svc="photo"]:is(.play,:hover,:focus-visible) polygon{animation:vo-aperture 1s cubic-bezier(.5,0,.3,1)}
.svc-card[data-svc="photo"]:is(.play,:hover,:focus-visible) svg{animation:vo-click .25s .8s ease-in-out}
@keyframes vo-draw{from{stroke-dashoffset:82}to{stroke-dashoffset:0}}
@keyframes vo-draw18{from{stroke-dashoffset:18}to{stroke-dashoffset:0}}
@keyframes vo-pop{from{transform:scale(0)}}
@keyframes vo-fan-l{40%,60%{transform:translateX(-3px) rotate(-14deg)}}
@keyframes vo-fan-r{40%,60%{transform:translateX(3px) rotate(14deg)}}
@keyframes vo-lift{40%,60%{transform:translateY(-3px)}}
@keyframes vo-type{from{transform:scaleX(0)}}
@keyframes vo-pulse{50%{transform:scale(1.3)}}
@keyframes vo-spin{from{transform:rotate(-90deg) scale(.4)}}
@keyframes vo-aperture{from{transform:rotate(-120deg) scale(.6)}}
@keyframes vo-click{50%{transform:scale(.9)}}

/* cards rise in as they scroll into view (only when JS is running, see the <head> script) */
.js .reveal{transition:opacity .6s ease-out,transform .6s ease-out;transition-delay:var(--d,0s)}
.js .reveal:not(.in){opacity:0;transform:translateY(18px)}

.ticks{list-style:none;margin:0;padding:0;display:grid;gap:8px;min-width:0}
.ticks li{display:flex;gap:10px;align-items:baseline;font-size:.97rem}
.ticks li::before{content:"";flex:none;width:8px;height:8px;border:2px solid var(--accent);background:var(--card);transform:translateY(-1px)}

/* service detail: deliverables grid */
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:860px){.grid-3{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.grid-2,.grid-3{grid-template-columns:1fr}}
.tile{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;display:grid;gap:8px;align-content:start}
.tile p{color:var(--muted);font-size:.97rem}
a.tile{text-decoration:none;color:var(--ink);transition:transform .15s,border-color .2s}
a.tile:hover{transform:translateY(-3px);border-color:var(--accent)}
.tile .ico{margin-bottom:6px}

/* process */
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;position:relative}
.steps::before{content:"";position:absolute;left:15px;right:calc((100% - 60px) / 4 - 15px);top:14px;border-top:2px dashed var(--accent)}
.step{position:relative;display:grid;gap:10px;padding-top:40px;min-width:0;align-content:start}
.step::before{content:"";position:absolute;left:4px;top:4px;width:16px;height:16px;background:var(--card);border:3px solid var(--accent)}
.step:first-child::before{border-radius:50%;background:var(--accent)}
.step p{color:var(--muted);font-size:.95rem}
/* animated start dot (site.js adds .is-anim and the .step-dot; without JS or with reduced motion the first marker stays a filled circle) */
.steps.is-anim .step:first-child::before{border-radius:0;background:var(--card)}
.step-dot{position:absolute;left:0;top:0;width:22px;height:22px;border-radius:50%;background:var(--accent);z-index:1;pointer-events:none;transition:transform 1.4s cubic-bezier(.45,0,.25,1),opacity .4s,border-radius .3s}
.step-dot.is-square{border-radius:0}
.steps.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.steps.three::before{right:calc((100% - 40px) / 3 - 15px)}
@media (max-width:860px){.steps,.steps.three{grid-template-columns:1fr 1fr;row-gap:36px}.steps::before{display:none}}
@media (max-width:480px){.steps,.steps.three{grid-template-columns:1fr}}

/* AI list */
.list{display:grid;gap:12px}
.item{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px 20px;display:grid;gap:4px}
.item b{font-family:var(--display);font-weight:600}
.item span{color:var(--muted);font-size:.95rem}
/* AI page "Where it helps": icon per use case, animated when it scrolls in (.play) and on hover */
.ai-uses .item{grid-template-columns:48px minmax(0,1fr);column-gap:16px;align-items:center;transition:border-color .2s,box-shadow .25s}
.ai-uses .item:hover{border-color:var(--accent);box-shadow:0 10px 24px rgb(0 0 0 / .06)}
.ai-uses .txt{display:grid;gap:4px;min-width:0}
.ai-uses .ico{width:48px;height:48px;border-radius:12px;transition:transform .3s}
.ai-uses .ico svg{width:32px;height:32px;overflow:visible}
.ai-uses .item:hover .ico{transform:rotate(-4deg) scale(1.06)}
.ai-uses svg *{transform-box:fill-box;transform-origin:center}
.js .ai-uses .reveal:not(.in){transform:translateX(24px)}
/* inbox: the assistant is typing */
[data-ai="inbox"]:is(.play,:hover) .dot{animation:vo-bob .9s ease-in-out 2}
[data-ai="inbox"]:is(.play,:hover) .dot:nth-of-type(2){animation-delay:.15s}
[data-ai="inbox"]:is(.play,:hover) .dot:nth-of-type(3){animation-delay:.3s}
/* documents: the page writes itself */
[data-ai="docs"]:is(.play,:hover) .hd{animation:vo-pop .4s cubic-bezier(.3,1.6,.5,1) backwards}
[data-ai="docs"]:is(.play,:hover) .ln{transform-origin:left center;animation:vo-type .35s .3s ease-out backwards}
[data-ai="docs"]:is(.play,:hover) .ln:nth-of-type(2){animation-delay:.6s}
[data-ai="docs"]:is(.play,:hover) .ln:nth-of-type(3){animation-delay:.9s}
/* knowledge base: a question, then an answer */
[data-ai="kb"]:is(.play,:hover) .q{animation:vo-pop .4s cubic-bezier(.3,1.6,.5,1) backwards}
[data-ai="kb"]:is(.play,:hover) .a{transform-origin:left top;animation:vo-pop .45s .5s cubic-bezier(.3,1.6,.5,1) backwards}
[data-ai="kb"]:is(.play,:hover) .aln{transform-origin:left center;animation:vo-type .35s .9s ease-out backwards}
/* social: the post lands and sparkles */
[data-ai="social"]:is(.play,:hover) .img{animation:vo-pop .45s cubic-bezier(.3,1.6,.5,1) backwards}
[data-ai="social"]:is(.play,:hover) .spk{animation:vo-sparkle .7s .35s ease-out backwards}
/* research: the magnifier scans the lines */
[data-ai="research"]:is(.play,:hover) .lens{animation:vo-scan 1.4s ease-in-out}
@keyframes vo-bob{0%,60%,100%{transform:none}30%{transform:translateY(-4px)}}
@keyframes vo-sparkle{from{transform:scale(0) rotate(-45deg);opacity:0}60%{transform:scale(1.3)}}
@keyframes vo-scan{30%{transform:translate(-12px,-8px)}65%{transform:translate(-4px,2px)}}
.note{background:var(--tint);color:#15171C;border-radius:16px;padding:18px 20px;font-size:.97rem}

/* work */
.case{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:clamp(24px,5vw,56px);align-items:center;background:var(--card);border:1px solid var(--line);border-radius:28px;padding:clamp(20px,4vw,44px)}
@media (max-width:860px){.case{grid-template-columns:1fr}}
.evo{display:flex;align-items:flex-end;gap:10px;overflow-x:auto;padding-bottom:6px}
.evo figure{margin:0;display:grid;gap:6px;justify-items:center;flex:1 0 64px}
.evo svg{width:100%;max-width:120px;height:auto}
.evo figcaption{font-family:var(--mono);font-size:.7rem;color:var(--muted)}
.case .copy{display:grid;gap:14px;min-width:0}
.case .copy p{color:var(--muted)}
.slot{border:2px dashed var(--line);border-radius:22px;padding:28px;display:grid;gap:8px;align-content:center;min-height:180px;color:var(--muted)}
.slot b{color:var(--ink);font-family:var(--display)}

/* faq */
.faq{display:grid;gap:10px;max-width:820px}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:4px 20px}
.faq summary{cursor:pointer;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;font:600 1.05rem var(--display);letter-spacing:-.02em;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font:500 1.4rem var(--mono);color:var(--accent-ink)}
.faq details[open] summary::after{content:"−"}
.faq details p{padding-bottom:18px;color:var(--muted)}

/* CTA band */
.cta-band{background:var(--card);border:1px solid var(--line);border-radius:28px;padding:clamp(24px,5vw,56px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:center}
.cta-band p{color:var(--muted)}
@media (max-width:760px){.cta-band{grid-template-columns:1fr}}

/* contact */
.mail{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font:500 1.1rem var(--mono)}
.mail button{min-height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:500 .85rem var(--body);cursor:pointer}
form.contact-form{display:grid;gap:16px;background:var(--card);border:1px solid var(--line);border-radius:24px;padding:clamp(20px,3vw,32px)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:560px){.row{grid-template-columns:1fr}}
form label{display:grid;gap:6px;font-size:.9rem;font-weight:600}
input,textarea,select{font:400 1rem var(--body);color:var(--ink);background:var(--paper);border:1.5px solid var(--line);border-radius:12px;padding:12px 14px;min-height:48px;width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}
textarea{min-height:140px;resize:vertical;overflow-wrap:break-word}
/* long placeholders must wrap inside the field, not run past its edge (Safari) */
textarea::placeholder{white-space:pre-wrap;overflow-wrap:break-word;word-break:normal}
fieldset{border:0;padding:0;margin:0;display:grid;gap:8px}
legend{font-size:.9rem;font-weight:600;margin-bottom:8px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{display:flex;align-items:center;gap:8px;font-weight:400;border:1.5px solid var(--line);border-radius:999px;padding:0 14px;min-height:42px;cursor:pointer}
.chips input{width:auto;min-height:0;accent-color:var(--accent)}
.chips label:has(input:checked){border-color:var(--accent);background:var(--tint);color:#15171C}
.hp{position:absolute;left:-9999px}
.form-note{color:var(--muted);font-size:.9rem;margin:0}
.form-note a{color:var(--accent-ink)}
.form-status{background:var(--tint);color:#15171C;border-radius:14px;padding:14px 16px;font-size:.95rem}

/* footer */
footer.site{border-top:1px solid var(--line);padding-block:48px 36px;margin-top:0}
footer.site .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}
@media (max-width:760px){footer.site .cols{grid-template-columns:1fr 1fr}}
footer.site h2{font-size:.95rem;margin-bottom:10px}
footer.site ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}
footer.site ul a{color:var(--muted);text-decoration:none;font-size:.93rem}
footer.site ul a:hover{color:var(--accent-ink)}
footer.site .base{margin-top:36px;padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
footer.site .base .label{text-transform:none;letter-spacing:0}
@media (max-width:480px){.top .wrap{gap:10px}.brand{font-size:.98rem;gap:8px}.brand svg{width:32px;height:32px}.color-btn{padding:0 10px;gap:6px;font-size:.8rem}.actions{gap:6px}}
