/* Viva partner store — colour tokens (tools/site-store/runtime.js). Loaded last.
   --vv-accent / --vv-accent-2 / --vv-on-accent are set by js/store.js from the partner's colours. */
:root{--vv-accent:#3B9EFF;--vv-accent-2:#5AA9F5;--vv-on-accent:#06121e;--green:var(--vv-accent);--green-dark:var(--vv-accent-2);--blue:var(--vv-accent);--blue-dark:var(--vv-accent-2)}
.rnav-mk{border-bottom-color:var(--vv-accent)}
/* THE HEADER RULE (Kevin, 2026-09-29). A store's main brand is the PARTNER's: their logo top-left, or,
   with no logo, their name as the wordmark, large. Viva is only the small "Powered by Viva Health Co."
   line, under the brand and at the head of the footer. Until the store's answer lands the brand is held
   blank, so "Viva Health Co." never flashes as the store's name. */
html:not(.store-ready) .rnav-nm .vv-brand,html:not(.store-ready) .rnav-mk,html:not(.store-ready) .rfoot-brand{visibility:hidden}
.rnav-nm .vv-brand{display:block;max-width:52vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rnav-nm .vv-sub{display:block;font-family:var(--body),sans-serif;font-size:10px;font-weight:600;letter-spacing:.04em;color:var(--ink-soft);margin-top:2px;white-space:nowrap}
.rnav-nm .vv-sub:empty,.vv-powered:empty{display:none}
.vv-powered{font-size:12px;color:var(--ink-soft);margin:2px 0 6px}
html.vv-wordmark .rnav-mk{display:none}
html.vv-has-logo .rnav-nm .vv-brand{display:none}
.vv-logo{height:40px;width:auto;max-width:180px;object-fit:contain;display:block;background:#fff;border-radius:6px;padding:3px}
@media(max-width:760px){.vv-logo{height:34px;max-width:140px}.rnav-nm .vv-brand{max-width:48vw}}
.rnav-cta,.btn-g,.btn-b,.rc-co,.submit,#submit-btn,.pbtn{color:var(--vv-on-accent)!important}
/* PERSONALIZATION (Kevin, 2026-09-26; the data is RepOS storePersonalization.resolve). The hero is Riser's
   short clip unless the partner has a photo; then the photo shows and the clip is hidden. A photo does not
   move, so it shows for reduced motion too. */
img.hero-video[hidden]{display:none!important}
html.vv-hero-photo video.hero-video{display:none}
@media(prefers-reduced-motion:reduce){img.hero-video:not([hidden]){display:block}}
/* accents in the partner's colour: the hero eyebrow and the emphasised half of the headline; links in the
   page body in their link colour (checked readable on the page by RepOS). The footer, legal and checkout
   copy stay Viva's. */
html.vv-accented .hero .ey,html.vv-accented .hero h1 em{color:var(--vv-accent)}
html.vv-linked main a:not([class]),html.vv-linked section a:not([class]){color:var(--vv-link)}
/* background preset "black" (a partner's own dark theme; Paulo's black / neon) */
html.vv-bg-black{--paper:#000;--white:#0c0c0c;--ink:#fff;--ink-soft:#cfcfcf;--line:#2a2a2a;--mint:#121800;--sky:#0e1300}
html.vv-bg-black body{background:#000;color:#fff}
html.vv-bg-black .rnav{background:rgba(0,0,0,.88)}
html.vv-bg-black .hero-scrim{background:linear-gradient(90deg,rgba(0,0,0,.92) 0%,rgba(0,0,0,.66) 42%,rgba(0,0,0,.2) 72%,rgba(0,0,0,.08) 100%),linear-gradient(0deg,#000 0%,rgba(0,0,0,0) 40%)}
/* Prices stay hidden until this store's partner-price answer arrives (or 4s pass), so a slow
   network never shows MAP for a moment and then flips to the partner's price. */
html:not(.prices-ready) .price,html:not(.prices-ready) .buybox .price,html:not(.prices-ready) .pprice{visibility:hidden}
/* An unknown or unreadable store: only the notice shows. */
html.store-missing body>*:not(.vv-missing):not(script){display:none!important}
.vv-missing{max-width:560px;margin:0 auto;padding:96px 20px;text-align:center}
.vv-missing h1{font-size:28px;margin:0 0 12px}.vv-missing p{color:var(--ink-soft)}.vv-missing a{color:var(--vv-accent)}
/* background preset "navy" (a distributor site's own dark theme: Metabolic) */
html.vv-bg-navy{--paper:#0B1020;--white:#121A30;--ink:#F3F6FF;--ink-soft:#A9B4D0;--line:#26314F;--mint:#121A30;--sky:#121A30}
html.vv-bg-navy body{background:#0B1020;color:#F3F6FF}
html.vv-bg-navy .rnav{background:rgba(11,16,32,.9)}
html.vv-bg-navy .vv-logo{background:none;padding:0;height:54px;max-width:none;border-radius:6px}
@media(max-width:760px){html.vv-bg-navy .vv-logo{height:48px;max-width:none}}
/* WHOLESALE MODE (Kevin, 2026-10-01; Metabolic v2). The same store, for businesses: prices are for signed-in,
   approved accounts, so nothing here shows a price or sells. No price line, no Add to cart, no cart, no bundles;
   each product says "Apply for a wholesale account" and "Sign in for pricing" instead. */
html.vv-wholesale .price,html.vv-wholesale .pprice,html.vv-wholesale .buybox .price,html.vv-wholesale .add,
html.vv-wholesale .pbtn,html.vv-wholesale [data-buy],html.vv-wholesale .rnav-cart,html.vv-wholesale #rc-fab,
html.vv-wholesale #rc-dr,html.vv-wholesale #rc-ov,html.vv-wholesale #bundles,html.vv-wholesale .save,html.vv-wholesale .toast{display:none!important}
.vv-ws-cta{display:flex;flex-direction:column;gap:8px;margin-top:12px}
/* A HELD store (RepOS held: true, Kevin 2026-10-09): cart off until approved. Prices stay; no Add to cart, no cart,
   no bundles, no checkout bar. */
html.vv-held .add,html.vv-held .pbtn,html.vv-held [data-buy],html.vv-held .rnav-cart,html.vv-held #rc-fab,html.vv-held #rc-dr,
html.vv-held #rc-ov,html.vv-held #bundles,html.vv-held .vv-cbar,html.vv-held .save,html.vv-held .toast{display:none!important}
/* Apply is the primary button. "Sign in for pricing" is the secondary button under it (2026-10-05). */
.vv-ws-cta .vv-ws-apply,.vv-ws-cta .vv-ws-pricing{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;text-align:center;border-radius:999px;font-weight:800;font-size:16px;text-decoration:none;box-sizing:border-box}
.vv-ws-cta .vv-ws-apply{background:var(--vv-accent);color:var(--vv-on-accent)!important}
.vv-ws-cta .vv-ws-pricing{background:transparent;border:1.5px solid var(--vv-accent);color:var(--vv-accent)!important;font-weight:700;font-size:15px}
.vv-ws-cta .vv-ws-signin,.hero-cta .vv-hero-signin{margin:0;text-align:center;font-size:14px;font-weight:600}
.vv-ws-cta .vv-ws-signin a,.hero-cta .vv-hero-signin a{color:var(--vv-accent)}
.hero-cta .vv-hero-signin{flex-basis:100%;text-align:left}
html.vv-wholesale .hero-cta{display:flex;flex-wrap:wrap;gap:10px}
#apply{padding:48px 0}
#apply .vv-doors{display:grid;gap:16px;grid-template-columns:1fr;max-width:640px}
.vv-door{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:22px 20px}
.vv-door h3{font-size:22px;margin:0 0 6px}.vv-door p{color:var(--ink-soft);margin:0 0 12px;font-size:16px;line-height:1.5}
.vv-door .vv-soon{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--vv-on-accent);background:var(--vv-accent);border-radius:999px;padding:4px 10px;margin-bottom:10px}
.vv-door form{display:grid;gap:10px;margin-top:6px}
.vv-door label{display:block;font-size:14px;color:var(--ink-soft)}
.vv-door input,.vv-door select{display:block;width:100%;min-height:48px;margin-top:4px;padding:10px 12px;font-size:16px;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}
.vv-door .vv-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.vv-door .btn{display:flex;align-items:center;justify-content:center;min-height:52px;width:100%;font-size:17px}
.vv-door .vv-msg{min-height:1.4em;font-size:15px}
.vv-door .vv-signin{display:block;text-align:center;margin-top:10px;font-weight:700;color:var(--vv-accent)}
.vv-ws-call{display:flex;align-items:center;justify-content:center;min-height:52px;border-radius:12px;font-weight:800;font-size:18px;text-decoration:none;background:var(--vv-accent);color:var(--vv-on-accent)}
/* A PROSPECT's store (RepOS prospectStores.js): who it was prepared for, and the way to make it theirs. */
.vv-prospect{background:#0b1b2b;color:#fff;font-size:13px;line-height:1.45;text-align:center;padding:8px 16px}
.vv-prospect a{color:#fff;font-weight:700;text-decoration:underline;margin-left:6px}
/* THE PROSPECT FUNNEL (Kevin, 2026-10-07, Connor item 3; js/store.js funnel()). A prospect's store is a light page that
   sells the store to its owner: hero + video, three steps, two ways to earn, the lineup, Activate, call / text. The
   template's own marketing sections stay in the page for a partner's store and are hidden here (home page only:
   html.vv-fn-on is set where the funnel is built, never on a product page). Text is ink on paper;
   the partner's colour is only ever a button or a step number, with the ink RepOS checked against it. */
html.vv-fn-on{--paper:#ffffff;--white:#f5f7fa;--ink:#0f1b2a;--ink-soft:#4a5a6c;--line:#e2e8f0;--mint:#f5f7fa;--sky:#eef4fb}
html.vv-fn-on body{background:#fff;color:#0f1b2a}
html.vv-fn-on .rnav{background:rgba(255,255,255,.94);border-bottom:1px solid #e2e8f0}
html.vv-fn-on .rnav a,html.vv-fn-on .rnav .vv-brand,html.vv-fn-on .rnav-cart{color:#0f1b2a}
html.vv-fn-on .bar,html.vv-fn-on .vv-prospect:not(.vv-preview),html.vv-fn-preview .vv-prospect:not(.vv-preview){display:none}
html.vv-fn-on main>section:not([class^="vv-fn"]):not(#shop),html.vv-fn-on #science{display:none!important}
.vv-fn-hero{padding:40px 0 32px;background:linear-gradient(180deg,#f5f8fc 0%,#fff 100%)}
.vv-fn-hero-in{display:grid;gap:24px;align-items:center}
@media(min-width:900px){.vv-fn-hero-in{grid-template-columns:1.05fr 1fr;gap:48px}.vv-fn-hero{padding:72px 0 56px}}
.vv-fn-ey{display:inline-block;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#4a5a6c;margin-bottom:10px}
.vv-fn-hero h1{font-family:var(--display),sans-serif;font-size:clamp(32px,7.4vw,54px);line-height:1.06;letter-spacing:-.02em;margin:0 0 14px;color:#0f1b2a}
.vv-fn-lede{font-size:17px;line-height:1.55;color:#4a5a6c;margin:0 0 20px;max-width:34em}
/* The landing's hero card in the store's own colours, photo and line (Kevin, 2026-10-09). */
html.vv-accented .vv-fn-hero .vv-fn-copy{position:relative;background:linear-gradient(135deg,var(--vv-accent) 0%,var(--vv-accent-2) 100%);color:var(--vv-on-accent);border-radius:20px;padding:22px 18px 20px}
html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-ey,html.vv-accented .vv-fn-hero .vv-fn-copy h1,html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-lede,
html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-tag,html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-talk p{color:var(--vv-on-accent)}
html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-lede{opacity:.92}
html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-activate{background:var(--vv-on-accent);color:var(--vv-accent)!important}
html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-call,html.vv-accented .vv-fn-hero .vv-fn-copy .vv-fn-text{background:rgba(255,255,255,.9);border-color:transparent}
.vv-fn-photo{float:right;width:104px;height:104px;border-radius:16px;object-fit:cover;margin:0 0 10px 12px;box-shadow:0 6px 18px rgba(0,0,0,.18)}
.vv-fn-tag{font-size:18px;font-weight:800;line-height:1.3;margin:0 0 12px;color:#0f1b2a}
.vv-fn-ctas{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.vv-fn-activate{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 26px;border-radius:999px;font-weight:800;font-size:17px;text-decoration:none;background:var(--vv-accent);color:var(--vv-on-accent)!important}
.vv-fn-ghost{display:inline-flex;align-items:center;min-height:52px;padding:0 20px;border-radius:999px;border:1.5px solid #cbd5e1;color:#0f1b2a!important;font-weight:700;text-decoration:none}
.vv-fn-video{border-radius:18px;overflow:hidden;background:#0f1b2a;aspect-ratio:16/9;box-shadow:0 10px 30px rgba(15,27,42,.12)}
.vv-fn-video video{display:block;width:100%;height:100%;object-fit:cover}
.vv-fn-steps,.vv-fn-earn,.vv-fn-act{padding:40px 0}
.vv-fn-steps h2,.vv-fn-earn h2,.vv-fn-act h2{font-family:var(--display),sans-serif;font-size:clamp(26px,5.4vw,36px);margin:0 0 18px;color:#0f1b2a}
.vv-fn-ol{list-style:none;margin:0;padding:0;display:grid;gap:14px}
@media(min-width:900px){.vv-fn-ol{grid-template-columns:repeat(3,1fr)}.vv-fn-cards{grid-template-columns:1fr 1fr}}
.vv-fn-step{display:flex;gap:14px;align-items:flex-start;background:#f5f7fa;border:1px solid #e2e8f0;border-radius:16px;padding:18px}
.vv-fn-n{flex:0 0 36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;background:var(--vv-accent);color:var(--vv-on-accent)}
.vv-fn-step h3,.vv-fn-card h3{font-size:18px;margin:4px 0 4px;color:#0f1b2a}
.vv-fn-step p,.vv-fn-card p{margin:0;color:#4a5a6c;font-size:15.5px;line-height:1.5}
.vv-fn-earn{background:#f5f8fc}
.vv-fn-cards{display:grid;gap:14px}
.vv-fn-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:20px}
.vv-fn-card .vv-fn-amt{font-family:var(--display),sans-serif;font-size:24px;font-weight:800;color:#0f1b2a;margin:2px 0 8px}
.vv-fn-note{font-size:13px;color:#4a5a6c;margin:14px 0 0}
html.vv-fn-on #shop{padding:40px 0;background:#fff}
.vv-fn-act{text-align:center;background:#f5f8fc}
.vv-fn-act p{color:#4a5a6c;margin:0 auto 18px;max-width:34em}
.vv-fn-big{min-height:56px;padding:0 34px;font-size:18px}
.vv-fn-talk{margin-top:26px}
.vv-fn-talk p{margin-bottom:12px;color:#0f1b2a;font-weight:600}
.vv-fn-talk-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.vv-fn-call,.vv-fn-text{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:999px;border:1.5px solid #cbd5e1;background:#fff;color:#0f1b2a!important;font-weight:700;text-decoration:none}
/* PREVIEW MY STORE (Kevin, 2026-10-07): the owner sees the store as customers will, with a slim bar to go back or
   activate, and their logo in the hero and the header with NO box behind it. */
html.store-prospect .vv-logo{background:none;padding:0;border-radius:0}
.vv-fn-bar{position:sticky;top:0;z-index:60;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;justify-content:space-between;background:#0f1b2a;color:#fff;font-size:14px;line-height:1.35;padding:10px 16px}
.vv-fn-bar-acts{display:flex;gap:8px}
.vv-fn-bar a{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;font-weight:700;text-decoration:none}
.vv-fn-back{border:1px solid rgba(255,255,255,.5);color:#fff!important}
.vv-fn-bar-go{background:var(--vv-accent);color:var(--vv-on-accent)!important}
.vv-hero-logo{display:block;height:auto;max-height:84px;max-width:min(280px,70vw);width:auto;object-fit:contain;margin:0 0 18px;background:none;filter:drop-shadow(0 1px 6px rgba(0,0,0,.35))}
.vv-fn-prev2{margin:12px auto 0}
.vv-fn-act .vv-fn-ghost{display:flex;width:max-content}
/* DESIGN A, "CLEAN SHELF" (Kevin, 2026-10-07: A, plus from B the business's colour as the accent and the "Curated by
   {Business}" strip). Every store on this template (js/store.js sets html.vv-shelf) EXCEPT one with its own dark preset
   (vv-bg-black / vv-bg-navy) and a wholesale site. Light, product-first: a compact hero card in the business's colour
   with its photo or the Viva clip as a tile, the goal chips, a 2-up grid, bundles in a side-scroll row, the checkout
   bar at the bottom of a phone. Text is ink on paper; the accent is only ever a fill with the ink RepOS checked on it. */
html.vv-shelf{--paper:#f6f8fa;--white:#ffffff;--ink:#0f1b2a;--ink-soft:#5b6878;--line:#e3e9ef;--mint:#f1f5f8;--sky:#eef4fb}
html.vv-shelf body{background:#f6f8fa;color:#0f1b2a}
html.vv-shelf .rnav{background:rgba(255,255,255,.96);border-bottom:1px solid #e3e9ef}
html.vv-shelf .rnav a,html.vv-shelf .rnav .vv-brand,html.vv-shelf .rnav-cart,html.vv-shelf .rnav-burger span{color:#0f1b2a}
html.vv-shelf .rnav-burger span{background:#0f1b2a}
html.vv-shelf .vv-logo{background:none;padding:0;border-radius:0}
html.vv-shelf .hero{position:relative;min-height:0;margin:14px 16px 0;padding:0;border-radius:20px;overflow:hidden;
  background:linear-gradient(135deg,var(--vv-accent) 0%,var(--vv-accent-2) 100%);color:var(--vv-on-accent)}
html.vv-shelf .hero-scrim{display:none}
html.vv-shelf .hero .hero-video{position:absolute;inset:auto;left:auto;bottom:auto;right:16px;top:20px;width:104px;height:104px;border-radius:16px;object-fit:cover;z-index:1;box-shadow:0 6px 18px rgba(0,0,0,.18)}
html.vv-shelf .hero .hero-inner{position:relative;z-index:2;padding:22px 18px 20px}
html.vv-shelf .hero .hero-copy{max-width:none}
html.vv-shelf .hero .ey{color:var(--vv-on-accent)!important;opacity:.85;font-size:11px;letter-spacing:.12em;padding-right:118px}
html.vv-shelf .hero h1{color:var(--vv-on-accent);font-size:clamp(25px,6.4vw,44px);line-height:1.1;margin:8px 0 8px;padding-right:118px}
html.vv-shelf .hero h1 em{color:var(--vv-on-accent)!important;font-style:normal;opacity:.9}
html.vv-shelf .hero .lede{color:var(--vv-on-accent);opacity:.92;font-size:15px;line-height:1.5;margin:0 0 14px}
html.vv-shelf .hero .btn-g{background:var(--vv-on-accent);color:var(--vv-accent)!important}
html.vv-shelf .hero .vv-hero-logo{display:none}
html.vv-shelf .hero-chips{margin-top:14px;gap:6px}
html.vv-shelf .hero-chips .hchip{background:rgba(255,255,255,.22);border:0;color:var(--vv-on-accent);font-size:12px;padding:6px 10px}
@media(min-width:900px){
  html.vv-shelf .hero{margin:22px auto 0;max-width:1112px}
  html.vv-shelf .hero .hero-video{width:300px;height:300px;right:32px;top:50%;transform:translateY(-50%);border-radius:20px}
  html.vv-shelf .hero .hero-inner{padding:44px 40px}
  html.vv-shelf .hero .ey,html.vv-shelf .hero h1,html.vv-shelf .hero .lede,html.vv-shelf .hero-chips{padding-right:0;max-width:560px}
}
/* the "Curated by {Business}" strip (from B), under the hero; the logo, or the business's initials on its colour */
.vv-curated{display:flex;align-items:center;gap:12px;margin:12px 16px 0;padding:12px 14px;background:#fff;border:1px solid #e3e9ef;border-radius:14px;font-size:13.5px;line-height:1.4;color:#334155}
.vv-curated img,.vv-curated .vv-mono{flex:none;width:40px;height:40px;border-radius:10px;object-fit:contain;background:#fff}
.vv-curated .vv-mono{display:flex;align-items:center;justify-content:center;background:var(--vv-accent);color:var(--vv-on-accent);font-weight:800;font-size:14px;letter-spacing:.02em}
.vv-curated b{color:#0f1b2a}
@media(min-width:900px){.vv-curated{max-width:1112px;margin:14px auto 0}}
html.vv-shelf .goals{padding:14px 0 0;background:transparent}
html.vv-shelf .goals .sec-h,html.vv-shelf .goals h2{display:none}
html.vv-shelf .goal-rail{flex-wrap:nowrap;overflow-x:auto;gap:8px;scrollbar-width:none;padding-bottom:4px}
html.vv-shelf .goal{flex:none;background:#fff;border:1px solid #dbe2ea;color:#223;border-radius:999px;padding:8px 14px;font-weight:600}
html.vv-shelf .goal[aria-current="true"]{background:#0f1b2a;border-color:#0f1b2a;color:#fff}
html.vv-shelf .benefits,html.vv-shelf .cmp,html.vv-shelf #science{display:none}
html.vv-shelf .shop{padding:18px 0 8px}
html.vv-shelf .shop .sec-h{margin-bottom:0}
html.vv-shelf .shop h2{font-size:20px}
html.vv-shelf .grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px}
@media(max-width:1000px){html.vv-shelf .grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){html.vv-shelf .grid{grid-template-columns:1fr 1fr;gap:10px}}
html.vv-shelf .card{border-radius:14px;background:#fff;border:1px solid #e6ebf0}
html.vv-shelf .card:hover{transform:none}
html.vv-shelf .card .ph-prod{background:#fff;border:0;border-bottom:1px solid #eef2f6}
html.vv-shelf .card .ph-prod img{object-fit:contain;padding:8%}
html.vv-shelf .card .body{padding:10px 10px 12px}
html.vv-shelf .card .ben{background:none;color:var(--vv-accent-2);padding:0;font-size:10.5px;letter-spacing:.08em;margin:0}
html.vv-shelf .card h3{font-size:15px;margin:2px 0 1px}
html.vv-shelf .card .ct{font-size:11px}
html.vv-shelf .card .desc{font-size:12px;line-height:1.35;min-height:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
html.vv-shelf .card .ccaution{font-size:11px}
html.vv-shelf .card .price{margin-top:8px;font-size:12px}
/* EVEN CARDS (Kevin, 2026-10-08): one height per row, price + Add to cart pinned to the bottom, one square white frame per photo. */
#grid .card{display:flex;flex-direction:column}#grid .card>.pimg{flex:0 0 auto}#grid .card .body{flex:1 1 auto;display:flex;flex-direction:column}#grid .card .price{margin-top:auto!important;padding-top:8px}#grid .card .ph-prod{aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;margin:0}#grid .card .ph-prod img{width:100%;height:100%;object-fit:contain;padding:8%;box-sizing:border-box}
html.vv-shelf .card .price b{font-size:16px}
html.vv-shelf .card .price .save{display:none}
html.vv-shelf .card .add{margin-top:8px}
html.vv-shelf .card .add .btn{padding:9px;font-size:13.5px;border-radius:10px;background:#0f1b2a;color:#fff!important}
html.vv-shelf .card .viewp{display:none}
html.vv-shelf .bundles{padding:18px 0 8px;background:transparent}
html.vv-shelf .bundle-grid{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px;scrollbar-width:none}
html.vv-shelf .bundle-grid>*{flex:0 0 min(280px,78vw);scroll-snap-align:start}
html.vv-shelf #how{padding:22px 0}
html.vv-shelf .final{background:#fff;color:#0f1b2a}
/* the phone checkout bar: cart count + Checkout, fixed at the bottom; the floating cart button is not needed under it */
.vv-cbar{display:none}
@media(max-width:760px){
  html.vv-shelf:not(.vv-fn-on) .vv-cbar{display:flex;position:fixed;left:12px;right:12px;bottom:12px;z-index:70;align-items:center;justify-content:space-between;
    background:#0f1b2a;color:#fff;border-radius:14px;padding:10px 10px 10px 16px;box-shadow:0 8px 24px rgba(15,27,42,.28);font-size:14px;font-weight:600}
  .vv-cbar button{border:0;border-radius:10px;padding:10px 16px;font-weight:800;font-size:14px;background:var(--vv-accent);color:var(--vv-on-accent)}
  html.vv-shelf:not(.vv-fn-on) #rc-fab{display:none!important}
  html.vv-shelf:not(.vv-fn-on) body{padding-bottom:84px}
}
/* THE OWNER LANDING PAGE (Kevin, 2026-10-07; js/store.js funnel()): the product grid is shown as a live preview inside
   "See your store", so the full grid and the store's own strip are not repeated on the pitch. */
html.vv-fn-on #shop,html.vv-fn-on main>.vv-curated{display:none!important}
.vv-fn-talk-hero{margin-top:18px}
.vv-fn-talk-hero p{font-weight:600;margin:0 0 8px;color:#0f1b2a}
.vv-fn-talk-hero .vv-fn-talk-row{justify-content:flex-start}
.vv-fn-sec{padding:36px 0}
.vv-fn-sec h2{font-family:var(--display),sans-serif;font-size:clamp(25px,5.4vw,36px);line-height:1.15;margin:0 0 14px;color:#0f1b2a}
.vv-fn-p{font-size:16.5px;line-height:1.55;color:#334155;max-width:40em;margin:0 0 14px}
.vv-fn-chips{display:flex;flex-wrap:wrap;gap:8px}
.vv-fn-chips span{background:#f1f5f8;border:1px solid #e2e8f0;border-radius:999px;padding:7px 12px;font-size:13.5px;font-weight:600;color:#0f1b2a}
@media(max-width:899px){.vv-fn-cards{grid-template-columns:1fr 1fr;gap:10px}.vv-fn-card{padding:14px}.vv-fn-card .vv-fn-amt{font-size:19px}.vv-fn-card p{font-size:14px}}
@media(max-width:360px){.vv-fn-cards{grid-template-columns:1fr}}
.vv-fn-sheet{margin-top:12px;min-height:44px;font-size:14px;padding:0 16px}.vv-fn-sheets{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.vv-fn-pen{margin-top:0;min-height:44px;font-size:14px;padding:0 16px;background:#fff;cursor:pointer;font-family:inherit}.vv-fn-penform{width:100%;margin-top:6px}.vv-fn-pf{display:grid;gap:10px;width:100%;padding:14px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}.vv-fn-pf-row{display:grid;gap:4px;font-size:13px;font-weight:600;color:#334155}.vv-fn-pf-row input,.vv-fn-pf-row select{min-height:44px;padding:0 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;font-size:16px;font-weight:400;background:#fff;color:#0f1b2a;width:100%;box-sizing:border-box}.vv-fn-pf-chk{display:flex;gap:8px;align-items:flex-start;font-size:14px;color:#0f1b2a}.vv-fn-pf-chk input{width:20px;height:20px;margin-top:1px}.vv-fn-pf-go{width:100%;border:0;cursor:pointer;font-family:inherit;font-size:16px}.vv-fn-pf-msg{margin:0;font-size:14px;color:#334155}
.vv-fn-see{background:#f5f8fc}
.vv-fn-frame{background:#f6f8fa;border:1px solid #e2e8f0;border-radius:20px;padding:12px;max-width:560px;box-shadow:0 10px 30px rgba(15,27,42,.08)}
.vv-fn-frame .vv-curated{margin:0 0 12px}
.vv-fn-mini{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vv-fn-mcard{display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid #e6ebf0;border-radius:14px;padding:10px;color:#0f1b2a!important;text-decoration:none}
.vv-fn-mcard img{width:100%;aspect-ratio:1/1;object-fit:contain;background:#f1f5f8;border-radius:10px;padding:8%}
.vv-fn-mcard b{font-size:14px}.vv-fn-mcard span{font-size:14px;font-weight:800}
.vv-fn-open{margin:12px 0 0;width:100%;justify-content:center}
.vv-fn-faq{margin-top:26px;max-width:720px}
.vv-fn-faq-h{font-size:20px;margin:0 0 10px;color:#0f1b2a}
.vv-fn-faq details{border-top:1px solid #e2e8f0;padding:12px 0}
.vv-fn-faq details:last-child{border-bottom:1px solid #e2e8f0}
.vv-fn-faq summary{cursor:pointer;font-weight:700;color:#0f1b2a;font-size:16px;list-style:none}
.vv-fn-faq summary::after{content:"+";float:right;font-weight:800;color:#4a5a6c}
.vv-fn-faq details[open] summary::after{content:"\2013"}
.vv-fn-faq details p{margin:8px 0 0;color:#4a5a6c;font-size:15px;line-height:1.5}
.vv-fn-sticky{display:none}
@media(max-width:760px){
  html.vv-fn-on .vv-fn-sticky{display:flex;gap:8px;position:fixed;left:12px;right:12px;bottom:12px;z-index:80;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:8px;box-shadow:0 10px 28px rgba(15,27,42,.22)}
  .vv-fn-sticky .vv-fn-sticky-go{flex:1;min-height:48px;font-size:16px;padding:0 12px}
  .vv-fn-sticky-call{display:inline-flex;align-items:center;justify-content:center;min-width:76px;border-radius:999px;border:1.5px solid #cbd5e1;font-weight:700;color:#0f1b2a!important;text-decoration:none}
  html.vv-fn-on body{padding-bottom:84px}
}
html.vv-shelf .hero,html.vv-shelf .hero .hero-inner{min-height:0!important}
/* A product the owner switched off, and any bundle that holds it (store.js products(), Kevin 2026-10-08). */
#grid [data-vv-off],#bundle-grid [data-vv-off]{display:none!important}

/* The business's own listing in the footer, and the credit on a Google photo (2026-10-08). */
.vv-place{margin-top:10px;font-size:13.5px;line-height:1.5;color:var(--ink-soft,#475569)}
.vv-place-row{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:4px}
.vv-place a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.vv-photo-credit{position:absolute;right:8px;bottom:8px;z-index:2;padding:2px 8px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:11px;line-height:1.6;pointer-events:none}
