@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;0,9..40,800;0,9..40,900;1,9..40,400;1,9..40,700&family=Playfair+Display:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&display=swap');
:root{--primary:#ece9e2;--primary-dark:#d4cfc4;--accent:#212a2f;--accent-dark:#0f1416;--cream:#faf9f7;--ink:#212a2f;--white:#ffffff;--muted:#6B7A8D;--bg:#faf9f7;--radius:24px;--shadow:0 20px 60px rgba(26,31,54,.08);--shadow-hover:0 30px 80px rgba(26,31,54,.14);--container:1200px;--cloud:#F0F4FA}
*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{margin:0;padding:0;font-family:"DM Sans",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}.container{max-width:var(--container);margin:0 auto;padding:0 24px}
/* Landmarks + responsive images.
   height:auto above is load-bearing: every <img> now carries real width/height
   attributes (CLS), and without height:auto max-width:100% would squash the
   width while the attribute pinned the height.
   picture{display:contents} keeps the <img> itself the grid/flex item, so
   .showcase-grid img, .thumbs img, .au-shots img etc. lay out identically
   whether or not a WebP sibling exists. source{display:none} is required with
   it: under display:contents the <source> ALSO becomes a grid/flex item and
   silently steals a track (it took the 64px thumbnail column in the checkout
   order summary). Hiding it costs nothing — picture source selection is done
   by the HTML resource algorithm, not by CSS display.
   .site-header{display:contents} adds the banner landmark WITHOUT creating a
   box — .nav keeps position:sticky against the body, so the header is a pure
   semantic wrapper with zero visual change. */
main{display:block}picture{display:contents}picture>source{display:none}.site-header{display:contents}
@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes softPulse{0%,100%{opacity:.6}50%{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}

/* Nav */
.nav{position:sticky;top:0;background:rgba(255,255,255,.85);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);z-index:50;border-bottom:1px solid rgba(0,0,0,.06)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;max-width:var(--container);margin:0 auto;gap:16px}
.brand{display:flex;align-items:center;gap:10px;font-weight:900;font-size:22px;letter-spacing:3px;flex-shrink:0;color:var(--ink)}
.nav-links{display:flex;gap:28px;font-weight:600;font-size:14px;color:var(--muted);letter-spacing:.3px}.nav-links a{white-space:nowrap;transition:color .2s}.nav-links a:hover{color:var(--primary)}
.nav-cta{background:var(--ink);color:var(--white);padding:12px 26px;border-radius:999px;font-weight:700;font-size:14px;transition:all .2s;box-shadow:0 4px 20px rgba(26,31,54,.18);white-space:nowrap;flex-shrink:0;letter-spacing:.5px}.nav-cta:hover{transform:translateY(-1px);box-shadow:0 8px 30px rgba(26,31,54,.28);background:var(--primary-dark)}
.nav-cart{position:relative;background:none;border:none;cursor:pointer;color:var(--ink);padding:8px}.nav-cart .badge{position:absolute;top:0;right:0;background:var(--primary);color:#fff;font-size:10px;font-weight:800;min-width:18px;height:18px;border-radius:999px;display:grid;place-items:center;opacity:0;transition:opacity .2s}.nav-cart .badge.has-items{opacity:1}

/* Announce */
.announce{background:var(--ink);color:var(--white);text-align:center;padding:10px 16px;font-size:12px;letter-spacing:1px;font-weight:600}.announce b{color:var(--accent)}

/* Hero */
.hero{padding:80px 0 60px;background:linear-gradient(180deg,var(--cloud) 0%,var(--cream) 60%,var(--cloud) 100%);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;top:-120px;right:-100px;width:500px;height:500px;background:radial-gradient(circle,rgba(0,0,0,.04),transparent 70%);border-radius:50%;animation:softPulse 6s ease-in-out infinite}
.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr 1fr;gap:56px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:8px;background:rgba(0,0,0,.04);color:var(--primary-dark);font-weight:800;padding:8px 18px;border-radius:999px;font-size:11px;letter-spacing:1.6px;text-transform:uppercase;margin-bottom:20px;border:1px solid rgba(0,0,0,.06)}
.h1{font-size:clamp(40px,5.5vw,72px);line-height:1.0;font-weight:900;letter-spacing:-2px;margin:0 0 22px}.h1 .accent{color:var(--primary);font-style:italic;font-family:"Playfair Display",Georgia,serif;font-weight:900}
.lede{font-size:17px;color:var(--muted);line-height:1.7;max-width:540px;margin:0 0 32px}
.cta-row{display:flex;gap:14px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:10px;padding:18px 34px;border-radius:999px;font-weight:800;font-size:15px;transition:all .25s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;letter-spacing:.3px}
.btn-primary{background:var(--ink);color:var(--white);box-shadow:0 12px 40px rgba(26,31,54,.22)}.btn-primary:hover{transform:translateY(-3px);box-shadow:0 18px 50px rgba(26,31,54,.32)}
.btn-ghost{background:var(--white);color:var(--ink);border:2px solid rgba(26,31,54,.1)}.btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.hero-media .card{background:var(--white);border-radius:28px;overflow:hidden;box-shadow:0 30px 80px rgba(26,31,54,.1);transition:transform .4s cubic-bezier(.4,0,.2,1)}.hero-media .card:hover{transform:translateY(-6px)}.hero-media .card img{transition:transform .6s}.hero-media .card:hover img{transform:scale(1.03)}
.trust-row{display:flex;align-items:center;gap:18px;margin-top:28px;font-size:14px;color:var(--muted)}.stars{color:var(--accent-dark);letter-spacing:2px;font-size:17px}

/* Features */
.features{padding:90px 0;background:var(--white)}
.section-title{font-size:clamp(30px,3.8vw,52px);font-weight:900;letter-spacing:-1.5px;margin:0 0 14px;line-height:1.08}.section-title em{font-style:italic;font-family:"Playfair Display",Georgia,serif;color:var(--primary)}
.section-sub{color:var(--muted);max-width:640px;margin:0 0 48px;font-size:16px;line-height:1.7}
.feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.feat{background:var(--cloud);border:1px solid rgba(0,0,0,.04);border-radius:22px;padding:32px 26px;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}
.feat::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--accent-dark));opacity:0;transition:opacity .3s}.feat:hover{transform:translateY(-8px);box-shadow:var(--shadow-hover)}.feat:hover::before{opacity:1}
.feat .icon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:var(--white);display:grid;place-items:center;font-size:24px;font-weight:900;margin-bottom:20px;box-shadow:0 8px 28px rgba(0,0,0,.15)}
.feat h3{margin:0 0 10px;font-size:17px;font-weight:800;color:var(--ink)}.feat p{margin:0;color:var(--muted);font-size:14px;line-height:1.65}

/* Stats strip */
.strip{background:linear-gradient(135deg,var(--ink) 0%,#2A3352 50%,var(--primary-dark) 100%);color:var(--white);padding:80px 0;position:relative;overflow:hidden}
.strip-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center;position:relative;z-index:1}
.stat .num{font-size:52px;font-weight:900;color:var(--white);letter-spacing:-2px;line-height:1;font-family:"Playfair Display",Georgia,serif;font-style:italic}.stat .lab{margin-top:10px;font-size:11px;opacity:.8;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--accent)}

/* Showcase */
.showcase{padding:90px 0;background:var(--cream)}
.showcase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:30px}.showcase-grid img{border-radius:20px;aspect-ratio:1/1;object-fit:cover;transition:all .3s;box-shadow:0 8px 30px rgba(26,31,54,.06)}.showcase-grid img:hover{transform:translateY(-4px);box-shadow:var(--shadow)}

/* Bundles section */
.bundles-section{padding:90px 0;background:var(--white);border-top:1px solid rgba(0,0,0,.04)}
.bundles-section .wrap{display:grid;grid-template-columns:1fr 1.15fr;gap:56px;align-items:center}
.bundles-section .eyebrow{background:var(--ink);color:var(--accent);border-color:transparent}
.bundles-section .section-title{margin-top:14px;font-size:clamp(26px,3vw,40px);line-height:1.08}
.bundles-section .section-sub{font-size:15px}
.bundles-section .picker{background:var(--cloud);padding:28px;border-radius:24px;border:1px solid rgba(0,0,0,.04)}
.bundles-section .picker .bundle-card{background:#fff}
.bundles-section .bundle-cta{margin-top:10px;width:100%;padding:18px;background:var(--ink);color:#fff;border-radius:14px;font-weight:800;font-size:16px;display:flex;align-items:center;justify-content:center;gap:10px;transition:all .2s;box-shadow:0 8px 30px rgba(26,31,54,.2);text-decoration:none;border:none;cursor:pointer}
.bundles-section .bundle-cta:hover{transform:translateY(-2px);background:var(--primary-dark)}
.bundles-section .picker .afterpay{margin-top:14px;justify-content:center}

/* FAQ */
.faq{padding:90px 0;background:var(--white)}.faq details{background:var(--cloud);border:1px solid rgba(0,0,0,.04);border-radius:18px;padding:24px 28px;margin-bottom:14px;transition:all .2s}.faq details:hover{border-color:rgba(0,0,0,.08)}.faq summary{cursor:pointer;font-weight:800;font-size:16px;outline:none;list-style:none;color:var(--ink)}.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";float:right;color:var(--primary);font-size:24px;font-weight:400}.faq details[open] summary::after{content:"\2013"}.faq p{margin:14px 0 0;color:var(--muted);line-height:1.7}

/* Footer */
footer{background:var(--ink);color:#94a3b8;padding:64px 0 30px}.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}.foot-grid h4{color:var(--white);margin:0 0 16px;font-size:12px;letter-spacing:2px;text-transform:uppercase;font-weight:800}.foot-grid a{display:block;padding:6px 0;font-size:14px;color:#94a3b8;transition:color .15s}.foot-grid a:hover{color:var(--accent)}.foot-bot{border-top:1px solid #2A3352;margin-top:44px;padding-top:22px;font-size:13px;opacity:.7;display:flex;justify-content:space-between}

/* Afterpay */
.afterpay{display:flex;align-items:center;gap:10px;margin:-6px 0 18px;color:#475569;font-size:14px}.afterpay-badge{display:inline-flex;align-items:center;gap:6px;background:#b2fce4;color:#000;font-weight:900;font-size:12px;padding:5px 10px;border-radius:6px;letter-spacing:.3px}.afterpay-badge::before{content:"";width:10px;height:10px;background:#000;border-radius:50%;box-shadow:6px 0 0 #000}

/* Bundle cards */
.bundles{margin:22px 0 24px}.bundles-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.bundles-head .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px;font-weight:700}.bundles-head .free-ship{font-size:12px;color:var(--primary);font-weight:700;display:inline-flex;align-items:center;gap:6px}.bundles-head .free-ship::before{content:"\2713";background:var(--primary);color:#fff;width:16px;height:16px;border-radius:50%;display:inline-grid;place-items:center;font-size:11px}
.bundle-card{position:relative;display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:16px;padding:20px 22px;border:1.5px solid rgba(0,0,0,.09);border-radius:16px;background:#fff;cursor:pointer;transition:border-color .2s,box-shadow .2s,background .2s,transform .2s;margin-bottom:12px}
.bundle-card:hover{border-color:rgba(0,0,0,.2);box-shadow:0 6px 18px -8px rgba(0,0,0,.12);transform:translateY(-1px)}.bundle-card.active{border-color:var(--primary);border-width:2px;padding:19px 21px;box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 14%,transparent),0 10px 28px -12px rgba(0,0,0,.18);background:#fff}
.bundle-card .radio{width:24px;height:24px;border:2px solid rgba(0,0,0,.15);border-radius:50%;position:relative;flex-shrink:0}.bundle-card.active .radio{border-color:var(--primary)}.bundle-card.active .radio::after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--primary)}
.bundle-card .info .title{font-weight:800;font-size:16px;color:var(--ink);margin-bottom:3px}.bundle-card .info .sub{font-size:12px;color:var(--muted)}.bundle-card .info .perk{display:inline-block;margin-top:8px;font-size:11px;color:var(--ink);background:var(--accent);padding:6px 12px;border-radius:12px;font-weight:800;letter-spacing:.3px}
.bundle-card .pricing{text-align:right;display:grid;gap:3px;justify-items:end}.bundle-card .pricing .now{font-size:23px;font-weight:800;color:var(--ink);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.bundle-card.active .pricing .now{color:var(--primary)}.bundle-card .pricing .was{font-size:13px;color:var(--muted);text-decoration:line-through;font-variant-numeric:tabular-nums}.bundle-card .pricing .save{font-size:11px;font-weight:800;letter-spacing:.02em;color:#0E9257;background:rgba(14,146,87,.09);padding:3px 8px;border-radius:99px;white-space:nowrap}.bundle-card .info .per{font-size:12.5px;color:var(--muted);margin-top:5px;font-variant-numeric:tabular-nums}@media(max-width:520px){.bundle-card{grid-template-columns:24px minmax(0,1fr);row-gap:12px;padding:18px}.bundle-card .pricing{grid-column:1/-1;justify-items:start;text-align:left;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.bundle-card .badge{right:auto;left:18px}}
.bundles{padding-top:12px}.bundle-card{z-index:1}.bundle-card.active{z-index:2}.bundle-card .badge{position:absolute;top:-9px;right:16px;padding:4px 11px;border-radius:999px;font-size:9.5px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;line-height:1.5;white-space:nowrap;z-index:3}.bundle-card .badge.popular{background:var(--ink);color:#fff;box-shadow:0 3px 10px -2px rgba(0,0,0,.3)}.bundle-card.active .badge.popular{background:var(--primary);color:#fff}.bundle-card .badge.best{background:#fff;color:var(--ink);border:1.5px solid var(--ink)}

/* Cart drawer */
.cart-overlay{position:fixed;inset:0;background:rgba(26,31,54,.5);backdrop-filter:blur(4px);z-index:9990;opacity:0;visibility:hidden;transition:all .3s}.cart-overlay.open{opacity:1;visibility:visible}
.cart-drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;background:var(--white);z-index:9991;transform:translateX(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:-16px 0 60px rgba(26,31,54,.15)}.cart-drawer.open{transform:translateX(0)}
.cart-head{display:flex;justify-content:space-between;align-items:center;padding:22px 24px 18px;border-bottom:1px solid rgba(0,0,0,.06)}.cart-head h3{margin:0;font-size:20px;font-weight:900;color:var(--ink)}.cart-head .count{background:var(--primary);color:#fff;font-size:12px;font-weight:800;padding:2px 8px;border-radius:999px;margin-left:8px}.cart-head .close-cart{width:36px;height:36px;border-radius:50%;border:0;background:var(--cloud);color:var(--ink);font-size:18px;cursor:pointer;display:grid;place-items:center;transition:background .15s}.cart-head .close-cart:hover{background:rgba(0,0,0,.06)}
.free-ship-bar{padding:14px 24px;background:var(--cloud);border-bottom:1px solid rgba(0,0,0,.04)}.free-ship-bar .text{font-size:13px;color:var(--muted);margin-bottom:8px;text-align:center}.free-ship-bar .text b{color:var(--primary)}.free-ship-bar .bar{height:6px;background:rgba(0,0,0,.06);border-radius:999px;overflow:hidden}.free-ship-bar .bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent-dark));border-radius:999px;transition:width .4s ease}
.cart-items{flex:1;overflow-y:auto;padding:16px 24px}
.cart-item{display:grid;grid-template-columns:72px 1fr;gap:14px;padding:16px 0;border-bottom:1px solid rgba(0,0,0,.04);position:relative}.cart-item:last-child{border-bottom:none}.cart-item .thumb{width:72px;height:72px;border-radius:14px;overflow:hidden;background:var(--cloud);border:1px solid rgba(0,0,0,.04)}.cart-item .thumb img{width:100%;height:100%;object-fit:cover}.cart-item .item-info{display:flex;flex-direction:column;gap:4px}.cart-item .item-name{font-weight:800;font-size:14px;color:var(--ink);line-height:1.3}.cart-item .item-variant{font-size:12px;color:var(--muted)}.cart-item .item-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:auto}.cart-item .item-qty{display:inline-flex;align-items:center;border:2px solid rgba(0,0,0,.06);border-radius:10px;overflow:hidden}.cart-item .item-qty button{background:transparent;border:0;padding:6px 10px;font-size:14px;cursor:pointer;color:var(--ink);font-weight:700}.cart-item .item-qty button:hover{background:var(--cloud)}.cart-item .item-qty span{padding:0 10px;font-size:14px;font-weight:800;color:var(--ink)}.cart-item .item-price{font-weight:800;font-size:16px;color:var(--primary)}.cart-item .remove{position:absolute;top:12px;right:0;background:none;border:0;color:#9a8ba6;font-size:16px;cursor:pointer;padding:4px}.cart-item .remove:hover{color:var(--primary)}
.cart-empty{text-align:center;padding:48px 20px;color:var(--muted)}.cart-empty .icon{font-size:48px;margin-bottom:12px}.cart-empty p{font-size:15px;line-height:1.6}.cart-empty a{color:var(--primary);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.cart-footer{padding:20px 24px;border-top:1px solid rgba(0,0,0,.04)}.cart-subtotal{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.cart-subtotal .label{font-size:15px;color:var(--muted);font-weight:600}.cart-subtotal .amount{font-size:22px;font-weight:900;color:var(--ink)}.cart-afterpay{font-size:12px;color:var(--muted);margin-bottom:16px;text-align:right}.cart-afterpay b{color:var(--ink)}
.cart-checkout{width:100%;padding:18px;background:linear-gradient(135deg,var(--ink),var(--primary-dark));color:#fff;border:0;border-radius:14px;font-weight:800;font-size:16px;cursor:pointer;box-shadow:0 10px 36px rgba(26,31,54,.25);transition:all .2s;letter-spacing:.3px}.cart-checkout:hover{transform:translateY(-2px);box-shadow:0 14px 44px rgba(26,31,54,.35)}.cart-trust{display:flex;gap:14px;justify-content:center;margin-top:14px;font-size:11px;color:var(--muted)}

/* PDP */
.pdp{padding:40px 0 80px;background:var(--cream)}.pdp-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:start}
.gallery{position:sticky;top:80px;display:grid;grid-template-columns:80px 1fr;gap:14px}.thumbs{display:flex;flex-direction:column;gap:8px}.thumbs img{width:80px;height:80px;border-radius:12px;object-fit:cover;cursor:pointer;border:2px solid transparent;transition:all .15s;opacity:.7}.thumbs img.active{border-color:var(--primary);opacity:1;box-shadow:0 4px 12px rgba(0,0,0,.1)}.thumbs img:hover{opacity:1}.main-img img{border-radius:22px;box-shadow:0 20px 60px rgba(26,31,54,.08)}
.pdp h1{font-size:clamp(24px,3vw,34px);font-weight:900;letter-spacing:-0.8px;margin:0 0 12px;line-height:1.15}
.rating{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--muted);margin-bottom:18px}.rating.above-title{margin-bottom:8px}
.price{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.price .now{font-size:36px;font-weight:900;color:var(--ink);letter-spacing:-1px}.price .was{font-size:20px;color:#9a8ba6;text-decoration:line-through}.price .save{background:var(--ink);color:var(--accent);font-weight:800;padding:5px 12px;border-radius:999px;font-size:12px;letter-spacing:.5px}
.variants{margin:24px 0}.variants .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:10px;font-weight:700;display:flex;align-items:center;gap:8px}
.step-n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--primary);color:#fff;font-size:11px;font-weight:800;letter-spacing:0;flex-shrink:0}
.bundles-head .label{display:flex;align-items:center;gap:8px}.swatches{display:flex;gap:10px}.swatch{padding:11px 20px;border:2px solid rgba(0,0,0,.06);border-radius:14px;cursor:pointer;font-size:14px;font-weight:700;transition:all .15s;background:var(--white);color:var(--ink)}.swatch:hover{border-color:rgba(0,0,0,.12)}.swatch.active{border-color:var(--primary);background:var(--cloud);color:var(--primary)}
.qty-row{display:flex;gap:12px;align-items:center;margin:20px 0 28px}
.buy{width:100%;padding:22px;background:linear-gradient(135deg,var(--ink),var(--primary-dark));color:var(--white);border:0;border-radius:16px;font-weight:800;font-size:17px;cursor:pointer;box-shadow:0 12px 40px rgba(26,31,54,.25);transition:all .2s;letter-spacing:.3px}.buy:hover{transform:translateY(-2px);box-shadow:0 16px 50px rgba(26,31,54,.35)}
.pdp-trust{display:flex;gap:14px;margin-top:16px;color:var(--muted);font-size:13px}.pdp-trust span{display:inline-flex;align-items:center;gap:6px}
.pdp-feats{margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.pdp-feats div{background:var(--cloud);border:1px solid rgba(0,0,0,.04);border-radius:14px;padding:16px 18px;font-size:14px;color:var(--ink)}.pdp-feats b{color:var(--primary)}

/* Reviews */
.reviews-section{padding:80px 0;background:var(--white);border-top:1px solid rgba(0,0,0,.04)}
.reviews-head{display:grid;grid-template-columns:auto 1fr auto;gap:32px;align-items:center;margin-bottom:32px;padding-bottom:28px;border-bottom:1px solid rgba(0,0,0,.04)}
.reviews-score{text-align:center}.reviews-score .big{font-size:52px;font-weight:900;color:var(--ink);line-height:1;font-family:"Playfair Display",serif}.reviews-score .stars{color:var(--accent-dark);font-size:20px;margin:6px 0;letter-spacing:3px}.reviews-score .count{font-size:13px;color:var(--muted)}
.reviews-bars{display:flex;flex-direction:column;gap:6px}.bar-row{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--muted);font-weight:700}.bar-row .bar{flex:1;height:8px;background:rgba(0,0,0,.04);border-radius:999px;overflow:hidden}.bar-row .bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-dark),var(--accent));border-radius:999px;transition:width .4s}
.btn-write{background:var(--ink);color:#fff;border:0;padding:14px 28px;border-radius:14px;font-weight:800;font-size:14px;cursor:pointer;transition:all .2s;letter-spacing:.3px}.btn-write:hover{transform:translateY(-1px);background:var(--primary-dark)}
.reviews-list{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.review-card{background:var(--cloud);border:1px solid rgba(0,0,0,.02);border-radius:18px;padding:24px;transition:all .2s}.review-card:hover{box-shadow:0 8px 30px rgba(26,31,54,.06)}
.review-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent-dark));color:#fff;display:grid;place-items:center;font-weight:800;font-size:14px;flex-shrink:0}.meta .name{font-weight:800;font-size:14px}.meta .date{font-size:11px;color:var(--muted)}.meta .verified{font-size:11px;color:var(--primary);font-weight:700}.review-stars{color:var(--accent-dark);font-size:14px;letter-spacing:2px;margin-bottom:8px}.review-title{font-weight:800;font-size:15px;margin-bottom:6px}.review-body{font-size:14px;color:var(--muted);line-height:1.6}
.reviews-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:24px}.reviews-pager button{background:var(--cloud);border:1px solid rgba(0,0,0,.06);color:var(--ink);padding:10px 20px;border-radius:12px;font-weight:700;font-size:13px;cursor:pointer;transition:all .15s}.reviews-pager button:hover:not(:disabled){background:var(--primary);color:#fff}.reviews-pager button:disabled{opacity:.4;cursor:default}.reviews-pager .page-info{font-size:13px;color:var(--muted)}
.share-card{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;background:var(--cloud);border:1px solid rgba(0,0,0,.04);border-radius:20px;padding:28px;margin-top:32px}.share-icon{font-size:32px}.share-copy h4{margin:0 0 6px;font-size:16px;font-weight:800}.share-copy p{margin:0;color:var(--muted);font-size:14px;line-height:1.5}

/* Review modal */
.review-modal{position:fixed;inset:0;background:rgba(26,31,54,.7);z-index:10000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(6px)}.review-modal.open{display:flex}
.form-card{background:var(--white);border-radius:24px;padding:36px;width:480px;max-width:95vw;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 30px 80px rgba(26,31,54,.2)}.form-card .close{position:absolute;top:16px;right:16px;background:var(--cloud);border:0;width:36px;height:36px;border-radius:50%;font-size:18px;cursor:pointer;color:var(--ink);display:grid;place-items:center}.form-card h3{font-size:22px;font-weight:900;margin:0 0 6px}.form-sub{color:var(--muted);font-size:14px;margin:0 0 24px}.form-card label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:16px}.form-card input,.form-card textarea,.form-card select{width:100%;padding:12px 14px;border:2px solid rgba(0,0,0,.06);border-radius:12px;font-size:14px;font-family:inherit;margin-top:6px;outline:none;transition:border-color .15s}.form-card input:focus,.form-card textarea:focus{border-color:var(--primary)}.form-card textarea{min-height:100px;resize:vertical}
.star-picker{display:flex;gap:6px;margin-top:8px}.star-picker .star{font-size:28px;cursor:pointer;color:#d1d5db;transition:color .1s}.star-picker .star.filled{color:var(--accent-dark)}
.consent-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}.consent-row input[type="checkbox"]{margin-top:3px;accent-color:var(--primary)}
.submit-btn{width:100%;padding:16px;background:var(--ink);color:#fff;border:0;border-radius:14px;font-weight:800;font-size:16px;cursor:pointer;transition:all .2s}.submit-btn:hover{background:var(--primary-dark)}
.form-status{text-align:center;margin-top:12px;font-size:14px;font-weight:700;min-height:20px}.form-status.success{color:#10b981}.form-status.error{color:#ef4444}

/* Legal pages */
.legal-hero{padding:64px 0 40px;background:linear-gradient(180deg,var(--cloud) 0%,var(--cream) 100%)}.legal-hero h1{font-size:clamp(28px,4vw,48px);font-weight:900;letter-spacing:-1px;margin:0}.legal-hero h1 em{font-style:italic;font-family:"Playfair Display",Georgia,serif;color:var(--primary)}.legal-hero .updated{color:var(--muted);font-size:13px;margin-top:8px}
.legal-body{max-width:780px;padding:48px 24px 80px}.legal-body h2{font-size:22px;font-weight:800;margin:36px 0 12px;color:var(--ink)}.legal-body p,.legal-body li{color:var(--muted);font-size:15px;line-height:1.7}.legal-body ul,.legal-body ol{padding-left:24px}.legal-body a{color:var(--primary);font-weight:600}
.legal-disclaimer{background:var(--cloud);border:1px solid rgba(0,0,0,.04);border-radius:14px;padding:18px 22px;margin-bottom:32px;font-size:13px;color:var(--muted);line-height:1.6}

/* Contact */
.contact-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;padding:48px 0 80px}.contact-info h2{font-size:24px;font-weight:900;margin:0 0 12px}.contact-info p{color:var(--muted);line-height:1.6;margin:0 0 28px}.contact-info .row{display:flex;gap:14px;align-items:flex-start;margin-bottom:20px}.contact-info .icon{width:40px;height:40px;border-radius:12px;background:var(--cloud);display:grid;place-items:center;font-size:18px;flex-shrink:0}.contact-info .label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-weight:700;margin-bottom:2px}.contact-info .value{font-size:14px;color:var(--ink)}.contact-info .value a{color:var(--primary);font-weight:600}
.contact-form{background:var(--white);border:1px solid rgba(0,0,0,.04);border-radius:24px;padding:36px;box-shadow:var(--shadow)}.contact-form h3{font-size:20px;font-weight:900;margin:0 0 6px}.contact-form .sub{color:var(--muted);font-size:14px;margin:0 0 24px}.contact-form label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:16px}.contact-form input,.contact-form textarea,.contact-form select{width:100%;padding:12px 14px;border:2px solid rgba(0,0,0,.06);border-radius:12px;font-size:14px;font-family:inherit;margin-top:6px;outline:none;transition:border-color .15s}.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{border-color:var(--primary)}.contact-form textarea{min-height:100px;resize:vertical}.contact-form .submit{width:100%;padding:16px;background:var(--ink);color:#fff;border:0;border-radius:14px;font-weight:800;font-size:16px;cursor:pointer;transition:all .2s;margin-top:8px}.contact-form .submit:hover{background:var(--primary-dark)}.contact-form .status{text-align:center;margin-top:12px;font-size:14px;font-weight:700}.contact-form .status.success{color:#10b981}.contact-form .status.error{color:#ef4444}

/* Checkout */
.checkout-header{background:var(--white);border-bottom:1px solid rgba(0,0,0,.06);padding:18px 24px;display:flex;align-items:center;justify-content:space-between}.checkout-header .brand{font-weight:900;font-size:20px;letter-spacing:3px;text-decoration:none;color:var(--ink);display:flex;align-items:center;gap:8px}.checkout-header .secure{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.checkout-wrap{max-width:1100px;margin:0 auto;padding:40px 24px 80px;display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:start}.checkout-form h2{font-size:28px;font-weight:900;margin-bottom:6px;letter-spacing:-0.5px}.checkout-form .sub{color:var(--muted);font-size:14px;margin-bottom:28px}
.section-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);margin-bottom:12px;margin-top:28px}.section-label:first-of-type{margin-top:0}
.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:6px}.field input,.field select{width:100%;padding:14px 16px;border:2px solid rgba(0,0,0,.06);border-radius:12px;font-size:15px;font-family:inherit;color:var(--ink);background:var(--white);transition:border-color .15s;outline:none}.field input:focus,.field select:focus{border-color:var(--primary)}
.row-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
#payment-element{padding:16px;border:2px solid rgba(0,0,0,.06);border-radius:14px;background:var(--white);min-height:120px;transition:border-color .15s}#payment-element:focus-within{border-color:var(--primary)}
.pay-btn{width:100%;margin-top:24px;padding:20px;background:linear-gradient(135deg,var(--ink),var(--primary-dark));color:var(--white);border:0;border-radius:14px;font-weight:900;font-size:18px;cursor:pointer;box-shadow:0 12px 36px rgba(26,31,54,.3);transition:all .2s;display:flex;align-items:center;justify-content:center;gap:10px}.pay-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 16px 44px rgba(26,31,54,.4)}.pay-btn:disabled{opacity:.6;cursor:wait}.pay-btn .spinner{display:none;width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}.pay-btn.loading .spinner{display:block}.pay-btn.loading .text{display:none}
.error-msg{color:#d4003c;font-size:13px;margin-top:12px;font-weight:600;min-height:20px}.trust-badges{display:flex;gap:16px;justify-content:center;margin-top:16px;font-size:11px;color:var(--muted)}
.order-summary{background:var(--white);border:1px solid rgba(0,0,0,.04);border-radius:22px;padding:32px;position:sticky;top:24px;box-shadow:var(--shadow)}.order-summary h3{font-size:18px;font-weight:900;margin-bottom:20px}
.summary-item{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;padding-bottom:20px;border-bottom:1px solid rgba(0,0,0,.04);margin-bottom:20px}.summary-item img{width:64px;height:64px;border-radius:12px;object-fit:cover;background:var(--cloud);border:1px solid rgba(0,0,0,.04)}.summary-item .name{font-weight:800;font-size:14px}.summary-item .variant{font-size:12px;color:var(--muted)}.summary-item .price{font-weight:900;font-size:16px;color:var(--primary)}
.summary-row{display:flex;justify-content:space-between;padding:8px 0;font-size:14px;color:var(--muted)}.summary-row.total{font-size:20px;font-weight:900;color:var(--ink);padding-top:16px;margin-top:8px;border-top:2px solid rgba(0,0,0,.04)}.summary-row .free{color:var(--primary);font-weight:700}
.afterpay-note,.secure-note{text-align:center;margin-top:14px;font-size:12px;color:var(--muted)}.afterpay-note b,.secure-note b{color:var(--ink)}
.guarantees{margin-top:24px;padding-top:20px;border-top:1px solid rgba(0,0,0,.04)}.guarantee{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13px;color:var(--muted)}.guarantee .icon{width:32px;height:32px;border-radius:10px;background:var(--cloud);display:grid;place-items:center;font-size:16px;flex-shrink:0}

/* Thank you */
.ty-hero{padding:100px 0 80px;background:linear-gradient(180deg,var(--cloud) 0%,var(--cream) 100%);text-align:center;position:relative;overflow:hidden}.ty-check{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;display:inline-grid;place-items:center;font-size:36px;margin-bottom:24px;box-shadow:0 14px 40px rgba(0,0,0,.2);position:relative;z-index:1}.ty-hero h1{font-size:clamp(32px,5vw,56px);font-weight:900;letter-spacing:-1.5px;margin:0 0 14px;position:relative;z-index:1}.ty-hero h1 em{font-style:italic;font-family:"Playfair Display",Georgia,serif;color:var(--primary)}.ty-hero p{color:var(--muted);font-size:18px;max-width:560px;margin:0 auto 32px;line-height:1.6;position:relative;z-index:1}
.ty-details{max-width:620px;margin:0 auto;padding:56px 24px 80px}.ty-card{background:var(--white);border:1px solid rgba(0,0,0,.04);border-radius:22px;padding:32px;margin-bottom:24px;box-shadow:var(--shadow)}.ty-card h3{margin:0 0 16px;font-size:18px;font-weight:900;color:var(--ink)}.ty-card p{margin:0 0 10px;color:var(--muted);font-size:15px;line-height:1.6}.ty-card .sky{color:var(--primary);font-weight:800}
.ty-cta{display:inline-flex;align-items:center;gap:10px;background:var(--ink);color:#fff;padding:16px 28px;border-radius:999px;font-weight:800;font-size:16px;text-decoration:none;box-shadow:0 10px 30px rgba(26,31,54,.2);transition:all .2s}.ty-cta:hover{transform:translateY(-2px)}

/* Responsive */
@media(max-width:1040px){.nav-links{gap:22px;font-size:13px}.bundles-section .wrap{grid-template-columns:1fr;gap:36px;justify-items:center}}
@media(max-width:900px){.nav-links a:not(:first-child){display:none}.reviews-list{grid-template-columns:1fr}.reviews-head{grid-template-columns:1fr;text-align:center;justify-items:center}}
@media(max-width:860px){.hero-grid,.pdp-grid,.foot-grid,.bundles-section .wrap,.contact-grid,.checkout-wrap{grid-template-columns:minmax(0,1fr)}.hero-grid>*,.pdp-grid>*,.bundles-section .wrap>*,.contact-grid>*,.checkout-wrap>*{min-width:0}.feat-grid,.strip-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery{grid-template-columns:minmax(0,1fr);position:static}.gallery>*,.main-img,.main-img img{min-width:0;max-width:100%}.thumbs{flex-direction:row;overflow-x:auto}.thumbs img{width:64px;height:64px;flex-shrink:0}.showcase-grid{grid-template-columns:1fr 1fr}.nav-links{display:none}.nav-inner{padding:14px 18px}.brand{font-size:20px}.nav-cta{padding:9px 18px;font-size:13px}.order-summary{order:-1;position:static}}

/* ══ THEME: flagship ══════════════════════════════════════════════════════════
   Shape system, documented so it stays consistent:
     panels and cards 16px · images 18px · interactive pills 999px ·
     checkboxes and small controls 6px · accordion rows 0.
   One accent, page-wide: var(--primary). CTA, selected state, price and the
   rating marks all use it and nothing else does, so the theme inherits each
   brand's palette instead of carrying the reference's orange.
   Neutrals are mixed out of var(--ink) / var(--cream) rather than hard-coded,
   for the same reason: a cool brand gets cool greys, a warm one warm greys. */
.t-flagship{
  --fs-paper:#fff;
  --fs-surface:color-mix(in srgb,var(--cream) 62%,#fff);
  --fs-surface2:color-mix(in srgb,var(--ink) 5%,#fff);
  --fs-line:color-mix(in srgb,var(--ink) 13%,#fff);
  --fs-line-soft:color-mix(in srgb,var(--ink) 8%,#fff);
  --fs-muted:color-mix(in srgb,var(--ink) 55%,#fff);
  --fs-r:16px; --fs-ri:18px;
  --fs-display:'Outfit',"DM Sans",-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  background:var(--fs-paper);color:var(--ink);
}
.t-flagship *{box-sizing:border-box;min-width:0}
.t-flagship img{display:block;max-width:100%;height:auto}
.t-flagship h1,.t-flagship h2,.t-flagship h3{font-family:var(--fs-display);font-weight:700;letter-spacing:-.022em;line-height:1.08;margin:0}
.t-flagship h1{font-size:clamp(30px,3.4vw,44px)}
.t-flagship h2{font-size:clamp(25px,3vw,38px)}
.t-flagship h3{font-size:19px;line-height:1.25}
.t-flagship p{margin:0}
.fs-wrap{width:100%;max-width:1200px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.fs-eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--fs-muted);margin:0 0 16px}
.fs-skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--ink);color:#fff;padding:12px 18px;font-weight:700;font-size:14px;border-radius:0 0 var(--fs-r) 0}
.fs-skip:focus{left:0}
.t-flagship a:focus-visible,.t-flagship button:focus-visible,.t-flagship summary:focus-visible,.t-flagship input:focus-visible{outline:2.5px solid var(--primary);outline-offset:3px;border-radius:4px}
.fs-stars{color:var(--primary);flex:none}
.fs-tick{flex:none}

/* Buttons. Pill, one accent, label always one line. */
.t-flagship .fs-cta{display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;padding:0 28px;margin:20px 0 0;border-radius:999px;background:var(--primary);color:#fff;font-family:var(--fs-display);font-weight:700;font-size:17px;letter-spacing:-.01em;white-space:nowrap;text-decoration:none;border:0;cursor:pointer;transition:background .16s ease,transform .16s ease}
.t-flagship .fs-cta:hover{background:var(--primary-dark)}
.t-flagship .fs-cta:active{transform:translateY(1px)}
.t-flagship .fs-cta.narrow{width:auto;min-width:240px;margin:22px auto 0}
.t-flagship .fs-cta.bar{width:auto;min-height:46px;padding:0 24px;font-size:15px;margin:0;flex:none}
.fs-inline{display:inline-block;margin-top:18px;font-weight:700;font-size:15px;color:var(--primary);border-bottom:2px solid color-mix(in srgb,var(--primary) 35%,transparent);padding-bottom:2px}
.fs-inline:hover{border-bottom-color:var(--primary)}

/* ── 1. BUY BLOCK. Media rail scrolls, decision column sticks. ────────────── */
.fs-buy{padding:clamp(18px,3vh,34px) 0 clamp(44px,6vh,80px)}
.fs-buy-in{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(0,1fr);gap:clamp(24px,3.4vw,56px);align-items:start}
/* One grid for the whole media column so the rail owns column 1 and every
   frame (hero + supporting shots) lines up in column 2. .fs-media-top is
   display:contents so its two children join that grid directly. */
.fs-media{min-width:0;display:grid;grid-template-columns:88px minmax(0,1fr);column-gap:12px;row-gap:10px;align-items:start}
.fs-media.norail{grid-template-columns:minmax(0,1fr)}
.fs-media-top{display:contents}
.fs-rail{grid-column:1;grid-row:1;display:flex;flex-direction:column;gap:8px;min-width:0}
.fs-main{grid-column:2;grid-row:1}
.fs-stack{grid-column:2}
.fs-media.norail .fs-main,.fs-media.norail .fs-stack{grid-column:1}
.fs-thumb{width:88px;height:88px;object-fit:cover;border-radius:12px;background:var(--fs-surface);cursor:pointer;border:2px solid transparent;opacity:.62;transition:opacity .15s ease,border-color .15s ease}
.fs-thumb:hover{opacity:1}
.fs-thumb.on{opacity:1;border-color:var(--primary)}
.fs-main img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--fs-ri);background:var(--fs-surface)}
.fs-stack{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.fs-stack figure{margin:0;min-width:0}
.fs-stack figure.wide{grid-column:1/-1}
.fs-stack img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--fs-ri);background:var(--fs-surface)}
.fs-stack figure.wide img{aspect-ratio:16/9}

.fs-col{min-width:0}
.fs-col-in{position:sticky;top:88px}
.fs-rate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;color:var(--fs-muted);margin-bottom:12px}
.fs-rate span{white-space:nowrap}
.fs-rate-n{padding-left:10px;border-left:1px solid var(--fs-line)}
.fs-benefit{margin-top:12px;font-family:var(--fs-display);font-size:clamp(16px,1.5vw,18px);font-weight:600;color:var(--primary);line-height:1.35}
.fs-price{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:16px;font-variant-numeric:tabular-nums}
.fs-price-now{font-family:var(--fs-display);font-size:clamp(28px,3vw,36px);font-weight:700;letter-spacing:-.03em;line-height:1}
.fs-price-was{font-size:16px;color:var(--fs-muted);text-decoration:line-through}
.fs-price-per{font-size:14px;color:var(--fs-muted)}
.fs-desc{margin-top:14px;font-size:15.5px;line-height:1.65;color:var(--fs-muted);max-width:56ch}
.fs-chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0}
.fs-chips li{font-size:13px;color:var(--ink);background:var(--fs-surface2);border:1px solid var(--fs-line-soft);border-radius:8px;padding:7px 12px}
.fs-chips b{font-variant-numeric:tabular-nums}

/* Numbered steps: the guided part of the column. */
.fs-step-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:26px 0 12px;padding-top:22px;border-top:1px solid var(--fs-line)}
/* Needs .t-flagship to out-specify the .t-flagship h2 display scale above:
   these are step labels inside the column, not section headings. */
.t-flagship .fs-step-t{font-size:16.5px;font-weight:700;letter-spacing:-.01em;line-height:1.3;display:flex;align-items:center;gap:10px}
.fs-step-n{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font-size:12px;font-weight:700;flex:none}
.fs-swatches{display:flex;flex-wrap:wrap;gap:8px}
.fs-swatch{font:inherit;font-size:14px;font-weight:600;padding:11px 18px;border-radius:999px;border:1.5px solid var(--fs-line);background:var(--fs-paper);color:var(--ink);cursor:pointer;transition:border-color .15s ease,background .15s ease}
.fs-swatch:hover{border-color:color-mix(in srgb,var(--ink) 32%,#fff)}
.fs-swatch.on{border-color:var(--primary);border-width:2px;padding:10px 17px;background:color-mix(in srgb,var(--primary) 7%,#fff)}
.fs-qty{display:inline-flex;align-items:center;border:1.5px solid var(--fs-line);border-radius:999px;overflow:hidden;flex:none}
.fs-qty-btn{font:inherit;font-size:16px;font-weight:700;line-height:1;width:34px;height:34px;background:none;border:0;color:var(--ink);cursor:pointer}
.fs-qty-btn:hover{background:var(--fs-surface2)}
.fs-qty-val{min-width:26px;text-align:center;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.fs-cover{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px}
.fs-cover-opt{font:inherit;display:flex;flex-direction:column;gap:4px;align-items:flex-start;text-align:left;padding:14px 16px;border:1.5px solid var(--fs-line);border-radius:var(--fs-r);background:var(--fs-paper);color:var(--ink);cursor:pointer;min-width:0}
.fs-cover-opt b{font-size:14.5px}
.fs-cover-opt span{font-size:13px;color:var(--fs-muted)}
.fs-cover-opt.on{border-color:var(--primary);border-width:2px;padding:13px 15px;background:color-mix(in srgb,var(--primary) 7%,#fff)}
.fs-bumps{display:grid;gap:8px;margin-top:18px}
.fs-bump{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--fs-line);border-radius:var(--fs-r);cursor:pointer;background:var(--fs-paper)}
.fs-bump-in{position:absolute;opacity:0;width:0;height:0}
.fs-bump-box{display:grid;place-items:center;width:20px;height:20px;border:1.5px solid var(--fs-line);border-radius:6px;color:transparent;flex:none}
.fs-bump-in:checked+.fs-bump-box{background:var(--primary);border-color:var(--primary);color:#fff}
.fs-bump-thumb img{width:48px;height:48px;object-fit:cover;border-radius:8px;background:var(--fs-surface)}
.fs-bump-name{flex:1 1 auto;min-width:0;font-size:14px;line-height:1.35}
.fs-bump-price{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;flex:none}

/* Picker: the shared bundle cards, restyled inside the column. */
.t-flagship .fs-picker .bundles-head{display:none}
.t-flagship .fs-picker .bundle-card{border-radius:var(--fs-r);margin-bottom:10px}
.t-flagship .fs-picker .bundle-card:last-child{margin-bottom:0}

/* Risk reversal, welded under the CTA. */
.fs-reassure{list-style:none;display:flex;flex-wrap:wrap;gap:8px 20px;margin:14px 0 0;padding:0}
.fs-reassure li{display:flex;align-items:center;gap:7px;font-size:13.5px;color:var(--fs-muted)}
.fs-reassure .fs-tick{color:var(--primary)}
.t-flagship .fs-col-in .afterpay{margin:14px 0 0;font-size:13.5px}
.fs-note{margin-top:14px;font-size:12.5px;line-height:1.6;color:var(--fs-muted)}

/* ── 2. FACT BAND. Full bleed, dark, no cards. ────────────────────────────── */
.fs-band{background:var(--ink);color:#fff}
.fs-band dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;margin:0}
.fs-band dl>div{padding:30px 0;min-width:0}
.fs-band dl>div+div{border-left:1px solid rgba(255,255,255,.14);padding-left:clamp(16px,3vw,40px)}
.fs-band dt{font-family:var(--fs-display);font-size:clamp(22px,2.4vw,30px);font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.fs-band dd{margin:7px 0 0;font-size:13.5px;line-height:1.5;color:rgba(255,255,255,.66)}

/* ── 3. LEAD FEATURE. Panel overlapping a bleed image. ────────────────────── */
.fs-lead{position:relative;padding:clamp(56px,8vh,104px) 0;overflow:hidden}
.fs-lead-img{position:absolute;inset:0 0 0 34%;z-index:0}
.fs-lead-img img{width:100%;height:100%;object-fit:cover}
.fs-lead .fs-wrap{position:relative;z-index:1}
.fs-lead-card{max-width:430px;background:var(--fs-paper);border-radius:var(--fs-r);padding:clamp(26px,3vw,40px);box-shadow:0 30px 70px -30px color-mix(in srgb,var(--ink) 45%,transparent)}
.fs-lead-card p{margin-top:14px;font-size:15.5px;line-height:1.7;color:var(--fs-muted)}

/* ── 4. THREE UP. Photo, then a short title, then one line. ───────────────── */
.fs-cards{padding:clamp(50px,7vh,92px) 0}
.fs-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(18px,2.4vw,34px)}
.fs-card-grid article{min-width:0}
.fs-card-img img{width:100%;aspect-ratio:5/4;object-fit:cover;border-radius:var(--fs-ri);background:var(--fs-surface);margin-bottom:18px}
.fs-card-grid p{margin-top:9px;font-size:15px;line-height:1.65;color:var(--fs-muted)}

/* ── 5. REVIEWS. Score sits beside the heading, quotes flow under it. ─────── */
.fs-reviews{padding:clamp(50px,7vh,92px) 0;background:var(--fs-surface);border-top:1px solid var(--fs-line);border-bottom:1px solid var(--fs-line)}
.fs-rev-head{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:32px}
.fs-rev-score{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fs-rev-score strong{font-family:var(--fs-display);font-size:clamp(38px,5vw,54px);font-weight:700;letter-spacing:-.04em;line-height:1}
.fs-rev-score span{font-size:13.5px;color:var(--fs-muted)}
.fs-quotes{columns:2;column-gap:18px}
@supports not (columns:2){.fs-quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:18px}}
.fs-quotes blockquote{break-inside:avoid;margin:0 0 18px;background:var(--fs-paper);border:1px solid var(--fs-line-soft);border-radius:var(--fs-r);padding:22px}
.fs-quotes p{font-size:15px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.fs-quotes cite{display:block;margin-top:12px;font-style:normal;font-size:12.5px;color:var(--fs-muted)}

/* ── 6. FAQ. Hairline rows, nothing boxed. ────────────────────────────────── */
.fs-faq{padding:clamp(50px,7vh,92px) 0}
.fs-faq h2{margin-bottom:26px}
.fs-faq details{border-bottom:1px solid var(--fs-line-soft)}
.fs-faq summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;font-family:var(--fs-display);font-weight:600;font-size:17px}
.fs-faq summary::-webkit-details-marker{display:none}
.fs-faq summary::after{content:"+";color:var(--fs-muted);font-weight:400;flex:none}
.fs-faq details[open] summary::after{content:"\2212"}
.fs-faq details p{padding:0 40px 22px 0;font-size:15px;line-height:1.7;color:var(--fs-muted)}

/* ── 7. CLOSE. ────────────────────────────────────────────────────────────── */
.fs-close{padding:0 0 clamp(56px,8vh,96px);text-align:center}
.fs-close p{font-size:15px;color:var(--fs-muted)}

/* Sticky mini buy bar. */
.fs-bar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:color-mix(in srgb,var(--fs-paper) 94%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--fs-line);transform:translateY(100%);transition:transform .28s cubic-bezier(.16,1,.3,1)}
.fs-bar.on{transform:none}
.fs-bar-in{display:flex;align-items:center;gap:12px;padding-top:10px;padding-bottom:10px}
.fs-bar-thumb img{width:52px;height:52px;object-fit:cover;border-radius:10px;background:var(--fs-surface)}
.fs-bar-meta{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}
.fs-bar-name{font-weight:700;font-size:14.5px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fs-bar-price{font-size:14px;color:var(--fs-muted);font-variant-numeric:tabular-nums}
.t-flagship footer{padding-bottom:96px}

/* ── Mobile. Every multi-column layout above declares its own collapse. ───── */
@media(max-width:1000px){
  .fs-buy-in{grid-template-columns:minmax(0,1fr);gap:28px}
  /* On a phone the media column would otherwise stack four full-width frames
     above the decision column and bury the price a thousand pixels down.
     display:contents lifts the media children into the buy grid so the hero
     shot keeps its place, the decision column follows immediately, and the
     supporting shots move below it. */
  .fs-media{display:contents}
  .fs-media-top{display:grid;grid-template-columns:88px minmax(0,1fr);gap:12px;order:1}
  .fs-col{order:2}
  .fs-stack{order:3;grid-column:auto}
  .fs-main{grid-column:auto;grid-row:auto}
  .fs-rail{grid-column:auto;grid-row:auto}
  .fs-col-in{position:static}
  .fs-lead-img{position:relative;inset:auto;margin-bottom:-40px;height:clamp(220px,42vw,340px)}
  .fs-lead{padding-top:0}
  .fs-lead-card{max-width:none}
}
@media(max-width:640px){
  .fs-media-top{grid-template-columns:minmax(0,1fr);gap:10px}
  .fs-rail{flex-direction:row;overflow-x:auto;order:2;padding-bottom:4px;-webkit-overflow-scrolling:touch}
  .fs-thumb{width:62px;height:62px;flex:none}
  .fs-main{order:1}
  .fs-stack{grid-template-columns:minmax(0,1fr)}
  .fs-stack img,.fs-stack figure.wide img{aspect-ratio:4/3}
  /* Two up on a phone. The divider has to follow the wrap: a left rule on
     every sibling would draw a stray line above the top-right cell. */
  .fs-band dl{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(14px,4vw,24px)}
  .fs-band dl>div{padding:20px 0}
  .fs-band dl>div+div{border-left:0;padding-left:0}
  .fs-band dl>div:nth-child(n+3){border-top:1px solid rgba(255,255,255,.14);padding-top:20px}
  .fs-quotes{columns:1}
  .fs-cover{grid-template-columns:minmax(0,1fr)}
  .fs-step-head{flex-wrap:wrap}
  .fs-close .fs-cta.narrow{width:100%;min-width:0}
}
@media(max-width:380px){
  .fs-bar-in{gap:9px;padding-left:12px;padding-right:12px}
  .fs-bar-thumb img{width:44px;height:44px}
  .t-flagship .fs-cta.bar{padding:0 16px;font-size:14px}
}

/* Light-locked on purpose, same as forge: navHTML / footerHTML /
   cartDrawerHTML are shared by every theme and hard-coded to the light palette,
   so prefers-color-scheme:dark produced a light nav bolted onto a dark page.
   Port the shared chrome to variables first, then a dark block can go here. */

@media (prefers-reduced-motion: reduce){
  .t-flagship *,.fs-bar{transition:none!important;animation:none!important}
  .fs-bar{transform:none;opacity:0;pointer-events:none}
  .fs-bar.on{opacity:1;pointer-events:auto}
}
