/* ==========================================================================
   Brightoar — shared stylesheet for the whole site.
   Sections: 1 fonts · 2 tokens · 3 base · 4 layout · 5 header · 6 buttons ·
   7 chips · 8 cards · 9 mock panel · 10 hero · 11 trust · 12 services ·
   13 pinned demo · 14 process steps · 15 labs · 16 why · 17 faq · 18 cta ·
   19 page-hero · 20 footer · 21 motion helpers · 22 responsive · 23 reduced motion
   Documented in /docs/STYLEGUIDE.md. No inline styles anywhere (strict CSP).
   ========================================================================== */

/* 1. Fonts (self-hosted, OFL) ------------------------------------------- */
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url("/assets/fonts/inter-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url("/assets/fonts/inter-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:600;font-display:swap;src:url("/assets/fonts/inter-latin-600-normal.woff2") format("woff2")}

/* 2. Tokens -------------------------------------------------------------- */
:root{
  /* surfaces + ink */
  --bg:#ffffff;
  --ink:#131517;
  --muted:#696b6e;          /* secondary text; AA on #fff 5.4:1, #f7f8f9 5.0:1, #ebeced 4.5:1 */
  --muted-strong:#595b5e;   /* secondary text on tinted surfaces / small text (6.9:1) */
  --surface:#f7f8f9;
  --surface-2:#ebeced;
  --line:#d2d4d7;
  --line-soft:#ebeced;
  /* brand */
  --brand:#f31a7c;          /* fills, borders, icons, glows. NOT body text */
  --brand-hover:#d5176d;
  --brand-deep:#b3135d;
  --brand-tint:rgba(243,26,124,.10);
  --rainbow:linear-gradient(-45deg,#8a18a8 0%,#ce2756 51.6%,#e7a90d 100%);
  /* same hues, last stop darkened so large display text keeps >= 3:1 on white */
  --rainbow-text:linear-gradient(100deg,#8a18a8 0%,#ce2756 55%,#c07a00 100%);
  --ok-ink:#17660d;
  --ok-bg:#e8f6e6;
  /* radii */
  --r-sm:8px; --r-md:15px; --r-lg:16px; --r-pill:9999px;
  /* shadow (5 soft layers) */
  --shadow-light:0 1.6px 3px rgba(0,0,0,.02),0 4.2px 7px rgba(0,0,0,.03),0 8px 14px rgba(0,0,0,.04),0 17.5px 29px rgba(0,0,0,.05),0 48px 80px rgba(0,0,0,.06);
  --shadow-xs:0 1px 4px rgba(0,0,0,.1);
  /* motion */
  --ease:cubic-bezier(.4,0,.2,1);
  --ease-bounce:cubic-bezier(.54,1.12,.38,1.11);
  --dur-fast:200ms; --dur:300ms; --dur-slow:600ms;
  /* type */
  --font-sans:"Inter",-apple-system,system-ui,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --font-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  /* layout */
  --container:1180px;
  --gutter:24px;
  --header-h:68px;
  --section-y:clamp(72px,9vw,120px);
}

/* 3. Base ---------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
img,svg,canvas{display:block;max-width:100%}
h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit}
::selection{background:rgba(243,26,124,.22)}

:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

.skip-link{position:absolute;left:12px;top:-64px;z-index:200;background:var(--ink);color:#fff;padding:12px 18px;border-radius:var(--r-md);font-weight:600;text-decoration:none;transition:top var(--dur-fast) var(--ease)}
.skip-link:focus{top:12px}

/* Type scale */
.display{font-size:clamp(40px,6.4vw,64px);line-height:1.1;font-weight:500;letter-spacing:-1px}
.h1{font-size:clamp(36px,5.4vw,56px);line-height:1.12;font-weight:500;letter-spacing:-1px}
.section-title{font-size:clamp(30px,4.2vw,44px);line-height:1.15;font-weight:500;letter-spacing:-.8px}
.h3{font-size:20px;line-height:1.25;font-weight:600}
.lead{font-size:clamp(17px,2vw,20px);line-height:1.55;color:var(--muted)}
.muted{color:var(--muted)}
.small{font-size:14px}
.grad-text{background:var(--rainbow-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
.text-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px;text-decoration-color:var(--brand)}
.text-link:hover{color:var(--brand-hover)}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:13px;line-height:1.3;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-strong)}
.eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--brand-tint)}

/* 4. Layout --------------------------------------------------------------- */
.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);margin-inline:auto;padding-inline:var(--gutter)}
.container-narrow{max-width:calc(820px + var(--gutter) * 2)}
.section{position:relative;padding-block:var(--section-y);overflow-x:clip}
.section-tint{background:linear-gradient(180deg,var(--surface) 0%,#fff 100%)}
.section-tint::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(600px 360px at 8% 0%,rgba(138,24,168,.07),transparent 70%),radial-gradient(520px 320px at 96% 12%,rgba(231,169,13,.08),transparent 70%)}
.section-tint>*{position:relative}
.section-head{display:grid;gap:16px;max-width:720px;margin-bottom:clamp(36px,5vw,56px)}
.section-head>.chip,.section-head>.eyebrow{justify-self:start}
.section-head.is-center>.chip,.section-head.is-center>.eyebrow{justify-self:center}
.section-head.is-center{margin-inline:auto;text-align:center;justify-items:center}
.grid{display:grid;gap:20px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.stack>*+*{margin-top:16px}

/* 5. Header --------------------------------------------------------------- */
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.78);-webkit-backdrop-filter:saturate(1.6) blur(18px);backdrop-filter:saturate(1.6) blur(18px);border-bottom:1px solid transparent;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.site-header.is-scrolled{border-bottom-color:var(--line-soft);box-shadow:0 1px 0 rgba(19,21,23,.02),0 8px 24px rgba(19,21,23,.04)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:var(--header-h)}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;text-decoration:none;border-radius:var(--r-sm)}
.brand-mark{width:28px;height:28px;transition:transform var(--dur-slow) var(--ease-bounce)}
.brand:hover .brand-mark{transform:rotate(90deg) scale(1.06)}
.brand-name{font-size:20px;font-weight:600;letter-spacing:-.4px}
.primary-nav{display:flex;align-items:center;gap:8px}
.nav-list{display:flex;align-items:center;gap:4px}
.nav-list a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:var(--r-md);font-size:15px;font-weight:500;color:var(--muted-strong);text-decoration:none;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.nav-list a:hover{color:var(--ink);background:rgba(19,21,23,.04)}
.nav-list a[aria-current="page"]{color:var(--ink);background:rgba(19,21,23,.05)}
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:rgba(19,21,23,.04);border:0;border-radius:var(--r-md);cursor:pointer}
.nav-toggle-bars{position:relative;width:18px;height:12px}
.nav-toggle-bars span{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:var(--ink);transition:transform var(--dur) var(--ease),opacity var(--dur-fast) var(--ease),top var(--dur) var(--ease)}
.nav-toggle-bars span:nth-child(1){top:0}
.nav-toggle-bars span:nth-child(2){top:5px}
.nav-toggle-bars span:nth-child(3){top:10px}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span:nth-child(1){top:5px;transform:rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span:nth-child(3){top:5px;transform:rotate(-45deg)}

/* 5b. Language switcher ----------------------------------------------------
   Native <details>: works without JS (site.js adds Escape / outside-click close).
   Sits inside .header-inner before .nav-toggle so it stays visible on phones. */
.lang-switch{position:relative;margin-left:auto}
.lang-switch-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;min-width:44px;padding:0 12px;border:1px solid rgba(19,21,23,.06);border-radius:var(--r-md);background:rgba(19,21,23,.05);color:var(--ink);font-size:14px;font-weight:600;line-height:1;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;transition:background var(--dur-fast) var(--ease)}
.lang-switch-btn::-webkit-details-marker{display:none}
.lang-switch-btn::marker{content:""}
.lang-switch-btn:hover,.lang-switch[open] .lang-switch-btn{background:rgba(19,21,23,.09)}
.lang-switch-btn .icon{width:20px;height:20px;flex:none}
.lang-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:120;min-width:180px;max-width:calc(100vw - 32px);margin:0;padding:6px;border:1px solid var(--line-soft);border-radius:16px;background:#fff;box-shadow:var(--shadow-light)}
.lang-menu a{position:relative;display:flex;align-items:center;min-height:44px;padding:0 14px 0 32px;border-radius:var(--r-sm);color:var(--ink);font-size:15px;font-weight:500;text-decoration:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease)}
.lang-menu a:hover{background:rgba(19,21,23,.05)}
.lang-menu a[aria-current="true"]{font-weight:700}
.lang-menu a[aria-current="true"]::before{content:"";position:absolute;left:14px;top:50%;width:8px;height:8px;margin-top:-4px;border-radius:50%;background:var(--brand)}
@media (min-width:900px){
  .header-inner .primary-nav{margin-left:auto}
  .lang-switch{order:3;margin-left:8px}
}

/* 6. Buttons -------------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border:1px solid transparent;border-radius:var(--r-md);font-size:15px;font-weight:600;line-height:1.2;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur) var(--ease-bounce),box-shadow var(--dur) var(--ease)}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--ink);color:#fff}
.btn-primary:hover{background:var(--brand-hover)}
.btn-brand{background:var(--brand-hover);color:#fff}
.btn-brand:hover{background:var(--brand-deep)}
.btn-secondary{background:rgba(19,21,23,.05);color:var(--ink);border-color:rgba(19,21,23,.06)}
.btn-secondary:hover{background:rgba(19,21,23,.09)}
.btn-lg{min-height:52px;padding:14px 26px;font-size:16px}
.btn .icon{width:18px;height:18px;transition:transform var(--dur) var(--ease-bounce)}
.btn:hover .icon{transform:translateX(3px)}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}

/* 7. Chips ---------------------------------------------------------------- */
.chip{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:4px 12px;border-radius:var(--r-pill);background:rgba(19,21,23,.05);color:var(--muted-strong);font-size:13px;font-weight:500;line-height:1.3}
.chip-dot::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--brand)}
.chip-brand{background:var(--brand-tint);color:var(--ink)}
.chip-ok{background:var(--ok-bg);color:var(--ok-ink)}
.chip-outline{background:#fff;border:1px solid var(--line)}

/* 8. Cards ---------------------------------------------------------------- */
.card{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-lg);box-shadow:var(--shadow-light);padding:28px}
.glass-card{position:relative;isolation:isolate;display:flex;flex-direction:column;gap:12px;padding:28px;border-radius:var(--r-lg);border:1px solid rgba(19,21,23,.07);background:radial-gradient(260px circle at var(--cx,50%) var(--cy,-20%),rgba(243,26,124,.10),transparent 70%),rgba(255,255,255,.74);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);box-shadow:var(--shadow-light);transition:transform var(--dur) var(--ease-bounce),box-shadow var(--dur) var(--ease)}
.glass-card::before{content:"";position:absolute;inset:-1px;z-index:-1;border-radius:inherit;padding:1.5px;background:var(--rainbow);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:0;transition:opacity var(--dur) var(--ease)}
.glass-card:hover,.glass-card:focus-within{transform:translateY(-4px)}
.glass-card:hover::before,.glass-card:focus-within::before{opacity:1}
.icon-tile{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#fff;border:1px solid var(--line-soft);box-shadow:var(--shadow-xs);color:var(--ink);transition:transform var(--dur-slow) var(--ease-bounce),background var(--dur) var(--ease)}
.icon-tile svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.glass-card:hover .icon-tile,.glass-card:focus-within .icon-tile,.why-item:hover .icon-tile{transform:rotate(-6deg) scale(1.1);background:var(--brand-tint)}
.card-tagline{font-size:17px;font-weight:600;line-height:1.3}
.card-text{color:var(--muted-strong);font-size:15px}
.card-more{display:inline-flex;align-items:center;gap:6px;margin-top:auto;min-height:44px;font-size:15px;font-weight:600;text-decoration:none}
.card-more::after{content:"";position:absolute;inset:0;border-radius:var(--r-lg)}
.card-more:focus-visible{outline:none}
.card-more:focus-visible::after{outline:2px solid var(--ink);outline-offset:2px}
.card-more svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--dur) var(--ease-bounce)}
.glass-card:hover .card-more svg,.glass-card:focus-within .card-more svg{transform:translateX(5px)}

/* 9. Mock panel (illustrative UI window made in CSS) ---------------------- */
.mock-panel{position:relative;border-radius:var(--r-lg);border:1px solid rgba(255,255,255,.85);outline:1px solid rgba(19,21,23,.07);background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);box-shadow:var(--shadow-light),0 30px 60px -30px rgba(206,39,86,.4);overflow:hidden}
.mock-bar{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line-soft);font-size:13px;font-weight:500;color:var(--muted-strong)}
.mock-dots{display:inline-flex;gap:6px;margin-right:4px}
.mock-dots i{width:9px;height:9px;border-radius:50%;background:var(--surface-2)}
.mock-bar .chip{margin-left:auto;min-height:26px;padding:2px 10px;font-size:12px}
.mock-body{padding:16px}
.mock-rows{display:grid;gap:8px}
.mock-row{display:flex;align-items:center;gap:12px;min-width:0;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid var(--line-soft);font-size:14px}
.mock-row-icon{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:9px;background:var(--surface)}
.mock-row-icon svg{width:16px;height:16px;stroke:var(--ink);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mock-row-text{min-width:0;flex:1}
.mock-row-title{display:block;font-weight:500;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mock-row-meta{display:block;font-size:12px;color:var(--muted-strong);line-height:1.3}
.mock-pill{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:2px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:600;white-space:nowrap}
/* Translated labels can be long («Pendiente de revisión»): let a pill inside a row wrap instead of overflowing. */
.mock-row .mock-pill{flex:0 1 auto;max-width:52%;white-space:normal;text-align:center;line-height:1.25}
.mock-pill svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.mock-pill-queued{background:var(--surface-2);color:var(--muted-strong)}
.mock-pill-done{background:var(--ok-bg);color:var(--ok-ink)}
.mock-pill-pending{background:var(--brand-tint);color:#8a0d46}

/* 10. Hero ---------------------------------------------------------------- */
.hero{position:relative;overflow-x:clip;padding-block:clamp(40px,6vw,88px) clamp(48px,7vw,96px)}
.hero::before{content:"";position:absolute;inset:-10% -10% auto auto;width:70%;height:90%;pointer-events:none;background:radial-gradient(closest-side,rgba(206,39,86,.12),transparent 70%),radial-gradient(closest-side at 70% 30%,rgba(138,24,168,.10),transparent 70%)}
.spotlight{position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(420px circle at var(--mx,70%) var(--my,30%),rgba(243,26,124,.11),rgba(138,24,168,.05) 45%,transparent 70%);transition:opacity var(--dur-slow) var(--ease)}
.spotlight.is-on{opacity:1}
.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:clamp(32px,5vw,72px)}
.hero-copy{display:grid;gap:24px;justify-items:start}
.hero-note{font-size:14px;color:var(--muted)}
.hero-visual{position:relative;min-height:460px;aspect-ratio:1/1.1;max-height:600px}
.hero-canvas{position:absolute;inset:0;width:100%;height:100%}
.hero-panel{position:absolute;left:6%;right:6%;bottom:2%}
.task-row .st{display:grid;justify-items:end;flex:0 1 auto;min-width:0;max-width:45%}
.task-row .st .mock-pill{max-width:100%}
.task-row .st>span{grid-area:1/1}
.task-row .st-queued{animation:st-queued 9s var(--ease) infinite}
.task-row .st-done{opacity:0;animation:st-done 9s var(--ease) infinite}
.task-row:nth-child(2) .st>span{animation-delay:.9s}
.task-row:nth-child(3) .st>span{animation-delay:1.8s}
.task-row:nth-child(4) .st>span{animation-delay:2.7s}
@keyframes st-queued{0%,34%{opacity:1;transform:none}40%,92%{opacity:0;transform:translateY(-4px)}98%,100%{opacity:1;transform:none}}
@keyframes st-done{0%,34%{opacity:0;transform:translateY(4px)}40%,88%{opacity:1;transform:none}96%,100%{opacity:0;transform:translateY(-4px)}}

/* 11. Trust bar ----------------------------------------------------------- */
.trust{padding-block:0 clamp(40px,6vw,72px)}
.trust-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:12px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-soft)}
.trust-item{display:flex;align-items:center;gap:12px;padding:12px 14px;font-size:15px;font-weight:500;line-height:1.3}
.trust-item svg{flex:none;width:24px;height:24px;stroke:var(--brand);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* 12. Services grid ------------------------------------------------------- */
.service-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:20px}
.service-grid>*{grid-column:span 2}
.service-grid>*:nth-child(4),.service-grid>*:nth-child(5){grid-column:span 3}

/* 13. Pinned demo --------------------------------------------------------- */
.demo-label{display:inline-flex}
.pin{position:relative}
.pin-stage{position:relative}
.demo-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;counter-reset:demo}
.demo-steps>li{display:flex;gap:14px;padding:18px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-soft)}
.step-num{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:#fff;border:1px solid var(--line);font-size:14px;font-weight:600;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.demo-steps h3{font-size:17px;font-weight:600;line-height:1.3}
.demo-steps p{margin-top:4px;font-size:14px;color:var(--muted-strong)}
.demo-window{display:none}
/* pinned mode: added by home.js (class .is-pinned) on >= 768px without reduced motion */
.pin.is-pinned{height:560vh}
.pin.is-pinned .pin-stage{position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));height:calc(100svh - var(--header-h));display:flex;align-items:center}
.pin.is-pinned .pin-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(24px,4vw,56px);align-items:center;width:100%}
.pin.is-pinned .demo-steps{display:grid;grid-template-columns:1fr;gap:8px}
.pin.is-pinned .demo-steps>li{padding:12px 14px;background:transparent;border-color:transparent;opacity:.55;transition:opacity var(--dur) var(--ease),background var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.pin.is-pinned .demo-steps>li p{display:none}
.pin.is-pinned .demo-steps>li.is-active{opacity:1;background:#fff;border-color:var(--line-soft);box-shadow:var(--shadow-light)}
.pin.is-pinned .demo-steps>li.is-active p{display:block}
.pin.is-pinned .demo-steps>li.is-active .step-num{background:var(--ink);color:#fff;border-color:var(--ink)}
.pin.is-pinned .demo-steps>li.is-done{opacity:.8}
.pin.is-pinned .demo-steps>li.is-done .step-num{background:var(--ok-bg);color:var(--ok-ink);border-color:transparent}
.pin.is-pinned .demo-window{display:block;position:relative}
.demo-window .mock-panel{background:rgba(255,255,255,.82)}
.demo-progress{height:3px;background:var(--surface-2)}
.demo-progress-bar{display:block;height:100%;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,0));background:var(--rainbow)}
.scenes{position:relative;height:clamp(300px,46vh,380px)}
.scene{position:absolute;inset:0;display:grid;align-content:center;gap:14px;padding:22px;opacity:0;transform:translateY(14px) scale(.98);pointer-events:none;transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease-bounce)}
.scene.is-active{opacity:1;transform:none}
.scene-title{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-strong)}
.bubble{padding:16px 18px;border-radius:20px;background:#fff;border:1px solid var(--line-soft);box-shadow:var(--shadow-xs);font-size:17px;font-weight:500;line-height:1.4}
.script-lines{display:grid;gap:8px}
.script-line{display:flex;gap:10px;align-items:baseline;padding:9px 12px;border-radius:12px;background:#fff;border:1px solid var(--line-soft);font-size:14px}
.script-line b{flex:none;font-family:var(--font-mono);font-size:12px;font-weight:500;color:var(--muted-strong)}
.stat-row{display:flex;flex-wrap:wrap;gap:8px}
.stat{padding:8px 12px;border-radius:12px;background:var(--surface);font-size:13px;color:var(--muted-strong)}
.stat b{font-size:18px;font-weight:600;color:var(--ink);margin-right:4px}
.wave{display:flex;align-items:center;gap:4px;height:84px;padding:0 6px}
.wave i{flex:1;max-width:8px;height:var(--h,40%);border-radius:4px;background:var(--rainbow);transform-origin:50% 50%;animation:wave 1.2s var(--ease) infinite alternate}
.wave i:nth-child(3n){--h:70%;animation-delay:-.4s}
.wave i:nth-child(4n){--h:30%;animation-delay:-.7s}
.wave i:nth-child(5n){--h:90%;animation-delay:-.2s}
.wave i:nth-child(7n){--h:55%;animation-delay:-.9s}
@keyframes wave{from{transform:scaleY(.4)}to{transform:scaleY(1)}}
.frame{position:relative;aspect-ratio:16/9;max-height:190px;margin-inline:auto;width:100%;border-radius:14px;background:linear-gradient(135deg,#2a1034 0%,#8a18a8 40%,#ce2756 75%,#e7a90d 100%);overflow:hidden;box-shadow:var(--shadow-xs)}
.frame::after{content:"";position:absolute;left:50%;top:50%;width:0;height:0;margin:-14px 0 0 -9px;border-left:26px solid rgba(255,255,255,.92);border-top:14px solid transparent;border-bottom:14px solid transparent}
.frame-badge{position:absolute;left:10px;top:10px;z-index:1;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);background:rgba(255,255,255,.95);color:var(--ink);font-size:12px;font-weight:600}
.frame-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--brand)}
.thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.thumbs i{aspect-ratio:16/10;border-radius:6px;background:linear-gradient(135deg,#d9b5e6,#f2b3c6)}
.thumbs i:nth-child(2n){background:linear-gradient(135deg,#f2b3c6,#f6dca0)}
.approve-actions{display:flex;gap:8px}
.fake-btn{display:inline-flex;align-items:center;min-height:34px;padding:6px 14px;border-radius:12px;font-size:13px;font-weight:600;background:var(--surface-2);color:var(--ink)}
.fake-btn-ok{background:var(--ink);color:#fff}
.big-check{display:grid;place-items:center;width:72px;height:72px;margin-inline:auto;border-radius:50%;background:var(--ok-bg);color:var(--ok-ink)}
.big-check svg{width:34px;height:34px;stroke:currentColor;fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.scene-center{text-align:center;justify-items:center}

/* 14. Process steps ------------------------------------------------------- */
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;counter-reset:step}
.step{position:relative;display:grid;gap:10px;align-content:start;padding:26px;border-radius:var(--r-lg);background:#fff;border:1px solid var(--line-soft);box-shadow:var(--shadow-light);counter-increment:step}
.step::before{content:counter(step);display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;font-size:16px;font-weight:600;transition:background var(--dur) var(--ease)}
.step:hover::before{background:var(--brand-hover)}
.step p{color:var(--muted-strong);font-size:15px}
.assure{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:20px}
.assure-item{display:flex;gap:16px;align-items:flex-start;padding:22px 24px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-soft)}
.assure-item svg{flex:none;width:26px;height:26px;stroke:var(--brand);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.assure-item p{font-size:15px;color:var(--muted-strong)}
.assure-item strong{display:block;color:var(--ink);font-size:16px;margin-bottom:2px}
.section-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:32px}

/* 15. Labs cards ---------------------------------------------------------- */
.lab-card{display:flex;flex-direction:column;gap:14px;padding:20px 20px 26px;border-radius:var(--r-lg);background:#fff;border:1px solid var(--line-soft);box-shadow:var(--shadow-light);transition:transform var(--dur) var(--ease-bounce)}
.lab-card:hover{transform:translateY(-4px)}
.lab-mock{position:relative;height:170px;padding:14px;border-radius:12px;background:var(--surface);border:1px solid var(--line-soft);overflow:hidden}
.lab-card h3{padding-inline:6px}
.lab-card p{padding-inline:6px;color:var(--muted-strong);font-size:15px}
.lab-card .chip{align-self:flex-start;margin-left:6px}
.swatches{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;height:100%}
.swatches i{border-radius:10px;border:1px solid rgba(19,21,23,.06);background:#fff;transition:transform var(--dur) var(--ease-bounce)}
.swatches i:nth-child(1){background:linear-gradient(135deg,#fff,#ebeced)}
.swatches i:nth-child(2){background:linear-gradient(135deg,#131517,#3b3f44)}
.swatches i:nth-child(3){background:linear-gradient(135deg,#f6dca0,#f2b3c6)}
.swatches i:nth-child(4){background:linear-gradient(135deg,#d9b5e6,#8a18a8)}
.swatches i:nth-child(5){background:linear-gradient(135deg,#cfe3ff,#e8f0ff)}
.swatches i:nth-child(6){background:linear-gradient(135deg,#d6f0d3,#f7fbe8)}
.swatches i:nth-child(2n):hover{transform:scale(1.05)}
.swatches i.is-picked{outline:2px solid var(--brand);outline-offset:2px}
.lab-card:hover .swatches i:nth-child(4){transform:scale(1.06)}
.feed{display:grid;gap:8px}
.feed-post{display:flex;gap:8px;align-items:center;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid var(--line-soft)}
.feed-post i{flex:none;width:18px;height:18px;border-radius:50%;background:var(--surface-2)}
.feed-post b{height:6px;flex:1;border-radius:4px;background:var(--surface-2)}
.feed-post.is-hot{border-color:rgba(243,26,124,.35);background:#fff}
.feed-post.is-hot i{background:var(--brand)}
.feed-alert{position:absolute;right:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:12px;background:var(--ink);color:#fff;font-size:12px;font-weight:600;animation:bob 3.6s var(--ease) infinite alternate}
@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-5px)}}
.brief{display:grid;gap:8px}
.brief-title{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:600;color:var(--muted-strong)}
.brief-line{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted-strong)}
.brief-line::before{content:"";flex:none;width:6px;height:6px;border-radius:50%;background:var(--brand)}
.brief-line b{height:6px;flex:1;border-radius:4px;background:var(--surface-2)}
.brief-line:nth-child(3) b{flex:.75}
.brief-line:nth-child(4) b{flex:.9}
.brief-line:nth-child(5) b{flex:.6}

/* 16. Why ----------------------------------------------------------------- */
.why-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.why-item{display:flex;gap:20px;align-items:flex-start;padding:28px;border-radius:var(--r-lg);background:#fff;border:1px solid var(--line-soft);box-shadow:var(--shadow-light)}
.why-item p{margin-top:6px;color:var(--muted-strong);font-size:15px}
.why-item .icon-tile{flex:none}

/* 17. FAQ ----------------------------------------------------------------- */
.faq{display:grid;gap:12px}
.faq-item{border-radius:var(--r-lg);background:#fff;border:1px solid var(--line-soft);transition:box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.faq-item[open]{box-shadow:var(--shadow-light);border-color:var(--line)}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;padding:14px 22px;font-size:17px;font-weight:600;line-height:1.35;cursor:pointer;list-style:none;border-radius:var(--r-lg)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"";flex:none;width:12px;height:12px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg) translateY(-3px);transition:transform var(--dur) var(--ease-bounce)}
.faq-item[open] summary::after{transform:rotate(-135deg) translateY(-3px)}
.faq-item summary:focus-visible{outline-offset:-2px}
.faq-answer{padding:0 22px 22px;color:var(--muted-strong);font-size:16px}

/* 18. Final CTA band ------------------------------------------------------ */
.cta-band{position:relative;overflow:hidden;display:grid;justify-items:center;gap:20px;text-align:center;padding:clamp(48px,7vw,88px) var(--gutter);border-radius:28px;background:radial-gradient(520px 300px at 15% 0%,rgba(138,24,168,.14),transparent 70%),radial-gradient(520px 300px at 85% 100%,rgba(231,169,13,.18),transparent 70%),radial-gradient(500px 300px at 55% 40%,rgba(206,39,86,.12),transparent 70%),var(--surface);border:1px solid var(--line-soft)}
.cta-band .section-title{max-width:18ch}
.cta-band .lead{max-width:52ch}

/* 19. Interior page hero -------------------------------------------------- */
.page-hero{position:relative;overflow-x:clip;padding-block:clamp(48px,7vw,96px) clamp(32px,5vw,64px)}
.page-hero::before{content:"";position:absolute;inset:-30% -10% auto auto;width:60%;height:140%;pointer-events:none;background:radial-gradient(closest-side,rgba(206,39,86,.10),transparent 70%)}
.page-hero-inner{position:relative;display:grid;gap:20px;justify-items:start;max-width:820px}
.page-hero .lead{max-width:60ch}
.breadcrumb{display:flex;flex-wrap:wrap;gap:6px;font-size:14px;color:var(--muted-strong)}
.breadcrumb a{display:inline-flex;align-items:center;min-height:44px}
.breadcrumb li+li::before{content:"/";margin-right:6px;color:var(--line)}
.breadcrumb li{display:inline-flex;align-items:center}
.visual-box{position:relative;min-height:320px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line-soft);overflow:hidden}
.visual-box canvas{position:absolute;inset:0;width:100%;height:100%}
.prose{display:grid;gap:16px;max-width:68ch;color:var(--muted-strong)}
.prose h2{color:var(--ink);font-size:24px;font-weight:600;margin-top:16px}
.prose a{color:var(--ink)}

/* 20. Footer -------------------------------------------------------------- */
.site-footer{background:var(--surface);border-top:1px solid var(--line-soft);padding-block:clamp(48px,6vw,80px) 28px}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(24px,4vw,56px)}
.footer-brand p{margin-top:12px;max-width:30ch;color:var(--muted-strong);font-size:15px}
.footer-col h2{font-size:14px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-strong);margin-bottom:8px}
.footer-col a{display:inline-flex;align-items:center;min-height:44px;font-size:15px;color:var(--ink);text-decoration:none}
.footer-col a:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--brand)}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:clamp(32px,4vw,48px);padding-top:20px;border-top:1px solid var(--line);font-size:14px;color:var(--muted-strong)}
.footer-bottom a{color:var(--ink);text-underline-offset:3px;text-decoration-color:var(--brand)}
.footer-lang{display:flex;flex-wrap:wrap;align-items:center}
.footer-lang a{display:inline-flex;align-items:center;min-height:44px;padding-inline:6px}
.footer-lang a[aria-current="true"]{font-weight:700;text-decoration-color:var(--brand);text-decoration-thickness:2px}
.footer-lang-sep{color:var(--muted-strong)}

/* 21. Motion helpers ------------------------------------------------------ */
/* Reveal on scroll: content is only hidden when scripting is on, and a
   fail-safe un-hides it if site.js never runs (html lacks .js-ready). */
@media (scripting:enabled) and (prefers-reduced-motion:no-preference){
  [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease-bounce)}
  [data-reveal].is-in{opacity:1;transform:none}
  [data-reveal-delay="1"]{transition-delay:.08s}
  [data-reveal-delay="2"]{transition-delay:.16s}
  [data-reveal-delay="3"]{transition-delay:.24s}
  [data-reveal-delay="4"]{transition-delay:.32s}
  [data-reveal-delay="5"]{transition-delay:.4s}
  html:not(.js-ready) [data-reveal]{animation:reveal-failsafe .01s linear 2.5s forwards}
}
@keyframes reveal-failsafe{to{opacity:1;transform:none}}
/* Offscreen / background-tab pause for CSS animations (toggled by site.js) */
.is-paused,.is-paused *,.is-paused *::before,.is-paused *::after,html.tab-hidden *,html.tab-hidden *::before,html.tab-hidden *::after{animation-play-state:paused!important}

/* 21b. Chinese typography ---------------------------------------------------
   System CJK fonts only (no download). Applies to any element with lang zh / zh-Hans. */
:lang(zh){--font-sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Noto Sans SC","Inter",-apple-system,system-ui,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;word-break:normal;line-break:strict}
[lang|="zh"]{font-family:var(--font-sans)}
:lang(zh) :where(.display,.h1,.section-title,.h3,h1,h2,h3,h4,.eyebrow,.scene-title,.sd-label,.footer-col h2){letter-spacing:0}
:lang(zh) :where(p,li,.lead,.card-text,.faq-answer){line-height:1.7}

/* 22. Responsive ---------------------------------------------------------- */
@media (max-width:1023px){
  .hero-grid{grid-template-columns:1fr}
  .hero-visual{min-height:440px;aspect-ratio:auto;height:520px;max-width:560px;width:100%;margin-inline:auto}
  .grid-4,.steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trust-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  .service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .service-grid>*,.service-grid>*:nth-child(4),.service-grid>*:nth-child(5){grid-column:span 1}
  .service-grid>*:nth-child(5){grid-column:span 2}
  .footer-grid{grid-template-columns:1fr 1fr}
  .footer-brand{grid-column:1/-1}
}
@media (max-width:899px){
  :root{--header-h:64px}
  .nav-toggle{display:inline-flex}
  .primary-nav{position:absolute;top:calc(100% + 4px);left:12px;right:12px;display:none;flex-direction:column;align-items:stretch;gap:8px;padding:10px;border-radius:20px;background:rgba(255,255,255,.97);border:1px solid var(--line-soft);box-shadow:var(--shadow-light)}
  .site-header.is-open .primary-nav{display:flex}
  .nav-list{flex-direction:column;align-items:stretch;gap:2px}
  .nav-list a{min-height:48px;font-size:16px}
  .primary-nav .btn{width:100%}
  .lang-switch{margin-left:auto}
}
@media (max-width:767px){
  :root{--gutter:20px}
  .grid-2,.grid-3,.grid-4,.steps,.assure,.why-grid,.service-grid{grid-template-columns:1fr}
  .service-grid>*,.service-grid>*:nth-child(4),.service-grid>*:nth-child(5){grid-column:auto}
  .trust-list{grid-template-columns:1fr}
  .hero-visual{height:430px;min-height:430px}
  .hero-panel{left:2%;right:2%}
  .task-row:nth-child(4){display:none}
  .footer-grid{grid-template-columns:1fr}
  .btn-row .btn{flex:1 1 auto}
  .section-foot{flex-direction:column;align-items:stretch}
  .why-item{padding:22px}
}
@media (min-width:1024px){
  .hero-visual{aspect-ratio:1/1.1}
}
/* No-JS: keep the nav reachable on small screens */
@media (max-width:899px) and (scripting:none){
  .nav-toggle{display:none}
  .header-inner{flex-wrap:wrap;padding-block:8px}
  .primary-nav{position:static;display:flex;width:100%;box-shadow:none}
}

/* 23. Reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .lang-switch-btn,.lang-menu a{transition:none}
  [data-reveal]{opacity:1!important;transform:none!important}
  .task-row .st-queued{opacity:0}
  .task-row .st-done{opacity:1}
  .spotlight{display:none}
  .glass-card:hover,.glass-card:focus-within,.lab-card:hover{transform:none}
  .wave i{transform:scaleY(.7)}
}
