/* Product pages + hub (light theme, edge-aligned) */
.pd-hero{padding:130px 0 70px;background:linear-gradient(180deg,#faf7f7 0%,#fff 100%);border-bottom:1px solid var(--line)}
.pd-hero-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:56px;align-items:center}
.pd-back{display:inline-block;font-size:.85rem;color:var(--muted);margin-bottom:22px}
.pd-back:hover{color:var(--red)}
.pd-hero h1{font-size:clamp(2.6rem,5.4vw,4.6rem);line-height:1.02;letter-spacing:-.035em;margin:14px 0 18px;font-weight:800}
.pd-line{font-size:1.2rem;color:var(--ink-2);max-width:620px}
.pd-btns{margin:30px 0 22px;display:flex;gap:10px;flex-wrap:wrap}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{font:inherit;font-size:.82rem;font-weight:600;padding:7px 14px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--ink-2);cursor:pointer;transition:.2s}
.chip:hover,.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.pd-media{position:relative;aspect-ratio:5/4;border-radius:22px;overflow:hidden;box-shadow:0 40px 80px -40px rgba(20,16,18,.45)}
.pd-media .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(1.08) saturate(.9)}
.pd-media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,0) 30%,rgba(20,16,18,.18))}
.pd-demo{position:absolute;right:22px;bottom:22px;z-index:2;width:min(380px,calc(100% - 44px));background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-radius:18px;padding:16px;box-shadow:0 24px 50px -20px rgba(0,0,0,.45)}
.pd-top{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.pd-top img{width:42px;height:42px;border-radius:50%;object-fit:cover}
.pd-top b{display:block;font-size:.95rem}.pd-top small{color:var(--muted);font-size:.76rem}
.pd-top .dot{width:12px;height:12px;border-radius:50%;background:var(--grad);box-shadow:0 0 0 5px rgba(227,18,47,.12)}
.wave{margin-left:auto;display:flex;gap:2px;align-items:center;height:30px}
.wave i{width:3px;height:4px;border-radius:2px;background:var(--ink);transition:height .1s}
.pd-demo.talk .wave i{background:var(--red)}
.pd-log{display:flex;flex-direction:column;gap:8px;padding-top:12px;min-height:220px;justify-content:flex-end;font-size:.88rem;line-height:1.45}
.pd-log .m{padding:9px 12px;border-radius:14px;max-width:88%;animation:pdIn .3s var(--ease)}
.pd-log .u{align-self:flex-end;background:var(--ink);color:#fff;border-bottom-right-radius:4px}
.pd-log .s{align-self:flex-start;background:#f3eeef;border-bottom-left-radius:4px}
.pd-log .act{font-size:.78rem;color:var(--ink-2);display:flex;align-items:center;gap:7px;animation:pdIn .3s var(--ease)}
.pd-log .act .sp{width:12px;height:12px;border:2px solid var(--line);border-top-color:var(--red);border-radius:50%;animation:spin .7s linear infinite}
.pd-log .act .ok{color:#fff;background:var(--grad);border-radius:50%;width:16px;height:16px;display:grid;place-items:center}
.pd-log .cur{display:inline-block;width:6px;height:1em;background:currentColor;opacity:.5;vertical-align:-2px;animation:blink .8s infinite}
@keyframes pdIn{from{opacity:0;transform:translateY(6px)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes blink{50%{opacity:0}}
.pd-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:60px;align-items:start}
.pd-intro .lead{font-size:1.35rem;line-height:1.5;color:var(--ink);max-width:none}
.pd-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.pd-stats>div{background:#fff;padding:26px 22px}
.pd-stats b{display:block;font-size:2.4rem;letter-spacing:-.03em;line-height:1}
.pd-stats small{color:var(--muted)}
.pd-head{margin-bottom:34px}.pd-head h2{margin-top:10px;font-size:clamp(1.8rem,3vw,2.6rem);letter-spacing:-.025em}
.pu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
.pu{border:1px solid var(--line);border-radius:18px;padding:26px;background:#fff;display:flex;flex-direction:column;transition:.3s var(--ease)}
.pu:hover{transform:translateY(-4px);box-shadow:0 24px 40px -28px rgba(20,16,18,.4)}
.pu .n{font-size:.8rem;font-weight:700;color:var(--red)}
.pu h3{margin:14px 0 8px;font-size:1.2rem}.pu p{color:var(--ink-2);flex:1}
.pu small{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);font-weight:600}
.pd-how{background:#faf7f7}
.pd-steps{list-style:none;display:flex;flex-direction:column;gap:14px}
.pd-steps li{display:flex;gap:18px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 22px}
.pd-steps span{flex:none;width:34px;height:34px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700}
.pd-steps p{color:var(--ink-2);margin-top:2px}
.pd-faq .faq{border-bottom:1px solid var(--line)}
.pd-cta{background:var(--ink);color:#fff;padding:80px 0}
.pd-cta .wrap{display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap}
.pd-cta h2{font-size:clamp(1.8rem,3.2vw,2.8rem);max-width:720px;letter-spacing:-.025em}
/* cards + hub */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.pgrid.sm{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:22px}
.pcard{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#fff;transition:.3s var(--ease)}
.pcard:hover{transform:translateY(-4px);box-shadow:0 30px 50px -30px rgba(20,16,18,.45)}
.pcard-img{position:relative;aspect-ratio:16/10;overflow:hidden;background:#eee}
.pcard-img video,.pcard-img img{width:100%;height:100%;object-fit:cover}
.pk{position:absolute;left:12px;top:12px;background:rgba(255,255,255,.92);font-size:.72rem;font-weight:700;padding:5px 10px;border-radius:99px}
.pcard-body{padding:20px 22px 22px;display:flex;flex-direction:column;flex:1}
.pcard-body h3{font-size:1.2rem;margin-bottom:6px}.pcard-body p{color:var(--ink-2);font-size:.94rem;flex:1;margin-bottom:14px}
.pgroup{margin-bottom:60px}.pgroup>h2{margin-bottom:22px;font-size:1.6rem}
.pgroup.empty{display:none}.pcard.hide{display:none}
.hub .filt{margin-top:30px}
@media (max-width:900px){
  .pd-hero{padding:100px 0 50px}
  .pd-hero-in,.pd-split{grid-template-columns:1fr;gap:34px}
  .pd-media{aspect-ratio:auto;min-height:440px}
  .pd-demo{left:14px;right:14px;bottom:14px;width:auto}
}
@media (max-width:560px){.pd-stats{grid-template-columns:1fr 1fr}.pd-stats b{font-size:1.9rem}.pgrid{grid-template-columns:1fr}.wrap.pd-cta-in{padding:0 16px}}
/* ---- motion layer ---- */
.pd-hero{position:relative;overflow:hidden}
.pd-hero>.wrap{position:relative;z-index:1}
.field{position:absolute;inset:auto 0 0 0;width:100%;height:60%;pointer-events:none;z-index:0}
.pd-cta{position:relative;overflow:hidden}.pd-cta .wrap{position:relative;z-index:1}.pd-cta .field{height:100%}
.hvids{position:absolute;inset:0}
.hvids .hv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.6s ease,transform 8s linear;transform:scale(1.08);filter:brightness(1.06) saturate(.92)}
.hvids .hv.on{opacity:1;transform:scale(1)}
.split-h .ch{display:inline-block;opacity:0;transform:translateY(.5em);animation:chIn .7s var(--ease) forwards}
@keyframes chIn{to{opacity:1;transform:none}}
.fchip{position:absolute;z-index:3;background:#fff;border-radius:99px;padding:8px 14px 8px 10px;font-size:.8rem;font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:0 14px 30px -12px rgba(0,0,0,.35);opacity:0;animation:fIn .8s var(--ease) forwards,bob 5s ease-in-out infinite}
.fchip .ok,.pane-chip .ok{width:16px;height:16px;border-radius:50%;background:var(--grad);position:relative}
.fchip .ok::after,.pane-chip .ok::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.fchip.c0{left:18px;top:22px;animation-delay:1.2s,1.2s}
.fchip.c1{left:34%;top:46%;animation-delay:2.4s,2s}
.fchip.c2{left:22px;bottom:120px;animation-delay:3.6s,2.8s}
@keyframes fIn{from{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1}}
@keyframes bob{50%{translate:0 -6px}}
.pd-marq{border-bottom:1px solid var(--line);overflow:hidden;padding:18px 0;background:#fff;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-in{display:flex;gap:46px;width:max-content;animation:mq 40s linear infinite}
.pd-marq:hover .mq-in{animation-play-state:paused}
.mq-in span{font-size:1.15rem;font-weight:600;color:var(--ink-2);white-space:nowrap}
.mq-in span:nth-child(3n+2){background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
@keyframes mq{to{transform:translateX(-50%)}}
.words .w{opacity:.28;transition:opacity .5s ease}
.words .w.lit{opacity:1}
.pu{padding:0;overflow:hidden}
.pu-img{position:relative;aspect-ratio:16/10;overflow:hidden}
.pu-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.pu:hover .pu-img img{transform:scale(1.07)}
.pu-img .n{position:absolute;left:14px;top:14px;background:#fff;color:var(--ink);border-radius:99px;padding:4px 10px;font-size:.75rem}
.pu-body{padding:22px 24px 24px;display:flex;flex-direction:column;flex:1}
.pu-body h3{margin:0 0 8px}
.pu small{display:flex;align-items:center;gap:8px}
.pu small i{width:8px;height:8px;border-radius:50%;background:var(--grad)}
.pd-story{padding:110px 0;background:#faf7f7}
.steps-l{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.step{display:flex;gap:18px;padding:22px 20px;border-radius:16px;border:1px solid transparent;opacity:.45;transition:.5s var(--ease);cursor:pointer}
.step span{font-weight:800;color:var(--muted);font-size:.9rem;padding-top:2px}
.step b{font-size:1.15rem}.step p{color:var(--ink-2);margin-top:4px}
.step.on{opacity:1;background:#fff;border-color:var(--line);box-shadow:0 20px 40px -30px rgba(20,16,18,.4)}
.step.on span{color:var(--red)}
.story-stage{position:sticky;top:110px}
.panes{position:relative;aspect-ratio:4/3.4;border-radius:22px;overflow:hidden;box-shadow:0 40px 80px -40px rgba(20,16,18,.45)}
.pane{position:absolute;inset:0;opacity:0;transition:opacity .8s ease}
.pane img{width:100%;height:100%;object-fit:cover;transform:scale(1.1);transition:transform 6s ease}
.pane.on{opacity:1}.pane.on img{transform:scale(1)}
.pane-chip{position:absolute;left:22px;bottom:22px;background:#fff;border-radius:14px;padding:12px 16px;font-weight:600;display:flex;gap:10px;align-items:center;transform:translateY(20px);opacity:0;transition:.6s var(--ease) .3s}
.pane.on .pane-chip{transform:none;opacity:1}
.pd-conn{overflow:hidden}
.phub{position:relative;aspect-ratio:1;max-width:520px;width:100%;justify-self:center}
.hub-lines{position:absolute;inset:0;width:100%;height:100%}
.hub-lines line{stroke:var(--line);stroke-width:1.5;stroke-dasharray:6 6;animation:dash 1.2s linear infinite}
.phub.in .hub-lines line{stroke:#e9c6cb}
@keyframes dash{to{stroke-dashoffset:-12}}
.hub-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34%;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:0 30px 60px -25px rgba(227,18,47,.45),0 0 0 14px rgba(227,18,47,.06),0 0 0 30px rgba(227,18,47,.03);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;animation:pulse 3s ease-in-out infinite}
.hub-core img{width:34%}.hub-core b{font-size:.9rem;padding:0 8px}
@keyframes pulse{50%{box-shadow:0 30px 60px -25px rgba(227,18,47,.6),0 0 0 22px rgba(227,18,47,.07),0 0 0 44px rgba(227,18,47,.02)}}
.hn{position:absolute;left:50%;top:50%;white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:99px;padding:8px 14px;font-size:.82rem;font-weight:600;
  transform:translate(-50%,-50%) rotate(var(--a)) translateY(-37.5%) rotate(calc(-1 * var(--a)));opacity:0;transition:opacity .6s ease var(--d)}
.hn{transform:translate(-50%,-50%) rotate(var(--a)) translateY(calc(-1 * min(195px, 37.5vw))) rotate(calc(-1 * var(--a)))}
.phub.in .hn{opacity:1;animation:bob 4s ease-in-out infinite var(--d)}
.bframe.tilt{transform:perspective(1400px) rotateX(10deg) scale(.94);transition:transform 1.2s var(--ease)}
.bframe.tilt.in{transform:none}
@media (max-width:900px){.story-stage{position:relative;top:0;order:-1}.pd-story .pd-split{display:flex;flex-direction:column-reverse}.fchip.c1,.fchip.c2{display:none}.phub{max-width:380px}}
@media (prefers-reduced-motion:reduce){.mq-in,.fchip,.hub-core,.hub-lines line{animation:none}.fchip{opacity:1}.words .w{opacity:1}.split-h .ch{animation:none;opacity:1;transform:none}}
/* ---- hero v2: Concierge-style full-bleed ---- */
.pd-hero{min-height:100vh;display:flex;align-items:center;padding:130px 0 80px;background:#f7f5f5;border:0}
.pd-hero .hvids{position:absolute;inset:0;z-index:0}
.pd-hero .hvids .hv{filter:saturate(.85)}
.hfade{position:absolute;inset:0;z-index:0;background:
  linear-gradient(90deg,rgba(255,255,255,.97) 0%,rgba(255,255,255,.9) 36%,rgba(255,255,255,.55) 64%,rgba(255,255,255,.3) 100%),
  radial-gradient(900px 600px at 85% 20%,rgba(252,20,20,.10),transparent 60%),
  linear-gradient(0deg,#fff 0%,rgba(255,255,255,0) 24%)}
.pd-hero .field{inset:0;height:100%;z-index:1}
.pd-hero>.wrap{z-index:2;width:100%}
.pd-hero-in{grid-template-columns:minmax(0,1fr) minmax(0,460px);gap:80px;justify-content:space-between}
.pd-back{opacity:0;animation:in .8s var(--ease) forwards}
.eb{display:inline-flex;align-items:center;gap:10px;font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--ink);opacity:0;animation:in .9s .05s var(--ease) forwards}
.eb .dot{width:8px;height:8px;border-radius:50%;background:var(--grad);box-shadow:0 0 0 0 rgba(227,18,47,.5);animation:ping 2s infinite}
@keyframes ping{70%{box-shadow:0 0 0 10px rgba(227,18,47,0)}100%{box-shadow:0 0 0 0 rgba(227,18,47,0)}}
.pd-hero .h1in{font-size:clamp(2.7rem,4.9vw,4.6rem);line-height:1.03;letter-spacing:-.04em;font-weight:500;margin:20px 0 24px}
.h1in>span{display:block;opacity:0;transform:translateY(28px);filter:blur(8px);animation:in 1.1s var(--ease) forwards}
.h1in>span:nth-child(2){animation-delay:.14s}.h1in>span:nth-child(3){animation-delay:.28s}
.gt{font-style:normal;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;display:inline-block;padding-bottom:.06em}
@keyframes in{to{opacity:1;transform:none;filter:none}}
.sub{font-size:1.14rem;line-height:1.65;max-width:560px;color:var(--ink-2);opacity:0;animation:in 1s .45s var(--ease) forwards}
.hbtn{display:flex;gap:12px;flex-wrap:wrap;margin:32px 0 30px;opacity:0;animation:in 1s .6s var(--ease) forwards}
.hcaps{display:flex;gap:22px;flex-wrap:wrap;font-size:.86rem;font-weight:600;opacity:0;animation:in 1s .75s var(--ease) forwards}
.hcaps span{display:flex;align-items:center;gap:8px}
.hcaps i{width:16px;height:16px;border-radius:50%;background:var(--grad);position:relative}
.hcaps i::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.pd-stage{position:relative;opacity:0;transform:translateY(30px) scale(.97);animation:in 1.2s .5s var(--ease) forwards}
.pd-stage .pd-demo{position:relative;right:auto;bottom:auto;left:auto;width:100%;padding:20px;border-radius:22px;background:rgba(255,255,255,.92);box-shadow:0 40px 80px -30px rgba(20,16,18,.45)}
.pd-stage .pd-log{min-height:280px}
.pd-stage .fchip.c0{left:-40px;top:-22px}
.pd-stage .fchip.c1{left:auto;right:-26px;top:38%}
.pd-stage .fchip.c2{left:-50px;bottom:40px}
/* try saying */
.asks{list-style:none;display:flex;flex-direction:column;gap:12px}
.asks li{display:flex;align-items:center;gap:16px;padding:20px 24px;border:1px solid var(--line);border-radius:18px;background:#fff;font-size:1.15rem;font-weight:500;
  opacity:0;transform:translateX(40px);transition:opacity .7s var(--ease) calc(var(--i) * .12s),transform .7s var(--ease) calc(var(--i) * .12s),box-shadow .4s,border-color .4s}
.asks.in li{opacity:1;transform:none}
.asks li .mic{flex:none;width:38px;height:38px;border-radius:50%;background:#f3eeef;position:relative;transition:.4s}
.asks li .mic{display:grid;place-items:center;color:var(--ink-2)}.asks li .mic svg{width:18px;height:18px}
.asks li.on{border-color:transparent;box-shadow:0 24px 44px -26px rgba(227,18,47,.55);transform:translateX(-10px)}
.asks li.on .mic{background:var(--grad);animation:ping 1.6s infinite}
.asks li.on .mic{color:#fff}
@media (max-width:900px){
  .pd-hero{min-height:0;padding:110px 0 60px}
  .hfade{background:linear-gradient(180deg,rgba(255,255,255,.92) 0%,rgba(255,255,255,.85) 55%,#fff 100%)}
  .pd-hero-in{grid-template-columns:1fr;gap:40px}
  .pd-stage .fchip{display:none}
  .asks li{font-size:1rem;padding:16px 18px}
}
@media (prefers-reduced-motion:reduce){.h1in>span,.sub,.hbtn,.hcaps,.eb,.pd-back,.pd-stage{animation:none;opacity:1;transform:none;filter:none}.asks li{opacity:1;transform:none}}
/* hub hero */
.hstats{display:flex;gap:34px;flex-wrap:wrap;opacity:0;animation:in 1s .75s var(--ease) forwards}
.hstats b{display:block;font-size:2.2rem;letter-spacing:-.03em;line-height:1;font-weight:600}
.hstats small{color:var(--muted);font-size:.82rem}
.hstack{height:520px}
.hs-card{position:absolute;left:0;right:0;top:0;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 40px 80px -36px rgba(20,16,18,.5);
  transform:translateY(calc(var(--k,3) * 22px)) scale(calc(1 - var(--k,3) * .05));opacity:0;transition:transform .9s var(--ease),opacity .9s var(--ease);z-index:calc(10 - var(--k,3))}
.hs-card[data-k="0"]{--k:0;opacity:1}.hs-card[data-k="1"]{--k:1;opacity:.85}.hs-card[data-k="2"]{--k:2;opacity:.5}
.hs-card.out{transform:translateY(-40px) scale(1.03);opacity:0}
.hs-img{position:relative;aspect-ratio:16/9;overflow:hidden}
.hs-img video,.hs-img img{width:100%;height:100%;object-fit:cover}
.hs-body{padding:20px 22px 22px}.hs-body b{font-size:1.2rem}
.hs-q{margin:12px 0 10px;background:var(--ink);color:#fff;border-radius:14px 14px 4px 14px;padding:10px 14px;width:fit-content;max-width:90%;margin-left:auto;font-size:.92rem}
.hs-a{display:flex;align-items:center;gap:8px;font-size:.86rem;font-weight:600}
.hs-a .ok{width:16px;height:16px;border-radius:50%;background:var(--grad);position:relative}
.hs-a .ok::after{content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.hs-dots{position:absolute;left:0;bottom:0;display:flex;gap:6px}
.hs-dots i{width:22px;height:3px;border-radius:2px;background:var(--line);transition:.4s}.hs-dots i.on{background:var(--grad);width:40px}
.filt-bar{position:sticky;top:72px;z-index:20;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding:14px 0}
.filt-bar .filt{margin:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.filt-bar .chip{flex:none}
@media (max-width:900px){.hstack{height:420px}.hstats{gap:22px}.hstats b{font-size:1.7rem}.filt-bar{top:64px}}

/* design review fixes */
.phero h1 .h1b{display:block;background:linear-gradient(100deg,#ff8a6e,#ff3d4f 45%,#e0193f);-webkit-background-clip:text;background-clip:text;color:transparent}
.phero h1 .sr-only{display:none}
.pd-hero.hub .pd-hero-in{grid-template-columns:minmax(0,820px)}
.pfill{display:flex;flex-direction:column;justify-content:center;gap:12px;min-height:220px;padding:30px;border-radius:18px;border:1.5px dashed #e3d6d9;background:linear-gradient(135deg,#fff,#fdf1f2);color:var(--ink,#141012);text-decoration:none;transition:border-color .2s}
.pfill:hover{border-color:#d40f3c}.pfill h3{font-size:1.35rem;font-weight:600;letter-spacing:-.02em;max-width:22ch}
@media(max-width:640px){
  .chip,.lg-tab{min-height:40px}
  .link,.btn,.mg-col a,.foot a,footer a{min-height:44px;display:inline-flex;align-items:center}
  .pfill{min-height:0}
}
