/* Generated by build/build_css.py from design/prototype (scoped to .ob-st). Palette: tokens.css. */
.ob-st 500;600;700&display=swap');

@media (max-width:767px){:root{--gutter:16px}}
.ob-st *,.ob-st *::before,.ob-st *::after{box-sizing:border-box}
.ob-st{scroll-behavior:smooth;scroll-padding-bottom:90px}
.ob-st{margin:0;font-family:var(--ob-font);font-size:16px;line-height:1.6;color:var(--ob-slate-700);background:var(--ob-bg);-webkit-font-smoothing:antialiased}
.ob-st img{max-width:100%;display:block}
.ob-st a{color:var(--ob-blue-600)}
.ob-st a:hover{color:var(--ob-blue-700)}
.ob-st :focus-visible{outline:none;box-shadow:var(--sh-focus);border-radius:4px}
.ob-st .container{max-width:calc(var(--container) + 2*var(--gutter));margin:0 auto;padding:0 var(--gutter)}
.ob-st .sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ob-st .t-display{font-size:44px;line-height:1.1;font-weight:600;color:var(--ob-navy-900);letter-spacing:-.5px}
.ob-st h1,.ob-st .t-h1{font-size:36px;line-height:1.15;font-weight:600;color:var(--ob-navy-900);margin:0}
.ob-st h2,.ob-st .t-h2{font-size:30px;line-height:1.2;font-weight:600;color:var(--ob-navy-900);margin:0}
.ob-st h3,.ob-st .t-h3{font-size:20px;line-height:1.35;font-weight:600;color:var(--ob-navy-900);margin:0}
.ob-st h4,.ob-st .t-h4{font-size:16px;line-height:1.4;font-weight:600;color:var(--ob-navy-900);margin:0}
.ob-st .t-lead{font-size:18px;line-height:1.55}
.ob-st .t-body{font-size:16px;line-height:1.6}
.ob-st .t-small{font-size:14px;line-height:1.5}
.ob-st .t-micro{font-size:12px;line-height:1.4}
.ob-st .eyebrow{font-size:13px;line-height:1.3;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ob-blue-600)}
.ob-st .subtitle{font-size:22px;line-height:1.3;font-weight:500;color:var(--ob-slate-500)}
.ob-st .price{font-size:40px;line-height:1;font-weight:600;color:var(--ob-navy-950);letter-spacing:-.5px}
@media (max-width:767px){.ob-st .t-display{font-size:32px}
.ob-st h1,.ob-st .t-h1{font-size:28px}
.ob-st h2,.ob-st .t-h2{font-size:24px}
.ob-st h3,.ob-st .t-h3{font-size:18px}
.ob-st .subtitle{font-size:18px}
.ob-st .price{font-size:34px}
.ob-st .t-lead{font-size:17px}}
.ob-st .btn{--h:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--h);padding:0 22px;border-radius:var(--r-md);border:1.5px solid transparent;font:600 16px/1 var(--ob-font);text-decoration:none;cursor:pointer;transition:background .15s,box-shadow .15s,transform .05s;white-space:nowrap}
.ob-st .btn:active{transform:translateY(1px)}
.ob-st .btn-lg{--h:56px;font-size:17px;padding:0 28px}
.ob-st .btn-sm{--h:40px;font-size:14px;padding:0 16px}
.ob-st .btn-primary{background:var(--ob-navy-900);color:#fff;box-shadow:var(--sh-2)}
.ob-st .btn-primary:hover{background:var(--ob-navy-hover);color:#fff}
.ob-st .btn-primary:active{background:var(--ob-navy-950)}
.ob-st .btn-secondary{background:#fff;color:var(--ob-navy-900);border-color:var(--ob-border)}
.ob-st .btn-secondary:hover{background:var(--ob-navy-900);border-color:var(--ob-navy-900);color:#fff} /* v1.1.27 P2 DV-024: fill on hover */
.ob-st .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.ob-st .btn-ghost:hover{background:rgba(255,255,255,.1);color:#fff}
.ob-st .btn-light{background:#fff;color:var(--ob-navy-900)}
.ob-st .btn-light:hover{background:var(--ob-blue-50);color:var(--ob-navy-900)}
.ob-st .btn-paypal{background:var(--ob-paypal);color:#111827}
.ob-st .btn-paypal:hover{filter:brightness(.96)}
.ob-st .btn-pay{background:var(--ob-black);color:#fff}
.ob-st .btn-pay:hover{background:#222;color:#fff}
.ob-st .btn-paylater{background:#fff;color:#003087;border-color:#c5ccd6}
.ob-st .btn[disabled],.ob-st .btn.is-disabled{background:#E5E9EF;color:#8A94A3;box-shadow:none;cursor:not-allowed;border-color:transparent}
.ob-st .btn.is-loading{color:transparent;position:relative}
.ob-st .btn.is-loading::after{content:"";position:absolute;width:18px;height:18px;border:2px solid #fff;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.ob-st .btn-block{width:100%}
.ob-st .pp{font-weight:700;font-style:italic;color:#003087}
.ob-st .pp b{color:#009cde}
.ob-st .ic{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.ob-st .ic-lg{width:28px;height:28px}
.ob-st .chip{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:1px solid var(--ob-blue-100);border-radius:var(--r-pill);background:#fff;color:var(--ob-navy-900);font-size:14px;font-weight:500}
.ob-st .badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:600;line-height:1.4;background:#fff;color:var(--ob-navy-900);box-shadow:var(--sh-1)}
.ob-st .badge-blue{background:var(--ob-blue-50);color:var(--ob-blue-700)}
.ob-st .badge-sale{background:var(--ob-sale);color:#fff}
.ob-st .ph{display:inline-block;border:1.5px dashed var(--ob-ph-border);background:var(--ob-ph-bg);color:var(--ob-ph-text);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600}
.ob-st .card{background:#fff;border:1px solid var(--ob-border);border-radius:var(--r-lg);padding:var(--s6)}
.ob-st .card-hover{transition:box-shadow .2s,border-color .2s}
.ob-st .card-hover:hover{box-shadow:var(--sh-2);border-color:var(--ob-blue-100)}
.ob-st .tile{background:var(--ob-bg-subtle);border-radius:var(--r-md);padding:14px 10px;text-align:center}
.ob-st .tile b{display:block;font-size:22px;line-height:1.2;font-weight:600;color:var(--ob-blue-600)}
.ob-st .tile span{font-size:13px;color:var(--ob-slate-500)}
.ob-st .metric{background:#fff;border:1px solid var(--ob-border);border-radius:var(--r-lg);padding:20px 22px}
.ob-st .metric b{display:block;font-size:34px;line-height:1.1;font-weight:600;color:var(--ob-blue-600)}
.ob-st .metric span{font-size:14px;color:var(--ob-slate-500)}
.ob-st .ph-img{background:linear-gradient(135deg,#eef2f7,#dfe6ef);display:flex;align-items:center;justify-content:center;color:#6b7686;font-size:13px;font-weight:500;text-align:center;padding:8px}
.ob-st .opt-row{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:start;padding:12px 0;border:0;margin:0}
.ob-st .opt-row[hidden]{display:none!important} /* v1.1.13 S1-18: dependent option groups */
.ob-st .opt-row legend{float:left;width:120px;padding:6px 0 0;font-size:15px;font-weight:600;color:var(--ob-navy-900);line-height:1.3}
.ob-st .opt-row legend small{display:block;font-weight:400;font-size:13px;color:var(--ob-slate-400)}
.ob-st .opt-grid{display:grid;grid-template-columns:repeat(var(--cols,2),1fr);gap:10px}
.ob-st .opt{position:relative;display:block;cursor:pointer}
.ob-st .opt input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.ob-st .opt .opt-card{display:flex;gap:10px;align-items:flex-start;min-height:56px;padding:10px 12px;border:1.5px solid var(--ob-border);border-radius:var(--r-md);background:#fff;transition:border-color .15s,background .15s}
.ob-st .opt .opt-card strong{display:block;font-size:15px;font-weight:600;color:var(--ob-navy-900);line-height:1.3}
.ob-st .opt .opt-card small{display:block;font-size:13px;color:var(--ob-slate-500)}
.ob-st .opt .opt-card .plus{color:var(--ob-blue-600);font-weight:600;font-size:14px}
.ob-st .opt:hover .opt-card{border-color:var(--ob-blue-200)}
.ob-st .opt input:checked + .opt-card{border-color:var(--ob-blue-600);background:var(--ob-blue-50);box-shadow:inset 0 0 0 1px var(--ob-blue-600)}
.ob-st .opt input:focus-visible + .opt-card{box-shadow:var(--sh-focus)}
.ob-st .opt input:disabled + .opt-card{opacity:.5;cursor:not-allowed}
.ob-st .opt .box{width:20px;height:20px;flex:none;border:1.5px solid #9AA6B5;border-radius:5px;margin-top:1px;display:grid;place-items:center;background:#fff}
.ob-st .opt input:checked + .opt-card .box{background:var(--ob-blue-600);border-color:var(--ob-blue-600)}
.ob-st .opt input:checked + .opt-card .box::after{content:"";width:10px;height:6px;border:2px solid #fff;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
.ob-st .field{display:block}
.ob-st .field label{display:block;font-size:14px;font-weight:600;color:var(--ob-navy-900);margin-bottom:6px}
.ob-st .input{width:100%;min-height:48px;padding:0 14px;border:1.5px solid var(--ob-border);border-radius:var(--r-md);font:16px var(--ob-font);color:var(--ob-navy-950)}
.ob-st .input:focus{outline:none;border-color:var(--ob-blue-600);box-shadow:0 0 0 3px rgba(73,110,160,.2)}
.ob-st .input.is-error{border-color:var(--ob-sale)}
.ob-st .err{color:var(--ob-sale);font-size:13px;margin-top:4px}
.ob-st .qty{display:inline-flex;align-items:center;border:1.5px solid var(--ob-border);border-radius:var(--r-md);height:56px;background:#fff}
.ob-st .qty button{width:44px;height:100%;border:0;background:none;font-size:20px;color:var(--ob-navy-900);cursor:pointer;border-radius:var(--r-md)}
.ob-st .qty input{width:40px;border:0;text-align:center;font:600 17px var(--ob-font);color:var(--ob-navy-950);-moz-appearance:textfield}
.ob-st .qty input::-webkit-inner-spin-button{-webkit-appearance:none}
@media (max-width:767px){.ob-st .opt-row{grid-template-columns:1fr;gap:8px}
.ob-st .opt-row legend{float:none;width:auto;padding:0}
.ob-st .opt-grid{grid-template-columns:1fr}
.ob-st .opt-grid.keep-2{grid-template-columns:1fr 1fr}}
.ob-st .section{padding:var(--s20) 0}
.ob-st .section-alt{background:var(--ob-bg-subtle)}
.ob-st .section-head{margin-bottom:var(--s8)}
.ob-st .section-head p{margin:8px 0 0;color:var(--ob-slate-500)}
@media (max-width:767px){.ob-st .section{padding:var(--s12) 0}}
.ob-st .seg{display:grid;grid-template-columns:repeat(var(--cols,2),1fr);border:1.5px solid var(--ob-border);border-radius:var(--r-md);padding:4px;gap:4px;background:var(--ob-bg-subtle)}
.ob-st .seg label{position:relative;cursor:pointer}
.ob-st .seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.ob-st .seg span{display:flex;flex-direction:column;justify-content:center;min-height:48px;padding:6px 12px;border-radius:7px;text-align:center;transition:background .15s}
.ob-st .seg strong{font-size:15px;font-weight:600;color:var(--ob-navy-900);line-height:1.25}
.ob-st .seg small{font-size:13px;color:var(--ob-slate-500)}
.ob-st .seg small.plus{color:var(--ob-blue-600);font-weight:600}
.ob-st .seg input:checked+span{background:#fff;box-shadow:inset 0 0 0 1.5px var(--ob-blue-600),var(--sh-1)}
.ob-st .seg input:focus-visible+span{box-shadow:var(--sh-focus)}
.ob-st .opt.quiet .opt-card{min-height:48px;border-width:1px;background:transparent;padding:8px 10px}
.ob-st .opt.quiet .opt-card strong{font-weight:500;font-size:14px}
.ob-st .opt.quiet input:checked + .opt-card{background:#fff;box-shadow:none;border-color:var(--ob-blue-600)}
.ob-st .ph-gw{display:flex;align-items:center;justify-content:center;min-height:48px;border:1.5px dashed var(--ob-ph-border);background:var(--ob-ph-bg);color:var(--ob-ph-text);border-radius:var(--r-md);font-size:13px;font-weight:600;text-align:center;padding:4px 8px;line-height:1.3}
.ob-st .pay-placeholder{white-space:nowrap;display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 14px;border:1.5px dashed #C9D1DC;border-radius:var(--r-md);background:#F1F3F6;color:#5D6878;font:500 14px/1.2 var(--ob-font);cursor:not-allowed;box-shadow:none;-webkit-appearance:none;appearance:none}
.ob-st .pay-placeholder:hover,.ob-st .pay-placeholder:active{background:#F1F3F6;transform:none}
.ob-st .pay-row{display:grid;gap:10px;margin-top:10px}
.ob-st .pay-row.wallets{grid-template-columns:repeat(3,1fr)}
@media (max-width:420px){.ob-st .pay-row.wallets{grid-template-columns:1fr 1fr}
.ob-st .pay-row.wallets .pay-placeholder:last-child{grid-column:1/-1}}
.ob-st .mk{display:inline;background:#FFF4CC;color:#7A4A00;border:1px dashed #C08A00;border-radius:4px;padding:0 4px;font-size:.85em;font-weight:600;font-style:normal}
.ob-st .disclaimer{font-size:12.5px;line-height:1.5;color:var(--ob-slate-500);margin:12px 0 0}
.ob-st .disclaimer b{color:var(--ob-navy-900)}
.ob-st .pay-row.wallets .pay-placeholder{font-size:13px;padding:0 8px}
.ob-st .logo img{height:42px;width:auto}
.ob-st .util{margin-left:auto;display:flex;align-items:center;gap:22px;font-size:14px;color:var(--ob-slate-700)}
.ob-st .util a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.ob-st .util a:hover{color:var(--ob-blue-700)}
.ob-st .util .call b{color:var(--ob-navy-950);font-weight:700}
.ob-st .util .call em{font-style:normal;color:var(--ob-slate-500)}
.ob-st .cart-btn{background:var(--ob-blue-600);color:#fff!important;border-radius:var(--r-pill);padding:9px 16px;font-weight:600}
.ob-st .cart-btn:hover{background:var(--ob-blue-700)}
.ob-st .icon-btn{display:none;width:44px;height:44px;border:0;background:none;color:var(--ob-navy-900);border-radius:10px;align-items:center;justify-content:center;cursor:pointer;position:relative}
.ob-st .icon-btn .count{position:absolute;top:4px;right:2px;background:var(--ob-blue-600);color:#fff;font-size:11px;font-weight:700;border-radius:10px;min-width:18px;height:18px;display:grid;place-items:center}
.ob-st .nav-top{display:inline-flex;align-items:center;gap:4px;height:52px;padding:0 14px;border:0;background:none;font:600 14px var(--ob-font);letter-spacing:.6px;text-transform:uppercase;color:var(--ob-navy-900);text-decoration:none;cursor:pointer;border-bottom:3px solid transparent}
.ob-st .nav-top:hover,.ob-st .nav-top[aria-expanded=true]{color:var(--ob-blue-700);border-bottom-color:var(--ob-blue-600)}
.ob-st .nav-top .chev{width:14px;height:14px;transition:transform .15s}
.ob-st .nav-top[aria-expanded=true] .chev{transform:rotate(180deg)}
.ob-st .nav-top.sale{color:var(--ob-sale)}
.ob-st .nav-top.sale::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ob-sale);margin-right:4px}
.ob-st .mega{position:absolute;left:0;right:0;top:100%;background:#fff;border-top:1px solid var(--ob-border);box-shadow:var(--sh-3);display:none;z-index:60}
.ob-st .mega.open{display:block}
.ob-st .mega-inner{display:grid;grid-template-columns:repeat(4,1fr) 300px;gap:20px;padding:28px 0 32px}
.ob-st .mega-inner.cols-3{grid-template-columns:repeat(3,1fr) 300px}
.ob-st .mega-inner.cols-2{grid-template-columns:repeat(2,1fr) 300px}
.ob-st .mega-link{display:block;padding:14px;border-radius:var(--r-md);text-decoration:none;color:var(--ob-slate-700);border:1px solid transparent}
.ob-st .mega-link:hover,.ob-st .mega-link:focus-visible{background:var(--ob-bg-subtle);border-color:var(--ob-border)}
.ob-st .mega-link .ph-img{height:110px;border-radius:8px;margin-bottom:12px}
.ob-st .mega-link strong{display:block;color:var(--ob-navy-900);font-size:16px;font-weight:600;margin-bottom:2px}
.ob-st .mega-link span{font-size:14px;color:var(--ob-slate-500);line-height:1.45;display:block}
.ob-st .mega-link .tag{display:inline-block;margin-top:8px}
.ob-st .mega-feature{background:var(--ob-navy-900);color:#dfe6ef;border-radius:var(--r-lg);padding:20px;display:flex;flex-direction:column;gap:8px}
.ob-st .mega-feature strong{color:#fff;font-size:17px}
.ob-st .mega-feature .ph-img{height:120px;border-radius:8px;background:linear-gradient(135deg,#3b4a5e,#2a3443);color:#aeb8c6}
.ob-st .mega-feature a.btn{margin-top:auto}
.ob-st .mega-foot{border-top:1px solid var(--ob-border);padding:12px var(--gutter);font-size:14px;display:flex;gap:24px}
.ob-st .mega-foot a{text-decoration:none;font-weight:600}
.ob-st .acc-btn,.ob-st .acc-link{display:flex;width:100%;align-items:center;justify-content:space-between;min-height:56px;padding:0 16px;border:0;border-bottom:1px solid var(--ob-border);background:#fff;font:600 16px var(--ob-font);color:var(--ob-navy-900);text-decoration:none;text-align:left;cursor:pointer}
.ob-st .acc-btn[aria-expanded=true]{background:var(--ob-bg-subtle)}
.ob-st .acc-btn[aria-expanded=true] .chev{transform:rotate(180deg)}
.ob-st .acc-panel{display:none;background:var(--ob-bg-subtle);padding:4px 0 10px;border-bottom:1px solid var(--ob-border)}
.ob-st .acc-panel.open{display:block}
.ob-st .acc-panel a{display:block;padding:11px 16px 11px 28px;color:var(--ob-slate-700);text-decoration:none;font-size:15px}
.ob-st .acc-panel a small{display:block;color:var(--ob-slate-500);font-size:13px}
.ob-st .acc-link.sale{color:var(--ob-sale)}
@media (max-width:1100px){.ob-st .util .ww,.ob-st .util .avail{display:none}}
@media (max-width:1023px){.ob-st .mainnav,.ob-st .util{display:none}
.ob-st .icon-btn{display:inline-flex}
.ob-st .logo{margin:0 auto 0 4px}
.ob-st .logo img{height:32px}}
.ob-st .crumbs{font-size:13px;color:var(--ob-slate-500);padding:18px 0}
.ob-st .crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.ob-st .crumbs li+li::before{content:"›";margin-right:6px;color:#9aa3ae}
.ob-st .crumbs a{color:var(--ob-blue-600);text-decoration:none}
@media (max-width:767px){.ob-st .crumbs{padding:12px 0}
.ob-st .crumbs .mid{display:none}}
.ob-st .pdp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"gallery head" "gallery buy";column-gap:48px;align-items:start;padding-bottom:var(--s12)}
.ob-st .pdp-gallery{grid-area:gallery;position:sticky;top:16px}
.ob-st .pdp-head{grid-area:head}
.ob-st .pdp-buy{grid-area:buy}
/* v1.1.27 P2 DV-027: the gallery spans both rows ("gallery head" / "gallery buy"); with two auto rows the grid spread the
   extra gallery height over BOTH rows, so a short buy box left a ~70px hole under the H1. Head row = content height,
   buy row takes the remainder (the 1fr track absorbs the spanning gallery). Two-column layout only exists at >=900px. */
@media (min-width:900px){.ob-st .pdp{grid-template-rows:auto 1fr}}
.ob-st .main-img{position:relative;aspect-ratio:1/1.12;border-radius:var(--r-lg);overflow:hidden}
.ob-st .main-img .badge{position:absolute;top:16px;left:16px}
.ob-st .thumbs{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:10px;list-style:none;padding:0}
.ob-st .thumbs button{width:100%;aspect-ratio:1;border:1.5px solid var(--ob-border);border-radius:8px;padding:0;overflow:hidden;cursor:pointer;background:none;position:relative}
.ob-st .thumbs button .ph-img{width:100%;height:100%;font-size:10px;align-items:flex-end;padding:0}
.ob-st .thumbs button span.lbl{position:absolute;left:0;right:0;bottom:0;background:rgba(49,61,77,.78);color:#fff;font-size:10px;padding:2px}
.ob-st .thumbs button[aria-current=true]{border-color:var(--ob-blue-600);box-shadow:inset 0 0 0 1px var(--ob-blue-600)}
.ob-st .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
.ob-st .pdp-head h1{margin:8px 0 4px}
/* v1.1.28 P2 DV-028 (CSS only, per ruling; no template nowrap span): no orphan after a hyphen ("…4-" / "Station"). */
.ob-st .pdp-head h1{text-wrap:balance}
.ob-st .rating{display:flex;align-items:center;gap:10px;margin:12px 0 16px;font-size:14px}
.ob-st .stars{color:#d5dae1;letter-spacing:2px;font-size:16px}
.ob-st .price-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 0;border-top:1px solid var(--ob-border);border-bottom:1px solid var(--ob-border)}
.ob-st .fin{font-size:14px;line-height:1.5;text-align:left}
.ob-st .fin a{font-weight:600}
.ob-st .pitch{margin:16px 0 12px;font-size:17px;color:var(--ob-navy-950)}
.ob-st .checks{list-style:none;padding:0;margin:0 0 8px;display:grid;grid-template-columns:1fr 1fr;gap:6px 20px;font-size:15px}
.ob-st .checks li{display:flex;gap:8px;align-items:flex-start}
.ob-st .checks .ic{color:var(--ob-success);width:18px;height:18px;margin-top:3px}
.ob-st .options{margin:12px 0 4px;border-top:1px solid var(--ob-border)}
.ob-st .total{display:flex;justify-content:space-between;align-items:center;background:var(--ob-bg-subtle);border-radius:var(--r-md);padding:12px 16px;margin:8px 0 12px}
.ob-st .total span{font-size:15px}
.ob-st .total small{color:var(--ob-slate-500)}
.ob-st .total b{font-size:20px;color:var(--ob-navy-950)}
.ob-st .atc-row{display:flex;gap:10px}
.ob-st .atc-row .btn{flex:1}
.ob-st .pay{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px}
.ob-st .pay .btn-paypal{grid-column:1/-1}
.ob-st .trust{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.ob-st .trust .card{padding:12px 8px;text-align:center;font-size:13px;line-height:1.35;border-radius:var(--r-md)}
.ob-st .trust .card .ic{color:var(--ob-blue-600);margin:0 auto 6px;width:24px;height:24px}
.ob-st .trust strong{display:block;color:var(--ob-navy-900);font-size:13px}
.ob-st .trust span{color:var(--ob-slate-500)}
.ob-st .secure{display:flex;justify-content:space-between;align-items:center;margin:12px 0;font-size:13px;color:var(--ob-slate-500);gap:8px;flex-wrap:wrap}
.ob-st .cards-acc{display:flex;gap:6px}
.ob-st .cards-acc i{font-style:normal;font-size:10px;font-weight:700;border:1px solid var(--ob-border);border-radius:4px;padding:3px 6px;color:var(--ob-navy-900)}
.ob-st .talk{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--ob-navy-900);color:#fff;border-radius:var(--r-md);padding:12px 16px;font-size:14px}
.ob-st .talk a{color:#fff;font-weight:700;font-size:17px;text-decoration:none;display:inline-flex;gap:8px;align-items:center;white-space:nowrap}
@media (max-width:1023px){.ob-st .pdp{column-gap:28px}
.ob-st .checks{grid-template-columns:1fr}
.ob-st .trust{grid-template-columns:1fr 1fr}}
@media (max-width:767px){.ob-st .pdp{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "gallery" "buy"}
.ob-st .pdp-gallery{position:static;margin:12px calc(-1*var(--gutter)) 0}
.ob-st .main-img{border-radius:0;aspect-ratio:1/1}
.ob-st .thumbs{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gutter);gap:8px}
.ob-st .thumbs li{flex:0 0 64px;scroll-snap-align:start}
.ob-st .stats{grid-template-columns:repeat(4,1fr);gap:6px;padding:0 var(--gutter)}
.ob-st .stats .tile{padding:10px 4px}
.ob-st .stats .tile b{font-size:17px}
.ob-st .stats .tile span{font-size:11px}
.ob-st .price-row{flex-direction:column;align-items:flex-start;gap:10px}
.ob-st .trust{grid-template-columns:1fr 1fr}
.ob-st .talk{flex-direction:column;align-items:flex-start}
.ob-st .pay{grid-template-columns:1fr 1fr}
.ob-st .pay .btn-paylater{grid-column:1/-1}}
.ob-st .roi{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center}
.ob-st .roi h2{margin:8px 0 14px}
.ob-st .roi p{margin:0 0 12px}
.ob-st .roi .fine{font-size:13px;color:var(--ob-slate-500)}
.ob-st .metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ob-st .grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.ob-st .feature .ic{color:var(--ob-blue-600);margin-bottom:14px}
.ob-st .feature h3{font-size:17px;margin-bottom:6px}
.ob-st .feature p{margin:0;font-size:14px;color:var(--ob-slate-500)}
.ob-st .boxcard{padding:0;overflow:hidden}
.ob-st .boxcard .ph-img{aspect-ratio:4/3}
.ob-st .boxcard .body{padding:16px 18px 20px}
.ob-st .boxcard h3{font-size:17px;margin-bottom:8px}
.ob-st .boxcard ul{margin:0;padding:0 0 0 16px;font-size:14px;color:var(--ob-slate-500)}
.ob-st .two-col{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:start}
.ob-st .specs{width:100%;border-collapse:collapse;font-size:15px;border-radius:var(--r-md);overflow:hidden}
.ob-st .specs th{text-align:left;font-weight:600;color:var(--ob-navy-900);width:44%;padding:12px 14px}
.ob-st .specs td{padding:12px 14px}
.ob-st .specs tr:nth-child(odd){background:var(--ob-bg-subtle)}
.ob-st .specs tr{border-bottom:1px solid var(--ob-border)}
.ob-st .ideal{margin-top:24px}
.ob-st .ideal h3{font-size:17px;margin-bottom:10px}
.ob-st .chips{display:flex;flex-wrap:wrap;gap:8px}
.ob-st .faq details{border:1px solid var(--ob-border);border-radius:var(--r-md);margin-bottom:10px;background:#fff}
.ob-st .faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-weight:600;color:var(--ob-navy-900);min-height:52px}
.ob-st .faq summary::-webkit-details-marker{display:none}
.ob-st .faq summary::after{content:"+";font-size:22px;color:var(--ob-blue-600);line-height:1}
.ob-st .faq details[open] summary::after{content:"–"}
.ob-st .faq details p{margin:0;padding:0 16px 16px;font-size:15px;color:var(--ob-slate-500)}
.ob-st .reviews-ph{border:2px dashed var(--ob-ph-border);background:var(--ob-ph-bg);color:var(--ob-ph-text);border-radius:var(--r-lg);padding:24px;text-align:center;margin-top:18px}
.ob-st .reviews-ph h3{color:var(--ob-ph-text)}
.ob-st .cta-band{background:linear-gradient(100deg,#313D4D 0%,#344C6D 100%);color:#dfe6ef;border-radius:var(--r-lg);padding:40px 44px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.ob-st .cta-band h2{color:#fff;margin-bottom:6px}
.ob-st .cta-band .acts{display:flex;gap:12px;flex-wrap:wrap}
@media (max-width:1023px){.ob-st .grid-4{grid-template-columns:1fr 1fr}
.ob-st .roi,.ob-st .two-col{grid-template-columns:1fr;gap:28px}
.ob-st .cta-band{flex-direction:column;align-items:flex-start}}
@media (max-width:767px){.ob-st .metrics{gap:10px}
.ob-st .metric{padding:14px}
.ob-st .metric b{font-size:26px}
.ob-st .grid-4{gap:12px}
.ob-st .feature{padding:16px}
.ob-st .cta-band{padding:28px 20px;border-radius:0;margin:0 calc(-1*var(--gutter))}
.ob-st .cta-band .acts,.ob-st .cta-band .acts .btn{width:100%}}
.ob-st.sticky{position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fff;border-top:1px solid var(--ob-border);box-shadow:0 -6px 20px rgba(49,61,77,.12);transform:translateY(110%);transition:transform .25s ease;padding-bottom:env(safe-area-inset-bottom)}
.ob-st.sticky.show{transform:none}
.ob-st.sticky .container{display:flex;align-items:center;gap:16px;min-height:76px}
.ob-st.sticky .thumb{width:48px;height:48px;border-radius:8px;flex:none}
.ob-st.sticky .name strong{display:block;color:var(--ob-navy-900);font-size:16px}
.ob-st.sticky .name small{color:var(--ob-slate-500);font-size:13px}
.ob-st.sticky .sp{margin-left:auto;font-size:22px;font-weight:600;color:var(--ob-navy-950)}
@media (prefers-reduced-motion:reduce){.ob-st.sticky{transition:none}
.ob-st{scroll-behavior:auto}}
@media (max-width:767px){.ob-st.sticky .container{min-height:68px;gap:10px}
.ob-st.sticky .thumb,.ob-st.sticky .name small,.ob-st.sticky .btn-paypal{display:none}
.ob-st.sticky .name strong{font-size:14px}
.ob-st.sticky .sp{margin-left:0;font-size:18px}
.ob-st.sticky .btn-primary{margin-left:auto}}
.ob-st .ft-top{display:grid;grid-template-columns:1.3fr repeat(5,1fr);gap:28px;padding:56px 0 40px}
.ob-st .ft-brand img{height:38px;background:#fff;border-radius:8px;padding:6px 10px;margin-bottom:14px}
.ob-st .ft-brand p{margin:0 0 12px}
.ob-st .ft-call a{color:#fff;font-weight:700;font-size:17px}
.ob-st .newsletter{display:flex;gap:8px;margin-top:10px}
.ob-st .newsletter .input{min-height:44px;background:#fff}
.ob-st .ft-bottom{border-top:1px solid rgba(255,255,255,.12);padding:18px 0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px}
.ob-st .social{display:flex;gap:14px}
.ob-st .ft-col-acc summary{display:none}
@media (max-width:1023px){.ob-st .ft-top{grid-template-columns:1fr 1fr 1fr}}
@media (max-width:767px){.ob-st .ft-top{grid-template-columns:1fr;gap:0;padding:32px 0 16px}
.ob-st .ft-brand{padding-bottom:20px}
.ob-st .ft-col{border-top:1px solid rgba(255,255,255,.12)}
.ob-st .ft-col h3{margin:0}
.ob-st .ft-col .ft-h{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:52px;background:none;border:0;color:#fff;font:600 14px var(--ob-font);letter-spacing:1px;text-transform:uppercase;cursor:pointer;padding:0}
.ob-st .ft-col ul{display:none;padding-bottom:14px}
.ob-st .ft-col.open ul{display:grid}}  /* v1.1.5: closes @media (max-width:767px) (its last line was dropped by build_css filt) */
@media (min-width:768px){.ob-st .ft-col .ft-h{all:unset;color:#fff;font-size:14px;letter-spacing:1px;text-transform:uppercase;font-weight:600;display:block;margin-bottom:14px}
.ob-st .ft-col .ft-h .chev{display:none}}
@media (max-width:767px){.ob-st .promo .d-only{display:none}}  /* v1.1.5: same */
@media (max-width:560px){.ob-st .box-grid{grid-template-columns:1fr}
.ob-st .boxcard{display:grid;grid-template-columns:120px 1fr}
.ob-st .boxcard .ph-img{aspect-ratio:auto;min-height:100%}}
.ob-st .paypal-row{margin-top:10px}
.ob-st .gw-note{margin:4px 0 0;font-size:12px;color:var(--ob-slate-400);text-align:center}
.ob-st .wallets{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px}
@media (max-width:767px){.ob-st .wallets{grid-template-columns:1fr}}
.ob-st .main-img{background:#fff;border:1px solid var(--ob-border)}
.ob-st .main-img img{width:100%;height:100%;object-fit:contain;display:block}
.ob-st .thumbs{grid-template-columns:repeat(5,1fr)}
.ob-st .thumbs button img{width:100%;height:100%;object-fit:cover;display:block}
.ob-st .boxcard>img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--ob-bg-subtle)}
.ob-st .box-ic{aspect-ratio:4/3;display:grid;place-items:center;background:var(--ob-bg-subtle);color:var(--ob-blue-600)}
.ob-st .box-ic .ic{width:48px;height:48px}
.ob-st.sticky .thumb{object-fit:cover;border:1px solid var(--ob-border)}
.ob-st .logo img{height:42px;width:auto;aspect-ratio:1920/519}
@media (max-width:560px){.ob-st .boxcard>img,.ob-st .box-ic{aspect-ratio:auto;height:100%;min-height:120px}}
.ob-st .ft-contact{font-style:normal;margin:0 0 14px;line-height:1.75;font-size:14px}
.ob-st .ft-contact strong{color:#fff}
.ob-st .ft-contact a{color:#fff}
.ob-st .util .em{display:none}
@media (min-width:1280px){.ob-st .util .em{display:inline-flex}}
.ob-st .util .fin{font-weight:600}
.ob-st .fin-link{font-size:14px;line-height:1.45;color:var(--ob-slate-500);text-decoration:none;text-align:right}
.ob-st .fin-link b{color:var(--ob-blue-600);font-weight:600}
.ob-st .fin-link:hover b{text-decoration:underline}
.ob-st .atc-help{display:flex;align-items:center;gap:6px;margin:10px 0 0;font-size:15px;color:var(--ob-slate-700)}
.ob-st .atc-help a{font-weight:600}
.ob-st .atc-help .ic{width:16px;height:16px;color:var(--ob-blue-600)}
.ob-st .policy-line{display:flex;gap:8px;align-items:flex-start;margin:12px 0 0;font-size:13px;line-height:1.5;color:var(--ob-slate-500)}
.ob-st .policy-line .ic{width:16px;height:16px;flex:none;margin-top:2px}
.ob-st .policy-line b{color:var(--ob-navy-900)}
.ob-st .talk .btn-ghost{min-height:40px}
.ob-st.sticky .sticky-call{border:1.5px solid var(--ob-border);border-radius:10px;width:48px;height:48px;display:inline-grid;place-items:center}
.ob-st .hero-quote{margin:14px 0 0;font-size:14px}
.ob-st .hero-quote a{font-weight:600}
@media (max-width:767px){.ob-st .fin-link{text-align:left}
.ob-st .util .fin{display:none}}
.ob-st.sticky .sticky-pp{width:auto;min-height:48px;padding:0 16px;white-space:nowrap}
@media (max-width:1023px){.ob-st.sticky .sticky-pp{display:none}}
.ob-st .grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.ob-st .pol-grid h3{margin-bottom:8px}
.ob-st .pol-grid p{margin:0 0 8px}
@media (max-width:1023px){.ob-st .grid-3{grid-template-columns:1fr}}
.ob-st .tile{border-top:3px solid var(--ob-sky-400)}
.ob-st .section-head h2::after{content:"";display:block;width:48px;height:3px;border-radius:2px;background:var(--ob-sky-400);margin-top:10px}
.ob-st .section-head[style*="center"] h2::after,.ob-st .center .section-head h2::after{margin-left:auto;margin-right:auto}
.ob-st .feature .ic-lg,.ob-st .trust .ic{color:var(--ob-navy-900)}
.ob-st .feature .ic-lg{box-sizing:content-box;padding:10px;border-radius:50%;background:var(--ob-sky-tint);box-shadow:inset 0 0 0 1.5px var(--ob-sky-400)}
.ob-st .metric{border-left:4px solid var(--ob-sky-400)}
.ob-st .price-row{border-bottom-color:var(--ob-live-1ebe17d)}
.ob-st .check li svg,.ob-st .included svg{color:var(--ob-sky-400)}
.ob-st .pay-placeholder[aria-disabled="true"]{cursor:not-allowed}
.ob-st #roi{border-top:4px solid var(--ob-sky-400);background:radial-gradient(900px 260px at 85% 0%,rgba(94,198,255,.14),transparent 70%),var(--ob-bg-subtle)}
.ob-st.sticky .name,.ob-st.sticky .mid{min-width:0}
@media (max-width:767px){.ob-st.sticky .name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14px}}
/* ---- sales-template additions ---- */
.ob-st{font-family:var(--ob-font);color:var(--ob-slate-700)}
.ob-st.sticky{padding-bottom:env(safe-area-inset-bottom,0px)}
body.ob-sticky-on{padding-bottom:calc(76px + env(safe-area-inset-bottom,0px) + 16px)}
@media (max-width:767px){body.ob-sticky-on{padding-bottom:calc(68px + env(safe-area-inset-bottom,0px) + 16px)}}
.ob-st .ob-breakdown-wrap{margin:8px 0 0;font-size:14px}
.ob-st .ob-breakdown-wrap summary{cursor:pointer;color:var(--ob-blue-600);font-weight:500}
.ob-st .ob-breakdown{list-style:none;margin:8px 0 0;padding:12px;background:var(--ob-bg-tint);border:1px solid var(--ob-border);border-radius:var(--r-md);display:grid;gap:4px}
.ob-st .ob-breakdown li{display:flex;justify-content:space-between;gap:12px}
.ob-st .ob-breakdown li.total{border-top:1px solid var(--ob-border);padding-top:6px;font-weight:600;color:var(--ob-navy-950)}
.ob-st .opt-row.has-error,.ob-st fieldset.has-error{outline:2px solid var(--ob-sale);outline-offset:4px;border-radius:var(--r-md)}
.ob-st .opt-error{color:var(--ob-sale);font-size:14px;font-weight:500;margin:6px 0 0}
.ob-st .mk,.mk{display:inline;background:#FFF4CC;color:#7A4A00;border:1px dashed #C08A00;border-radius:4px;padding:0 4px;font-size:.85em;font-weight:600;font-style:normal}
.ob-st .ob-edit-note{background:var(--ob-blue-50);border:1px solid var(--ob-blue-100);padding:8px 12px;border-radius:var(--r-md);font-size:14px}
.ob-st img{height:auto}
/* ---- v1.1.4: v0.3.4 mobile QA fixes (copied from design/prototype/page.css, scoped to .ob-st; qa-mobile P-P1-1, P-P2-1..3) ---- */
.ob-st .lbl-long{display:inline}
@media (max-width:767px){
.ob-st.sticky .name{display:none}
.ob-st.sticky .container{gap:8px}
.ob-st.sticky .sticky-call{flex:none}
.ob-st.sticky .sp{flex:none}
.ob-st.sticky .btn-primary{flex:1 1 auto;min-width:0;padding:0 14px;white-space:nowrap}
.ob-st .checks,.ob-st .specs,.ob-st .feature p,.ob-st .faq details p,.ob-st .card .body li,.ob-st .card .body{font-size:16px}
.ob-st .crumbs a{display:inline-flex;align-items:center;min-height:44px}
.ob-st .crumbs{padding:2px 0}
.ob-st .opt-row legend small a,.ob-st .trust .card a,.ob-st .policy-line a{display:inline-flex;align-items:center;min-height:44px;margin-block:-12px}
.ob-st .atc-row .btn{min-width:0}
.ob-st .faq details p a,.ob-st .atc-help a,.ob-st .grid-3 .t-small a,.ob-st .cta-band p a{display:inline-flex;align-items:center;min-height:44px;margin-block:-12px}
.ob-st .atc-help{font-size:16px}
.ob-st .talk .btn-ghost{min-height:44px}
.ob-st .price-row a,.ob-st .talk a{display:inline-flex;align-items:center;min-height:44px}
}
@media (max-width:389px){
.ob-st .lbl-long{display:none}
.ob-st .atc-row .qty input{width:32px}
.ob-st .atc-row .qty button{width:44px}
.ob-st .atc-row .qty{height:56px}
.ob-st .atc-row .btn{padding:0 10px}
}
/* sticky bar respects the home-indicator area; padding already uses env(safe-area-inset-bottom) above */
.ob-st.sticky .container{box-sizing:border-box;max-width:100%}
/* ---- v1.1.4 QA O24U-001: option cards overflowed the buy box at 768 (fieldsets default to min-width:min-content) ---- */
.ob-st .pdp>*,.ob-st .pdp-buy,.ob-st .pdp-head,.ob-st .pdp-gallery,.ob-st .opt-grid>*,.ob-st form.cart,.ob-st .atc-row>*{min-width:0}
.ob-st fieldset,.ob-st .opt-row{min-width:0;max-width:100%}
.ob-st .opt-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr))}
.ob-st .opt-grid.keep-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:899px){
.ob-st .pdp{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "gallery" "buy"}
.ob-st .pdp-gallery{position:static}
.ob-st .opt-row{grid-template-columns:1fr;gap:8px}
.ob-st .opt-row legend{float:none;width:auto;padding:0}
}
.ob-st img,.ob-st video,.ob-st iframe{max-width:100%}
/* ---- v1.1.4 QA O24U-003: sticky call button is a fixed 48x48 tap target ---- */
.ob-st.sticky .sticky-call{flex:0 0 48px;width:48px;min-width:48px;height:48px;min-height:48px;box-sizing:border-box;padding:0}
.ob-st.sticky .sticky-call svg{width:22px;height:22px}
@media (max-width:767px){.ob-st .opt-grid{grid-template-columns:minmax(0,1fr)}.ob-st .opt-grid.keep-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* ---- v1.1.5: O24U design review (review/o24u-design-qa/findings.md) ---- */
/* P1-1 quote bar copy */
.ob-st .talk .talk-copy{min-width:0}
.ob-st .talk .talk-copy strong{display:block;font-weight:600;font-size:15px;line-height:1.35;color:#fff}
.ob-st .talk small.talk-hours{display:block;font-size:13px;color:var(--ob-blue-200,#B8D0ED);margin-top:2px}
/* P1-2 / O24U-003 sticky call 48x48 */
.ob-st .sticky-call,.ob-st.sticky .sticky-call{flex:0 0 48px;width:48px;height:48px;min-width:48px;display:inline-flex;align-items:center;justify-content:center}
/* P2-1 / O24U-004 tap targets */
@media (max-width:767px){
.ob-st .atc-row .qty input{min-height:44px;height:44px}
.ob-st .atc-row .qty button{width:44px;height:44px}
.ob-st .js-cta-quote.btn-sm{min-height:44px;padding:0 16px;display:inline-flex;align-items:center}
.ob-st .ob-breakdown-wrap summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
.ob-st .crumbs a,.ob-st .policy-line a,.ob-st .options a,.ob-st .trust .card a,.ob-st .t-small a,.ob-st .card a{display:inline-flex;align-items:center;min-height:44px;margin-block:-12px}
}
/* P2-2 / O24U-005 mobile text sizes */
@media (max-width:767px){
.ob-st .tile span:last-child,.ob-st .thumbs .lbl,.ob-st .main-img .badge{font-size:13px}
.ob-st .thumbs .lbl{white-space:normal;line-height:1.2}
.ob-st .opt-card strong,.ob-st .opt-card small.plus,.ob-st .opt-card .plus,.ob-st .checks li,.ob-st .boxcard li,.ob-st .box li,.ob-st .specs th,.ob-st .specs td,.ob-st .chips .chip,.ob-st .faq p,.ob-st .atc-help,.ob-st .atc-help a{font-size:16px}
}
/* P2-3 CTA band links on navy */
.ob-st .cta-band a:not(.btn){color:#fff;text-decoration:underline;text-underline-offset:2px}
.ob-st .cta-band a:not(.btn):hover{color:#B8D0ED}
/* P2-4 desktop sticky bar on one line; price never covered */
@media (min-width:768px){
.ob-st.sticky .container{flex-wrap:nowrap}
.ob-st.sticky .name{flex:1 1 auto;min-width:0}
.ob-st.sticky .name strong,.ob-st.sticky .name small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ob-st.sticky .name small{font-size:13px}
.ob-st.sticky .sp{flex:none}
.ob-st.sticky .sticky-pp{flex:0 0 220px;width:220px}
.ob-st.sticky .btn-primary{flex:none;white-space:nowrap}
}
/* P2-5 PayPal placeholder full width */
.ob-st .pay-row:not(.wallets){grid-template-columns:minmax(0,1fr)}
.ob-st .pay-row:not(.wallets) .pay-placeholder{width:100%}
/* P2-6 help line (no icon now) */
.ob-st .atc-help a{font-weight:700}
/* P3-6 sticky gallery on desktop */
@media (min-width:1024px){.ob-st .pdp-gallery{position:sticky;top:24px;align-self:start}}

/* ---- v1.1.5 live check (13:00) ----
   Root cause of the 768 two-column overflow: two @media (max-width:767px) blocks above (footer + promo, from build_css.py)
   lost their closing "}" when build_css dropped a global-prefixed line, so EVERY rule after them, including the v1.1.4
   "stack below 900px" block and the "hide sticky PayPal below 1024" rule, only applied at <=767px. Braces closed above
   and build_css.py fixed. The rules below are top-level (depth 0) so they apply at their stated widths. */
@media (max-width:899px){
.ob-st .pdp{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "gallery" "buy"}
.ob-st .pdp>*{min-width:0;max-width:100%}
.ob-st .pdp-gallery{position:static}
.ob-st .opt-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr))}
.ob-st .opt-grid>*{min-width:0}
.ob-st .pay-row,.ob-st .pay-row.wallets,.ob-st .wallets{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr))}
.ob-st .pay-row>*{min-width:0}
.ob-st .pay-row .pay-placeholder{white-space:normal;text-align:center}
}
/* sticky bar: no PayPal at any width (template no longer prints it; this hides any cached markup) */
.ob-st.sticky .sticky-pp,.ob-st.sticky .pay-row,.ob-st.sticky .pay-placeholder{display:none!important}
/* sticky bar >=768: one line, about 64-72px tall; name ellipsized; summary hidden 768-1023, ellipsized from 1024 */
@media (min-width:768px){
.ob-st.sticky .container{flex-wrap:nowrap;min-height:64px;max-height:72px;gap:12px;padding-top:8px;padding-bottom:8px}
.ob-st.sticky .name{display:block;flex:1 1 auto;min-width:0;overflow:hidden}
.ob-st.sticky .name strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px;line-height:1.3}
.ob-st.sticky .name small{display:none}
.ob-st.sticky .sp{flex:none;font-size:20px;line-height:1.2}
.ob-st.sticky .btn-primary{flex:none;white-space:nowrap;min-height:48px}
}
@media (min-width:1024px){
.ob-st.sticky .name small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;line-height:1.3}
}
@media (min-width:768px){body.ob-sticky-on{padding-bottom:calc(72px + env(safe-area-inset-bottom,0px) + 16px)}}

/* v1.1.7 O24U 'Why owners choose' cards: icon + title + body (Designer spec why-owners-cards-spec.md). Scoped to #overview only. */
.ob-st #overview .feature{display:flex;flex-direction:column;align-items:flex-start}
.ob-st #overview .feat-ic{display:flex;align-items:center;justify-content:center;flex:none;width:48px;height:48px;margin:0 0 12px;border-radius:50%;background:#EAF2FB;box-shadow:inset 0 0 0 1.5px #B8D0ED;color:#496EA0}
.ob-st #overview .feat-ic svg{display:block;width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ob-st #overview .feat-ic .acc{stroke:#5EC6FF} /* decorative accent only */
.ob-st #overview .feature h3{margin:0 0 6px;font:600 18px/1.3 var(--ob-font,'Jost',system-ui,sans-serif);color:#313D4D}
.ob-st #overview .feature p{margin:0;font:400 16px/1.55 var(--ob-font,'Jost',system-ui,sans-serif);color:#484F56}
@media (max-width:767px){.ob-st #overview .feature h3{font-size:17px}}
@media (max-width:600px){.ob-st #overview .grid-4{grid-template-columns:1fr;gap:12px}}
/* ---- v1.1.7 QA: qty input was 40x40; now 44x44 (Designer: inner input 32px wide under 390, control stays >=44px tall) ---- */
.ob-st .qty{min-height:44px;flex:none}
.ob-st .qty button{min-width:44px;min-height:44px}
.ob-st .qty input,.ob-st .atc-row .qty input{box-sizing:border-box;width:44px;min-width:44px;height:44px;min-height:44px;padding:0}
@media (max-width:389px){.ob-st .atc-row .qty input{width:32px;min-width:32px}}
/* 360 row: 1.5+44+32+44+1.5 = 123px qty + 10px gap + button (min-width:0, padding 0 10px) = fits 328px content width */

/* v1.1.9: Documentation & support icon panel, option A (Sky, 1:18 PM), fills the same slot as the sibling photos */
.ob-st .box-ic.box-ic--support{position:relative;display:grid;place-items:center;aspect-ratio:4/3;width:100%;margin:0;padding:0;border-radius:0;background:#EAF2FB;color:#496EA0;overflow:hidden}
.ob-st .box-ic.box-ic--support::before{content:"";position:absolute;left:50%;top:50%;width:144px;height:144px;transform:translate(-50%,-50%);border-radius:50%;background:rgba(255,255,255,.55);box-shadow:inset 0 0 0 1.5px #B8D0ED}
.ob-st .box-ic.box-ic--support svg{position:relative;display:block;width:96px;height:96px;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}
.ob-st .box-ic.box-ic--support .acc{stroke:#5EC6FF}
@media (max-width:560px){
  .ob-st .box-ic.box-ic--support{aspect-ratio:auto;height:100%;min-height:120px}
  .ob-st .box-ic.box-ic--support::before{width:88px;height:88px}
  .ob-st .box-ic.box-ic--support svg{width:56px;height:56px;stroke-width:1.3}
}

/* v1.1.13 RT-011 (Web Designer): 44px tap targets at ALL widths for the quote bar button and breadcrumb links */
.ob-st .js-cta-quote.btn-sm{min-height:44px;display:inline-flex;align-items:center}
.ob-st .crumbs a,.woocommerce-breadcrumb a{min-height:44px;display:inline-flex;align-items:center}

/* ==== v1.1.18 ==== */
/* QA D 3d (390px): main photo centred at the full content width (it sat 1px from the left edge, 33px short on the right);
   thumb strip is an intentional swipe row inside the content width; the page never scrolls sideways. */
@media (max-width:767px){
.ob-st .pdp-gallery{margin:12px 0 0;width:100%;max-width:100%;justify-self:stretch}
.ob-st .main-img{width:100%;margin-inline:auto;border-radius:var(--r-md,12px)}
.ob-st .main-img img{margin-inline:auto}
.ob-st .thumbs{display:flex;flex-wrap:nowrap;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;scroll-padding-inline:0;padding:0 0 6px;margin-inline:0;gap:8px;scrollbar-width:thin}
.ob-st .thumbs li{flex:0 0 64px;scroll-snap-align:start}
.ob-st .thumbs button{min-height:44px}
}
main.ob-st{overflow-x:clip}
/* B1-004 (a)+(b): breadcrumb on one line, one baseline; current item truncates with an ellipsis */
.ob-st .crumbs ol{flex-wrap:nowrap;align-items:center;min-width:0}
.ob-st .crumbs li{display:flex;align-items:center;flex:0 0 auto;white-space:nowrap}
.ob-st .crumbs li[aria-current="page"]{display:block;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
/* B1-004 (c): option dropdowns no longer drop into the 120px legend column on desktop */
@media (min-width:900px){
  .ob-st .opt-row > .opt-desc{grid-column:2}
  .ob-st .opt-row > select.input{grid-column:1 / -1}
}
.ob-st .opt-row > select.input{max-width:100%;text-overflow:ellipsis}
.ob-st .opt-row > .opt-chosen{grid-column:1 / -1;margin:4px 0 0;font-size:16px;line-height:1.4;color:#484F56}
.ob-st .opt-row > .opt-chosen[hidden]{display:none}

/* Warranty/trust badge sub-line: break only at the ' · ' between groups */
.ob-st .trust > .card > span .nw{white-space:nowrap}
.ob-st .trust > .card > span{text-wrap:balance}
/* Trust row with 3 cards (no 'Made in the USA'): no empty 4th column on desktop, no orphan on mobile */
@media (min-width:900px){.ob-st .pdp-buy .trust:has(> .card:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:899px){.ob-st .pdp-buy .trust > .card:last-child:nth-child(odd){grid-column:1 / -1}}

/* QA D HIGH (165152/165215): "Choose your aromas" quantity block, mobile first (one column, 44px steppers); 2 columns >=600px */
.ob-st .opt-qty{display:block}
.ob-st .opt-qty .qty-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0}
.ob-st .opt-qty .qty-count{margin:0;padding:4px 12px;border-radius:999px;background:#EAF2FB;color:#313D4D;font-size:15px;font-weight:600}
.ob-st .opt-qty.is-full .qty-count{background:#E6F4EA;color:#1E6B34}
.ob-st .opt-qty.is-over .qty-count{background:#FDECEA;color:#A12622}
.ob-st .opt-qty .qty-clear{min-height:44px;padding:0 8px;border:0;background:none;color:var(--ob-blue-600,#496EA0);text-decoration:underline;font:inherit;cursor:pointer}
.ob-st .opt-qty .qty-search{width:100%;min-height:44px;margin:0 0 8px;box-sizing:border-box}
.ob-st .opt-qty .qty-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;max-height:440px;overflow-y:auto;overscroll-behavior:contain}
@media (min-width:600px){.ob-st .opt-qty .qty-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ob-st .opt-qty .qty-item{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:4px 4px 4px 12px;border:1px solid var(--ob-border,#D5DCE4);border-radius:10px;background:#fff}
.ob-st .opt-qty .qty-item[hidden]{display:none}
.ob-st .opt-qty .qty-item.has-qty{border-color:var(--ob-blue-600,#496EA0);box-shadow:inset 0 0 0 1px var(--ob-blue-600,#496EA0)}
.ob-st .opt-qty .qty-name{flex:1 1 auto;min-width:0;font-size:16px;line-height:1.3}
.ob-st .opt-qty .stepper{display:inline-flex;align-items:center;flex:none}
.ob-st .opt-qty .qty-btn{width:44px;height:44px;border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:#313D4D}
.ob-st .opt-qty .qty-btn:disabled{opacity:.35;cursor:default}
.ob-st .opt-qty .qty-input{width:44px;height:44px;box-sizing:border-box;text-align:center;font-size:16px;border:1px solid var(--ob-border,#D5DCE4);border-radius:8px;-moz-appearance:textfield}
.ob-st .opt-qty .qty-input::-webkit-outer-spin-button,.ob-st .opt-qty .qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ob-st .opt-qty .qty-none{margin:8px 0 0;color:#484F56}

/* v1.1.19 (Web Designer, review/batch-1633/findings.md) ------------------------------------------------ */
/* #2 What's Included with 5 cards (fix-tests/inc5.css with our real gaps: 18px, 12px at <=767px) */
.ob-st #included .box-grid{--ob-inc-gap:18px}
@media (max-width:767px){.ob-st #included .box-grid{--ob-inc-gap:12px}}
@media (min-width:1200px){.ob-st #included .box-grid:has(> .card:nth-child(5):last-child){grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (min-width:561px) and (max-width:1023px){.ob-st #included .box-grid:has(> .card:nth-child(5):last-child) > .card:last-child{grid-column:1 / -1;justify-self:center;width:calc((100% - var(--ob-inc-gap,18px)) / 2)}}
/* v1.1.20 (Designer inc32.css, verbatim): replaces the v1.1.19 1024–1199 "quarter-width 5th card" rule: 3 + 2 centred */
@media (min-width:1024px) and (max-width:1199px){
  .ob-st #included .box-grid:has(> .card:nth-child(5):last-child){grid-template-columns:repeat(6,minmax(0,1fr))}
  .ob-st #included .box-grid:has(> .card:nth-child(5):last-child) > .card{grid-column:span 2}
  .ob-st #included .box-grid:has(> .card:nth-child(5):last-child) > .card:nth-child(4){grid-column:2 / span 2}
  .ob-st #included .box-grid:has(> .card:nth-child(5):last-child) > .card:last-child{grid-column:4 / span 2;justify-self:stretch;width:auto}
}
/* #3 Aroma picker */
.ob-st #ob-opt-qty .qty-count{min-height:44px;display:inline-flex;align-items:center;font-size:16px}
.ob-st .opt-row > legend{font-size:16px}
.ob-st .opt-row > legend small{font-size:14px}
/* #4 Phone text (A4) */
@media (max-width:600px){.ob-st p.t-small,.ob-st #policies p.t-small{font-size:16px;line-height:1.5}
.ob-st .ob-disclaimer,.ob-st p.disclaimer.ob-disclaimer,.ob-st #roi p.fine{font-size:14px;line-height:1.5}}
/* #5 Home crumb target */
.ob-st .crumbs li:first-child a{min-width:44px;justify-content:center}

/* v1.1.24 (QA P2): warranty badge is a link to /warranty/ (whole card is the tap target, well over 44px) */
.ob-st .trust a.ob-warr-card{display:block;color:inherit;text-decoration:none;transition:border-color .15s}
.ob-st .trust a.ob-warr-card:hover{border-color:var(--ob-blue-600)}
.ob-st .trust a.ob-warr-card:focus-visible{outline:3px solid var(--ob-blue-600);outline-offset:2px}
.ob-st .trust a.ob-warr-card strong{text-decoration:underline;text-decoration-color:var(--ob-blue-200);text-underline-offset:3px}

/* v1.1.25 (QA P2): the trust-card "See options" financing link was 65x19 at 768 and 1280; 44px target at every width. */
.ob-st .trust .card a{display:inline-flex;align-items:center;min-height:44px;margin-block:-12px}

.ob-st .opt[hidden]{display:none!important} /* B6: guest-tagged options for the other guest count */
/* v1.1.26.1 (Sky's grid request, Builder A 8:30 PM ET report): configurator option groups at 768px and up (v1.1.26.2, QA DV-009: full AND compact
   templates, e.g. kits 294 / 295 / 301, 365, 363, 293; was full template only; mobile < 768 unchanged). Each group is a size container, so the card columns follow the real width
   (scrollbars included), not the viewport.
   - Stacked (768 up to the wide layout): label + description above the cards, so the cards get the full buy-column width.
   - Wide (>= 1200px viewport AND row >= 576px, i.e. >= 440px for the cards next to the 120px label): label/description on
     the left like Color / Voltage.
   Cards are never narrower than 140px: N columns are used only when (W - 10*(N-1)) / N >= 140, i.e. W >= 150N - 10
   (2: 290, 3: 440, 4: 590, 5: 740). Groups wrap evenly: 3 -> 2+1 under 440, 4 -> 2x2 under 590 (and always 2x2 for long
   labels), 5 -> 3+2, 6 -> 3+3. Equal widths and heights; words never break mid-word and text never clips.
   Layout math (buy column, Chrome): 768 = 720 (3-up 233, 4-up 172.5); 900 = 412 (2-up 201); 1024 = 464 (3-up 148,
   4 -> 2x2 227); 1199 = 551.5 (3-up 177); 1280 = 592 -> wide, cards 456 (3-up 145.3, 4 -> 2x2 223); 1440+ = 596 -> 460. */
@media (min-width:768px){
  .ob-st-product .pdp-buy .opt-row{container:ob-opt / inline-size;grid-template-columns:120px minmax(0,1fr);column-gap:16px;row-gap:6px;align-items:start}
  .ob-st-product .pdp-buy .opt-row > legend{float:none;width:auto;grid-column:1 / -1;grid-row:auto;padding:0}
  .ob-st-product .pdp-buy .opt-row > .opt-desc{grid-column:1 / -1;grid-row:auto;margin:0;font-size:14px;line-height:1.4}
  .ob-st-product .pdp-buy .opt-row > .opt-grid,
  .ob-st-product .pdp-buy .opt-row > .seg,
  .ob-st-product .pdp-buy .opt-row > select.input,
  .ob-st-product .pdp-buy .opt-row > .opt-error,
  .ob-st-product .pdp-buy .opt-row > .opt-chosen{grid-column:1 / -1;grid-row:auto}
  .ob-st-product .pdp-buy .opt-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-auto-rows:1fr;align-items:stretch;gap:10px}
  .ob-st-product .pdp-buy .opt-grid[data-n="1"]{grid-template-columns:minmax(0,1fr)}
  .ob-st-product .pdp-buy .opt-grid[data-n="2"],
  .ob-st-product .pdp-buy .opt-grid[data-n="3"],
  .ob-st-product .pdp-buy .opt-grid[data-n="4"],
  .ob-st-product .pdp-buy .opt-grid[data-n="5"],
  .ob-st-product .pdp-buy .opt-grid[data-n="6"]{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ob-st-product .pdp-buy .opt-grid > .opt{height:100%;min-width:0}
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card{height:100%;box-sizing:border-box;min-height:56px;overflow-wrap:normal;word-break:normal;hyphens:none}
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card > span{min-width:0}
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card strong,
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card small{overflow-wrap:normal;word-break:normal;hyphens:none;overflow:visible;text-overflow:clip;white-space:normal}
  @container ob-opt (min-width:440px){
    .ob-st-product .pdp-buy .opt-grid[data-n="3"],
    .ob-st-product .pdp-buy .opt-grid[data-n="5"],
    .ob-st-product .pdp-buy .opt-grid[data-n="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}
  }
  @container ob-opt (min-width:590px){
    .ob-st-product .pdp-buy .opt-grid[data-n="4"]:not([data-long]){grid-template-columns:repeat(4,minmax(0,1fr))}
  }
  /* v1.1.26.2 (Designer v11261 review): 5-card groups are 3 + 2 at every width >= 440px, never 5 across (rule removed). */
}
/* Wide: label column on the left only when the cards still get >= 440px (3-up >= 140px). Cards = row - 136px.
   v1.1.26.2 (QA V1261-01): a fieldset's rendered <legend> is never a grid item, so in v1.1.26.1 the label stayed on top
   while the description went into the 120px left track (and that track sat empty when there was no description).
   Now the header is all-or-nothing:
   - stacked (768-1199, a row under 576px, and every short 4-card group): label, Required and description above the cards
     at full width; every child spans the whole row, so no track is ever left empty;
   - left (>= 1200px viewport AND row >= 576px, every group incl. 4-card groups since v1.1.27): the legend is floated, which makes it an ordinary
     grid item (HTML spec: a floated legend is not the rendered legend; the float itself is ignored in a grid), so the label
     + Required/Optional sit in the 120px left column (rows 1-2) and the help text sits in the card column directly above
     the cards at full card width, so the label column is never taller than legend + small (QA DV-032; same placement as
     Builder D's DV-032 patch, which this supersedes). No help text: the cards auto-place in row 1 next to the label. */
@media (min-width:1200px){
  @container ob-opt (min-width:576px){
    .ob-st-product .pdp-buy .opt-row > legend{float:left;width:auto;grid-column:1;grid-row:1 / span 2;padding:6px 0 0;margin:0}
    .ob-st-product .pdp-buy .opt-row > .opt-desc{grid-column:2;grid-row:1}
    .ob-st-product .pdp-buy .opt-row > .opt-grid,
    .ob-st-product .pdp-buy .opt-row > .seg,
    .ob-st-product .pdp-buy .opt-row > select.input{grid-column:2;grid-row:auto}
    .ob-st-product .pdp-buy .opt-row > .opt-error,
    .ob-st-product .pdp-buy .opt-row > .opt-chosen{grid-column:2;grid-row:auto}
    .ob-st-product .pdp-buy .opt-grid[data-n="3"],
    .ob-st-product .pdp-buy .opt-grid[data-n="5"],
    .ob-st-product .pdp-buy .opt-grid[data-n="6"]{grid-template-columns:repeat(3,minmax(0,1fr))}
    .ob-st-product .pdp-buy .opt-grid[data-n="4"][data-long]{grid-template-columns:repeat(2,minmax(0,1fr))}
  }
}
/* v1.1.26.1 (Designer, with the grid fix): card content is vertically centred in equal-height cards (768px and up).
   Text-only cards stack their label + price in a centred column; checkbox cards keep the tick box beside the text,
   both centred. The price-row financing link stays inline-flex, centred, >= 44px (also set at .price-row a above). */
@media (min-width:768px){
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card{display:flex;flex-direction:column;justify-content:center}
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card:has(> .box){flex-direction:row;align-items:center;justify-content:flex-start}
  .ob-st-product .pdp-buy .opt-grid > .opt > .opt-card > span:not(.box){display:flex;flex-direction:column;justify-content:center}
}
.ob-st .price-row a.fin-link,.ob-st .price-row .fin-link{display:inline-flex;align-items:center;min-height:44px}

/* v1.1.26.2 (Designer review/v11261/findings.md, Elon 8:57 PM ET): 4-card and Extra Oxy/Aromas rules, 768px and up only.
   - 768-1199: every 4-card group is 2 x 2 (was 4 across at a 590px+ row, e.g. 226 maintenance kit at 768).
   - 1200+: superseded in v1.1.27 (see the 1200px block below): label-left like every group, 2 x 2 unless 4 cards fit at >= 140px.
   - data-long 4-card groups (bar front) stay 2 x 2 at every width. 5-card groups are 3 + 2 (see above).
   - Extra Oxy/Aromas ("Add additional Oxy/Aromas", 4+ options) use 2 columns until 1200 (2 + 2 + 1, equal widths). */
@media (min-width:768px) and (max-width:1199.98px){
  .ob-st-product .pdp-buy .opt-grid[data-n="4"],
  .ob-st-product .pdp-buy .opt-grid[data-n="4"]:not([data-long]){grid-template-columns:repeat(2,minmax(0,1fr))}
  .ob-st-product .pdp-buy .opt-row:is([data-group*="additional-oxy-aroma"],[data-group*="extra-oxy-aroma"]) > .opt-grid:not([data-n="1"]):not([data-n="2"]):not([data-n="3"]){grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1200px){
  /* v1.1.27 (Elon 9:13 PM ET, from installed 1.1.26.2): short 4-card groups keep the label-left grid like every other
     group, with the cards in the right column. They go 4 across only when each card is >= 140px, i.e. the card column
     is >= 590px (row >= 726px); otherwise 2 x 2. At today's buy column (row 576-596px, cards 440-460px) that is 2 x 2. */
  @container ob-opt (min-width:576px){
    .ob-st-product .pdp-buy .opt-grid[data-n="4"],
    .ob-st-product .pdp-buy .opt-grid[data-n="4"]:not([data-long]){grid-template-columns:repeat(2,minmax(0,1fr))}
  }
  @container ob-opt (min-width:726px){
    .ob-st-product .pdp-buy .opt-grid[data-n="4"]:not([data-long]){grid-template-columns:repeat(4,minmax(0,1fr))}
  }
}

/* v1.1.27 (Designer review/v11261 #3): the small text links in .pdp-buy are >= 44px tap targets at every width
   ("details" in price-final, the phone link in atc-help, terms/tel/mailto in policy-line). Negative block margins keep
   the line height, so the paragraphs do not grow. */
.ob-st .pdp-buy .price-final a,
.ob-st .pdp-buy .atc-help a,
.ob-st .pdp-buy .policy-line a{display:inline-flex;align-items:center;min-height:44px;margin-block:-12px;vertical-align:middle}
/* v1.1.27 (Designer review/v11261 #4): space between the financing note and its link; the markup uses "Options&nbsp;→". */
.ob-st .price-row a{margin-left:.3em}

/* v1.1.27 DV-006 (QA): sale price. The old price is smaller, muted, struck through and inline before the sale price;
   the sale price (<ins>) is never underlined. Full and compact templates. */
.ob-st .price del,.ob-st .price ins{display:inline;background:none}
.ob-st .price del{font-size:.55em;font-weight:400;color:var(--ob-slate-500,#6B7684);text-decoration:line-through;text-decoration-thickness:1px;margin-right:.35em;vertical-align:.18em;letter-spacing:0}
.ob-st .price del .amount{color:inherit}
.ob-st .price ins{text-decoration:none;font-weight:inherit;color:inherit}

/* v1.1.27 DV-007 (QA): variable products (369) in the compact template. Variation selects are stacked label-over-field
   (no Woo table), and qty + Add to Cart share one row with the same navy button as the simple and configurator PDPs. */
.ob-st .ob-wc-cart table.variations{width:100%;margin:0 0 12px;border:0;border-collapse:collapse;background:none}
.ob-st .ob-wc-cart table.variations tbody,.ob-st .ob-wc-cart table.variations tr,.ob-st .ob-wc-cart table.variations th,.ob-st .ob-wc-cart table.variations td{display:block;width:auto;padding:0;border:0;background:none!important;text-align:left}
.ob-st .ob-wc-cart table.variations th.label{padding:0 0 6px}
.ob-st .ob-wc-cart table.variations th.label label{font-size:15px;font-weight:600;color:var(--ob-navy-950)}
.ob-st .ob-wc-cart table.variations td.value{margin:0 0 14px}
.ob-st .ob-wc-cart table.variations select{width:100%;max-width:none;min-height:48px}
.ob-st .ob-wc-cart .reset_variations{display:inline-flex;align-items:center;min-height:44px;margin-top:-4px;font-size:14px}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart{display:flex;flex-wrap:wrap;gap:12px;align-items:stretch}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart .quantity{display:flex;float:none;width:auto;margin:0}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart .quantity .qty{width:76px;min-height:52px;text-align:center}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart .single_add_to_cart_button{flex:1 1 200px;float:none;margin:0;min-height:52px;justify-content:center;align-items:center;background:#313D4D;color:#fff;font-size:17px;font-weight:600;border-radius:var(--r-md,10px)}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart .single_add_to_cart_button:hover{background:#1F2833}
.ob-st .ob-wc-cart .woocommerce-variation-add-to-cart .single_add_to_cart_button.disabled{background:#313D4D;opacity:.6;cursor:not-allowed}

/* v1.1.27.3: "Save $X" tag beside the sale price (includes/save-tag.php). */
.ob-st .price .ob-save-tag{display:inline-block;vertical-align:.3em;margin-left:.5em;padding:4px 10px;border-radius:999px;background:#E7F4EC;color:#16623A;font-size:14px;font-weight:700;line-height:1.2;letter-spacing:0;white-space:nowrap}
.ob-st .price .ob-save-tag[hidden]{display:none}
