/* product.css — public product page (House of Canopies).
   Green-editorial: hairlines not boxes, sharp corners, tabular numerals,
   micro-uppercase labels, green reserved for action. References brand.css
   tokens with literal fallbacks (no redefinition → no var cycle). */

.prod{
  --p-paper:var(--paper,#fff);
  --p-ink:var(--ink,#1b2a1f);
  --p-muted:var(--ink-4,#76847a);
  --p-line:var(--line,#e3e7e2);
  --p-green:var(--green,#5c8d3f);
  --p-wash:var(--paper-2,#f0f0f0);  /* was a mint wash — neutral now, and flips in dark mode */
  --p-card:var(--card,#fff);
  color:var(--p-ink);
  font-variant-numeric:tabular-nums;
}

/* breadcrumb */
.prod-crumb{display:flex;gap:8px;align-items:center;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);padding-top:18px;padding-bottom:6px}
.prod-crumb a{color:var(--p-muted);text-decoration:none}
.prod-crumb a:hover{color:var(--p-green)}
.prod-crumb [aria-current]{color:var(--p-ink)}

/* buy area */
.prod-buy{display:grid;grid-template-columns:1.05fr .95fr;gap:46px;padding-top:18px;padding-bottom:54px;align-items:start}
.prod-media__main{border:1px solid var(--p-line);background:var(--p-paper);aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;overflow:hidden}
.prod-media__main img,.prod-media__main model-viewer{width:100%;height:100%;object-fit:cover;display:block}
.prod-media__thumbwrap{display:flex;align-items:stretch;gap:6px;margin-top:12px}
.prod-media__thumbs{display:flex;gap:10px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;min-width:0;flex:1}
.prod-media__thumbs::-webkit-scrollbar{display:none}
.prod-thumbnav{flex:none;width:26px;display:flex;align-items:center;justify-content:center;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font-size:18px;line-height:1;cursor:pointer}
.prod-thumbnav:hover{border-color:var(--p-green);color:var(--p-green)}
.prod-thumb{flex:none;border:1px solid var(--p-line);background:var(--p-paper);padding:0;width:72px;height:60px;cursor:pointer;overflow:hidden}
.prod-thumb img{width:100%;height:100%;object-fit:cover}
.prod-thumb.is-active{border-color:var(--p-green)}

/* media CTA band — 3D & fitting video, below the gallery */
.prod-media__cta{display:flex;gap:10px;margin-top:12px}
.prod-media-cta{flex:1;min-width:0;display:flex;align-items:center;gap:12px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit;text-align:left;padding:11px 13px;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.prod-media-cta:hover{border-color:var(--p-green);box-shadow:0 3px 12px rgba(92,141,63,.12)}
.prod-media-cta.is-active{border-color:var(--p-green)}
.prod-media-cta__ic{flex:none;width:38px;height:38px;display:flex;align-items:center;justify-content:center}
.prod-media-cta__ic--3d{background:var(--p-wash);color:var(--p-green)}
.prod-media-cta__ic--video{background:#fdecec}
.prod-media-cta__ic svg{width:23px;height:23px}
.prod-media-cta__tx{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.prod-media-cta__t{font-weight:600;font-size:.86rem}
.prod-media-cta__s{font-size:.72rem;color:var(--p-muted)}
@media(max-width:560px){.prod-media__cta{flex-direction:column}}

.prod-info .eyebrow{margin-bottom:8px}
.prod-title{font-size:2rem;line-height:1.1;margin:0 0 10px;font-weight:700}
.prod-sku{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);margin-bottom:14px}
.prod-sku span{color:var(--p-ink)}

.prod-price{display:flex;align-items:baseline;gap:8px;padding:14px 0;border-top:1px solid var(--p-line);border-bottom:1px solid var(--p-line)}
.prod-price__num{font-size:1.8rem;font-weight:700}
.prod-price__vat{font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted)}
.prod-price__from{order:-1;font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);align-self:center}

.prod-dispatch{margin-top:12px;font-size:.84rem;color:var(--p-green);font-weight:600}

/* form fields — a thin green rule opens the buy section */
.prod-form{margin-top:22px;border-top:2px solid var(--p-green);padding-top:22px}
.prod-field{margin-bottom:24px}
.prod-label{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--p-muted);margin-bottom:10px}
.prod-label__val{font-size:.84rem;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--green-text,#4c7434);text-align:right}
.prod-label__val:empty{display:none}

.prod-label__unit{opacity:.7}
.prod-sizes{display:block}
.prod-sizes__head{font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--p-muted);font-weight:700;margin:16px 0 8px}
.prod-sizes__head:first-child{margin-top:0}

/* size tiles — big numbers; the chosen one goes solid ink with a green tick
   (ink flips with the theme, so it can never vanish in dark mode) */
.prod-sizegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:2px}
.prod-size{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;text-align:left;padding:14px 14px 12px;cursor:pointer;border:1px solid var(--p-line);background:var(--p-card);color:var(--p-ink);position:relative;transition:border-color .12s,background-color .12s,color .12s}
.prod-size:hover{border-color:var(--ink-3,#6e6e6e)}
.prod-size input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.prod-size__label{font-size:1.06rem;font-weight:700;letter-spacing:-.01em;line-height:1.15;padding-right:20px}
.prod-size__stock{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:.72rem;color:var(--ink-3,#6e6e6e)}
.prod-size__stock i{width:6px;height:6px;border-radius:50%;background:var(--p-green);flex:none}
.prod-size__price{margin-top:10px;font-size:.9rem;font-weight:600;color:var(--p-ink)}
.prod-size:has(input:checked){background:var(--p-ink);border-color:var(--p-ink);color:var(--p-paper)}
.prod-size:has(input:checked) .prod-size__stock{color:rgba(255,255,255,.66)}
.prod-size:has(input:checked) .prod-size__price{color:var(--green-on-dark,#7daf5e)}
[data-theme="dark"] .prod-size:has(input:checked) .prod-size__stock{color:rgba(0,0,0,.58)}
[data-theme="dark"] .prod-size:has(input:checked) .prod-size__price{color:var(--green-deep,#4c7434)}
.prod-size:has(input:checked)::after{content:"";position:absolute;top:10px;right:10px;width:16px;height:16px;border-radius:50%;background:var(--p-green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5 9-10'/%3E%3C/svg%3E") center/10px no-repeat}
.prod-size:has(input:focus-visible){outline:2px solid var(--p-green);outline-offset:2px}
/* Out of stock (tracked size at 0 — lib/hoc_stock.php): visible, not selectable */
.prod-size.is-out{cursor:not-allowed;background:var(--p-paper);border-style:dashed}
.prod-size.is-out:hover{border-color:var(--p-line)}
.prod-size.is-out .prod-size__label,.prod-size.is-out .prod-size__price{opacity:.45}
.prod-size__stock--out{color:#b4422f}
.prod-size__stock--out i{background:#b4422f}
/* On offer (044): green outline + flag; the selected (dark) state still wins */
.prod-size.is-offer{border-color:var(--p-green);box-shadow:inset 0 0 0 1px var(--p-green)}
.prod-size.is-offer:hover{border-color:var(--p-green)}
.prod-size__offer{display:inline-block;margin:0 0 6px;padding:2px 7px;font-size:.6rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;color:#fff;background:var(--p-green);border-radius:2px}
.prod-size.is-offer:has(input:checked){background:var(--p-ink);border-color:var(--p-ink);box-shadow:none}
@media(max-width:560px){.prod-sizegrid{grid-template-columns:repeat(2,1fr)}}

/* bespoke */
.prod-bespoke{border:1px solid var(--p-line);padding:16px;margin-bottom:22px}
.prod-bespoke[hidden]{display:none}
.prod-bespoke__top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.prod-bespoke__close{background:none;border:0;padding:0;font:inherit;font-size:.76rem;font-weight:600;color:var(--p-green);cursor:pointer;white-space:nowrap}
.prod-bespoke__close:hover{text-decoration:underline}
.prod-bespoke__close:focus-visible{outline:1px solid var(--p-green);outline-offset:2px}
.prod-bespoke__hint{font-size:.82rem;color:var(--p-muted);margin:0 0 12px}
.prod-bespoke__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.prod-bespoke__grid label{display:flex;flex-direction:column;gap:5px;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted)}
.prod-bespoke__grid input{padding:9px 10px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit}
.prod-bespoke__derived{margin:10px 0 0;font-size:.78rem;line-height:1.45;letter-spacing:.02em;color:var(--p-muted)}
.prod-bespoke__derived:empty{display:none;margin:0}
.prod-bespoke__note{margin:12px 0 0;font-weight:600}
/* made-to-measure reveal — full-width and boxed so it reads as a route, not a
   footnote. Outlined rather than solid: solid green stays reserved for the one
   primary CTA (Add to Basket), so the two never compete. */
.prod-field--reveal{margin-top:-6px}
.prod-revealbespoke{
  display:block;width:100%;box-sizing:border-box;
  font:inherit;text-align:left;cursor:pointer;
  padding:14px 16px;
  color:var(--p-ink);background:transparent;
  border:1px dashed var(--ink-3,#6e6e6e);border-radius:0;
  transition:border-color .15s,box-shadow .15s;
}
.prod-revealbespoke[hidden]{display:none}
.prod-revealbespoke:hover{border-style:solid;border-color:var(--p-green)}
.prod-revealbespoke:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(92,141,63,.30)}
.prod-revealbespoke__main{display:block;font-size:.95rem;font-weight:700}
.prod-revealbespoke__sub{display:block;margin-top:2px;font-size:.76rem;font-weight:600;color:var(--green-text,#4c7434)}

/* idle nudge — three pulses, then it settles and never fires again */
.prod-revealbespoke.is-nudging{animation:prod-nudge 1.4s ease-out 3}
@keyframes prod-nudge{
  0%,100%{box-shadow:0 0 0 0 rgba(92,141,63,0)}
  30%{box-shadow:0 0 0 5px rgba(92,141,63,.26)}
  75%{box-shadow:0 0 0 11px rgba(92,141,63,0)}
}
@media (prefers-reduced-motion:reduce){
  .prod-revealbespoke.is-nudging{animation:none;border-color:var(--p-green)}
}

/* size grid parked while made-to-measure is open. The radios are genuinely
   disabled (so they can't be silently ignored, and drop out of the POST), but
   the labels stay clickable as the way back. */
.prod-field.is-muted .prod-sizes{opacity:.45}
.prod-field.is-muted .prod-size{cursor:pointer}
.prod-sizes__back{display:none;margin:10px 0 0;font-size:.76rem;color:var(--p-muted)}
.prod-field.is-muted .prod-sizes__back{display:block}

/* finishes — colour chip, name, price; chosen row gets a green bar + ring */
.prod-finishes{display:flex;flex-direction:column;gap:0;border:1px solid var(--p-line);background:var(--p-card)}
.prod-finish{display:flex;align-items:center;gap:14px;padding:13px 16px;cursor:pointer;border-bottom:1px solid var(--p-line);position:relative;transition:background-color .12s}
.prod-finishes .prod-finish:last-of-type{border-bottom:0}
.prod-finish:hover{background:var(--p-wash)}
.prod-finish input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.prod-finish__sw{flex:none;width:26px;height:26px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.16),inset 3px 4px 7px rgba(255,255,255,.22)}
[data-theme="dark"] .prod-finish__sw{box-shadow:inset 0 0 0 1px rgba(255,255,255,.2),inset 3px 4px 7px rgba(255,255,255,.18)}
.prod-finish__sw--none{background:transparent;box-shadow:inset 0 0 0 1px var(--ink-4,#a8a8a8)}
.prod-finish__name{flex:1;font-size:.92rem;font-weight:500}
.prod-finish__sur{font-size:.84rem;font-weight:600;color:var(--ink-2,#4b4b4b)}
.prod-finish__sur--inc{font-weight:500;color:var(--p-muted)}
.prod-finish__note{display:block;padding:0 16px 10px 56px;color:var(--p-muted);font-size:.78rem}
.prod-finish:has(input:checked){background:var(--p-wash);box-shadow:inset 3px 0 0 var(--p-green)}
.prod-finish:has(input:checked) .prod-finish__name{font-weight:600}
.prod-finish:has(input:checked) .prod-finish__sw{box-shadow:inset 0 0 0 1px rgba(0,0,0,.16),0 0 0 2px var(--p-card),0 0 0 4px var(--p-green)}
.prod-finish:has(input:focus-visible){outline:2px solid var(--p-green);outline-offset:-2px}
.prod-finish-gate{color:var(--p-muted);font-size:.85rem;margin:0}
#prodFinishWrap:not(.is-gated) .prod-finish-gate{display:none}
#prodFinishWrap.is-gated .prod-finishes{display:none}

.prod-optsel,.prod-optnum{width:100%;max-width:340px;padding:9px 11px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit}
.prod-optunit{margin-left:8px;color:var(--p-muted);font-size:.82rem}
.prod-optimg{display:flex;flex-wrap:wrap;gap:10px}
.prod-swatch{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid var(--p-line);padding:8px;cursor:pointer;width:96px;font-size:.74rem;text-align:center}
.prod-swatch img{width:78px;height:60px;object-fit:cover}
.prod-swatch:has(input:checked){border-color:var(--p-green);box-shadow:inset 0 0 0 1px var(--p-green)}
.prod-swatch input{accent-color:var(--p-green)}
.prod-opthelp{display:block;margin-top:6px;color:var(--p-muted);font-size:.78rem}

/* buy row — − 1 + stepper, then the one big green button with the live price */
.prod-buyrow{display:flex;align-items:stretch;gap:8px;margin-top:8px}
.prod-qty{flex:none;display:flex;width:112px;border:1px solid var(--p-line);background:var(--p-card)}
.prod-qty button{flex:none;width:32px;border:0;background:none;color:var(--ink-2,#4b4b4b);font:inherit;font-size:1.15rem;cursor:pointer}
.prod-qty button:hover{color:var(--p-green)}
.prod-qty input{flex:1;min-width:0;width:100%;border:0;padding:0;background:none;color:var(--p-ink);font:inherit;font-weight:600;text-align:center;-moz-appearance:textfield;appearance:textfield}
.prod-qty input::-webkit-outer-spin-button,.prod-qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.prod-add{flex:1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:17px 18px;border:1px solid var(--p-green);background:var(--p-green);color:#fff;font:inherit;font-size:.8rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}
.prod-add:hover{background:var(--green-deep,#4c7434);border-color:var(--green-deep,#4c7434);filter:none}
.prod-add__p{font-size:.95rem;letter-spacing:.02em;white-space:nowrap;font-variant-numeric:tabular-nums}
.prod-addquote{justify-content:center}
@media(max-width:560px){.prod-add{padding:16px 14px;font-size:.74rem;letter-spacing:.06em}}
.prod-buynote{margin:12px 0 0;font-size:.78rem;color:var(--p-muted)}
.prod-buynote--returns{margin-top:6px}
.prod-buynote--returns a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.prod-bespoke__nonret{margin:12px 0 0;padding:10px 12px;border-left:2px solid var(--green,#5c8d3f);background:rgba(92,141,63,.07);font-size:.8rem;line-height:1.5}
.prod-bespoke__nonret a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* body */
.prod-body{padding-top:30px;padding-bottom:70px}
.prod-body h2{font-size:.86rem;letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid var(--p-line);padding-bottom:10px;margin:0 0 16px}
.prod-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:34px}
.prod-chips .chip{border:1px solid var(--p-line);padding:6px 11px;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase}
.prod-desc{margin-bottom:38px;max-width:760px}
.prod-desc__body{line-height:1.65}
.prod-desc__body h3,.prod-desc__body h4{margin:18px 0 8px;font-size:1rem}
.prod-desc__body ul{padding-left:20px}
.prod-specs{margin-bottom:38px;max-width:680px}
.prod-specs table{width:100%;border-collapse:collapse}
.prod-specs th{text-align:left;width:34%;padding:9px 12px 9px 0;border-bottom:1px solid var(--p-line);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);vertical-align:top;font-weight:600}
.prod-specs td{padding:9px 0;border-bottom:1px solid var(--p-line)}
/* downloads — full-width deep-green band, white type. It is the last thing in
   <main>, so it sits straight on the footer (the footer's top margin is
   dropped on product pages that have it). */
.prod-docs{margin:0;padding:52px 0 60px;color:#fff;background:var(--green-deep,#4c7434)}
main:has(> .prod-docs:last-child) + footer{margin-top:0}
.prod-seo + .prod-docs{margin-top:56px}
.prod-docs h2{font-size:.86rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;border-bottom:1px solid rgba(255,255,255,.3);padding-bottom:12px;margin:0 0 16px}
.prod-docs__intro{margin:-4px 0 22px;font-size:.88rem;color:rgba(255,255,255,.8);max-width:62ch}
.prod-docs__group{margin-bottom:22px}
.prod-docs__group:last-child{margin-bottom:0}
.prod-docs__grouph{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72);margin:0 0 10px;font-weight:600}
.prod-docs__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.prod-doc{display:flex;align-items:center;gap:14px;border:1px solid rgba(255,255,255,.32);background:rgba(255,255,255,.07);padding:15px 16px;text-decoration:none;color:#fff;transition:background-color .15s,border-color .15s,color .15s}
.prod-doc:hover{background:#fff;border-color:#fff;color:#1a1a1a}
.prod-doc:focus-visible{outline:2px solid #fff;outline-offset:2px}
.prod-doc__kind{flex:none;width:40px;height:48px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:7px;background:#fff;color:var(--green-deep,#4c7434);font-size:.58rem;font-weight:700;letter-spacing:.06em;clip-path:polygon(0 0,72% 0,100% 22%,100% 100%,0 100%)}
.prod-doc__kind:not(.prod-doc__kind--pdf){background:#1a1a1a;color:#fff}
.prod-doc:hover .prod-doc__kind--pdf{background:var(--green-deep,#4c7434);color:#fff}
.prod-doc__body{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.prod-doc__title{font-size:.9rem;font-weight:600;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.prod-doc__size{display:inline-flex;align-items:center;font-size:.64rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:inherit;opacity:.75;border:1px solid currentColor;padding:1px 6px;font-variant-numeric:tabular-nums}
.prod-doc__dl{flex:none;font-size:1.1rem;align-self:center;opacity:.8}
.prod-doc:hover .prod-doc__dl{color:var(--green-deep,#4c7434);opacity:1}

/* prominent 3D / AR call-to-action */
.prod-seeit{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:0 0 22px;padding:14px 18px;border:1px solid var(--p-green);background:var(--p-paper);color:var(--p-green);font:inherit;font-size:.8rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:background .12s,color .12s}
.prod-seeit:hover{background:var(--p-green);color:#fff}
.prod-seeit svg{width:18px;height:18px}
.prod-upgrades__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:18px}
.prod-upcard{display:block;border:1px solid var(--p-line);text-decoration:none;color:var(--p-ink);padding:12px}
.prod-upcard img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;margin-bottom:10px}
.prod-upcard__name{display:block;font-weight:600;font-size:.9rem}
.prod-upcard__price{display:block;color:var(--p-muted);font-size:.8rem;margin-top:4px}
.prod-upcard:hover{border-color:var(--p-green)}

.prod-empty{padding:60px 0}

@media(max-width:860px){
  .prod-buy{grid-template-columns:1fr;gap:28px}
  .prod-bespoke__grid{grid-template-columns:1fr 1fr}
}

/* ---- gallery: stage controls, 3D thumb, model viewer, zoom modal ---------- */
.prod-media,.prod-info{min-width:0}  /* grid items: stop long content pushing the column past the screen on mobile */
.prod-media__main{position:relative}
.prod-media__main [hidden]{display:none}
.prod-media__main img{cursor:zoom-in}
.prod-model{width:100%;height:100%;display:block;background:var(--p-wash)}

.prod-media__arrow{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;display:flex;align-items:center;justify-content:center;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s;z-index:3}
.prod-media:hover .prod-media__arrow{opacity:.92}
.prod-media__arrow:hover{border-color:var(--p-green);color:var(--p-green);opacity:1}
.prod-media__arrow--prev{left:10px}
.prod-media__arrow--next{right:10px}

.prod-media__zoom{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;cursor:pointer;z-index:3}
.prod-media__zoom svg{width:13px;height:13px}
.prod-media__zoom:hover{border-color:var(--p-green);color:var(--p-green)}
.prod-media__main.is-3d .prod-media__zoom{display:none}
.prod-media__rotate{position:absolute;left:10px;bottom:10px;display:none;align-items:center;gap:6px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;cursor:pointer;z-index:4}
.prod-media__rotate svg{width:14px;height:14px}
.prod-media__rotate:hover{border-color:var(--p-green);color:var(--p-green)}
.prod-media__main.is-3d .prod-media__rotate{display:inline-flex}

.prod-thumb--3d{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--p-muted);font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.prod-thumb--3d svg{width:24px;height:24px}
.prod-thumb--3d.is-active,.prod-thumb--3d:hover{border-color:var(--p-green);color:var(--p-green)}

.prod-ar{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:8px;border:1px solid var(--p-green);background:var(--p-green);color:#fff;font:inherit;font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:9px 14px;cursor:pointer;z-index:4}
.prod-ar:hover{filter:brightness(1.05)}

.prod-zoom{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;background:rgba(20,32,25,.82);padding:34px}
.prod-zoom[hidden]{display:none}
.prod-zoom img{max-width:90vw;max-height:86vh;width:auto;height:auto;object-fit:contain;background:var(--p-paper)}
.prod-zoom__close{position:absolute;top:16px;right:22px;width:42px;height:42px;border:0;background:none;color:#fff;font-size:30px;line-height:1;cursor:pointer}
.prod-zoom__nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:1px solid rgba(255,255,255,.5);background:rgba(0,0,0,.25);color:#fff;font-size:24px;line-height:1;cursor:pointer}
.prod-zoom__nav:hover{background:rgba(0,0,0,.5)}
.prod-zoom__prev{left:18px}
.prod-zoom__next{right:18px}

/* ---- delivery / postcode checker ----------------------------------------- */
.prod-delivery{border:1px solid var(--p-line);padding:14px 16px;margin:16px 0 22px}
.prod-delivery__status{display:flex;gap:11px;align-items:flex-start;margin-bottom:12px}
.prod-delivery__dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--p-green);margin-top:5px}
.prod-delivery__status strong{display:block;font-size:.9rem}
.prod-delivery__sub{display:block;font-size:.78rem;color:var(--p-muted);margin-top:2px}
.prod-delivery__row{display:flex;gap:10px}
.prod-delivery__input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit}
.prod-delivery__input:focus{outline:none;border-color:var(--p-green)}
.prod-delivery__btn{flex:none;padding:10px 16px;border:1px solid var(--p-ink);background:transparent;color:var(--p-ink);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}
.prod-delivery__btn:hover{background:var(--p-ink);color:var(--p-paper)}
.prod-delivery__result{margin:12px 0 0;font-size:.86rem;font-weight:600;color:var(--p-ink)}
.prod-delivery__result.is-free{color:var(--p-green)}
.prod-delivery__result.is-poa{color:var(--p-muted)}
.prod-delivery__result.is-err{color:#b4452f}

@media(min-width:1025px){.prod-seeit{display:none}}

/* Save-to-Hub control */
.prod-save{display:inline-flex;align-items:center;gap:8px;margin:12px 0 2px;padding:9px 15px;border:1px solid var(--p-line);background:var(--p-paper);color:var(--p-ink);font:inherit;font-size:.8rem;letter-spacing:.02em;cursor:pointer;margin-bottom:10px}
.prod-save svg{width:16px;height:16px;transition:fill .15s}
.prod-save:hover{border-color:var(--green,#5c8d3f);color:var(--green,#5c8d3f)}
.prod-save.is-saved{border-color:var(--green,#5c8d3f);color:var(--green,#5c8d3f)}
.prod-save.is-saved svg{fill:var(--green,#5c8d3f)}
.prod-save[disabled]{opacity:.55;cursor:default}