html,body{font-family:Nunito,system-ui,sans-serif}
@font-face{font-family:"Nunito";src:url("/assets/storefront/fonts/nunito.woff2") format("woff2");font-weight:200 1000;font-display:swap}:root{--ink:#263449;--mist:#DCE8ED;--paper:#ffffff;--muted:#667085;--title:#19344F;--action:#19344F;--accent:#EF865C;--success:#4F7A48;--line:#DDE2E9;--radius:10px;--shadow:0 8px 24px rgba(36,62,74,.08)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{overflow-x:clip}html{color:var(--ink);background:#ffffff;font-family:Nunito,sans-serif}body{margin:0;background:#ffffff;padding-bottom:calc(65px + 16px + env(safe-area-inset-bottom))}button,input{font:inherit}a{color:inherit}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.wrap{max-width:1480px;margin:0 auto;padding:0 16px}.product-wrap{width:min(calc(100% - 32px),1480px);max-width:1480px;margin:0 auto}.filter-chip{display:flex;align-items:center;min-height:48px;border:1px solid var(--mist);background:#fff;border-radius:999px;padding:8px 12px;text-decoration:none}.breadcrumb{display:flex;gap:8px;align-items:center;padding:16px 0 12px;font-size:13px;color:var(--muted);overflow:hidden}.breadcrumb a{text-decoration:none}.breadcrumb span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.product-layout{display:grid;gap:18px;min-width:0}.purchase-panel,.selection-block{min-width:0}.product-media{aspect-ratio:4 / 5;background:#f7f8f8;overflow:hidden}.product-media img{display:block;width:100%;height:100%;object-fit:cover}.purchase-panel h1{font-family:Nunito,sans-serif;color:var(--title);font-size:24px;line-height:1.22;margin:8px 0 12px}.demo-chip{font-size:11px;font-weight:800;letter-spacing:.08em;margin:0;color:var(--muted)}.product-pricing{display:none}.product-old{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.product-discount{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;align-self:stretch;background:var(--accent);color:#fff;border-radius:6px;padding:8px 12px;font-weight:800;font-size:25px;line-height:1.2;text-decoration:none}.product-price-stack{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0}.product-old-price{color:var(--muted);font-size:13px;line-height:1.2;white-space:nowrap}.product-price{font-family:Nunito,sans-serif;color:var(--title);font-size:40px;margin-top:0;line-height:1.2;white-space:nowrap}.selection-block{border-top:1px solid var(--line);padding:16px 0;margin-bottom:4px}.selection-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.selection-heading h2{font-family:Nunito,sans-serif;color:var(--title);font-size:17px;margin:0}.selection-heading>span{display:grid;place-items:center;width:26px;height:26px;border:1px solid var(--ink);border-radius:50%;font-size:12px;font-weight:800}.location-select{width:100%;min-height:50px;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--ink);border-radius:8px;padding:12px 14px;font-weight:700;cursor:pointer}.location-select span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-picker{position:relative;z-index:10}.location-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--ink);border-radius:8px;box-shadow:var(--shadow);padding:10px;z-index:30;height:auto;max-height:min(90dvh,90vh);overflow-y:auto}.location-dropdown[hidden]{display:none}.location-dropdown label{display:block;font-weight:700;margin:0 0 6px}.location-dropdown input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:16px;color:var(--ink)}.location-pin{color:var(--ink);font-size:20px;line-height:1}.location-unserved{color:var(--accent)!important;font-weight:700}.location-hint{padding:12px 4px;border:0;color:var(--muted);font-size:13px}.location-attribution{margin:8px 2px 0;color:var(--muted);font-size:11px}.selection-status{font-size:13px;color:var(--muted);margin:8px 0 0}.selection-status:empty{display:none}.date-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:0}.date-chip,.slot-chip{min-height:48px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:8px 12px;font-weight:700}.date-tile{min-width:0}.date-chip{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;background:#F3F5F7;color:var(--ink);padding:10px 2px;cursor:pointer}.date-chip .date-tile-label{font-size:16px;line-height:1.3;overflow-wrap:anywhere}.date-chip small{font-weight:500;font-size:16px;line-height:1.3}.slot-chip{height:34px;min-height:34px;padding:8px;font-size:16px;line-height:1.1}.date-chip[aria-pressed="true"],.slot-chip[aria-pressed="true"]{background:var(--action);border-color:var(--action);color:#fff}.date-calendar-tile{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:48px;padding:10px 2px;border:1px solid var(--line);border-radius:8px;background:#F3F5F7;color:var(--ink);font-size:16px;font-weight:700;cursor:pointer}.date-calendar-tile:hover,.date-calendar-tile:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
/* A date picked in the native calendar owns this tile: the same dark-ink /
   white-text treatment a picked day tile gets, so the visitor can see which
   day is selected without opening the picker again. */
.date-calendar-tile[aria-pressed="true"]{background:var(--action);border-color:var(--action);color:#fff}.date-calendar-tile .date-calendar-label-selected{font-size:16px;line-height:1.3}
.date-calendar-tile[aria-pressed="true"] .calendar-icon{color:#fff}.calendar-icon{display:inline-flex}.calendar-icon svg{display:block}.date-calendar{position:absolute;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;opacity:0;pointer-events:none}.date-tile-empty{width:100%;min-height:48px;padding:10px 2px;border:1px dashed var(--line);border-radius:8px;background:#F3F5F7;cursor:not-allowed}.slot-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.approval-note{background:#EAF7EF;border-left:3px solid var(--success);border-radius:0 8px 8px 0;padding:14px 16px;margin:16px 0 0}.approval-note strong{display:block;font-size:14px;color:var(--success)}.approval-note p{font-size:13px;margin:5px 0 0;line-height:1.5}.disclaimer-note{display:flex;gap:10px;align-items:flex-start;background:#F3F5F7;border-left:3px solid var(--muted);border-radius:0 8px 8px 0;padding:14px 16px;margin:10px 0 0}.disclaimer-note p{font-size:13px;margin:0;line-height:1.5;color:var(--muted)}.disclaimer-icon{display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border:1px solid var(--muted);border-radius:50%;font-size:12px;font-weight:800;font-style:normal;color:var(--muted);line-height:1}.detail-tabs{display:flex;gap:20px;border-bottom:1px solid var(--line);margin:0 0 20px}.detail-tab{min-height:48px;border:0;border-bottom:2px solid transparent;background:none;margin:0 0 -1px;padding:12px 2px;font-weight:700;font-size:15px;color:var(--muted);cursor:pointer}.detail-tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}.detail-tab:hover{color:var(--ink)}.detail-tab:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.detail-panel{outline:none;padding:4px 0 0}.detail-panel[hidden]{display:none!important}.detail-panel h2{font-family:Nunito,sans-serif;color:var(--title);font-size:21px}.detail-panel p,.detail-panel li{line-height:1.65}.detail-panel ul{padding-left:20px}.payment-demo-note{background:#F3F5F7;border-radius:8px;padding:12px 14px;color:var(--muted);font-size:13px;margin:0 0 14px}.payment-options{list-style:none;padding:0;margin:0;display:grid;gap:10px}.payment-options li{border:1px solid var(--line);border-radius:8px;padding:12px 14px}.payment-options strong{display:block;margin-bottom:4px}.payment-options span{display:block;font-size:13px;color:var(--muted);line-height:1.5}.product-details{border-top:1px solid var(--line);padding:24px 0 12px;margin-top:16px}.sticky-buy{position:fixed;left:0;right:0;bottom:0;z-index:20;box-sizing:border-box;background:#fff;box-shadow:0 -1px 0 var(--line),0 -8px 20px rgba(36,62,74,.08);padding:5px max(5px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(5px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between;gap:10px;height:calc(65px + env(safe-area-inset-bottom));min-height:65px;min-width:0;max-width:100%;overflow:hidden}.sticky-price{display:flex;flex-direction:row;align-items:stretch;gap:8px;min-width:0;flex:1 1 auto;flex-wrap:nowrap;overflow:hidden;height:100%}.sticky-discount{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;align-self:stretch;background:var(--accent);color:#fff;border-radius:6px;padding:2px 6px 2px 10px;font-weight:800;font-size:16px;line-height:1.2}.sticky-price-stack{display:flex;flex-direction:column;justify-content:center;gap:1px;min-width:0;flex:0 1 auto}.sticky-old{color:var(--muted);font-size:12px;line-height:14px;text-decoration:line-through;white-space:nowrap}.sticky-current{font-family:Nunito,sans-serif;color:var(--title);font-size:18px;line-height:22px;white-space:nowrap}.sticky-free-delivery{display:block;color:var(--success);font-size:12px;line-height:16px;font-weight:400;white-space:nowrap;background:none}.sticky-buy button{width:50%;flex:0 0 50%;height:46px;min-height:46px;margin:0;padding:6px 16px;border:0;border-radius:8px;background:var(--action);color:#fff;font-weight:800;font-size:17px}dialog{width:min(calc(100% - 24px),520px);max-height:90vh;border:0;border-radius:12px;padding:18px;box-shadow:var(--shadow);color:var(--ink)}dialog::backdrop{background:rgba(20,35,42,.48)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font-family:Nunito,sans-serif;color:var(--title);font-size:20px;margin:0}.dialog-head button{width:48px;height:48px;border:0;background:#fff;font-size:28px;color:var(--ink)}dialog label{display:block;font-weight:700;margin:12px 0 6px}dialog input{width:100%;min-height:48px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:16px}#checkout-dialog{width:min(calc(100% - 24px),560px);max-height:92vh;overflow:auto}#checkout-dialog textarea{width:100%;min-height:84px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit;font-size:16px;color:var(--ink)}.checkout-note{font-size:13px;color:var(--muted);margin:6px 0 12px}.checkout-summary{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 14px;font-size:14px}.checkout-summary dt{color:var(--muted)}.checkout-summary dd{margin:0;font-weight:700;text-align:right}.checkout-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.checkout-field-wide{grid-column:1 / -1}.checkout-methods{border:1px solid var(--line);border-radius:10px;padding:12px;margin:16px 0 0}.checkout-methods legend{font-weight:700;padding:0 6px}.checkout-method{display:flex;align-items:flex-start;gap:10px;min-height:48px;padding:8px 4px;margin:0;font-weight:400}.checkout-method input[type="radio"]{width:22px;height:22px;min-height:22px;flex:0 0 auto;margin:2px 0 0}.checkout-method span{display:block}.checkout-method strong{display:block;font-size:14px}.checkout-method small{display:block;font-weight:400;color:var(--muted);font-size:12px;line-height:1.4}.checkout-consent{display:flex;align-items:flex-start;gap:10px;margin:14px 0 0}.checkout-consent input{width:22px;height:22px;min-height:22px;flex:0 0 auto;margin:2px 0 0}.checkout-consent label{margin:0;font-weight:400;font-size:13px;line-height:1.45}.checkout-status{margin:14px 0 0;font-size:14px;line-height:1.5;min-height:21px}.checkout-status[data-tone="error"]{color:var(--accent);font-weight:700}.checkout-status[data-tone="wait"]{color:var(--muted)}.checkout-submit{width:100%;min-height:52px;margin-top:14px;border:0;border-radius:8px;background:var(--action);color:#fff;font-weight:800}.not-found{text-align:center;padding:72px 0}.not-found a{display:inline-block;background:var(--action);color:#fff;padding:12px 18px;border-radius:8px;text-decoration:none}@media (max-width:767px){.product-gallery-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.product-gallery-track::-webkit-scrollbar{display:none;width:0;height:0}.product-slide{flex:0 0 100%;scroll-snap-align:start;min-width:0;margin:0}#location-dialog{position:fixed;top:auto;right:0;bottom:0;left:0;width:100%;max-width:100%;max-height:88vh;margin:0;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom))}#checkout-dialog{position:fixed;top:auto;right:0;bottom:0;left:0;width:100%;max-width:100%;max-height:90vh;margin:0;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom))}#checkout-dialog .checkout-grid{grid-template-columns:1fr}}@media (min-width:768px){body{padding-bottom:0}.product-wrap{width:min(calc(100% - 32px),1480px);max-width:1480px;margin:0 auto;padding:0}
/* Product layout keeps the shared dropdown geometry below. */.breadcrumb{padding:20px 0 18px;font-size:14px}.product-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;align-items:start}.product-gallery{position:sticky;top:20px}.product-gallery-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}.product-gallery-track::-webkit-scrollbar{display:none;width:0;height:0}.product-slide{flex:0 0 100%;scroll-snap-align:start;min-width:0;margin:0}.purchase-panel{padding-top:10px}.purchase-panel h1{font-size:32px;line-height:1.18;margin:10px 0 14px}.product-pricing{display:flex;flex-direction:row;align-items:center;gap:10px;margin-bottom:14px}.product-price{font-size:40px}.selection-block{padding:18px 0}.selection-heading{margin-bottom:12px}.selection-heading h2{font-size:18px}.location-select{min-height:54px}.slot-options{grid-template-columns:repeat(4,minmax(0,1fr))}.product-details{width:100%;max-width:none;margin-top:28px;padding:32px 0 56px}}@media (min-width:1100px){.product-layout{grid-template-columns:minmax(0,1.14fr) minmax(0,1fr);gap:56px}}@media (min-width:768px) and (max-width:1099px){.product-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.9fr);gap:24px}.product-media{min-height:470px}.product-media img{width:100%;height:100%;object-fit:contain}.product-gallery-track{min-width:0}}@media (min-width:768px) and (max-width:1099px){.product-gallery-inner{grid-template-columns:64px minmax(0,1fr);gap:12px}.product-thumb{width:64px}.product-thumb img{height:82px}}
@media (max-width:767px){.location-select{display:flex;align-items:center;justify-content:space-between;gap:10px}.location-select .location-clear{margin-left:auto}.location-select.has-location{background:#fff;color:var(--ink)}}
.checkout-stepper{display:flex;gap:4px;list-style:none;margin:0 0 14px;padding:0}.checkout-step{display:flex;align-items:center;gap:8px;flex:1;min-width:0;color:var(--muted);font-size:13px;font-weight:700}.checkout-step .step-no{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;min-width:26px;border-radius:50%;border:2px solid var(--line);background:#fff;color:var(--muted);font-size:12px;font-weight:800}.checkout-step .step-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.checkout-step[data-state="current"]{color:var(--ink)}.checkout-step[data-state="current"] .step-no{border-color:var(--ink);background:var(--action);color:#fff}.checkout-step[data-state="completed"]{color:var(--success)}.checkout-step[data-state="completed"] .step-no{border-color:var(--success);background:var(--success);color:#fff;font-size:0}.checkout-step[data-state="completed"] .step-no::after{content:"✓";color:#fff;font-size:13px;font-weight:800}.checkout-panel[hidden]{display:none!important}.checkout-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.checkout-back{min-height:48px;padding:0 20px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-weight:700;cursor:pointer}.checkout-next{min-height:48px;padding:0 24px;border:0;border-radius:8px;background:var(--action);color:#fff;font-weight:800;cursor:pointer}.checkout-actions .checkout-submit{width:auto;min-height:48px;flex:1;margin-top:0;padding:0 24px}.checkout-panel h2{margin:0 0 12px;font-size:16px}.invoice-fields[hidden]{display:none!important}
@media (max-width:767px){.checkout-stepper{gap:2px}.checkout-step{gap:6px;font-size:12px}.checkout-step .step-no{width:22px;height:22px;min-width:22px;font-size:11px}.checkout-actions{flex-wrap:wrap}.checkout-actions .checkout-back{flex:0 0 auto}.checkout-actions .checkout-next{flex:1}.checkout-actions .checkout-submit{flex:1 1 100%}}
.location-select{display:flex;align-items:center;justify-content:space-between;gap:10px}.location-select .location-clear{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;min-height:32px;margin-left:auto;padding:0;border:0;background:transparent;color:inherit;font-size:20px;line-height:1;cursor:pointer}.location-select.has-location{background:#fff;color:var(--ink)}
.product-gallery-inner{display:grid;gap:10px;grid-template-columns:minmax(0,1fr);align-items:start}
.product-thumbs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:thin;padding:2px 0 6px;margin:0}
.product-thumb{flex:0 0 auto;width:60px;padding:0;border:1px solid var(--line);border-radius:8px;background:#f7f8f8;overflow:hidden;cursor:pointer;line-height:0}
.product-thumb img{display:block;width:100%;height:75px;object-fit:cover}
.product-thumb[aria-current="true"]{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.product-thumb:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.product-slide[data-active="true"] .product-media{box-shadow:inset 0 0 0 2px var(--ink)}
.buy-desktop{display:none}
@media (min-width:768px){.product-gallery-inner{grid-template-columns:76px minmax(0,1fr);gap:16px}
.product-thumbs{grid-column:1;grid-row:1;flex-direction:column;overflow-x:hidden;overflow-y:auto;max-height:min(78vh,720px);padding:2px 4px 2px 0}
.product-gallery-track{grid-column:2;grid-row:1}
.product-thumb{width:76px}
.product-thumb img{height:95px}
.buy-desktop{display:block}
.buy-desktop button{width:100%;min-height:56px;border:0;border-radius:8px;background:var(--action);color:#fff;font-weight:800;font-size:24px;cursor:pointer;margin-top:18px}
.approval-note{padding:16px 18px}
.sticky-buy{display:none}}
.buy-desktop button:hover,.sticky-buy button:hover,.checkout-submit:hover{background:#274D6C}
.location-warning{margin:8px 0 0;padding:10px 12px;background:#F3F5F7;border-left:3px solid var(--muted);border-radius:0 8px 8px 0;color:var(--muted);font-size:13px;line-height:1.5}
.location-backdrop{position:fixed;inset:0;background:rgba(20,35,42,.48);z-index:75}
@media (max-width:767px){body.location-open{overflow:hidden;position:fixed;inset:0;width:100%;touch-action:none}.location-picker{position:static}.location-dropdown{position:fixed;top:10lvh;right:0;bottom:auto;left:0;width:100%;max-width:none;height:90lvh;min-height:90lvh;max-height:none;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));z-index:80;box-shadow:0 -8px 30px rgba(36,62,74,.18);background:#fff;isolation:isolate}}
.recently-viewed{margin-top:24px;border-top:1px solid var(--line);padding-top:20px}
.recently-viewed h2{font-family:Nunito,sans-serif;color:var(--title);font-size:21px;margin:0 0 12px}
/* Recently viewed is a bounded grid, never a horizontal gallery: two columns
   on mobile, five on desktop, so no card can overflow sideways at 360-390px. */
.recently-viewed-track{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:2px 0 8px}
.recently-viewed-track .product-card{width:auto;min-width:0}
@media (min-width:768px){.recently-viewed-track{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}}
/* Product-page cards (recently viewed) reuse the single shared .product-card
   contract from home.css, which every public page loads. No card geometry,
   typography, colour or hover rule is restated here. */

@media (max-width:767px){.product-layout{display:flex;flex-direction:column}.product-gallery{order:1;position:static}.purchase-panel{order:2}.product-gallery-inner{display:flex;flex-direction:column}.product-gallery-track{order:1}.product-thumbs{order:2}}
/* TEST-only product detail desktop geometry experiment (15 Oct 2026, rev.4):
   Live 1440px evidence: shell is min(100% - 32px,1480px)=1408px. Gallery
   reserves 722px (630 main + 76 thumbs + 16 inner gap) at min-width:1400px
   with a controlled 32px outer gap and purchase panel minmax(0,1fr), so the
   large image no longer collapses to ~480x600. 1400px+ is open-ended (no
   max-width) so >=1480px stays valid without forcing 1480px into 1440px.
   At 1100-1399px the left column is fluid (fr-based). Gallery/inner/track/
   media are width:100%;min-width:0; images width:100%;height:auto;block,
   no cover/max-height. Large photo box + both image paths (SSR
   .product-media img and hydrated .product-slide>img) carry
   aspect-ratio:79/100, so at the 630px main width the visible photo is
   630/0.79~=797.47px tall (0.79:1). object-fit:contain only guards a
   slightly off-ratio source from stretching: box and image share the same
   79/100, so contain never crops, any sub-pixel slack letterboxes on white
   (#fff media/image background matching the #ffffff page). No cover/fill.
   Appended last so it wins over the earlier 1.14fr rule; tablet (768-1099)
   and mobile (<=767) scopes are untouched. */
@media (min-width:1400px){.product-layout{grid-template-columns:minmax(0,722px) minmax(0,1fr);gap:32px;align-items:start}.product-gallery{width:100%;min-width:0;max-width:722px}.product-gallery-inner{width:100%;min-width:0}.product-gallery-track{width:100%;min-width:0}.product-media{width:100%;min-width:0;aspect-ratio:79/100;background:#fff}.product-media img,.product-slide>img{width:100%;height:auto;display:block;aspect-ratio:79/100;object-fit:contain;background:#fff}}
@media (min-width:1100px) and (max-width:1399px){.product-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;align-items:start}.product-gallery{width:100%;min-width:0;max-width:722px}.product-gallery-inner{width:100%;min-width:0}.product-gallery-track{width:100%;min-width:0}.product-media{width:100%;min-width:0;aspect-ratio:79/100;background:#fff}.product-media img,.product-slide>img{width:100%;height:auto;display:block;aspect-ratio:79/100;object-fit:contain;background:#fff}}
/* Item 4 (15 Oct 2026): wide-desktop main photo box exactly 630x630. Outer
   gallery stays 722px (= 630 main + 76 thumbs + 16 inner gap); thumbnail rail,
   content widths, item-3 price layout, tablet and mobile scopes untouched.
   Appended last so it wins over the 79/100 rule above at 1400px+ only. Square
   box + contain letterboxes honestly on white; no cover/fill, no crop. */
@media (min-width:1400px){.product-media{width:630px;height:630px;min-width:0;aspect-ratio:1/1;background:#fff}.product-slide{width:630px;height:630px;min-width:0}.product-media img,.product-slide>img{width:100%;height:100%;display:block;aspect-ratio:1/1;object-fit:contain;background:#fff}}
/* Geometry slice (15 Oct 2026, pre-7): wide-desktop reference overlay is the
   contract. Content stays 1480px; main box stays 630x630 (item 4 untouched).
   Left gallery is 755px (= 111 thumb area + 14 inner gap + 630 main); outer
   gallery/panel gap is 15px; rail/main gap is 14px. Rail 111px with 96px-tall
   images matches the ~106x96 reference (5px border/padding tolerance).
   1400px+ only and appended last so it wins; 768-1399/mobile untouched. */
@media (min-width:1400px){.product-layout{grid-template-columns:minmax(0,755px) minmax(0,1fr);gap:15px}.product-gallery{max-width:755px}.product-gallery-inner{grid-template-columns:111px minmax(0,1fr);gap:14px}.product-thumb{width:111px}.product-thumb img{height:96px}}
/* Item 7 (15 Oct 2026): delivery headings are visually hidden (accessible names
   kept via aria-labelledby); selector text is non-bold with a leading 24px
   Phosphor map-pin; day/time tiles use tighter scoped gaps. Gallery
   (755/630/111/14/15), item-3 pricing, item-6 CTA, mobile shell, header/footer
   and lightbox rollback are untouched. Appended last so it wins. */
.location-select{font-weight:400}
.location-select-text{font-weight:400}
.location-select-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:inherit}
.location-select-icon svg{display:block;width:24px;height:24px}
#delivery-dates.selection-block,#delivery-slots.selection-block{padding:0}
/* Location selector follow-up (15 Oct 2026): the unselected "Gönderim Yeri
   Seçin" placeholder is left-aligned, not centered. The text span grows to
   fill the space between the leading 24px Phosphor map-pin and the trailing
   chevron/clear control, so space-between can no longer center it. Only the
   unselected placeholder is de-emphasized (opacity); selected location text
   and all controls keep full emphasis. Item-7 icon/reset behavior, gallery,
   pricing, CTA, breakpoints and lightbox rollback are untouched. Appended
   last so it wins. */
.location-select-text{flex:1 1 auto;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-select:not(.has-location) .location-select-text{opacity:.55}
/* Item 8 (15 Oct 2026): Görsel onay note carries a centered 24px Phosphor
   camera icon on its left. Note becomes a flex row with vertically centered
   icon; text stack keeps its block heading/paragraph. Gallery
   (755/630/111/14/15), item-3 pricing, item-6 CTA, item-7 selector, mobile
   shell and lightbox rollback are untouched. Appended last so it wins. */
.approval-note{display:flex;gap:10px;align-items:center}
.approval-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;color:inherit}
.approval-icon svg{display:block;width:24px;height:24px}
.approval-text{min-width:0;flex:1 1 auto}
/* Item 9 (15 Oct 2026): delivery disclaimer note carries a centered 24px
   Phosphor info icon on its left. The old 20px circled literal "i" is replaced
   by the vendored helper SVG; the row vertically centers the icon. Text sizes,
   colors, gallery (755/630/111/14/15), pricing, CTA, item-7/8, mobile shell and
   lightbox rollback are untouched. Appended last so it wins. */
.disclaimer-note{display:flex;gap:10px;align-items:center}
.disclaimer-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:24px;height:24px;border:0;border-radius:0;font-size:inherit;font-weight:400;font-style:normal;color:inherit;line-height:1}
.disclaimer-icon svg{display:block;width:24px;height:24px}
/* Item 10 (15 Oct 2026): the product page carries no bold text. This is a
   visual-only, product-scoped neutralization: semantic <strong> stays in the
   server markup for screen readers, but computed weight on product-page text
   is 400. Scoped under body[data-product-id] so admin/dealer/home/category/
   checkout/tracking surfaces are untouched. Font sizes, colors,
   strikethrough, gaps, gallery geometry, icon sizes, tab/deposit behavior,
   header/footer geometry and button hit-areas are unchanged; only weight is
   neutralized. !important is scoped to this page so earlier component weights
   (600/700/800) and UA heading/strong defaults cannot leak bold back.
   Appended last so it wins. */
body[data-product-id] h1,body[data-product-id] h2,body[data-product-id] h3,body[data-product-id] strong,body[data-product-id] b,body[data-product-id] .demo-chip,body[data-product-id] .product-discount,body[data-product-id] .product-old-price,body[data-product-id] .product-price,body[data-product-id] .location-select,body[data-product-id] .location-dropdown label,body[data-product-id] .location-option strong,body[data-product-id] .location-unserved,body[data-product-id] .selection-status,body[data-product-id] .date-chip,body[data-product-id] .date-chip small,body[data-product-id] .slot-chip,body[data-product-id] .date-calendar-tile,body[data-product-id] .buy-desktop button,body[data-product-id] .sticky-buy button,body[data-product-id] .sticky-discount,body[data-product-id] .sticky-current,body[data-product-id] .sticky-old,body[data-product-id] .approval-note,body[data-product-id] .disclaimer-note,body[data-product-id] .detail-tab,body[data-product-id] .detail-panel h2,body[data-product-id] .payment-options strong,body[data-product-id] .card-delivery,body[data-product-id] .card-name,body[data-product-id] .card-discount,body[data-product-id] .card-original,body[data-product-id] .card-price,body[data-product-id] .recently-viewed h2,body[data-product-id] .breadcrumb{font-weight:400!important}
/* Item 11 prep (15 Oct 2026): only the approval heading stays bold. The broad
   item-10 product no-bold override above no longer lists .approval-note strong,
   so this later, equally-scoped rule wins in source order and restores the
   approved 700 for the heading only. Approval body text, icons and every other
   product-page selector remain 400 via the item-10 rule above. No admin/dealer
   selectors touched; sizes/colors/geometry untouched. Appended last so it wins. */
body[data-product-id] .approval-note strong{font-weight:700!important}
/* Item 11 prep (15 Oct 2026): 5px delivery-section spacing with no inter-section
   dividers. Only the three delivery sections (location, dates, slots) lose their
   border-top separator and use exactly 5px inter-section margins. Date/slot tile
   borders, tabs, notes, thumbnails and all unrelated section borders are kept.
   Generic .selection-block (margin-bottom:4px/border-top) is left intact for
   prior contracts; these later, more-specific overrides win for delivery only. */
#delivery-dates,#delivery-slots{margin-top:0;margin-bottom:0;border-top:0}
.selection-block[aria-labelledby="location-title"]{margin-bottom:5px;border-top:0}
/* Spacing follow-up (15 Oct 2026, pre-11): exact vertical rhythm around the
   delivery flow, keyed to the real visibility/state classes so before (dates/
   slots [hidden], trigger without .has-location) and after (sections revealed,
   trigger .has-location) are both correct. Before: location 5px bottom,
   order buttons 15px top / 30px bottom, approval note 8px bottom, disclaimer
   note 7px top. After adds: revealed day section 5px bottom, revealed slots
   section 7px top. The pre-existing #delivery-dates,#delivery-slots 5px base
   above is left intact for the hidden state; the :not([hidden]) rules below
   win only once revealed. Buttons/notes/location keep one value in both
   states. body[data-product-id] scoping keeps admin/dealer/home/category/
   checkout/tracking untouched; sizes, colors, borders, tile gaps, gallery
   (755/630/111/14/15), item-3/6/7/8/9/10, breakpoints and lightbox rollback
   are unchanged. Appended last so it wins. */
body[data-product-id] .purchase-panel>section.selection-block[aria-labelledby="location-title"]{margin-bottom:0;padding-bottom:0}
body[data-product-id] #delivery-dates:not([hidden]){margin-top:8px;margin-bottom:0}
body[data-product-id] #delivery-slots:not([hidden]){margin-top:9px;margin-bottom:0}
body[data-product-id] .buy-desktop button{margin-top:15px;margin-bottom:30px}
body[data-product-id] .sticky-buy button{margin:0}
body[data-product-id] .purchase-panel>.approval-note{margin-bottom:8px}
body[data-product-id] .purchase-panel>.disclaimer-note{margin-top:7px}

/* Desktop product bar edits in place; mobile returns to a separate bottom sheet.
   Compact suggestions remain on both. Loading swaps the leading map-pin for a
   same-slot spinner. */
.location-select-input{flex:1 1 auto;min-width:0;min-height:36px;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-size:15px;outline:none}
.location-select-input::-webkit-search-cancel-button,.location-select-input::-webkit-search-decoration,#location-search-mobile::-webkit-search-cancel-button,#location-search-mobile::-webkit-search-decoration{-webkit-appearance:none;appearance:none;display:none}
.location-select:focus-within{outline:2px solid var(--action);outline-offset:2px}
.location-select-input::placeholder{color:var(--muted);opacity:1}
.location-select.has-location .location-select-input{color:var(--ink)}
.location-select .location-chevron{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:32px;height:32px;margin-left:auto;color:currentColor}
.location-chevron svg{display:block;width:16px;height:16px}
.location-chevron[hidden]{display:none!important}
.location-spinner{display:inline-block;flex:0 0 auto;width:24px;height:24px;border:2px solid rgba(36,62,74,.22);border-top-color:currentColor;border-radius:50%;animation:location-spin .8s linear infinite}
.location-spinner[hidden]{display:none!important}
.location-results{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;margin:0;padding:4px;list-style:none;background:#fff;border:1px solid var(--ink);border-radius:8px;box-shadow:var(--shadow);max-height:280px;overflow-y:auto;overscroll-behavior:contain}
.location-results[hidden]{display:none!important}
.location-results li{position:relative;margin:0;padding:8px 12px 8px 32px;line-height:1.55}
.location-results li button{display:block;width:100%;min-height:0;border:0;border-radius:0;background:#fff;color:#292929;padding:0;text-align:left;font-family:Nunito,sans-serif;font-size:14px;line-height:1.55;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;-webkit-tap-highlight-color:transparent}
@media (hover:hover){
.location-results li:hover{background:#F3F5F7}
.location-results li:hover button{background:transparent}
#location-results-mobile li:hover{background:#F3F5F7}
#location-results-mobile li:hover button{background:transparent}
}
.location-results li button:focus-visible{background:#F3F5F7;outline:2px solid var(--ink);outline-offset:-2px}
.location-results .location-pin{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:inline-flex;color:#292929;font-size:16px;line-height:0}
.location-result-text{display:flex;align-items:center;min-width:0;overflow:hidden;white-space:nowrap;color:#292929;font-size:14px;line-height:1.55}
.location-result-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-result-text .location-unserved{flex:0 0 auto}
.location-results li.location-hint{padding:10px;color:var(--muted);font-size:13px}
@keyframes location-spin{to{transform:rotate(360deg)}}
@media (max-width:767px){.location-picker{position:relative}.location-results{max-height:45vh}.location-results li{display:flex;align-items:center;min-height:44px;padding:0 12px 0 32px}.location-results li button{display:flex;align-items:center;min-height:44px}}
@media (prefers-reduced-motion: reduce){.location-spinner{animation:none}}

/* Mobile restores the original bottom-sheet picker with its own search field;
   desktop alone edits inline in the delivery bar. */
.location-sheet{position:fixed;top:10lvh;right:0;bottom:auto;left:0;width:100%;max-width:none;height:90lvh;min-height:90lvh;max-height:none;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:16px 16px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));z-index:80;box-shadow:0 -8px 30px rgba(36,62,74,.18);background:#fff;isolation:isolate;color:var(--ink)}
.location-sheet[hidden]{display:none!important}
.location-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.location-sheet-head h2{font-family:Nunito,sans-serif;color:var(--title);font-size:20px;margin:0}
.location-sheet-close{width:48px;height:48px;border:0;background:#fff;font-size:28px;color:var(--ink);cursor:pointer}
.location-sheet label{display:block;font-weight:700;margin:12px 0 6px}
#location-search-mobile{width:100%;min-height:48px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:16px;color:var(--ink)}
#location-results-mobile{margin:8px 0 0;padding:4px;list-style:none;max-height:45vh;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:8px}
#location-results-mobile li{position:relative;display:flex;align-items:center;min-height:44px;padding:0 12px 0 32px;line-height:1.55}
#location-results-mobile li button{display:flex;align-items:center;width:100%;min-height:44px;border:0;background:#fff;color:#292929;padding:0;text-align:left;font-family:Nunito,sans-serif;font-size:14px;line-height:1.55;cursor:pointer;-webkit-tap-highlight-color:transparent}
#location-results-mobile li button:focus-visible{background:#F3F5F7;outline:2px solid var(--ink);outline-offset:-2px}
#location-results-mobile .location-pin{position:absolute;left:10px;top:50%;transform:translateY(-50%);display:inline-flex;color:#292929;font-size:16px;line-height:0}
@media(max-width:767px){
.location-select{min-height:62px;padding:8px 14px}
.location-select .location-clear{width:44px;height:44px;min-height:44px}
.date-chip{gap:6px;flex-direction:column-reverse}
.date-chip .date-tile-label{font-size:16px;line-height:18px}
.date-chip small{font-size:14px;line-height:16px}
.slot-options{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:6px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;-ms-overflow-style:none}
.slot-options::-webkit-scrollbar{display:none;width:0;height:0}
.slot-chip{height:31px;min-height:31px;padding:8px 4px;font-size:12.8px;line-height:1.1;flex:0 0 121px;scroll-snap-align:start}
body[data-product-id] #delivery-slots:not([hidden]){margin-bottom:5px}
.location-select-text{display:block;flex:1 1 auto;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-select-input{display:none!important}
.location-select:focus-within{outline:none}
.location-select:focus-visible{outline:2px solid var(--action);outline-offset:2px}
.location-select .location-chevron{width:44px;height:44px}
}
@media(min-width:768px){.location-sheet,.location-backdrop{display:none!important}.location-select-text{display:none!important}}

/* Free delivery pill (25 Oct 2026): the order delivery fee is always 0, so every
   product page carries this pill on the price line. It wraps under the price
   instead of overflowing when the purchase panel is narrow. */
.product-pricing{flex-wrap:wrap}
.free-delivery-tag{display:inline-flex;align-items:center;white-space:nowrap;margin-left:auto;background:#EAF7EF;color:var(--success);font-size:16px;font-weight:400;border-radius:6px;padding:8px 16px;line-height:24px;height:40px;box-sizing:border-box;max-width:100%}

/* Delivery warnings (25 Oct 2026): unserved location or an ineligible product
   replaces the old plain status line with a coral-tinted box. The date/slot
   sections and both order actions are hidden by JS while a warning is shown. */
.delivery-unavailable{display:flex;align-items:center;gap:10px;background:rgba(239,134,92,.12);border-radius:8px;padding:12px 14px;font-size:14px;line-height:1.5;color:var(--ink);margin:12px 0 12px}
.delivery-unavailable-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;align-self:center;margin-top:0;color:var(--accent)}
.delivery-unavailable-icon svg{display:block;width:24px;height:24px}
.delivery-unavailable p{margin:0}
.delivery-alternatives{margin:0 0 12px}
.delivery-alternatives h2{font-family:Nunito,sans-serif;color:var(--title);font-size:18px;margin:0 0 10px}
.delivery-alternatives-track{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.delivery-alternatives-track .product-card{width:auto;min-width:0}
@media (min-width:768px){.delivery-alternatives-track{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}}

/* Mobile keeps the single sticky price line, but the free delivery pill is not
   a price: surface it under the product name so it is visible at 360px without
   adding a second price to the purchase panel. */
@media(max-width:767px){
.product-pricing{display:none}
}
