/* 1.7.9 — single product runs on a wider stage so a 2.5x gap ADDS air without
   stealing width from the gallery (at the 1280 site wrap it would have). */
.single-product .arco-woo{max-width:1560px}

/* ═══ ARCO PRODUCT v1.2.0 — the buy box. LAW: zero !important. ═══ */
.arco-pp{font-family:"Atkinson Hyperlegible",sans-serif}
.arco-pp-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(400px,.65fr);gap:240px;align-items:start;margin-bottom:52px}
.arco-pp-stage{position:sticky;top:104px;align-self:start}
body.admin-bar .arco-pp-stage{top:136px}
.arco-pp-stage .woocommerce-product-gallery{background:radial-gradient(120% 100% at 50% 0%,#161B26 0%,var(--arco-deep) 70%);border:1px solid rgba(201,169,110,.16);border-radius:18px;padding:28px}
.arco-pp-stage .woocommerce-product-gallery__image{border-radius:12px;overflow:hidden}
/* v1.19.22 — the zoom joins the navy family: navy grounds the zoom layer and
   every gallery layer above the radial stage; transparent product art zooms
   onto navy, never white. White 🔍 trigger circle re-voiced navy/white
   (droppable). Boundary stated to him: white BAKED INTO a photo file cannot
   be repainted by CSS without corrupting the artwork — those need the files
   reprocessed. */
.arco-pp-stage .zoomImg{background:#1B2740 !important}
.arco-pp-stage .woocommerce-product-gallery__wrapper,.arco-pp-stage .woocommerce-product-gallery__image,.arco-pp-stage .woocommerce-product-gallery__image a,.arco-pp-stage .woocommerce-product-gallery__image img:not(.zoomImg){background:transparent !important}
.woocommerce div.product div.images .woocommerce-product-gallery__trigger{background:#1B2740 !important}
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::before{border-color:#FFFFFF !important}
.woocommerce div.product div.images .woocommerce-product-gallery__trigger::after{background:#FFFFFF !important;border-color:#FFFFFF !important}
.woocommerce div.product div.images .woocommerce-product-gallery__trigger:hover{box-shadow:0 0 0 2px rgba(126,180,230,.55) !important}
/* v1.19.23 — union merge: both chats' zoom lineages reconciled into the
   chapter above (belts+!important+zoomImg exemption from mine, pseudo-stroke
   trigger from theirs); the bench caught my own belt beating my zoomImg. */

.arco-pp-buy{background:var(--arco-panel);border:1px solid rgba(201,169,110,.16);border-radius:18px;padding:30px 32px 26px}
.arco-pp-brandrow{display:flex;gap:10px;margin-bottom:14px}
.arco-chip{font:700 12px/1 "Hanken Grotesk",sans-serif;letter-spacing:.08em;text-transform:uppercase;border:1px solid rgba(201,169,110,.3);border-radius:999px;padding:6px 13px;color:var(--arco-champ)}
.arco-chip.is-cat{color:var(--arco-muted);border-color:rgba(201,169,110,.16)}
.arco-pp-title{font:800 32px/1.15 "Hanken Grotesk",sans-serif;color:var(--arco-bone);margin:0;letter-spacing:-.01em}
.arco-pp-trust{display:flex;flex-wrap:wrap;gap:8px 18px;margin:16px 0 4px;font-size:14.5px;color:var(--arco-muted)}
.arco-pp-trust b{color:#7FB88A;margin-right:5px}
.arco-pp-hr{border:0;border-top:1px solid rgba(201,169,110,.16);margin:20px 0}

/* variations table → cards live here (arco-variations.js builds them) */
.arco-pp-form .variations{border:0;width:100%}
.arco-pp-form .variations th,.arco-pp-form .variations td,
.arco-pp-form .variations .label,.arco-pp-form .variations .value{border:0;padding:0 0 8px;background:none;display:block;width:100%}
.arco-pp-form .variations .label,.arco-pp-form .variations th.label,
.arco-pp-form .variations .label label{font:700 12px "Hanken Grotesk",sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--arco-muted);padding-bottom:10px}
.arco-pp-form .variations select,
.arco-pp-form .variations .value select{display:none}
.arco-pp-form a.reset_variations,.arco-pp .reset_variations{display:none}
.arco-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:11px;margin-bottom:14px}/* v1.18.11 — auto-fit: 3 options share one row, 2 fill the row; the orphan-card-against-a-void layout is impossible */
.arco-opt{position:relative;background:var(--arco-deep);border:1px solid rgba(201,169,110,.3);border-radius:12px;padding:13px 15px;cursor:pointer;transition:.15s;text-align:left}
.arco-opt:hover{border-color:var(--arco-champ);background:rgba(201,169,110,.07)}
.arco-opt .n{display:block;font:800 16px "Hanken Grotesk",sans-serif;color:var(--arco-bone)}
.arco-opt .p{display:block;font-size:14.5px;color:var(--arco-champ);font-weight:700;margin-top:3px;min-height:1em}
.arco-opt.sel{background:var(--arco-champ);border-color:var(--arco-champ)}
.arco-opt.sel .n,.arco-opt.sel .p{color:var(--arco-ink)}
.arco-fact{display:inline-flex;align-items:center;gap:9px;background:var(--arco-deep);border:1px solid rgba(201,169,110,.16);border-radius:9px;padding:9px 14px;font-size:14.5px;color:var(--arco-muted);margin-bottom:8px}
.arco-fact b{color:var(--arco-bone)}
.arco-pp-form .reset_variations{display:none}

/* price + CTA (Woo's own nodes, restyled) */
.arco-pp-form .woocommerce-variation-price .price,
.arco-pp-form .woocommerce-variation-price span.price,
.arco-pp-form .single_variation .price,
.arco-pp-form .single_variation_wrap .price,
.arco-pp-form p.price,
.arco-pp-buy>.arco-pp-form .price{font:800 42px/1.1 "Hanken Grotesk",sans-serif;color:var(--arco-goldh);display:block;margin:14px 0 2px}
.arco-pp-form .price del{font-size:18px;color:var(--arco-dim)}
.arco-pp-form .price .woocommerce-price-suffix{font-size:14px;color:var(--arco-dim);font-weight:400}
.arco-pp-form form.cart{margin:6px 0 0}
/* v1.19.19 — the buy stack under ARMORED CUSTODY (his 16:35 shot: qty flush
   against the button). The bytes said the qty was hidden here since v1.2.0 —
   his live page shows it anyway, white then skinned: the optimizer serves
   this sheet pruned (the 1.18.10 conviction, still active for anything
   outside the inline channel), so display:none, the 1.19.12 breath, and
   base:68's width never reach the browser while Woo core's float:left +
   margin:0 4px 0 0 govern the stack = zero gap. Ruling: the qty is part of
   the design now (both lineages skinned it; he orders breath around it, not
   removal) — :52 retired, every buy-stack rule re-authored in BOTH voices
   with !important, single-voice gap: qty margin 0, button steps back 22px. */
/* v1.19.28 — the display armor learns to yield: WC core hides the qty
   wrapper with an INLINE display:none (jQuery .hide(), e.g. sold-individually
   variations) — and stylesheet !important DEFEATS inline styles, which would
   pin a broken pill open. :not([style*="none"]) lets a core inline-hide win
   while the armor still beats any external STYLESHEET that tries to hide it. */
.arco-pp-form form.cart .quantity:not(.hidden):not([style*="none"]){display:inline-flex !important;align-items:stretch !important;float:none !important;margin:0 !important;background:#080B10 !important;border:1px solid rgba(201,169,110,.55) !important;border-radius:10px !important;overflow:hidden !important}
.arco-pp-form form.cart .quantity.hidden{display:none !important}
/* v1.19.29 belt — any hidden-type qty input folds its wrapper away (see functions.php note). */
.arco-pp-form form.cart .quantity:has(> input.qty[type="hidden"]){display:none !important}
.arco-pp-form .single_add_to_cart_button{float:none !important;display:block !important;width:100% !important;font-size:19px;padding:18px;border-radius:12px;margin-top:32px !important}
/* v1.19.20 — stepper: pill chrome moved to the wrapper, input naked, ± flank;
   sold-individually guard; cart stepper = design donor. */
.arco-pp form.cart .quantity .arco-qty-btn{width:38px;border:0;background:transparent;color:#C9A96E;font-weight:700;font-size:18px;line-height:1;cursor:pointer;padding:0}
.arco-pp form.cart .quantity .arco-qty-btn:hover{background:#C9A96E;color:#141008}
.arco-pp form.cart .quantity .arco-qty-btn:focus-visible{outline:2px solid #C9A96E;outline-offset:-2px}
.arco-pp-form form.cart .quantity:focus-within{border-color:#C9A96E !important;box-shadow:0 0 0 3px rgba(201,169,110,.18) !important}
.arco-pp-form .woocommerce-variation-availability{font-size:14px;color:#7FB88A}

.arco-pp-deliver{text-align:center;font-size:14.5px;color:var(--arco-muted);margin:14px 0 0}
.arco-pp-deliver b{color:#7FB88A}
.arco-pp-gcard{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:var(--arco-deep);border:1px solid rgba(201,169,110,.16);border-radius:12px;padding:15px 18px;margin-top:20px;font-size:14px;color:var(--arco-muted)}
.arco-pp-gcard strong{color:var(--arco-bone)}
.arco-pp-pays{display:flex;gap:6px;flex-wrap:wrap}
.arco-pp-pays span{font-size:11px;font-weight:700;border:1px solid rgba(201,169,110,.3);border-radius:5px;padding:4px 8px}
.arco-pp-keys{margin:4px 0 22px;font-size:15.5px;line-height:1.68}
.arco-pp-keys p{margin:0 0 12px}
.arco-pp-keys p:last-child{margin-bottom:0}
.arco-pp-keys strong{color:var(--arco-bone)}
.arco-pp-meta{margin-top:18px;font-size:13.5px;color:var(--arco-dim)}
.arco-pp-meta .sku_wrapper:has(.sku:empty){display:none}
.arco-pp-meta a{color:var(--arco-champ)}

/* tabs + the serif killer */
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs{display:flex;gap:30px;border-bottom:1px solid rgba(201,169,110,.16);padding:0;margin:0 0 30px;background:none;overflow:visible}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs::before,
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs::after{display:none;border:0}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li{background:none;border:0;padding:0;margin:0;border-radius:0;box-shadow:none}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li::after{display:none;border:0}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li a{font:700 14px "Hanken Grotesk",sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--arco-muted);padding:0 2px 13px;display:block}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li a:hover{color:var(--arco-goldh)}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li.active{background:none}
.woocommerce div.product.arco-pp .woocommerce-tabs ul.tabs li.active a{color:var(--arco-goldh);box-shadow:0 2px 0 0 var(--arco-champ)}
.arco-pp-below .woocommerce-Tabs-panel{font-family:"Atkinson Hyperlegible",sans-serif;font-size:16.5px;line-height:1.7;color:var(--arco-muted)}
.arco-pp-below .woocommerce-Tabs-panel h1,.arco-pp-below .woocommerce-Tabs-panel h2,
.arco-pp-below .woocommerce-Tabs-panel h3,.arco-pp-below .woocommerce-Tabs-panel h4{font-family:"Hanken Grotesk",sans-serif;color:var(--arco-bone)}
.arco-pp-below .woocommerce-Tabs-panel table{background:var(--arco-panel);border-radius:12px;overflow:hidden}
.arco-pp-below section.products>h2{font:800 26px "Hanken Grotesk",sans-serif;color:var(--arco-bone)}

@media(max-width:1600px){.arco-pp-grid{gap:160px}}
@media(max-width:1320px){.arco-pp-grid{gap:96px}}
@media(max-width:1020px){.arco-pp-grid{grid-template-columns:1fr;gap:28px}.arco-pp-title{font-size:27px}}


.arco-pp-below{margin-top:14px}
.arco-pp-below .woocommerce-Tabs-panel{background:var(--arco-panel);border:1px solid rgba(201,169,110,.16);border-radius:16px;padding:32px 36px}
.arco-pp-below .woocommerce-Tabs-panel>h2:first-child{margin-top:0;padding-bottom:12px;border-bottom:1px solid rgba(201,169,110,.16)}
.arco-pp-below .woocommerce-product-attributes{background:transparent}
.arco-pp-below .woocommerce-product-attributes th{width:34%;background:var(--arco-deep);color:var(--arco-champ)}
.arco-pp-below .woocommerce-product-attributes td{color:var(--arco-muted)}
.arco-pp-below section.products{margin-top:44px}

/* reviews */
#reviews .commentlist{list-style:none;margin:0 0 30px;padding:0}
#reviews .commentlist li{background:var(--arco-deep);border:1px solid rgba(201,169,110,.16);border-radius:14px;padding:20px 22px;margin:0 0 16px}
#reviews .commentlist li img.avatar{float:left;width:44px;height:44px;border-radius:50%;margin:0 16px 6px 0;border:1px solid rgba(201,169,110,.3)}
#reviews .comment-text{overflow:hidden}
#reviews .comment-text .meta{font-size:13.5px;color:var(--arco-dim);margin:2px 0 8px}
#reviews .comment-text .meta strong{color:var(--arco-bone);font-family:"Hanken Grotesk",sans-serif}
#reviews .comment-text .description{font-size:15.5px}
#reviews .star-rating{float:right;color:var(--arco-champ)}
#review_form_wrapper{background:var(--arco-panel);border:1px solid rgba(201,169,110,.16);border-radius:16px;padding:28px 32px}
#review_form .comment-reply-title{font:800 20px "Hanken Grotesk",sans-serif;color:var(--arco-bone);display:block;margin-bottom:14px}
#review_form .comment-form-rating .stars a{color:var(--arco-champ)}
#review_form p{margin-bottom:14px}

@media(max-width:1020px){.arco-pp-stage{position:static}}


/* ═══ 1.3.3 — markup-proof: no native pickers survive inside the cart form ═══ */
.arco-pp-form form.cart select,
.arco-pp-form form.cart .reset_variations{display:none}
.arco-pp-form form.cart .price{font:800 42px/1.1 "Hanken Grotesk",sans-serif;color:var(--arco-goldh);display:block;margin:16px 0 2px}
.arco-pp-form form.cart .price del{font-size:18px;color:var(--arco-dim)}
.arco-pp-form form.cart .stock{color:#7FB88A;font-size:14px;margin:2px 0 0}
.arco-pp-form form.cart .stock.out-of-stock{color:#D27A54}


/* ═══ 1.3.4 — the gallery fills its stage (kill core's 48% squeeze),
   simple-product price rendered large ═══ */
/* 1.7.6 — THE REAL 48% KILLER. WC core pins the gallery with
   .woocommerce div.product div.images{width:48%;float:left} at (0,2,2),
   which outranked every previous override here — the gallery has been
   living in HALF its column since day one. These mirror + exceed: */
.woocommerce div.product div.images,
.woocommerce div.product div.images.woocommerce-product-gallery{width:100%;float:none;margin:0}
.woocommerce div.product div.images .woocommerce-product-gallery__wrapper{margin:0}
.woocommerce div.product div.images .woocommerce-product-gallery__image img{width:100%;height:auto;max-height:1000px;object-fit:contain}
.arco-pp-buy>p.price{font:800 42px/1.1 "Hanken Grotesk",sans-serif;color:var(--arco-goldh);margin:4px 0 14px}
.arco-pp-buy>p.price del{font-size:18px;color:var(--arco-dim)}
.arco-pp-buy>p.stock,.arco-pp-buy .stock{color:#7FB88A;font-size:14px}

/* ═══ 1.7.2 — hide Woo's default variation selects, everywhere ═══
   RULE R21: the <select>s MUST stay alive in the DOM — WooCommerce's
   wc-add-to-cart-variation reads and writes them (found_variation math,
   price updates, add-to-cart payload). We hide them with CSS only.
   Never remove, empty, or disable them: that destroys the variations
   logic. The arco-variations card UI syncs clicks into these selects. */
.woocommerce div.product form.cart table.variations select,
.arco-pp form.variations_form table.variations select{display:none}
.woocommerce div.product form.cart a.reset_variations{display:none}


/* ═══ 1.7.2 — WooCommerce's NATIVE variation selects: hidden everywhere they
   render, never removed. They stay in the DOM so wc-add-to-cart-variation
   keeps driving price/stock/availability — arco-variations cards sync into
   them. CSS-only, logic untouched. ═══ */
.woocommerce div.product form.cart .variations select,
.woocommerce div.product form.cart .variations .value select{display:none}

/* ═══ v1.18.8 — the AIR pass (operator: "no air, texts go tightly inside
   that square, tables are weird"). Two convictions: (1) the 1.18.5
   th-header conversion exposed that this sheet NEVER dressed table
   cells — spec tables always rode authored inline padding or nothing,
   and converted th cells fell back to UA bold+center; (2) block rhythm
   inside the panel and the buy card was carried by inline styles alone.
   Tables dressed th=td (semantics kept, look restored); breathing added
   everywhere. The gallery image is untouched — operator loves it. ═══ */

/* tables: full dressing, th styled as td (authored inline styles still win) */
.arco-pp-below .woocommerce-Tabs-panel table{width:100%;border-collapse:collapse;margin:20px 0 30px}
.arco-pp-below .woocommerce-Tabs-panel th,
.arco-pp-below .woocommerce-Tabs-panel td{padding:14px 18px;text-align:left;vertical-align:top;font-weight:inherit;border-bottom:1px solid rgba(201,169,110,.10)}
.arco-pp-below .woocommerce-Tabs-panel tr:last-child th,
.arco-pp-below .woocommerce-Tabs-panel tr:last-child td{border-bottom:0}
.arco-pp-below .woocommerce-Tabs-panel th{color:var(--arco-bone)}

/* the description square: more air at the walls and in the rhythm */
.arco-pp-below .woocommerce-Tabs-panel{padding:44px 50px}
.arco-pp-below .woocommerce-Tabs-panel>h2:first-child{margin-bottom:24px}
.arco-pp-below .woocommerce-Tabs-panel h3{margin:36px 0 16px}
.arco-pp-below .woocommerce-Tabs-panel h4{margin:28px 0 12px}
.arco-pp-below .woocommerce-Tabs-panel h3:first-child{margin-top:0}
.arco-pp-below .woocommerce-Tabs-panel p{margin:0 0 16px}
.arco-pp-below .woocommerce-Tabs-panel ul,
.arco-pp-below .woocommerce-Tabs-panel ol{margin:0 0 20px;padding-left:4px}
.arco-pp-below .woocommerce-Tabs-panel li{margin:0 0 11px}
.arco-pp-below .woocommerce-Tabs-panel hr{border:0;border-top:1px solid rgba(201,169,110,.14);margin:34px 0}

/* the buy card: same breath */
.arco-pp-buy{padding:36px 38px 32px}
.arco-pp-keys{margin:10px 0 26px}
.arco-pp-keys ul{margin:14px 0 0;padding-left:0}
.arco-pp-keys li{margin:0 0 11px}
.arco-pp-gcard{padding:20px 22px;margin:22px 0 8px}
.arco-pp-meta{margin-top:22px;line-height:1.8}

/* v1.18.9 — operator spec: "at least 2 cm on each side" of the
   description. 2 cm ≈ 76px at standard density — shipped 82px walls
   (≈2.2 cm), stepped down responsively so phones don't drown in
   margin. */
.arco-pp-below .woocommerce-Tabs-panel{padding:50px 82px}
@media(max-width:1320px){.arco-pp-below .woocommerce-Tabs-panel{padding:44px 60px}}
@media(max-width:768px){.arco-pp-below .woocommerce-Tabs-panel{padding:30px 24px}}

/* v1.18.11 — combination not offered under the other selection: the card says so instead of silently blanking its price */
.arco-opt.is-unavail{opacity:.42;border-style:dashed}
.arco-opt.is-unavail .p::before{content:"not available"}

/* v1.18.12 — Additional Information two-tone (operator: left pane full
   dark, right one lighter): label column sits on the deepest surface,
   value column a step lighter than the panel; core's stray italics
   normalized so the tones read clean. */
/* v1.18.15 — the fills were the cheapness (operator: coffee "doesn't taste me").
   Sitewide-candidate table language: ONE deep ground, champagne caps recede,
   bone values lead, hairlines + frame + faint seam do the joinery. */
.arco-pp-below .woocommerce-Tabs-panel--additional_information th,
.arco-pp-below .woocommerce-Tabs-panel--additional_information td{background:transparent}
.arco-pp-below .woocommerce-Tabs-panel--additional_information{background:#0C1017}
.arco-pp-below .woocommerce-Tabs-panel--additional_information td{color:var(--arco-bone);font-size:15.5px}
.arco-pp-below .woocommerce-Tabs-panel--additional_information th{border-right:1px solid rgba(201,169,110,.10)}/* v1.18.13 — the pale slab convicted: value rail to deep coffee, text a step warmer, gold hairline seam; label rail frozen (operator: beautiful) */
.arco-pp-below .woocommerce-Tabs-panel--additional_information td p{margin:0;font-style:normal}

/* ═══ v1.18.14 — FREE-HANDS LUXE (operator: "surprise me… super luxurious,
   clean and expensive" on the description content + additional info).
   Champagne-toned marks on an aligned rail, editorial fading hairlines,
   framed tables, bone leads, tracked label rail. Marks remain announced —
   the ✅ ruling is visual-untouched canon. ═══ */
.arco-glyph{filter:sepia(1) saturate(1.35) hue-rotate(-10deg) brightness(1.08);display:inline-block}
/* v1.18.15 — grid removed (anonymous text items fell into the 26px mark
   column: word-per-line towers, operator's screenshots). Same aligned
   rail via hanging indent — inline flow, structurally incapable of it. */
/* v1.19.18 — rail retuned + the inherited-indent paint bug cured: the glyph
   span is inline-block, so the li's negative text-indent shifted the emoji
   37px left of its own box — clipped inside 24px mobile walls, giant void
   before the words, wraps off the text edge. Span indent zeroed, glyph box
   fixed at 24px + 14px air = first-line text lands exactly on the 38px wrap
   edge. 16px breath between items; left alignment armored. The armored copy
   in functions.php outranks this sheet — both voices agree byte-for-byte. */
.arco-pp-below .woocommerce-Tabs-panel ul li:has(> .arco-glyph:first-child){padding-left:38px;text-indent:-38px;text-align:left !important;margin:0 0 16px}
.arco-pp-below .woocommerce-Tabs-panel ul li:has(> .arco-glyph:first-child)>.arco-glyph{text-indent:0;min-width:24px;margin-right:14px}
.arco-pp-below .woocommerce-Tabs-panel strong{color:var(--arco-bone)}
.arco-pp-below .woocommerce-Tabs-panel hr{border:0;height:1px;background:linear-gradient(90deg,rgba(201,169,110,.32),rgba(201,169,110,0) 72%)}
.arco-pp-below .woocommerce-Tabs-panel table{border:1px solid rgba(201,169,110,.12)}
.arco-pp-below .woocommerce-Tabs-panel--additional_information th{font:700 12.5px/1.6 "Hanken Grotesk",sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--arco-champ);padding:18px 20px}
.arco-pp-below .woocommerce-Tabs-panel--additional_information td{padding:17px 20px}

/* ═══ v1.19.1 — table proportions (operator: "dimensions… so weird").
   Tables stop stretching the full panel: capped width, proportional
   label rail, calmer row rhythm. One family for every table. ═══ */
.arco-pp-below .woocommerce-Tabs-panel table{max-width:880px}
.arco-pp-below .woocommerce-Tabs-panel--additional_information th{width:30%;min-width:180px;padding:16px 22px}
.arco-pp-below .woocommerce-Tabs-panel--additional_information td{padding:16px 22px}

/* ═══ v1.19.2 — the walk punch list ═══ */
/* grid cards: presence at rest (operator: hover fine, rest "kind of um") */
ul.products li.product{border-color:rgba(201,169,110,.15) !important;box-shadow:0 10px 30px rgba(0,0,0,.28)}
/* grid buy buttons: slimmer (operator: "Get my license is too big") */
ul.products li.product .button{padding:13px 0;font-size:13px;letter-spacing:.02em}
/* mini-cart remove: navy hover, white cross (operator's spec) */
.widget_shopping_cart a.remove,.arco-mini-cart a.remove{color:var(--arco-muted);transition:.15s}
.widget_shopping_cart a.remove:hover,.arco-mini-cart a.remove:hover{background:#1B2740;color:#FFFFFF;border-color:#1B2740}


/* ═══ v1.19.10 — HIS LETTER: B ("that blue one is great!"). The description-
   tab tables wear the AZURE JOINERY end to end: frame, row hairlines, and
   the selected column already washed azure in base.css. Scoped to the
   description panel ONLY — Additional Information keeps its frozen
   champagne rail exactly as he ruled it beautiful. ═══ */
.arco-pp-below .woocommerce-Tabs-panel--description table{border-color:rgba(126,180,230,.14)}
.arco-pp-below .woocommerce-Tabs-panel--description th,
.arco-pp-below .woocommerce-Tabs-panel--description td{border-bottom-color:rgba(126,180,230,.10)}

/* ═══ v1.19.10 — DESIGNED YES/NO MARKS (his flag: the filtered ✅/❌ "won't
   pass accessibility test" — correct at the mechanism level: a CSS-filtered
   emoji has platform-dependent, uncontrollable color and can never be
   certified against WCAG 1.4.11. These chips use exact house hex: YES lights
   azure (the included feature), NO recedes muted (the absent one) — shape,
   chip, and the YES/NO text all carry the meaning, never color alone. The
   emoji stays in the DOM at size 0 for VoiceOver (announced-glyph canon);
   the ::before alt-text syntax keeps the drawn mark silent to readers. ═══ */
/* v1.19.12 — HIS RULING: the chips in the feature lists were worse than the
   toned marks — my overreach; the a11y case was born in the tables and the
   chips now live ONLY there. Outside tables the base .arco-glyph champagne
   toning applies again, exactly the previous look. */
.arco-pp-below table .arco-glyph-yes,.arco-pp-below table .arco-glyph-no{font-size:0;line-height:0;filter:none}
.arco-pp-below table .arco-glyph-yes::before,.arco-pp-below table .arco-glyph-no::before{display:inline-block;font:800 13px/1 "Hanken Grotesk",sans-serif;min-width:21px;padding:3px 0;text-align:center;border-radius:6px;vertical-align:middle}
.arco-pp-below table .arco-glyph-yes::before{content:"\2713";content:"\2713" / "";color:#7EB4E6;background:rgba(126,180,230,.13);border:1px solid rgba(126,180,230,.55)}
.arco-pp-below table .arco-glyph-no::before{content:"\2715";content:"\2715" / "";color:#AEB4C0;background:rgba(174,180,192,.09);border:1px solid rgba(174,180,192,.55)}

/* ═══ v1.19.11 — PRODUCT ↔ KB RAIL: the quiet azure utility plate under the
   guarantee card. Navigation speaks the navy/azure family; it must never
   compete with the champagne money CTA above it. Hover = the loved
   cross-hover physics: navy fill, white voice. ═══ */
.arco-pp-kbrail{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0 0;padding:14px 18px;background:rgba(126,180,230,.05);border:1px solid rgba(126,180,230,.22);border-radius:12px;text-decoration:none;transition:background .18s ease,border-color .18s ease}
.arco-pp-kbrail-txt{font-size:13.5px;line-height:1.55;color:var(--arco-muted)}
.arco-pp-kbrail-txt strong{color:var(--arco-bone)}
.arco-pp-kbrail-go{white-space:nowrap;font-weight:800;font-size:13.5px;color:#7EB4E6}
.arco-pp-kbrail:hover,.arco-pp-kbrail:focus-visible{background:#1B2740;border-color:#7EB4E6}
.arco-pp-kbrail:hover .arco-pp-kbrail-txt,.arco-pp-kbrail:focus-visible .arco-pp-kbrail-txt,
.arco-pp-kbrail:hover .arco-pp-kbrail-txt strong,.arco-pp-kbrail:focus-visible .arco-pp-kbrail-txt strong,
.arco-pp-kbrail:hover .arco-pp-kbrail-go,.arco-pp-kbrail:focus-visible .arco-pp-kbrail-go{color:#FFFFFF}
@media(max-width:560px){.arco-pp-kbrail{flex-direction:column;align-items:flex-start;gap:6px}}

/* ═══ v1.19.12 — BUY-CARD BREATH (his order: "a little bit of breath space
   in the price tag + in between quantity and between get license"): the
   price no longer sits on the stock line, the stock line no longer sits on
   the quantity, and the button steps back from the form. ═══ */
.arco-pp-form p.price,
.arco-pp-buy>.arco-pp-form .price,
.arco-pp-form form.cart .price{margin:18px 0 10px}
.arco-pp-form form.cart .stock{margin:4px 0 18px}
/* v1.19.19 — qty margin + button step re-homed to the custody chapter
   (single voice; the pruned sheet never delivered these two on live). */

/* ═══ v1.19.15 — THE SPACE, finally decoded from his shot: the 37px hanging
   rail shoved the buy-card key marks onto the card's left edge with a void
   before the words — right design for the panel's 82px walls, zero-tolerance
   physics inside a 38px card. Keys marks now sit INLINE with their words;
   wrapped lines return underneath; nothing can strand at the edge. Rail
   stays in the description panel exactly as he approved it. ═══ */
.arco-pp-keys li{padding-left:0;text-indent:0;margin:0 0 14px}
.arco-pp-keys li>.arco-glyph{text-indent:0;margin-right:10px}
/* v1.19.22 — class twins for the mark rail: guard v6.2 tags nested-glyph
   vintages (leading glyph nested inside strong) the :has form cannot see; declarations agree
   byte-for-byte with the :has pair and the armored copies. */
.arco-pp-below .woocommerce-Tabs-panel ul li.arco-mark-li{display:block !important;padding-left:38px;text-indent:-38px;text-align:left !important;margin:0 0 16px}
.arco-pp-below .woocommerce-Tabs-panel ul li.arco-mark-li .arco-mark-lead,.arco-pp-below .woocommerce-Tabs-panel ul li:has(> .arco-glyph:first-child) .arco-glyph{text-indent:0}
.arco-pp-below .woocommerce-Tabs-panel ul li.arco-mark-li .arco-mark-lead{min-width:24px;margin-right:14px}
.arco-pp-keys li.arco-mark-li{display:block !important;padding-left:0;text-indent:0;margin:0 0 14px}
.arco-pp-keys li.arco-mark-li .arco-mark-lead{text-indent:0;margin-right:10px}

/* ═══ v1.19.18 — qty input joins the dark card. Re-implemented from the
   1.19.17 ledger spec after the parallel-build collision (two chats, same
   screenshot, two lineages — this build is the union). Literal ground
   #080B10 because --arco-card is double-defined and legacy :root wins;
   token collision stays flagged, untouched. Hairline at .55 alpha per the
   1.19.10 border-contrast law (3.19:1 on the card ground). ═══ */
/* v1.19.27 — QTY VALUE LEGIBILITY ARMOR (the 1.17.7 wallet precedent applied
   here): live showed the digit invisible while BOTH voices painted
   color:#E9E7E0 — the one paint property that beats an applied !important
   color is -webkit-text-fill-color from ANY outside sheet (optimizer-
   generated CSS, plugin styles). Armor: text-fill + opacity pinned in both
   voices, plus a high-specificity twin no generated rule outranks. */
.arco-pp form.cart .quantity .qty{width:52px !important;text-align:center !important;background:transparent !important;color:#E9E7E0 !important;-webkit-text-fill-color:#E9E7E0 !important;opacity:1 !important;caret-color:#C9A96E;border:0 !important;border-radius:0 !important;padding:10px 4px !important;-moz-appearance:textfield}
.arco-pp .arco-pp-form form.cart .quantity input.qty{color:#E9E7E0 !important;-webkit-text-fill-color:#E9E7E0 !important;opacity:1 !important}
.arco-pp form.cart .quantity .qty:focus{outline:none !important}
.arco-pp form.cart .quantity .qty::-webkit-outer-spin-button,.arco-pp form.cart .quantity .qty::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}
