/* ============================================================
   DyeHouse Cloud — marketing site  ·  blue→violet gradient + amber accent
   Space Grotesk / Inter / Space Mono
   ============================================================ */
:root{
  --ink:#0f172a;          /* slate navy */
  --brand:#2563eb;        /* blue */
  --brand-deep:#1e40af;
  --violet:#7c3aed;       /* gradient partner */
  --grad:linear-gradient(135deg,#2563eb,#7c3aed);
  --grad-soft:linear-gradient(135deg,#3b82f6,#8b5cf6);
  --accent:#f59e0b;       /* warm amber (contrast) */
  --accent-deep:#d97706;
  --bg:#F6F7FB;
  --surface:#ffffff;
  --muted:#5b6675;
  --border:#E6E9F2;
  --ok:#2563eb;
  --shadow:0 10px 30px rgba(15,23,42,.08);
  --shadow-lg:0 24px 60px rgba(15,23,42,.16);
  --r:16px;
  --display:'Space Grotesk','Segoe UI',system-ui,sans-serif;
  --body:'Inter','Segoe UI',system-ui,sans-serif;
  --mono:'Space Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px}
/* anchored sections clear the sticky nav when jumped/scrolled to */
section[id]{scroll-margin-top:90px}
/* active nav link (scroll-spy) */
.nav-links a.current{color:var(--brand)}
.nav-links a.current::after{content:'';display:block;height:2px;border-radius:2px;background:var(--grad);margin-top:3px}
body{margin:0;font-family:var(--body);color:var(--ink);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}
h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.02em;line-height:1.08;margin:0}
.container{max-width:1160px;margin:0 auto;padding:0 24px}
.eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.muted{color:var(--muted)}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:12px;font-weight:600;font-family:var(--body);
  cursor:pointer;border:1px solid transparent;font-size:.95rem;transition:transform .12s ease,box-shadow .2s ease,filter .15s}
.btn-primary{background:var(--grad);color:#fff;box-shadow:0 8px 22px rgba(79,70,229,.32)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(79,70,229,.42);filter:saturate(1.1)}
.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--border)}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn-accent{background:var(--accent);color:#3a2500;box-shadow:0 8px 22px rgba(245,158,11,.35)}
.btn-accent:hover{background:var(--accent-deep);color:#fff;transform:translateY(-1px)}
.btn-lg{padding:15px 30px;font-size:1.02rem;border-radius:14px}

/* nav */
.nav{position:sticky;top:0;background:rgba(246,247,251,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:30}
.nav .container{display:flex;align-items:center;justify-content:space-between;height:70px}
.logo{font-family:var(--display);font-weight:700;font-size:1.3rem;color:var(--ink);letter-spacing:-.02em}
.logo span{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.nav-links{display:flex;gap:28px;align-items:center}
.nav-links a{color:var(--ink);font-weight:500;font-size:.95rem}
.nav-links a:hover{color:var(--brand)}
.nav-links a.btn-primary{color:#fff}

/* hero */
.hero{position:relative;overflow:hidden;padding:78px 0 88px;background-color:var(--bg);
  background-image:
    linear-gradient(100deg,var(--bg) 0%,var(--bg) 26%,rgba(246,247,251,.92) 40%,rgba(246,247,251,.45) 66%,rgba(246,247,251,.12) 100%),
    radial-gradient(600px 340px at 90% -8%,rgba(124,58,237,.20),transparent 62%),
    url('../img/hero.jpg');
  background-size:cover,cover,cover;
  background-position:center,center,center right;
  background-repeat:no-repeat}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(2.4rem,4.6vw,3.7rem);margin:18px 0 20px}
.hero h1 .dye{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-copy p.sub{font-size:1.14rem;color:var(--muted);max-width:540px;margin:0 0 30px}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap}
.trust{margin-top:28px;display:flex;gap:26px;flex-wrap:wrap;color:var(--muted);font-size:.86rem;align-items:center}
.trust b{color:var(--ink);font-family:var(--display)}
.trust .dot{width:5px;height:5px;border-radius:50%;background:var(--violet);display:inline-block}

/* ---- SIGNATURE: shade-approval card ---- */
.shade-card{background:var(--surface);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow-lg);
  padding:24px;max-width:420px;margin-left:auto;position:relative}
.shade-card .sc-top{display:flex;justify-content:space-between;align-items:center;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);font-weight:700}
.shade-card .live{display:inline-flex;align-items:center;gap:6px;color:var(--brand)}
.shade-card .live::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 0 rgba(37,99,235,.5);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(37,99,235,.45)}70%{box-shadow:0 0 0 8px rgba(37,99,235,0)}100%{box-shadow:0 0 0 0 rgba(37,99,235,0)}}
.sc-swatches{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;margin:20px 0}
.sc-swatch{border-radius:14px;height:118px;position:relative;border:1px solid rgba(0,0,0,.05);overflow:hidden}
.sc-swatch span{position:absolute;left:10px;bottom:8px;font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.sc-arrow{color:var(--muted);font-size:1.3rem}
.sc-lab{font-family:var(--mono);font-size:.76rem;color:var(--muted);display:flex;justify-content:space-between;padding:2px 2px 14px}
.sc-lab b{color:var(--ink)}
.sc-verdict{display:flex;align-items:center;justify-content:space-between;background:#EEF2FE;border:1px solid #d6def9;
  border-radius:14px;padding:14px 16px}
.sc-de{font-family:var(--mono);font-size:1.05rem;color:var(--ink)}
.sc-de b{font-size:1.7rem;color:var(--brand)}
.sc-stamp{font-family:var(--display);font-weight:700;letter-spacing:.14em;color:#fff;background:var(--grad);
  padding:7px 16px;border-radius:10px;font-size:.9rem;transform:rotate(-3deg)}

/* section scaffolding */
.section{padding:84px 0}
.section.soft{background:linear-gradient(180deg,#fff,var(--bg))}
.section-head{text-align:center;max-width:640px;margin:0 auto 48px}
.section-head h2{font-size:clamp(1.8rem,3vw,2.4rem);margin:12px 0 10px}
.section-head p{color:var(--muted);font-size:1.05rem;margin:0}
.lead{text-align:center;color:var(--muted);max-width:640px;margin:0 auto 44px;font-size:1.05rem}

/* feature cards */
.grid{display:grid;gap:20px}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:24px;transition:transform .16s ease,box-shadow .2s ease,border-color .2s}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#d4ddfb}
.card .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:1.35rem;background:#EEF1FB;margin-bottom:14px}
.card h3{font-size:1.08rem;margin:0 0 6px;font-family:var(--display);font-weight:600;letter-spacing:-.01em}
.card p{margin:0;color:var(--muted);font-size:.92rem}
.feature-flag{display:inline-block;background:#EEF1FB;color:var(--violet);font-weight:700;font-size:.72rem;padding:4px 12px;border-radius:20px;margin-bottom:14px}

/* feature cards — folded corner + watermark number + hover-fill (ref: ui/cardf.png) */
#features .grid-4{gap:22px}
#features .card{position:relative;overflow:hidden;background:#EDF0F5;border:0;border-radius:10px;padding:30px 26px 36px;
  transition:background .25s ease,transform .2s ease,box-shadow .25s ease}
#features .card::before{content:'';position:absolute;top:0;right:0;width:0;height:0;
  border-top:30px solid var(--bg);border-left:30px solid transparent;z-index:3;transition:border-top-color .25s}
#features .card .cnum{position:absolute;right:14px;bottom:-12px;font-family:var(--display);font-weight:700;
  font-size:5.4rem;line-height:1;color:rgba(15,23,42,.06);z-index:0;pointer-events:none}
#features .card .ic{position:relative;z-index:1;width:auto;height:auto;background:none;border-radius:0;display:block;
  color:var(--brand);margin-bottom:18px}
#features .card .ic svg{width:42px;height:42px}
#features .card h3{position:relative;z-index:1;color:var(--ink);font-size:1.16rem;line-height:1.25;margin:0 0 10px}
#features .card p{position:relative;z-index:1;color:var(--muted);font-size:.92rem;margin:0}
#features .card:hover{background:var(--grad);transform:translateY(-5px);box-shadow:0 22px 44px rgba(79,70,229,.32)}
#features .card:hover .ic{color:#fff}
#features .card:hover h3{color:#fff}
#features .card:hover p{color:rgba(255,255,255,.90)}
#features .card:hover .cnum{color:rgba(255,255,255,.18)}
#features .card:hover::before{border-top-color:#fff}

/* colour-AI split + images */
.split{display:grid;grid-template-columns:1.02fr .98fr;gap:52px;align-items:center}
.split h2{text-align:left;font-size:clamp(1.7rem,2.6vw,2.2rem);margin-bottom:14px}
.split .swatches{display:flex;gap:12px;margin-top:16px;align-items:center}
.swatch{width:60px;height:60px;border-radius:12px;border:1px solid var(--border)}
.check{color:var(--brand);font-weight:800;margin-right:6px}
.media{position:relative;border-radius:22px;overflow:hidden;box-shadow:var(--shadow-lg);aspect-ratio:5/4;background:#fff}
.media img{width:100%;height:100%;object-fit:cover;display:block}
.media::after{content:'';position:absolute;inset:0;background:linear-gradient(150deg,rgba(37,99,235,.12),rgba(124,58,237,.28))}
.media-badge{position:absolute;left:18px;bottom:18px;z-index:1;background:rgba(255,255,255,.94);backdrop-filter:blur(4px);
  border-radius:14px;padding:12px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}
.media-badge .sw{display:flex;gap:6px}.media-badge .sw i{width:22px;height:22px;border-radius:6px;display:block}
.media-badge b{font-family:var(--mono);color:var(--ink)}
.media-badge small{display:block;color:var(--violet);font-weight:700;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase}

/* gallery band */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.gallery figure{margin:0;position:relative;border-radius:20px;overflow:hidden;aspect-ratio:4/4.6;box-shadow:var(--shadow-lg)}
.gallery img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.gallery figure:hover img{transform:scale(1.06)}
.gallery figure::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 42%,rgba(15,23,42,.68))}
.gallery figcaption{position:absolute;left:20px;bottom:18px;z-index:1;color:#fff;font-family:var(--display);font-weight:600;font-size:1.22rem;letter-spacing:.01em}
.gallery figure{cursor:zoom-in}
.gallery figure::before{content:'⤢';position:absolute;top:12px;right:14px;z-index:2;color:#fff;font-size:1.1rem;
  opacity:0;transition:opacity .2s;text-shadow:0 1px 4px rgba(0,0,0,.5)}
.gallery figure:hover::before,.gallery figure:focus-visible::before{opacity:.9}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.9);backdrop-filter:blur(4px);
  display:none;align-items:center;justify-content:center;padding:30px;cursor:zoom-out}
.lightbox.open{display:flex;animation:lbfade .2s ease}
@keyframes lbfade{from{opacity:0}to{opacity:1}}
.lightbox img{max-width:94vw;max-height:90vh;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.55);cursor:default;background:#fff}
.lightbox .lb-close{position:absolute;top:18px;right:26px;color:#fff;font-size:2.2rem;line-height:1;background:none;border:0;cursor:pointer;opacity:.85}
.lightbox .lb-close:hover{opacity:1}
.lightbox .lb-cap{position:absolute;bottom:22px;left:0;right:0;text-align:center;color:#dfe4ee;font-size:.9rem;letter-spacing:.04em}

/* pipeline */
.pipeline{display:grid;grid-template-columns:repeat(5,1fr);gap:16px;counter-reset:step}
.step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:22px 18px;position:relative}
.step .step-n{font-family:var(--mono);font-weight:700;color:var(--violet);font-size:.8rem}
.step h4{font-family:var(--display);margin:8px 0 4px;font-size:1rem;font-weight:600}
.step p{margin:0;color:var(--muted);font-size:.85rem}
.step:not(:last-child)::after{content:'→';position:absolute;right:-13px;top:50%;transform:translateY(-50%);color:#c3ccdf;z-index:1}

/* pricing */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.plan{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:32px;display:flex;flex-direction:column;transition:transform .16s,box-shadow .2s}
.plan:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.plan.pop{border:2px solid transparent;background:linear-gradient(#fff,#fff) padding-box,var(--grad) border-box;box-shadow:var(--shadow-lg);position:relative}
.plan.pop .tag{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--accent);color:#3a2500;padding:5px 16px;border-radius:20px;font-size:.74rem;font-weight:700;letter-spacing:.04em}
.plan h3{margin:0 0 4px;font-size:1.35rem}
.price{font-family:var(--display);font-size:2.6rem;font-weight:700;margin:12px 0;letter-spacing:-.03em}
.price small{font-size:.9rem;color:var(--muted);font-weight:500;font-family:var(--body)}
.plan ul{list-style:none;padding:0;margin:20px 0;flex:1}
.plan li{padding:9px 0;border-bottom:1px solid var(--border);color:#33415a;font-size:.93rem}
.plan li:last-child{border-bottom:0}
.plan li:before{content:"✓";color:var(--brand);font-weight:800;margin-right:10px}

/* forms */
.formcard{max-width:560px;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:36px;box-shadow:var(--shadow)}
.field{margin-bottom:16px}
.field label{display:block;font-weight:600;margin-bottom:6px;font-size:.9rem}
.field input,.field select,.field textarea{width:100%;padding:13px 14px;border:1px solid var(--border);border-radius:12px;font-size:1rem;font-family:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.16)}
.alert{padding:14px 16px;border-radius:12px;margin-bottom:18px;font-weight:500}
.alert-error{background:#fdecea;color:#b3261e}.alert-success{background:#e6f6ef;color:#0a6b46}.alert-info{background:#eef1fb;color:#3730a3}
.keybox{font-family:var(--mono);font-size:1.15rem;background:var(--ink);color:#c4b5fd;padding:16px;border-radius:12px;text-align:center;letter-spacing:2px;word-break:break-all}

/* CTA band */
.cta-band{background:linear-gradient(120deg,var(--ink) 0%,#1e3a8a 45%,var(--violet) 100%);color:#fff;border-radius:26px;padding:56px 44px;text-align:center;position:relative;overflow:hidden}
.cta-band::after{content:'';position:absolute;inset:0;background:radial-gradient(420px 220px at 88% 5%,rgba(245,158,11,.35),transparent 60%)}
.cta-band h2{color:#fff;font-size:clamp(1.8rem,3vw,2.4rem);position:relative}
.cta-band p{color:rgba(255,255,255,.84);max-width:520px;margin:12px auto 26px;position:relative}
.cta-band .btn{position:relative}

/* footer */
.foot{background:var(--ink);color:#aab2c6;padding:56px 0 34px}
.foot .container{display:flex;justify-content:space-between;flex-wrap:wrap;gap:28px}
.foot .logo{color:#fff}
.foot a{color:#aab2c6}.foot a:hover{color:#fff}
.foot .muted{color:#6b7488;font-size:.85rem}

/* motion / responsive */
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto}}
@media(max-width:900px){
  .hero{background-image:linear-gradient(180deg,var(--bg) 0%,rgba(246,247,251,.90) 50%,rgba(246,247,251,.55) 100%),url('../img/hero.jpg');background-size:cover,cover;background-position:center,center}
  .hero-grid,.split{grid-template-columns:1fr;gap:36px}
  .grid-4{grid-template-columns:repeat(2,1fr)}.grid-3,.gallery{grid-template-columns:1fr}
  .gallery figure{aspect-ratio:16/10}
  .plans{grid-template-columns:1fr}.pipeline{grid-template-columns:1fr;gap:12px}
  .deploy{grid-template-columns:1fr!important}
  .step:not(:last-child)::after{content:'↓';right:auto;left:50%;top:auto;bottom:-13px;transform:translateX(-50%)}
  .shade-card{margin:0 auto}
  .nav-links a:not(.btn){display:none}
}
@media(max-width:560px){.grid-4{grid-template-columns:1fr}}

/* ── Entrance / scroll reveal ──────────────────────────────────
   JS adds .js to <html> and .is-in when an element scrolls into view.
   Gated to (no-preference) so reduced-motion and no-JS users always
   see fully-rendered content (nothing starts hidden for them). */
@media (prefers-reduced-motion: no-preference){
  html.js :is(.hero-copy > *, .shade-card, .section-head, .card, .step,
              .plan, .gallery > *, .split, .cta-band){
    opacity:0; transform:translateY(28px);
    transition:opacity .7s cubic-bezier(.22,.61,.36,1),
               transform .7s cubic-bezier(.22,.61,.36,1);
  }
  html.js .is-in{ opacity:1 !important; transform:none !important; }
  /* the achieved swatch eases its colour when the match plays */
  html.js .shade-card .sc-swatch:nth-of-type(2){ transition:background .1s linear; }
}

/* pricing: two-button CTA (trial + buy), full-width stacked, pinned to card bottom */
.plan-cta{margin-top:auto;display:flex;flex-direction:column;gap:9px;padding-top:18px}
.plan-cta .btn{width:100%;text-align:center;margin-top:0}

/* ── Inner marketing pages (about / contact / privacy / faq / support / blog) ── */
.page-hero{padding:60px 0 26px;text-align:center;background:linear-gradient(180deg,#fff,var(--bg))}
.page-hero h1{font-size:clamp(2rem,3.6vw,2.8rem);margin:10px 0 12px}
.page-hero p{color:var(--muted);max-width:620px;margin:0 auto;font-size:1.08rem}
.prose{max-width:760px;margin:0 auto}
.prose h2{font-size:1.35rem;margin:34px 0 10px}
.prose h3{font-size:1.08rem;margin:22px 0 6px}
.prose p,.prose li{font-size:1rem;line-height:1.75;color:#44506a}
.prose ul{padding-left:22px;margin:8px 0}
.prose a{color:var(--brand);text-decoration:underline}
.prose .upd{color:var(--muted);font-size:.85rem;margin-bottom:18px}
.stat-row{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin:36px 0}
.stat-row .s{text-align:center}
.stat-row .s b{display:block;font-family:var(--display);font-size:2rem;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat-row .s span{color:var(--muted);font-size:.86rem}
/* faq */
.faq{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.faq details{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:2px 18px;transition:box-shadow .2s}
.faq details[open]{box-shadow:var(--shadow)}
.faq summary{list-style:none;cursor:pointer;font-weight:600;padding:16px 0;display:flex;justify-content:space-between;align-items:center;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';font-size:1.5rem;color:var(--brand);font-weight:400;line-height:1;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .a{padding:0 0 18px;color:var(--muted);line-height:1.7}
/* contact */
.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;max-width:980px;margin:0 auto;align-items:start}
.contact-info{display:flex;flex-direction:column;gap:18px}
.ci-item{display:flex;gap:14px;align-items:flex-start}
.ci-item .ic{width:42px;height:42px;border-radius:12px;background:#EEF1FB;display:grid;place-items:center;flex:0 0 auto;color:var(--brand);font-size:1.1rem}
.ci-item b{display:block;font-family:var(--display)}
.ci-item span,.ci-item a{color:var(--muted);font-size:.92rem}
/* support cards */
.help-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-bottom:40px}
/* blog */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.post-card{display:flex;flex-direction:column;text-decoration:none;color:inherit}
.post-card .ph{height:158px;border-radius:16px;margin-bottom:14px;position:relative;overflow:hidden;display:grid;place-items:center;color:#fff;font-size:2.2rem}
.post-card .tag{position:absolute;left:12px;top:12px;background:rgba(255,255,255,.92);color:var(--brand);font-size:.7rem;font-weight:700;padding:4px 10px;border-radius:20px}
.post-card h3{font-size:1.06rem;margin:0 0 6px}
.post-card .meta{color:var(--muted);font-size:.8rem;margin-bottom:8px}
.post-card p{color:var(--muted);font-size:.9rem;margin:0}
.post-card:hover h3{color:var(--brand)}
.foot-cols{display:grid!important;grid-template-columns:1.4fr repeat(4,1fr);gap:26px}
@media(max-width:820px){.contact-grid,.blog-grid,.help-grid{grid-template-columns:1fr}.foot-cols{grid-template-columns:1fr 1fr}}

/* footer locations strip (local SEO internal links) */
.foot-locations{margin-top:28px;padding-top:20px;border-top:1px solid rgba(255,255,255,.09);font-size:.82rem;color:#6b7488;line-height:2}
.foot-locations a{color:#8b93a7}
.foot-locations a:hover{color:#fff}

/* review stars + testimonial cards */
.stars{color:#f59e0b;letter-spacing:2px;font-size:1.15rem}
.section-head .stars{font-size:1.5rem}
.review-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:22px;margin:0;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}
.review-card blockquote{margin:0;font-size:.98rem;line-height:1.6;color:#33405a}
.review-card figcaption{margin-top:auto;font-size:.86rem}
.review-card figcaption b{display:block;color:var(--ink)}
.review-card figcaption span{color:var(--muted);font-size:.82rem}
