/* =====================================================================
   OnlinePrintOut — app.css (v3: premium visual pass)
   Design language: confident, warm-paper editorial print aesthetic.
   Signature: registration/crop-mark motif, CMYK accent system, generous
   whitespace, real typographic hierarchy — not a generic SaaS template.
   ===================================================================== */

/* Google Fonts now loaded via <link> tags in <head> (see header.php),
   not @import here — @import blocks the browser from discovering and
   fetching the font stylesheet until AFTER this entire CSS file is
   parsed, adding a serial round-trip to First Contentful Paint. A <link>
   tag lets the browser discover and fetch it in parallel instead. */

:root{
  --ink:#14213D; --ink-soft:#4A5573; --ink-faint:#7C8499;
  --paper:#FBFAF6; --card:#FFFFFF; --paper-alt:#F3F0E8;
  --reg:#E5484D; --reg-dark:#C93B40; --reg-tint:#FDECEC;
  --cyan:#0EA5B7; --cyan-dark:#0B8494; --cyan-tint:#E6F7F9;
  --gold:#D6A94A; --gold-tint:#FBF3E1;
  --line:#E7E2D6; --line-soft:#F0ECE1;
  --ok:#1B8A5A; --ok-tint:#E8F6EF;
  --shadow-sm:0 1px 2px rgba(20,33,61,.05);
  --shadow:0 2px 4px rgba(20,33,61,.05),0 12px 28px rgba(20,33,61,.08);
  --shadow-lg:0 8px 16px rgba(20,33,61,.06),0 24px 56px rgba(20,33,61,.12);
  --r:16px; --r-sm:11px; --r-lg:22px; --maxw:1160px;
  --disp:'Bricolage Grotesque',system-ui,sans-serif;
  --body:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}

/* CRITICAL: without this, any element that also has an unconditional CSS
   `display` rule (like .sheet{display:grid}) will silently override the
   browser's native [hidden]{display:none}, because author-origin styles
   always beat user-agent-origin styles regardless of selector specificity.
   This is what caused the success popup (and the calculator/error strips)
   to be impossible to close via JS `el.hidden = true` — the JS was working,
   this rule was missing and let CSS silently win the fight every time. */
[hidden]{display:none!important}
body{font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.6;
  -webkit-font-smoothing:antialiased;font-size:15.5px}
h1,h2,h3{font-family:var(--disp);line-height:1.06;letter-spacing:-.025em;font-weight:800;color:var(--ink)}
a{color:inherit}
img,svg{max-width:100%;display:block}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:12px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:8px;z-index:99}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}

/* subtle paper texture via layered radial dots — no external image */
body{background-image:radial-gradient(circle at 1px 1px, rgba(20,33,61,.035) 1px, transparent 0);
  background-size:22px 22px}

/* registration mark motif */
.quote-card::before, .sheet-card::before, .track-card::before{
  content:"";position:absolute;width:24px;height:24px;top:-3px;right:-3px;
  background:
    linear-gradient(var(--reg),var(--reg)) 0 50%/100% 2px no-repeat,
    linear-gradient(var(--reg),var(--reg)) 50% 0/2px 100% no-repeat;
  border-radius:50%;box-shadow:0 0 0 2px var(--reg) inset;opacity:.9}
.reg-dot{display:inline-block;width:9px;height:9px;border-radius:50%;border:1.5px solid currentColor;
  position:relative;margin-right:2px}
.reg-dot::after{content:"";position:absolute;inset:2.5px;border-radius:50%;background:currentColor}

/* ---------- topbar ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;
  max-width:var(--maxw);margin:0 auto;padding:18px 20px}
.brand{font-family:var(--disp);font-weight:800;font-size:19px;text-decoration:none;
  display:flex;align-items:center;gap:10px;letter-spacing:-.01em}
.brand-svg{flex:none;border-radius:9px}
.topnav{display:flex;align-items:center;gap:20px}
.topnav a{text-decoration:none;font-weight:600;font-size:13.5px;color:var(--ink-soft)}
.topnav a:hover{color:var(--ink)}
.topbar-cta{color:var(--reg)!important;border:1.5px solid var(--reg);padding:9px 18px;
  border-radius:999px;transition:.15s}
.topbar-cta:hover{background:var(--reg);color:#fff!important}

/* ===================================================================
   Mobile nav: hamburger + slide-down panel. Previously 3 nav links were
   crammed inline at every width, wrapping mid-word on narrow phones and
   ballooning the header to 115px+ tall. Hidden by default; only shown
   below the mobile breakpoint.
   =================================================================== */
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;
  width:40px;height:40px;border:1.5px solid var(--line);border-radius:10px;
  background:#fff;cursor:pointer;padding:0;flex:none;position:relative;z-index:60}
.nav-toggle span{display:block;width:18px;height:2px;background:var(--ink);margin:0 auto;
  transition:transform .2s ease,opacity .2s ease}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-scrim{position:fixed;inset:0;background:rgba(20,33,61,.35);z-index:40}

@media(max-width:680px){
  .nav-toggle{display:flex}
  .topnav{position:fixed;top:0;right:0;height:100vh;width:min(78vw,320px);
    background:#fff;flex-direction:column;align-items:stretch;gap:0;
    padding:88px 24px 24px;box-shadow:-12px 0 32px rgba(20,33,61,.15);
    transform:translateX(100%);transition:transform .25s ease;z-index:50;
    overflow-y:auto}
  .topnav.is-open{transform:translateX(0)}
  .topnav a{padding:14px 4px;border-bottom:1px solid var(--line);font-size:16px}
  .topbar-cta{border:1.5px solid var(--reg)!important;text-align:center;margin-top:14px;
    border-radius:var(--r-sm)}
}

/* ---------- hero ---------- */
.hero{max-width:var(--maxw);margin:0 auto;padding:28px 20px 12px;display:grid;gap:32px}
.eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:11.5px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--cyan-dark);background:var(--cyan-tint);
  padding:6px 13px;border-radius:999px}
.hero h1{font-size:clamp(32px,7.5vw,58px);margin:16px 0 16px}
.lede{font-size:clamp(15.5px,2.4vw,18px);color:var(--ink-soft);max-width:46ch;line-height:1.6}
.trust-row{list-style:none;display:flex;flex-wrap:wrap;gap:9px 20px;margin-top:20px;
  font-size:13px;font-weight:600;color:var(--ink-soft)}
.trust-row li{display:flex;align-items:center;gap:6px}

.hero-points{display:flex;gap:0;margin-top:28px;border-top:1px solid var(--line);padding-top:20px}
.hp-item{flex:1;padding-right:16px}
.hp-item strong{display:block;font-family:var(--disp);font-weight:800;font-size:24px;color:var(--ink)}
.hp-item span{font-size:12px;color:var(--ink-faint);font-weight:500}

/* ---------- quote card ---------- */
.quote-card{position:relative;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow-lg);padding:24px}
.quote-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.quote-head h2{font-size:22px}
.pill{font-size:11px;font-weight:700;background:var(--gold-tint);color:#92700F;
  padding:6px 12px;border-radius:999px;letter-spacing:.02em}
.fld{display:block;margin-bottom:13px}
.fld>span{display:block;font-size:12.5px;font-weight:700;margin-bottom:6px;color:var(--ink);letter-spacing:.01em}
.fld em{color:var(--ink-faint);font-style:normal;font-weight:500}
.fld input,.fld select,.fld textarea{width:100%;font:inherit;font-size:16px;
  padding:12.5px 14px;border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);
  color:var(--ink);transition:border-color .15s,box-shadow .15s,background .15s}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--cyan);
  background:#fff;box-shadow:0 0 0 4px var(--cyan-tint)}
.fld-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}
textarea{resize:vertical;min-height:46px}

.chip-group{border:0;margin:8px 0 14px}
.chip-group legend{font-size:12.5px;font-weight:700;margin-bottom:9px}
.chip{display:inline-flex;align-items:center;margin:0 8px 8px 0}
.chip input{position:absolute;opacity:0}
.chip span{border:1.5px solid var(--line);border-radius:999px;padding:9px 15px;font-size:13px;
  font-weight:600;cursor:pointer;background:var(--paper);transition:.15s}
.chip input:checked+span{border-color:var(--ink);background:var(--ink);color:#fff}
.chip input:focus-visible+span{box-shadow:0 0 0 4px var(--cyan-tint)}

.check{display:flex;align-items:center;gap:10px;font-size:13.5px;font-weight:600;margin:4px 0 16px}
.check input{width:19px;height:19px;accent-color:var(--reg)}

.est-strip{display:flex;align-items:center;gap:10px;background:var(--gold-tint);border:1px solid #EFDCA6;
  border-radius:var(--r-sm);padding:12px 14px;margin:4px 0 14px}
.est-label{font-size:11.5px;font-weight:700;color:#92700F;text-transform:uppercase;letter-spacing:.05em}
.est-val{font-family:var(--disp);font-weight:800;font-size:18px;margin-left:auto}
.est-toggle{background:none;border:0;color:var(--cyan-dark);font-weight:700;font-size:12.5px;cursor:pointer}
.est-detail{font-size:13px;color:var(--ink-soft);background:var(--paper-alt);border-radius:var(--r-sm);
  padding:11px 14px;margin:-4px 0 14px}

.submit{width:100%;font:inherit;font-weight:800;font-size:16px;font-family:var(--disp);
  letter-spacing:-.005em;color:#fff;background:var(--reg);border:0;border-radius:var(--r-sm);
  padding:16px;cursor:pointer;transition:background .15s,transform .05s,box-shadow .15s;
  box-shadow:0 4px 14px rgba(229,72,77,.28)}
.submit:hover{background:var(--reg-dark);box-shadow:0 6px 20px rgba(229,72,77,.36)}
.submit:active{transform:translateY(1px)}
.submit:disabled{opacity:.6;cursor:progress;box-shadow:none}
.fineprint{font-size:11.5px;color:var(--ink-faint);margin-top:11px;line-height:1.45}
.form-error{color:var(--reg-dark);font-size:13.5px;font-weight:600;margin-top:11px}
.form-ok{color:var(--ok);font-size:13.5px;font-weight:700;margin-top:11px}
.btn-inline{display:inline-block;width:auto;padding:15px 28px;text-decoration:none;text-align:center}

/* ---------- how it works ---------- */
.how{max-width:var(--maxw);margin:52px auto 0;padding:0 20px}
.how h2{font-size:clamp(24px,4.5vw,32px);margin-bottom:20px}
.steps{list-style:none;display:grid;gap:14px;counter-reset:s}
.steps li{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:22px 20px 22px 66px;box-shadow:var(--shadow)}
.steps li::before{counter-increment:s;content:counter(s);position:absolute;left:18px;top:20px;
  width:32px;height:32px;display:grid;place-items:center;background:var(--ink);color:#fff;
  border-radius:9px;font-family:var(--disp);font-weight:800;font-size:16px}
.steps strong{display:block;font-size:16.5px;margin-bottom:4px}
.steps span{font-size:13.5px;color:var(--ink-soft)}

/* ---------- comparison ---------- */
.compare{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.compare h2{font-size:clamp(24px,4.5vw,32px);margin-bottom:6px;text-align:center}
.compare-sub{text-align:center;color:var(--ink-soft);max-width:52ch;margin:0 auto 26px}
.compare-grid{display:grid;gap:14px}
.compare-col{border-radius:var(--r);padding:24px;border:1.5px solid var(--line)}
.compare-col.old{background:var(--paper-alt)}
.compare-col.new{background:var(--card);border-color:var(--reg);box-shadow:var(--shadow-lg);position:relative}
.compare-col.new::before{content:"Recommended";position:absolute;top:-11px;left:22px;background:var(--reg);
  color:#fff;font-size:11px;font-weight:800;padding:4px 12px;border-radius:999px;letter-spacing:.03em}
.compare-col h3{font-size:16.5px;margin-bottom:14px;display:flex;align-items:center;gap:9px}
.compare-list{list-style:none;display:grid;gap:11px}
.compare-list li{font-size:13.5px;color:var(--ink-soft);padding-left:26px;position:relative}
.compare-col.old .compare-list li::before{content:"✕";position:absolute;left:0;color:#B0473F;font-weight:800}
.compare-col.new .compare-list li::before{content:"✓";position:absolute;left:0;color:var(--ok);font-weight:800}
.compare-col.new .compare-list li{color:var(--ink)}

/* ---------- calculator ---------- */
.calc{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.calc-intro h2{font-size:clamp(24px,4.5vw,32px)}
.calc-intro p{color:var(--ink-soft);margin:8px 0 20px;max-width:54ch}
.calc-shell{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-lg);padding:24px}
.calc-mount{display:grid;gap:16px;grid-template-columns:1fr}

/* Desktop: without this, .calc-shell had no dedicated layout — individual
   fields (even a plain "Pages" number box) stretched to the full ~1160px
   container width, which is what made the calculator look oversized. */
@media(min-width:760px){
  .calc-shell{max-width:760px}
  .calc-mount{grid-template-columns:1fr 1fr}
  .calc-field:has(.calc-seg){grid-column:1 / -1} /* option chip groups span both columns */
  .calc-result,.calc-breakdown,.calc-disclaimer{grid-column:1 / -1}
}
.calc-field{display:grid;gap:7px}
.calc-field label{font-size:12.5px;font-weight:700}
.calc-field select,.calc-field input{font:inherit;font-size:16px;padding:12px 13px;
  border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper)}
.calc-field select:focus,.calc-field input:focus{outline:none;border-color:var(--cyan);
  background:#fff;box-shadow:0 0 0 4px var(--cyan-tint)}
.calc-seg{display:flex;flex-wrap:wrap;gap:8px}
.calc-seg button{font:inherit;font-size:13px;font-weight:600;padding:10px 15px;border-radius:999px;
  border:1.5px solid var(--line);background:var(--paper);cursor:pointer;transition:.15s}
.calc-seg button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}
.calc-result{margin-top:8px;background:var(--cyan-tint);border:1px solid #B8E6EC;border-radius:var(--r);
  padding:20px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.calc-result .big{font-family:var(--disp);font-weight:800;font-size:clamp(24px,5vw,32px);color:var(--ink)}
.calc-result .cap{font-size:12.5px;color:var(--ink-soft);flex-basis:100%;line-height:1.5}
.calc-cta{margin-left:auto;text-decoration:none;font-weight:800;font-family:var(--disp);
  background:var(--ink);color:#fff;padding:13px 20px;border-radius:var(--r-sm);font-size:14px;
  transition:.15s}
.calc-cta:hover{background:var(--reg)}

/* ---------- services grid ---------- */
.services-block{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.services-block h2{font-size:clamp(24px,5vw,34px);margin-bottom:8px}
.sec-sub{color:var(--ink-soft);margin:6px 0 4px;max-width:56ch}
.cat-h{font-family:var(--disp);font-size:14.5px;letter-spacing:.03em;color:var(--cyan-dark);
  text-transform:uppercase;margin:26px 0 13px;display:flex;align-items:center;gap:9px}
.cat-h::after{content:"";flex:1;height:1px;background:var(--line)}
.svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.svc-tile{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;
  text-decoration:none;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:16px 16px;font-weight:600;font-size:14px;color:var(--ink);box-shadow:var(--shadow-sm);transition:.15s}
.svc-tile:hover{border-color:var(--cyan);box-shadow:var(--shadow);transform:translateY(-2px)}
.tag-b2b{font-style:normal;font-size:10px;font-weight:800;color:#fff;background:var(--ink);
  padding:3px 8px;border-radius:6px;letter-spacing:.03em;flex:none}

/* ---------- why ---------- */
.why{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.why h2{font-size:clamp(24px,4.5vw,32px);margin-bottom:18px}
.why-grid{display:grid;gap:13px}
.why-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:22px}
.why-card .why-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;
  background:var(--cyan-tint);color:var(--cyan-dark);margin-bottom:12px;font-size:18px;font-weight:800}
.why-card h3{font-size:16.5px;margin-bottom:8px}
.why-card p{font-size:13.5px;color:var(--ink-soft)}

/* ---------- testimonials ---------- */
.testi{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.testi h2{font-size:clamp(24px,4.5vw,32px);margin-bottom:18px}
.testi-grid{display:grid;gap:13px}
.testi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:22px}
.testi-stars{color:var(--gold);font-size:14px;letter-spacing:2px;margin-bottom:10px}
.testi-quote{font-size:14px;color:var(--ink);line-height:1.6;margin-bottom:14px}
.testi-who{display:flex;align-items:center;gap:10px}
.testi-avatar{width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;
  display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:14px;flex:none}
.testi-name{font-size:13px;font-weight:700}
.testi-meta{font-size:11.5px;color:var(--ink-faint)}

/* ---------- cities ---------- */
.cities-block{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.cities-block h2{font-size:clamp(22px,4vw,28px);margin-bottom:16px}

/* ---------- local copy / links ---------- */
.localcopy{max-width:var(--maxw);margin:56px auto 0;padding:0 20px}
.localcopy h2{font-size:clamp(22px,4vw,28px)}
.localcopy h3{font-family:var(--disp);font-size:16.5px;margin:24px 0 11px}
.localcopy p{color:var(--ink-soft);max-width:70ch;margin-top:11px}
.chip-links{display:flex;flex-wrap:wrap;gap:8px}
.chip-links a{text-decoration:none;font-size:12.5px;font-weight:600;color:var(--ink);
  border:1px solid var(--line);background:var(--card);padding:9px 14px;border-radius:999px;transition:.15s}
.chip-links a:hover{border-color:var(--cyan);color:var(--cyan-dark)}

/* ---------- crumbs ---------- */
.crumbs{max-width:var(--maxw);margin:0 auto;padding:4px 20px 0;display:flex;gap:9px;
  align-items:center;font-size:12px;color:var(--ink-faint)}
.crumbs a{text-decoration:none;font-weight:600}
.crumbs a:hover{color:var(--cyan-dark)}
.crumbs strong{font-weight:700;color:var(--ink)}
.crumbs span{opacity:.5}

/* ---------- FAQ ---------- */
.faq{max-width:780px;margin:56px auto 0;padding:0 20px}
.faq h2{font-size:clamp(24px,4.5vw,32px);margin-bottom:16px}
.faq-list details{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);
  margin-bottom:10px;overflow:hidden}
.faq-list summary{cursor:pointer;list-style:none;padding:16px 46px 16px 18px;font-weight:700;
  font-size:14.5px;position:relative}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";position:absolute;right:18px;top:50%;transform:translateY(-50%);
  font-family:var(--disp);font-weight:800;font-size:20px;color:var(--cyan)}
.faq-list details[open] summary::after{content:"–"}
.faq-list details p{padding:0 18px 16px;font-size:13.5px;color:var(--ink-soft);line-height:1.6}
.faq-list details a{color:var(--cyan-dark);font-weight:600}

/* ---------- footer ---------- */
.bigfoot{margin-top:64px;border-top:1px solid var(--line);background:var(--paper-alt)}
.bigfoot-grid{max-width:var(--maxw);margin:0 auto;padding:40px 20px 14px;display:grid;gap:28px}
.bf-logo{font-family:var(--disp);font-weight:800;font-size:19px}
.bf-tag{font-size:13px;color:var(--ink-soft);margin-top:9px;max-width:34ch;line-height:1.55}
.bf-h{font-family:var(--disp);font-weight:800;font-size:12.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ink);margin-bottom:11px}
.bf-col a{display:block;text-decoration:none;font-size:13px;color:var(--ink-soft);
  padding:4px 0;font-weight:500}
.bf-col a:hover{color:var(--cyan-dark)}
.bf-base{max-width:var(--maxw);margin:0 auto;padding:18px 20px 34px;display:flex;flex-wrap:wrap;
  gap:10px;justify-content:space-between;border-top:1px solid var(--line);font-size:12px;color:var(--ink-faint)}
.bf-base a{color:var(--ink-faint);font-weight:600;text-decoration:none}

/* ---------- success sheet ---------- */
.sheet{position:fixed;inset:0;background:rgba(20,33,61,.5);display:grid;place-items:end center;
  z-index:80;padding:0;backdrop-filter:blur(3px)}
.sheet-card{position:relative;background:#fff;width:100%;max-width:var(--maxw);border-radius:22px 22px 0 0;
  padding:34px 24px 38px;text-align:center;animation:rise .3s cubic-bezier(.2,.8,.2,1)}
@keyframes rise{from{transform:translateY(100%)}to{transform:translateY(0)}}
.sheet-icon{width:56px;height:56px;margin:0 auto 14px;display:grid;place-items:center;background:var(--ok);
  color:#fff;border-radius:50%;font-size:28px}
.sheet-card h2{font-size:25px;margin-bottom:9px}
.sheet-card p{color:var(--ink-soft);max-width:44ch;margin:0 auto 7px;font-size:14px}
.sheet-sub{font-size:12.5px}
.sheet-card .submit{max-width:290px;margin:20px auto 0}

/* ---------- track page ---------- */
.track-wrap{max-width:660px}
.track-form{margin:20px 0 8px}
.track-card{position:relative;margin-top:24px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow-lg);padding:22px}
.track-ref{font-family:var(--disp);font-weight:800;font-size:21px;letter-spacing:.04em;margin-bottom:14px}
.track-rows{display:grid;gap:10px}
.track-rows>div{display:flex;justify-content:space-between;gap:12px;font-size:14px;
  border-bottom:1px dashed var(--line);padding-bottom:9px}
.track-rows span{color:var(--ink-faint)}
.track-status.st-ok{color:var(--ok)}
.track-status.st-wait{color:#B45309}
.track-status.st-end{color:var(--ink-faint)}
.track-note{margin-top:14px;font-size:13.5px;color:var(--ink-soft)}

/* ---------- error / prose ---------- */
.error-wrap{max-width:640px;margin:70px auto;padding:0 20px;text-align:center}
.error-wrap h1{font-size:clamp(28px,6vw,44px);margin:12px 0 15px}
.error-wrap .submit{margin:24px auto 0;text-decoration:none;text-align:center}
.prose{max-width:740px;margin:34px auto 64px;padding:0 20px}
.prose h1{font-size:clamp(27px,5vw,40px);margin-bottom:18px}
.prose h2{font-family:var(--disp);font-size:19.5px;margin:28px 0 9px}
.prose p{color:var(--ink-soft);margin-bottom:13px;line-height:1.65}

/* ---------- sticky mobile CTA ---------- */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--card);
  border-top:1px solid var(--line);padding:11px 16px;box-shadow:0 -8px 24px rgba(20,33,61,.1);
  display:flex;transform:translateY(0);transition:transform .25s ease,opacity .25s ease;opacity:1}
.sticky-cta.is-hidden{transform:translateY(110%);opacity:0;pointer-events:none}
.sticky-cta a{width:100%;text-align:center;text-decoration:none}

/* ---------- responsive ---------- */
@media(min-width:760px){
  .svc-grid{grid-template-columns:repeat(3,1fr)}
  .why-grid{grid-template-columns:1fr 1fr}
  .testi-grid{grid-template-columns:repeat(3,1fr)}
  .compare-grid{grid-template-columns:1fr 1fr}
  .bigfoot-grid{grid-template-columns:1.2fr 1fr 1fr 1fr}
}
@media(min-width:860px){
  .hero{grid-template-columns:1.1fr .9fr;align-items:start;padding-top:40px}
  .quote-card{position:sticky;top:20px}
  .steps{grid-template-columns:repeat(3,1fr)}
  .sheet{place-items:center}
  .sheet-card{border-radius:22px;max-width:480px}
  .sticky-cta{display:none}
}
@media(min-width:1024px){ .hero h1{font-size:58px} }

/* ---------- a11y ---------- */
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ===================================================================
   v6: brand logo, disclosure banner, social icons, B2B page
   =================================================================== */
.brand{display:flex;align-items:center}
.brand-logo{height:52px;width:auto;display:block}

.disclosure{background:var(--cyan-tint);border-top:1px solid #CDEFF4;border-bottom:1px solid #CDEFF4;
  width:100%;box-sizing:border-box}
.disclosure-inner{max-width:var(--maxw);margin:0 auto;padding:16px 20px;display:flex;gap:12px;
  align-items:flex-start;box-sizing:border-box;width:100%}
.disclosure-icon{flex:0 0 auto;font-size:17px;color:var(--cyan-dark);line-height:1.4}
.disclosure-inner p{font-size:13px;color:var(--ink-soft);line-height:1.6;margin:0;min-width:0;
  overflow-wrap:break-word;word-break:break-word}
.disclosure-inner strong{color:var(--ink)}

.bf-logo-img{height:58px;width:auto;margin-bottom:4px}
.bf-social{display:flex;gap:10px;margin-top:14px}
.bf-social a{width:34px;height:34px;border-radius:50%;background:var(--card);border:1px solid var(--line);
  display:grid;place-items:center;color:var(--ink-soft);transition:.15s}
.bf-social a:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.bf-base a{white-space:nowrap}
.bf-base p a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px}
.bf-base p a:hover{color:var(--cyan-dark)}

/* B2B page */
.b2b-hero{background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:36px 26px;margin-bottom:8px}
.b2b-hero .eyebrow{background:rgba(255,255,255,.12);color:#fff}
.b2b-hero h1{color:#fff}
.b2b-hero p{color:#C9D0E0}
.b2b-grid{display:grid;gap:13px;margin-top:24px}
.b2b-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow);padding:22px}
.b2b-card h3{font-size:16.5px;margin-bottom:8px}
.b2b-card p{font-size:13.5px;color:var(--ink-soft)}
.b2b-card .b2b-num{font-family:var(--disp);font-weight:800;font-size:26px;color:var(--reg);margin-bottom:8px;display:block}

@media(min-width:760px){ .b2b-grid{grid-template-columns:repeat(3,1fr)} }

/* ===================================================================
   v7: compact form — optional-details toggle styling
   =================================================================== */
.more-toggle{display:block;width:100%;text-align:left;background:none;border:0;
  color:var(--cyan-dark);font-weight:700;font-size:13px;font-family:inherit;
  cursor:pointer;padding:6px 0 12px}
.more-toggle:hover{color:var(--reg)}
.more-fld{margin-bottom:14px}

/* ===================================================================
   v7: RESTORED missing CSS — lost during the v3 full-file rewrite.
   .plan-* (entire /for-shops/ pricing section) had ZERO styling since v3;
   this is the real cause of "pages look broken." Also closing the safety
   gap on .hero-copy and .bf-brand, which had no dedicated rule at all.
   =================================================================== */

.hero-copy{min-width:0} /* grid-item safety: prevents text overflow from an unconstrained child */
.bf-brand{min-width:0}

.plans{max-width:var(--maxw);margin:52px auto 0;padding:0 20px}
.plans h2{font-size:clamp(24px,4.5vw,32px)}
.plans-sub{color:var(--ink-soft);margin:8px 0 24px;max-width:60ch;line-height:1.6}
.plan-grid{display:grid;gap:16px}
.plan-card{position:relative;background:var(--card);border:1.5px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow);padding:26px 22px}
.plan-card.featured{border-color:var(--reg);box-shadow:0 10px 32px rgba(229,72,77,.16)}
.plan-flag{position:absolute;top:-12px;left:22px;background:var(--reg);color:#fff;font-size:11px;
  font-weight:800;padding:5px 13px;border-radius:999px;letter-spacing:.03em;font-family:var(--disp)}
.plan-card h3{font-size:19px;margin-bottom:8px}
.plan-price{font-family:var(--disp);font-weight:800;font-size:34px;margin:8px 0 18px;color:var(--ink)}
.plan-price small{font-size:14px;font-weight:600;color:var(--ink-faint)}
.plan-feats{list-style:none;display:grid;gap:10px;margin-bottom:20px}
.plan-feats li{font-size:13.5px;color:var(--ink-soft);padding-left:25px;position:relative;line-height:1.5}
.plan-feats li::before{content:"✓";position:absolute;left:0;top:0;color:var(--ok);font-weight:800}
.plan-feats strong{color:var(--ink)}
.plan-card .submit{text-decoration:none;text-align:center;background:var(--ink)}
.plan-card.featured .submit{background:var(--reg)}
.plans-note{color:var(--ink-faint);font-size:13px;margin-top:20px;max-width:68ch;line-height:1.6}

@media(min-width:760px){ .plan-grid{grid-template-columns:1fr 1fr} }
@media(min-width:1040px){ .plan-grid{grid-template-columns:repeat(4,1fr)} }

/* ===================================================================
   v7: calculator itemized breakdown + prominent indicative-price disclaimer
   =================================================================== */
.calc-breakdown{flex-basis:100%;display:grid;gap:6px;margin-top:6px;padding-top:12px;
  border-top:1px dashed #B8E6EC}
.calc-bd-row{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-soft)}
.calc-bd-row span:last-child{font-weight:700;color:var(--ink)}
.calc-disclaimer{flex-basis:100%;font-size:12.5px;font-weight:600;color:#92700F;
  background:var(--gold-tint);border:1px solid #EFDCA6;border-radius:var(--r-sm);
  padding:10px 12px;margin-top:10px;line-height:1.5}

/* ===================================================================
   v8: delivery-as-note styling, populated estimate details, and a
   defensive hardening of the hero stat blocks (belt-and-braces against
   any stale/partial CSS deploy causing "COD"+"or pay online" to run
   together — this should never depend on strong being display:block
   from a single rule alone).
   =================================================================== */
.calc-bd-row.calc-bd-note span:last-child{font-weight:600;color:var(--ink-soft);
  text-align:right;max-width:60%}
.est-disclaimer{font-size:12px;font-weight:600;color:#92700F;background:var(--gold-tint);
  border:1px solid #EFDCA6;border-radius:var(--r-sm);padding:9px 11px;margin-top:8px;line-height:1.5}

.hero-points{display:flex;flex-wrap:wrap}
.hp-item{display:flex;flex-direction:column;align-items:flex-start}
.hp-item strong,.hp-item span{display:block;width:100%}

/* ===================================================================
   v14: shop portal (auth pages, dashboard, marketplace)
   =================================================================== */
.shop-main{min-height:60vh}
.shop-auth{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.lead-revealed{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line);font-size:14px}
.lead-revealed p{margin-bottom:6px}
.unlock-btn{margin-top:6px}

/* ===================================================================
   v15: searchable multi-select widget + shop auth page redesign
   =================================================================== */
.ms-root{border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);overflow:hidden}
.ms-tags{display:flex;flex-wrap:wrap;gap:6px;padding:10px 10px 0}
.ms-tag{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;
  font-size:12.5px;font-weight:600;padding:5px 6px 5px 11px;border-radius:999px}
.ms-tag button{background:none;border:0;color:#fff;opacity:.7;font-size:15px;cursor:pointer;
  line-height:1;padding:0 4px}
.ms-tag button:hover{opacity:1}
.ms-search{width:100%;border:0;border-bottom:1px solid var(--line);padding:12px 14px;
  font:inherit;font-size:15px;background:#fff}
.ms-search:focus{outline:none;background:var(--cyan-tint)}
.ms-list{max-height:220px;overflow-y:auto;background:#fff}
.ms-group-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  color:var(--ink-faint);padding:10px 14px 4px;position:sticky;top:0;background:#fff}
.ms-row{display:flex;align-items:center;gap:10px;padding:9px 14px;cursor:pointer;font-size:14px}
.ms-row:hover{background:var(--paper-alt)}
.ms-row input{width:16px;height:16px;accent-color:var(--cyan)}
.ms-empty{padding:16px 14px;font-size:13.5px;color:var(--ink-faint);text-align:center}

/* shop auth pages — proper design, not ad-hoc inline styles */
.shop-auth{max-width:var(--maxw);margin:0 auto;padding:36px 20px 60px}
.shop-auth-card{max-width:560px;margin:0 auto;position:relative;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-lg);padding:28px 26px}
.shop-auth-card.narrow{max-width:420px}
.shop-auth-card h2{font-size:24px;margin-bottom:4px}
.shop-auth-sub{color:var(--ink-soft);font-size:13.5px;margin-bottom:20px}
.shop-section-label{font-size:12.5px;font-weight:700;margin:16px 0 8px;color:var(--ink)}

/* ===================================================================
   v15b: searchable single-select combobox (replaces long native
   <select> dropdowns for services/cities across the whole site)
   =================================================================== */
.ms-combo{position:relative}
.ms-combo-input{width:100%;font:inherit;font-size:16px;padding:12.5px 14px;
  border:1.5px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink)}
.ms-combo-input:focus{outline:none;border-color:var(--cyan);background:#fff;box-shadow:0 0 0 4px var(--cyan-tint)}
.ms-combo-list{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;
  background:#fff;border:1.5px solid var(--line);border-radius:var(--r-sm);
  box-shadow:var(--shadow-lg);max-height:260px;overflow-y:auto}
.ms-combo-row{padding:10px 14px;font-size:14px;cursor:pointer}
.ms-combo-row:hover{background:var(--cyan-tint)}

/* ===================================================================
   v18: distinct B2B section on homepage — was previously interleaved
   with consumer services in the same grids, told apart only by a tiny
   badge. Now visually separated as its own track.
   =================================================================== */
.biz-block{background:var(--ink);border-radius:var(--r-lg);padding:32px 26px;margin-top:56px;
  max-width:var(--maxw);margin-left:auto;margin-right:auto}
.biz-block h2,.biz-block .sec-sub{color:#fff}
.biz-block .sec-sub{color:#B9C0D4;max-width:52ch}
.biz-head{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end;justify-content:space-between;
  margin-bottom:22px}
.biz-cta{flex:none;width:auto;text-decoration:none;text-align:center;padding:13px 24px;
  white-space:nowrap}
.biz-grid{margin-top:0}
.biz-tile{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14);color:#fff}
.biz-tile:hover{border-color:var(--reg);background:rgba(255,255,255,.1)}

@media(max-width:600px){ .biz-head{flex-direction:column;align-items:stretch} .biz-cta{width:100%} }

/* ===================================================================
   v20: shop/admin portal footer brand consistency + header polish
   =================================================================== */
.shop-foot{margin-top:48px;border-top:1px solid var(--line);background:var(--paper-alt)}
.shop-foot-inner{max-width:var(--maxw);margin:0 auto;padding:22px 20px;display:flex;
  align-items:center;gap:16px;flex-wrap:wrap}
.shop-foot-logo{opacity:.85}
.shop-foot-copy{font-size:12.5px;color:var(--ink-faint)}
.shop-foot-copy a{color:var(--ink-faint);text-decoration:underline;text-underline-offset:2px}

/* header on small screens now handled by the hamburger menu above */

/* ===================================================================
   v23: admin/shop dashboard upgrade — filters, tables, pagination,
   refund + disposition controls (previously built but never wired to
   any UI — orphaned backend code, now actually usable)
   =================================================================== */
.admin-filter-bar{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0;align-items:center}
.admin-filter-bar input,.admin-filter-bar select{font:inherit;font-size:14px;padding:9px 12px;
  border:1.5px solid var(--line);border-radius:var(--r-sm);background:#fff}
.admin-filter-bar input{flex:1;min-width:180px}
.admin-clear{font-size:13px;font-weight:600;color:var(--ink-soft);text-decoration:underline}

.admin-table-wrap{overflow-x:auto;margin-top:16px;border:1px solid var(--line);border-radius:var(--r)}
.admin-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:820px}
.admin-table th{text-align:left;padding:12px 14px;background:var(--paper-alt);font-weight:800;
  font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft)}
.admin-table td{padding:12px 14px;border-top:1px solid var(--line);vertical-align:top}
.admin-muted{color:var(--ink-faint);font-size:12px}
.admin-actions{display:flex;gap:6px;flex-wrap:wrap}
.admin-btn-sm{font:inherit;font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;
  border:1.5px solid var(--ink);background:#fff;color:var(--ink);cursor:pointer;white-space:nowrap}
.admin-btn-sm:hover{background:var(--ink);color:#fff}
.admin-btn-danger{border-color:var(--reg-dark);color:var(--reg-dark)}
.admin-btn-danger:hover{background:var(--reg-dark);color:#fff}

.admin-pagination{display:flex;gap:6px;margin-top:18px;flex-wrap:wrap}
.admin-pagination a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;
  height:34px;border:1.5px solid var(--line);border-radius:8px;font-size:13px;font-weight:700;
  text-decoration:none;color:var(--ink)}
.admin-pagination a.is-active{background:var(--ink);color:#fff;border-color:var(--ink)}
.admin-pagination a:hover:not(.is-active){border-color:var(--cyan)}

.admin-lead-row{margin-bottom:14px;padding-bottom:14px;border-bottom:1px dashed var(--line)}
.admin-unlocks{margin-top:10px;padding:10px 12px;background:var(--paper-alt);border-radius:var(--r-sm)}
.admin-unlocks-label{font-size:11.5px;font-weight:800;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px}
.admin-unlock-item{display:flex;justify-content:space-between;align-items:center;gap:10px;
  font-size:13px;padding:5px 0}
.admin-refunded-tag{font-size:11.5px;font-weight:700;color:var(--ink-faint)}

.disposition-row{display:flex;align-items:center;gap:10px;margin-top:8px}
.disposition-row label{font-size:12.5px;font-weight:700;color:var(--ink-soft)}
.disposition-row select{font:inherit;font-size:13.5px;padding:7px 10px;border:1.5px solid var(--line);
  border-radius:var(--r-sm);background:#fff}
.disposition-saved{font-size:12.5px;font-weight:700;color:var(--ok)}

/* v24: dashboard date-range selector + phone reveal */
.admin-btn-sm.is-active-range{background:var(--ink);color:#fff}
.phone-cell{font-family:monospace}

/* v25: portal tab nav with active state, collapsible lead rows for scale */
.portal-tabs a{position:relative;padding-bottom:4px}
.portal-tabs a.is-active-tab{color:var(--ink);font-weight:800}
.portal-tabs a.is-active-tab::after{content:"";position:absolute;left:0;right:0;bottom:-14px;
  height:2px;background:var(--reg)}

.lead-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;
  cursor:pointer;list-style:none;padding:12px 4px}
.lead-summary::-webkit-details-marker{display:none}
.lead-summary-main{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13.5px}
.lead-summary-ref{font-family:monospace;font-weight:700;color:var(--ink)}
.lead-summary-chevron{color:var(--ink-faint);transition:transform .15s}
details[open] .lead-summary-chevron{transform:rotate(180deg)}
.lead-details-body{padding:0 4px 14px}
.admin-lead-item{border-bottom:1px solid var(--line)}
.admin-lead-item:last-child{border-bottom:0}

/* ===================================================================
   Print / "Save as PDF" support for admin & shop lead lists. There is
   no PDF-generation library in this stack (no Composer, no package
   manager) — rather than fake a "PDF export" button that secretly does
   something else, this uses the browser's own native print-to-PDF,
   which every browser already has, with layout rules that hide
   navigation/filters/buttons and force every <details> section open so
   the printed/saved output shows full content, not collapsed rows.
   =================================================================== */
@media print {
  .topbar, .nav-scrim, .admin-filter-bar, #loadMoreBtn, .admin-actions,
  .disposition-row, .report-form, .report-lead-btn, .refund-btn,
  .reveal-phone-btn, .whatsapp-share-btn, .admin-disposition-select,
  .disposition-select, footer, .skip { display: none !important; }
  details { break-inside: avoid; }
  summary::-webkit-details-marker { display: none; }
  .lead-summary-chevron { display: none; }
  body { background: #fff; }
}

/* ================================================================
   Admin dashboard (v45) - real hierarchy, real polish.
   Attention strip first, KPIs, chart, tables. Nothing decorative.
   ================================================================ */
.dash-header {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; flex-wrap: wrap; margin-bottom: 20px;
}
.dash-header h2 { margin: 0; }
.dash-range-picker {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 13px; color: var(--ink-soft);
}
.dash-range-btn {
  padding: 6px 12px; border-radius: 8px; font-size: 13px;
  color: var(--ink-soft); text-decoration: none;
  border: 1px solid var(--line); transition: all 0.15s;
}
.dash-range-btn:hover { background: var(--paper-alt); }
.dash-range-btn.is-active {
  background: var(--ink); color: #fff; border-color: var(--ink);
}

.dash-attention-strip {
  display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 24px;
}
.dash-attention-item {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; border-radius: 10px; text-decoration: none;
  font-size: 13px; transition: transform 0.15s;
  border: 1px solid transparent;
}
.dash-attention-item:hover { transform: translateY(-1px); }
.dash-attention-item strong { font-size: 18px; font-weight: 700; }
.dash-attention-item span { color: inherit; opacity: 0.9; }
.dash-attention-warn {
  background: #FFF3E0; color: #B45309; border-color: #FBBF24;
}
.dash-attention-danger {
  background: #FEE4E2; color: #B42318; border-color: #F97066;
}
.dash-attention-ok {
  background: #E6FFF3; color: #087443; border-color: #12B76A;
}

.dash-kpi-grid {
  display: grid; gap: 14px; margin-bottom: 24px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.dash-kpi {
  background: #fff; border: 1px solid var(--line); border-radius: 12px;
  padding: 16px 18px; display: flex; flex-direction: column; gap: 4px;
}
.dash-kpi-label {
  font-size: 12px; color: var(--ink-soft); text-transform: uppercase;
  letter-spacing: 0.03em; font-weight: 600;
}
.dash-kpi-value {
  font-size: 28px; font-weight: 700; color: var(--ink);
  font-family: 'Bricolage Grotesque', sans-serif; line-height: 1.1;
}
.dash-kpi-sub { font-size: 12px; color: var(--ink-soft); }
.dash-kpi-revenue {
  background: linear-gradient(135deg, #14213D 0%, #1E3A5F 100%);
  border-color: #14213D;
}
.dash-kpi-revenue .dash-kpi-label,
.dash-kpi-revenue .dash-kpi-sub { color: rgba(255,255,255,0.7); }
.dash-kpi-revenue .dash-kpi-value { color: #fff; }
.dash-kpi-b2b { border-color: #E5484D; }
.dash-kpi-b2b .dash-kpi-value { color: #E5484D; }

.dash-chart-card {
  background: #fff; border: 1px solid var(--line); border-radius: 12px;
  padding: 20px; margin-bottom: 24px;
}
/* The chart canvas MUST live inside a wrapper with a fixed height
   because Chart.js in responsive mode with maintainAspectRatio:false
   will otherwise recompute its size on every animation frame against
   its parent (flex/grid), creating an infinite growth loop that on the
   page looks like autoscrolling. Fixed pixel height on the wrapper
   breaks that feedback loop. */
.dash-chart-canvas-wrap {
  position: relative;
  height: 260px;
  width: 100%;
}
.dash-chart-canvas-wrap canvas {
  position: absolute; inset: 0;
}
.dash-chart-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 12px; flex-wrap: wrap; gap: 8px;
}
.dash-chart-head h3 { margin: 0; font-size: 15px; }
.dash-chart-legend {
  display: flex; gap: 14px; font-size: 12px; color: var(--ink-soft);
  align-items: center;
}
.dash-legend-dot {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
  margin-right: 4px; vertical-align: middle;
}
.dash-legend-consumer { background: #3D4A63; }
.dash-legend-b2b { background: #E5484D; }

.dash-two-col, .dash-three-col {
  display: grid; gap: 16px; margin-bottom: 24px;
}
.dash-two-col { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.dash-three-col { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }

.dash-panel {
  background: #fff; border: 1px solid var(--line); border-radius: 12px;
  padding: 16px 18px;
}
.dash-panel-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 12px;
}
.dash-panel-head h3 { margin: 0; font-size: 15px; }
.dash-panel-link {
  font-size: 12.5px; color: var(--ink-soft); text-decoration: none;
}
.dash-panel-link:hover { color: var(--reg); }
.dash-empty { color: var(--ink-soft); font-size: 13px; }

.dash-table { display: flex; flex-direction: column; gap: 2px; }
.dash-row {
  display: grid; align-items: center; gap: 8px;
  grid-template-columns: auto 1fr auto;
  padding: 8px 0; font-size: 13px;
  border-bottom: 1px dashed var(--line);
}
.dash-row:last-child { border-bottom: 0; }
.dash-row-ref {
  font-family: monospace; font-size: 11.5px; color: var(--ink-soft);
}
.dash-row-main { color: var(--ink); }
.dash-row-meta {
  display: flex; align-items: center; gap: 8px; flex-shrink: 0;
  font-size: 11.5px;
}
.dash-row-time { color: var(--ink-soft); font-size: 11.5px; }

.dash-b2b-badge {
  background: #EEF2FF; color: #3730A3; padding: 2px 8px;
  border-radius: 6px; font-size: 11px; font-weight: 600;
}
.dash-b2b-badge-high {
  background: #E6FFF3; color: #087443;
}

.dash-breakdown { display: flex; flex-direction: column; gap: 2px; }
.dash-breakdown-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 0; font-size: 13px;
  border-bottom: 1px dashed var(--line);
}
.dash-breakdown-row:last-child { border-bottom: 0; }
.dash-breakdown-row strong { font-weight: 600; }

@media (max-width: 640px) {
  .dash-kpi-value { font-size: 24px; }
  .dash-row { grid-template-columns: 1fr; }
  .dash-row-meta { justify-content: flex-start; flex-wrap: wrap; }
}

/* ================================================================
   Admin shops revamp (v46) - bulk actions, edit form, plan management
   ================================================================ */
.admin-page-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; flex-wrap: wrap; margin-bottom: 20px;
}
.admin-page-head h2 { margin: 0; }

.admin-bulk-bar {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px; margin-bottom: 12px;
  background: #EEF2FF; border: 1px solid #C7D2FE; border-radius: 8px;
  font-size: 13px; color: #3730A3;
}
.admin-checkbox-col { width: 32px; padding: 8px 4px; text-align: center; }
.admin-checkbox-col input[type=checkbox] { cursor: pointer; }

.shop-edit-grid {
  display: grid; gap: 20px;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  align-items: start;
}
@media (max-width: 768px) {
  .shop-edit-grid { grid-template-columns: 1fr; }
}

.admin-panel {
  background: #fff; border: 1px solid var(--line); border-radius: 12px;
  padding: 18px 20px;
}
.admin-panel h3 { margin: 0 0 12px; font-size: 15px; }

.admin-mini-table {
  display: flex; flex-direction: column; gap: 2px;
}
.admin-mini-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 0; font-size: 13px;
  border-bottom: 1px dashed var(--line);
}
.admin-mini-row:last-child { border-bottom: 0; }

/* Lead row bulk-select layout (v47) */
.lead-summary-outer {
  display: flex; align-items: flex-start; gap: 10px; width: 100%;
}
.lead-summary-outer > input.lead-cb {
  margin-top: 14px; cursor: pointer; flex-shrink: 0;
}
.lead-restore-btn { flex-shrink: 0; }

/* ================================================================
   Reports + Notifications revamp (v48)
   ================================================================ */
.report-card {
  background: #fff; border: 1px solid var(--line); border-radius: 12px;
  padding: 16px 18px; margin-bottom: 14px;
}
.report-card-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px; margin-bottom: 10px; flex-wrap: wrap;
}
.report-card-meta {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 13px;
}
.report-shop-link {
  font-weight: 600; color: var(--ink); text-decoration: none; font-size: 14px;
}
.report-shop-link:hover { color: var(--reg); text-decoration: underline; }
.report-card-body {
  display: flex; flex-wrap: wrap; gap: 8px 24px;
  padding: 10px 0; border-top: 1px dashed var(--line);
  border-bottom: 1px dashed var(--line); margin-bottom: 12px;
}
.report-detail-row {
  display: flex; align-items: center; gap: 8px; font-size: 13px;
}
.report-detail-label {
  color: var(--ink-soft); font-size: 12px; min-width: 70px;
}
.report-card-actions {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
}
.report-credits-group {
  display: flex; align-items: center; gap: 6px;
}
.report-credits-input {
  width: 90px; padding: 6px 10px; border: 1.5px solid var(--line);
  border-radius: 8px; font-size: 12.5px; color: var(--ink);
}
.report-note-label { display: contents; }
.report-note-label input {
  padding: 6px 10px; border: 1.5px solid var(--line);
  border-radius: 8px; font-size: 12.5px; color: var(--ink);
}
.report-error {
  margin-top: 8px; color: var(--reg); font-size: 13px;
}

/* ================================================================
   Shop dashboard (v50) — mobile-first.
   Base = ~380px phone. Desktop overrides via min-width.
   ================================================================ */
.sdash-section {
  padding: 16px;
  border-bottom: 1px solid var(--line);
}
.sdash-section:last-child,
.sdash-section-last { border-bottom: 0; }

/* Greeting */
.sdash-greeting {
  display: flex; align-items: center; justify-content: space-between;
  padding-top: 20px;
}
.sdash-greeting-text h2 { margin: 0; font-size: 20px; }
.sdash-badge {
  padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: 600;
  white-space: nowrap;
}
.sdash-badge-ok  { background: #E6FFF3; color: #087443; }
.sdash-badge-warn { background: #FFF3E0; color: #B45309; }

/* KPI row — 2-up on phone, 4-up on tablet */
.sdash-kpi-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (min-width: 600px) {
  .sdash-kpi-row { grid-template-columns: repeat(4, 1fr); }
}
.sdash-kpi {
  background: var(--paper-alt, #F8F9FC);
  border: 1px solid var(--line); border-radius: 10px;
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 4px;
}
.sdash-kpi-val {
  font-size: 24px; font-weight: 700; color: var(--ink);
  font-family: 'Bricolage Grotesque', sans-serif; line-height: 1;
}
.sdash-kpi-val-green { color: #087443; }
.sdash-kpi-lbl { font-size: 11.5px; color: var(--ink-soft); }

/* Plan card */
.sdash-plan-card {
  background: #fff; border: 1.5px solid var(--line); border-radius: 12px;
  padding: 14px 16px;
}
.sdash-plan-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 10px; margin-bottom: 10px;
}
.sdash-plan-name { font-weight: 700; font-size: 16px; margin: 0 0 3px; }
.sdash-plan-meta { font-size: 13px; color: var(--ink-soft); margin: 0; }
.sdash-plan-manage {
  font-size: 13px; color: var(--reg); text-decoration: none;
  font-weight: 600; white-space: nowrap;
}
.sdash-expiry-warn { color: #B45309; font-weight: 600; }
.sdash-unlock-bar-wrap {
  background: var(--line); border-radius: 99px; height: 6px;
  overflow: hidden; margin-bottom: 5px;
}
.sdash-unlock-bar {
  background: var(--reg); height: 100%; border-radius: 99px;
  transition: width 0.3s;
}
.sdash-plan-bar-label { font-size: 11.5px; color: var(--ink-soft); margin: 0; }

/* Upgrade CTA (no active plan) */
.sdash-upgrade-cta {
  background: linear-gradient(135deg, #14213D 0%, #1E3A5F 100%);
  border-radius: 14px; padding: 20px;
  color: #fff;
}
.sdash-upgrade-copy h3 { margin: 0 0 6px; color: #fff; font-size: 17px; }
.sdash-upgrade-copy p { font-size: 13px; color: rgba(255,255,255,0.75); margin: 0 0 16px; }

.sdash-inline-plans {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-bottom: 12px;
}
@media (min-width: 560px) {
  .sdash-inline-plans { grid-template-columns: repeat(3, 1fr); }
}
.sdash-inline-plan {
  background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2);
  border-radius: 10px; padding: 14px; position: relative;
}
.sdash-inline-plan-featured {
  background: rgba(255,255,255,0.18); border-color: #E5484D;
  box-shadow: 0 0 0 1.5px #E5484D;
}
.sdash-popular-pill {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  background: #E5484D; color: #fff; font-size: 10px; font-weight: 700;
  padding: 2px 10px; border-radius: 20px; white-space: nowrap;
}
.sdash-inline-plan-name { font-size: 13px; color: rgba(255,255,255,0.8); margin: 0 0 2px; }
.sdash-inline-plan-price {
  font-size: 22px; font-weight: 700; color: #fff; margin: 0 0 2px;
  font-family: 'Bricolage Grotesque', sans-serif;
}
.sdash-inline-plan-price span { font-size: 12px; font-weight: 400; opacity: 0.7; }
.sdash-inline-plan-feat { font-size: 12px; color: rgba(255,255,255,0.65); margin: 0 0 10px; }
.sdash-upgrade-btn {
  width: 100%; padding: 9px; background: #E5484D; color: #fff;
  border: none; border-radius: 8px; font-size: 13px; font-weight: 600;
  cursor: pointer; transition: background 0.15s;
}
.sdash-upgrade-btn:hover { background: #C73B40; }
.sdash-see-all {
  display: block; text-align: center; color: rgba(255,255,255,0.7);
  font-size: 13px; text-decoration: none;
}
.sdash-see-all:hover { color: #fff; }
.sdash-upgrade-solo-btn {
  display: block; text-align: center; margin-top: 12px;
}

/* Quick actions */
.sdash-action-primary {
  display: flex; align-items: center; gap: 12px;
  background: var(--ink); color: #fff;
  padding: 14px 16px; border-radius: 12px;
  text-decoration: none; transition: opacity 0.15s;
}
.sdash-action-primary:hover { opacity: 0.9; }
.sdash-action-warn { background: #B45309; }
.sdash-action-icon { font-size: 20px; flex-shrink: 0; }
.sdash-action-primary strong { display: block; font-size: 15px; color: #fff; }
.sdash-action-sub { font-size: 12.5px; color: rgba(255,255,255,0.75); margin-top: 1px; display: block; }
.sdash-action-arrow { margin-left: auto; font-size: 18px; opacity: 0.7; }

/* Nudge */
.sdash-nudge {
  margin-top: 10px; font-size: 13px; color: var(--ink-soft);
  background: #FFF3E0; border-radius: 8px; padding: 8px 12px;
}

/* Section heads */
.sdash-section-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.sdash-section-h { margin: 0; font-size: 15px; font-weight: 700; }
.sdash-section-link { font-size: 13px; color: var(--ink-soft); text-decoration: none; }
.sdash-section-link:hover { color: var(--reg); }
.sdash-empty { font-size: 14px; color: var(--ink-soft); }

/* Unlock list */
.sdash-unlock-list { display: flex; flex-direction: column; gap: 2px; }
.sdash-unlock-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; border-bottom: 1px dashed var(--line);
}
.sdash-unlock-row:last-child { border-bottom: 0; }
.sdash-unlock-info { flex: 1; min-width: 0; }
.sdash-unlock-info strong { display: block; font-size: 14px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sdash-unlock-meta { font-size: 12px; color: var(--ink-soft); }
.sdash-disp-select {
  padding: 6px 8px; border: 1.5px solid var(--line); border-radius: 8px;
  font-size: 12.5px; color: var(--ink); background: #fff; flex-shrink: 0;
  max-width: 110px;
}
.sdash-saved { font-size: 12px; color: #087443; font-weight: 700; flex-shrink: 0; }

/* Bottom plans CTA link */
.sdash-plan-footer-cta {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 0; color: var(--ink-soft); text-decoration: none;
  font-size: 14px; border-top: 1px solid var(--line);
}
.sdash-plan-footer-cta:hover { color: var(--reg); }

@media (min-width: 768px) {
  .sdash-section { padding: 20px 24px; }
  .sdash-kpi-val { font-size: 28px; }
  .sdash-upgrade-cta { padding: 24px; }
}

/* ================================================================
   Shop plans & billing (v51)
   ================================================================ */
.sbill-status-card {
  background: #F4FBFC; border: 1.5px solid var(--line); border-radius: 12px;
  padding: 16px;
}
.sbill-status-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 10px; margin-bottom: 8px;
}
.sbill-plan-name { margin: 0 0 3px; font-size: 17px; font-weight: 700; }
.sbill-plan-meta { margin: 0; font-size: 13px; color: var(--ink-soft); }
.sbill-active-badge {
  background: #E6FFF3; color: #087443; font-size: 12px; font-weight: 600;
  padding: 3px 10px; border-radius: 20px; white-space: nowrap;
}
.sbill-cancel-link {
  background: none; border: none; padding: 0; margin-top: 10px;
  font-size: 12.5px; color: var(--ink-soft); cursor: pointer;
  text-decoration: underline;
}
.sbill-cancel-link:hover { color: var(--reg); }
.sbill-cancel-note { font-size: 12px; color: var(--ink-soft); margin: 3px 0 0; }
.sbill-no-plan {
  background: var(--paper-alt, #F8F9FC); border-radius: 10px;
  padding: 14px 16px; font-size: 14px; color: var(--ink-soft);
}

/* Plan grid */
.sbill-plan-grid {
  display: grid; grid-template-columns: 1fr; gap: 12px;
}
@media (min-width: 560px) {
  .sbill-plan-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  .sbill-plan-grid { grid-template-columns: repeat(4, 1fr); }
}
.sbill-plan-card {
  background: #fff; border: 1.5px solid var(--line); border-radius: 12px;
  padding: 16px; position: relative; display: flex; flex-direction: column;
}
.sbill-plan-featured {
  border-color: var(--reg); box-shadow: 0 0 0 1.5px var(--reg);
}
.sbill-popular {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  background: var(--reg); color: #fff; font-size: 10px; font-weight: 700;
  padding: 2px 10px; border-radius: 20px; white-space: nowrap;
}
.sbill-plan-title { margin: 0 0 4px; font-size: 14px; color: var(--ink-soft); }
.sbill-plan-price {
  margin: 0 0 10px; font-size: 26px; font-weight: 700; color: var(--ink);
  font-family: 'Bricolage Grotesque', sans-serif;
}
.sbill-plan-price span { font-size: 13px; font-weight: 400; color: var(--ink-soft); }
.sbill-feat-list {
  list-style: none; padding: 0; margin: 0 0 14px; font-size: 13px;
  color: var(--ink-soft); display: flex; flex-direction: column; gap: 5px;
  flex: 1;
}
.sbill-feat-list strong { color: var(--ink); }
.sbill-btn {
  display: block; text-align: center; padding: 10px; border-radius: 8px;
  font-size: 13px; font-weight: 600; border: none; cursor: pointer;
  transition: background 0.15s; margin-top: auto;
}
.sbill-btn-current { background: #E6FFF3; color: #087443; cursor: default; }
.sbill-btn-free { background: var(--paper-alt); color: var(--ink-soft); cursor: default; font-weight: 400; }
.sbill-btn-cta { background: var(--ink); color: #fff; }
.sbill-btn-cta:hover { background: var(--reg); }
.sbill-downgrade-note { font-size: 11px; color: var(--ink-soft); text-align: center; margin: 5px 0 0; }

/* History tables */
.sbill-history-table {
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
  font-size: 13px;
}
.sbill-history-head, .sbill-history-row {
  display: grid; padding: 10px 14px;
  grid-template-columns: 1fr auto auto auto;
  gap: 10px; align-items: center;
}
@media (max-width: 560px) {
  .sbill-history-head, .sbill-history-row {
    grid-template-columns: 1fr auto;
  }
  .sbill-history-head span:nth-child(3),
  .sbill-history-head span:nth-child(4),
  .sbill-history-row span:nth-child(3),
  .sbill-history-row span:nth-child(4) { display: none; }
}
.sbill-history-head {
  background: var(--paper-alt); font-weight: 600; font-size: 12px;
  color: var(--ink-soft);
}
.sbill-history-row { border-top: 1px solid var(--line); }
.sbill-pay-id { font-family: monospace; font-size: 11px; color: var(--ink-soft); }
.sbill-pay-date { font-size: 12px; color: var(--ink-soft); white-space: nowrap; }

/* ================================================================
   v52 comprehensive gap fixes
   ================================================================ */

/* B2B strip in unlocked leads */
.my-lead-b2b-strip {
  display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center;
  background: #EEF2FF; border-radius: 8px; padding: 8px 12px;
  font-size: 12.5px; margin-top: 8px;
}
.my-lead-b2b-tag {
  background: #3730A3; color: #fff; padding: 2px 8px;
  border-radius: 6px; font-size: 11px; font-weight: 700;
  white-space: nowrap;
}

/* Wallet top-up presets */
.sbill-topup-row {
  display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 4px;
}
.sbill-topup-preset {
  padding: 8px 16px; border: 1.5px solid var(--line); border-radius: 8px;
  background: var(--paper-alt); font-size: 14px; cursor: pointer;
  transition: all 0.15s;
}
.sbill-topup-preset:hover, .sbill-topup-preset.sbill-topup-selected {
  border-color: var(--reg); background: #FEE4E2; color: var(--reg);
}

/* ================================================================
   v53 — state landing, B2B categories, trust strips, audit log
   ================================================================ */
.landing-trust-strip {
  display: flex; flex-wrap: wrap; gap: 10px 20px;
  font-size: 13px; color: var(--ink-soft); margin: 8px 0 12px;
}
.landing-trust-strip strong { color: var(--ink); }

.why-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
}
@media (max-width: 560px) { .why-grid { grid-template-columns: 1fr; } }
.why-item { background: var(--paper-alt); border-radius: 10px; padding: 14px 16px; }
.why-item strong { display: block; margin-bottom: 4px; font-size: 14px; }
.why-item p { font-size: 13px; color: var(--ink-soft); margin: 0; }

/* ================================================================
   v55 — guides (blog), messaging, verified badge
   ================================================================ */

/* Verified badge */
.shop-verified-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: #E6FFF3; color: #087443; font-size: 11px; font-weight: 700;
  padding: 2px 8px; border-radius: 12px; white-space: nowrap;
}

/* Guide grid */
.guide-grid {
  display: grid; grid-template-columns: 1fr; gap: 16px; margin-top: 20px;
}
@media (min-width: 560px) { .guide-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .guide-grid { grid-template-columns: repeat(3, 1fr); } }
.guide-card {
  display: flex; flex-direction: column; gap: 8px;
  background: #fff; border: 1.5px solid var(--line); border-radius: 12px;
  padding: 18px; text-decoration: none; color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.guide-card:hover { border-color: var(--reg); box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.guide-cat {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--reg);
}
.guide-card h2 { margin: 0; font-size: 15px; line-height: 1.4; }
.guide-card p  { margin: 0; font-size: 13px; color: var(--ink-soft); flex: 1; line-height: 1.5; }
.guide-meta    { font-size: 12px; color: var(--ink-soft); margin-top: auto; }
.guide-pagination {
  display: flex; align-items: center; gap: 16px; margin-top: 24px;
  font-size: 14px;
}
.guide-pagination a { color: var(--reg); text-decoration: none; }

/* Guide article */
.guide-article { max-width: 720px; margin: 0 auto; padding: 24px 16px 48px; }
.guide-article-head { margin-bottom: 28px; }
.guide-back { font-size: 13px; color: var(--ink-soft); text-decoration: none; }
.guide-back:hover { color: var(--reg); }
.guide-article-head h1 { margin: 8px 0 4px; font-size: 28px; line-height: 1.3; }
.guide-article-meta { font-size: 13px; color: var(--ink-soft); margin: 0; }
.guide-body { line-height: 1.75; font-size: 16px; color: var(--ink); }
.guide-body h2 { font-size: 20px; margin: 32px 0 10px; }
.guide-body h3 { font-size: 17px; margin: 24px 0 8px; }
.guide-body p  { margin: 0 0 16px; }
.guide-body ul, .guide-body ol { padding-left: 22px; margin: 0 0 16px; }
.guide-body li { margin-bottom: 6px; }
.guide-body table { width: 100%; border-collapse: collapse; margin: 20px 0; font-size: 14px; }
.guide-body th, .guide-body td { border: 1px solid var(--line); padding: 8px 12px; text-align: left; }
.guide-body th { background: var(--paper-alt); font-weight: 600; }
.guide-related { margin: 36px 0 0; padding: 20px; background: var(--paper-alt); border-radius: 12px; }
.guide-related h3 { margin: 0 0 10px; font-size: 15px; }
.guide-related ul { padding-left: 18px; margin: 0; }
.guide-related li { margin-bottom: 6px; font-size: 14px; }
.guide-cta {
  margin-top: 40px; background: var(--ink); color: #fff;
  border-radius: 14px; padding: 24px;
}
.guide-cta h3 { margin: 0 0 6px; color: #fff; font-size: 18px; }
.guide-cta p  { margin: 0 0 16px; color: rgba(255,255,255,.8); font-size: 14px; }

/* Messaging thread */
.msg-thread {
  display: flex; flex-direction: column; gap: 10px;
  max-height: 400px; overflow-y: auto;
  padding: 4px 0;
}
.msg-bubble {
  max-width: 85%; padding: 10px 14px; border-radius: 12px;
  font-size: 14px; line-height: 1.5;
}
.msg-bubble-shop  { background: var(--ink); color: #fff; align-self: flex-end; border-bottom-right-radius: 4px; }
.msg-bubble-system{ background: var(--paper-alt); color: var(--ink); align-self: flex-start; border-bottom-left-radius: 4px; }
.msg-body  { margin: 0 0 4px; }
.msg-time  { font-size: 11px; opacity: 0.65; display: block; }
