/* TactaBlue V10 — homepage + header/footer v2 styles. Scoped under .tb-home. */
.tb-home{--navy:#0A5098;--navy-d:#083E77;--navy-ink:#0C1E33;--ink:#16202B;--body:#3A4653;
  --muted:#626E7A;--paper:#fff;--mist:#F4F7FA;--mist2:#EAF1F8;--line:#DCE4EC;
  --accent:#E7A33C;--accent-d:#D08F2C;--accent-ink:#0C1E33;
  --disp:'Oswald',system-ui,sans-serif;--text:'Roboto',system-ui,sans-serif;
  font-family:var(--text);color:var(--body);line-height:1.6;background:var(--paper);
  -webkit-font-smoothing:antialiased;}
.tb-home,.tb-home *{box-sizing:border-box;}
.tb-home img{max-width:100%;display:block;}
.tb-home a{color:inherit;text-decoration:none;}
.tb-skip{position:absolute;left:-999px;top:0;background:var(--navy);color:#fff;padding:10px 16px;z-index:99;}
.tb-skip:focus{left:8px;top:8px;}
.tb-wrap{max-width:1560px;margin:0 auto;padding:0 28px;}
.tb-home h1,.tb-home h2,.tb-home h3,.tb-home h4{font-family:var(--disp);color:var(--ink);
  line-height:1.1;font-weight:600;margin:0;}
.tb-eyebrow{font-family:var(--disp);font-weight:600;font-size:13px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--navy);display:inline-flex;align-items:center;gap:9px;}
.tb-eyebrow::before{content:"";width:20px;height:2px;background:var(--accent);display:inline-block;}
.tb-ic{width:26px;height:26px;flex:none;stroke:var(--navy);fill:none;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;}
.tb-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--text);
  font-weight:600;font-size:15px;padding:14px 30px;min-height:48px;border:1px solid transparent;
  cursor:pointer;transition:.18s;}
.tb-btn--accent{background:var(--accent);color:var(--accent-ink);}
.tb-btn--accent:hover{background:var(--accent-d);}
.tb-btn--navy{background:var(--navy);color:#fff;}
.tb-btn--navy:hover{background:var(--navy-d);}
.tb-btn--outline{background:#fff;color:var(--navy);border-color:var(--navy);}
.tb-btn--outline:hover{background:var(--mist2);}

/* reveal */
.tb-home .reveal{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease;}
.tb-home .reveal.in{opacity:1;transform:none;}

/* ---------- header ---------- */
.tb-util{background:var(--navy);color:#fff;}
.tb-util .tb-wrap{display:flex;align-items:center;justify-content:center;gap:8px;padding:8px 24px;
  text-align:center;font-size:14px;font-weight:500;flex-wrap:wrap;}
/* NOT var(--accent) here. The accent #E7A33C on this navy bar is 3.71:1 where AA needs
   4.5:1, and this is the only place the accent sits on navy. #EDBC71 is the same hue and
   saturation lightened to 4.6:1, so the token stays #E7A33C for buttons, icons and badges
   everywhere else — this is a scoped exception, not a palette change. */
.tb-util strong{color:#EDBC71;font-weight:700;}
.tb-util .light{color:#D8E8F6;}
.tb-util svg{width:17px;height:17px;stroke:var(--accent);fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;flex:none;}
.tb-hdr{border-bottom:1px solid var(--line);background:linear-gradient(180deg,#FFFFFF 0%,#F7FAFD 100%);}
.tb-hdr .tb-wrap{position:relative;display:flex;align-items:center;justify-content:center;min-height:96px;padding:16px 28px;}
.tb-logo{font-family:var(--disp);font-weight:700;font-size:26px;color:#13273B;line-height:1;white-space:nowrap;position:absolute;left:28px;top:50%;transform:translateY(-50%);}
.tb-logo .b{color:var(--navy);}
.tb-logo small{display:block;font-size:9px;letter-spacing:.28em;color:var(--muted);font-weight:600;
  margin-top:3px;}
.tb-logo--img{display:flex;align-items:center;width:172px;max-width:172px;}
.tb-logo--img img{width:100%;height:auto;display:block;}

.tb-search{display:flex;height:48px;border:1px solid var(--line);min-width:0;width:min(48vw,940px);max-width:940px;margin:0 auto;position:relative;}
.tb-search input{flex:1;border:0;padding:0 14px;font:inherit;font-size:14px;min-width:0;outline:none;background:#fff;}
.tb-search input:focus{outline:2px solid var(--navy);outline-offset:-2px;}
.tb-search button{background:var(--navy);color:#fff;border:0;padding:0 24px;font-weight:700;font-size:14px;cursor:pointer;letter-spacing:.01em;}
.tb-search #ajax-search-results{position:absolute;top:100%;left:0;right:0;z-index:40;background:#fff;}
.tb-hicons{display:flex;gap:2px;align-items:center;position:absolute;right:28px;top:50%;transform:translateY(-50%);}
.tb-hicons a,.tb-burger{display:flex;align-items:center;justify-content:center;width:44px;height:46px;color:var(--ink);background:none;border:0;cursor:pointer;border-radius:50%;transition:.16s;position:relative;}
.tb-hcount{position:absolute;top:3px;right:1px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-size:10px;font-weight:700;line-height:17px;text-align:center;}
.tb-hicons svg{width:23px;height:23px;stroke:var(--ink);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.tb-hicons a.tb-account.is-logged-in svg{stroke:var(--accent);} /* §2.2 signed-in affordance */ .tb-hicons a:hover,.tb-burger:hover{background:var(--mist2);color:var(--navy);}
.tb-burger{display:none;}
/* FunnelKit [fk_cart_menu] skinned to match the V10 header icon (keeps its live count) */
.tb-hicons .fkcart-shortcode-container{display:flex;align-items:center;justify-content:center;width:44px;height:46px;border-radius:50%;cursor:pointer;transition:.16s;position:relative;color:var(--ink);}
.tb-hicons .fkcart-shortcode-container:hover{background:var(--mist2);color:var(--navy);}
.tb-hicons .fkcart-shortcode-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center;line-height:0;}
.tb-hicons .fkcart-shortcode-icon-wrap svg{width:25px;height:25px;}
.tb-hicons .fkcart-shortcode-count{position:absolute;top:-6px;right:-8px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-size:10px;font-weight:700;line-height:17px;text-align:center;}
.tb-nav{border-bottom:1px solid var(--line);background:#fff;box-shadow:0 2px 8px rgba(10,44,82,.035);}
.tb-nav .tb-wrap{display:flex;align-items:center;gap:28px;padding:12px 28px;flex-wrap:wrap;
  font-size:14px;font-weight:500;color:var(--body);}
.tb-nav a:hover{color:var(--navy);}
.tb-nav::after{content:"";display:block;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(10,80,152,.18) 18%,rgba(231,163,60,.35) 50%,rgba(10,80,152,.18) 82%,transparent 100%);}

.tb-nav a.active{color:var(--navy);font-weight:700;}
.tb-nav .allcat{display:inline-flex;align-items:center;gap:8px;font-family:var(--disp);background:#F2F7FC;padding:7px 10px;margin-left:-10px;
  text-transform:uppercase;letter-spacing:.06em;font-size:13px;font-weight:600;color:var(--navy);}
.tb-mnav{display:none;background:#fff;border-bottom:1px solid var(--line);}
.tb-mnav a{display:block;padding:13px 24px;border-top:1px solid var(--line);font-weight:500;}

/* ---------- hero slider ---------- */
.tb-hero{position:relative;background:#EAF0F6;overflow:hidden;
  max-width:1680px;width:calc(100% - 24px);margin:12px auto 0;}
.tb-hero__vp{position:relative;min-height:470px;}
.tb-slide{position:absolute;inset:0;opacity:0;visibility:hidden;transition:opacity .7s ease;}
.tb-slide.is-active{opacity:1;visibility:visible;}
.tb-slide__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.tb-slide--l .tb-slide__img{object-position:78% center;}
.tb-slide--r .tb-slide__img{object-position:20% center;}
.tb-slide__scrim{position:absolute;inset:0;}
.tb-slide--l .tb-slide__scrim{background:linear-gradient(90deg,#EAF0F6 32%,rgba(234,240,246,.7) 46%,rgba(234,240,246,0) 62%);}
.tb-slide--r .tb-slide__scrim{background:linear-gradient(270deg,#EAF0F6 30%,rgba(234,240,246,.7) 44%,rgba(234,240,246,0) 60%);}
.tb-slide .tb-wrap{position:relative;height:100%;display:flex;align-items:center;
  min-height:470px;padding-top:40px;padding-bottom:48px;}
.tb-slide__copy{max-width:560px;}
.tb-slide--r .tb-slide__copy{margin-left:auto;text-align:right;}
.tb-slide--r .tb-eyebrow{flex-direction:row-reverse;}
.tb-slide--r .tb-eyebrow::before{display:none;}
.tb-slide h1,.tb-slide__h{font-family:var(--disp);font-weight:700;color:var(--navy-ink);
  font-size:clamp(24px,2.8vw,38px);line-height:1.08;margin:13px 0 0;}
.tb-slide__sub{font-size:16px;color:#33465a;margin:14px 0 22px;}
.tb-slide--r .tb-slide__sub{margin-left:auto;}
.tb-slide__cta{display:flex;gap:12px;flex-wrap:wrap;}
.tb-slide--r .tb-slide__cta{justify-content:flex-end;}
.tb-chips{display:flex;gap:9px 20px;flex-wrap:wrap;margin-top:28px;}
.tb-slide--r .tb-chips{justify-content:flex-end;}
.tb-chips span{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;color:#2c3e51;}
.tb-chips svg{width:16px;height:16px;stroke:var(--navy);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
/* gap:16px, was 9px. WCAG 2.2 SC 2.5.8 accepts targets under 24px ONLY if a 24px
   circle centred on each does not intersect a neighbour's — with 10px dots and a 9px
   gap the centres were 19px apart, so they did, and axe flagged both dots as serious.
   16px puts the pitch at 26px and satisfies the spacing exception without enlarging
   the dots themselves, so the hero looks the same bar slightly wider spacing. */
.tb-hero__dots{position:absolute;bottom:16px;left:0;right:0;display:flex;justify-content:center;gap:16px;z-index:5;}
.tb-hero__dots button{position:relative;width:10px;height:10px;border-radius:50%;border:0;background:rgba(10,44,82,.28);cursor:pointer;padding:0;transition:.18s;}
.tb-hero__dots button[aria-current="true"]{background:var(--accent);width:26px;border-radius:5px;}
/* Enlarged tap target for the dots (§5.5) — the visible dot stays 10px and the
   layout is unchanged (hit-area is absolutely positioned, out of flow). Width is
   capped to the dot pitch (10px dot + 16px gap = 26px) so adjacent dots' hit areas
   tile edge-to-edge WITHOUT overlapping — overlap would let a neighbor's target
   cover a dot's center and route the tap to the wrong slide. Height is the full
   44px a thumb needs. NOTE this pseudo-element does not satisfy SC 2.5.8 on its own:
   axe measures the BUTTON's box (10px) and the spacing between buttons, and cannot
   see a hit area painted by a child. The gap above is what makes the rule pass; this
   stays because it is still the better touch experience. */
.tb-hero__dots button::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:26px;height:44px;}
.tb-hero__arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:44px;height:44px;
  border:0;background:rgba(255,255,255,.82);color:var(--navy-ink);font-size:26px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:.16s;}
.tb-hero__arrow:hover{background:#fff;}
.tb-hero__prev{left:12px;} .tb-hero__next{right:12px;}

/* ---------- trust strip ---------- */
.tb-strip{background:transparent;color:#eaf1f9;}
.tb-strip .tb-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:18px 24px;
  max-width:1680px;width:calc(100% - 24px);margin:0 auto;background:var(--navy-ink);}
.tb-strip .item{display:flex;align-items:center;gap:13px;padding:4px 6px;}
.tb-strip svg{width:30px;height:30px;stroke:var(--accent);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none;}
.tb-strip .t{font-size:14px;font-weight:700;color:#fff;}
.tb-strip .d{font-size:12.3px;color:#a9c2dc;}

/* ---------- sections ---------- */
.tb-sec{padding:64px 0;}
.tb-sec--mist{background:var(--mist);}
.tb-shead{text-align:center;max-width:680px;margin:0 auto 34px;}
.tb-shead .tb-eyebrow{justify-content:center;}
.tb-shead h2{font-size:clamp(26px,3.2vw,38px);color:var(--navy-ink);margin:12px 0 8px;}
.tb-shead p{color:var(--muted);font-size:15.5px;}

/* ---------- category photo grid ---------- */
.tb-catgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.tb-cat{position:relative;border:1px solid var(--line);background:#fff;overflow:hidden;transition:.18s;}
.tb-cat:hover{box-shadow:0 10px 26px rgba(10,44,82,.14);transform:translateY(-3px);border-color:#cdd8e4;}
.tb-cat__img{position:relative;display:block;padding-top:74%;overflow:hidden;background:var(--mist);}
/* §7.4: real <img> fills the aspect-ratio box (replaces the old background-image).
   Absolute fill + object-fit:cover reproduces the previous background-size:cover
   look and keeps the padding-top aspect ratio (incl. the featured-tile overrides). */
.tb-cat__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.tb-cat__label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-family:var(--disp);
  font-weight:600;text-transform:uppercase;letter-spacing:.04em;font-size:14px;color:var(--navy-ink);
  padding:14px 16px;border-top:3px solid var(--navy);}
.tb-cat__arrow{color:var(--accent);transition:.18s;}
.tb-cat:hover .tb-cat__arrow{transform:translateX(4px);}
.tb-catgrid .tb-cat:first-child{grid-column:span 2;}
.tb-catgrid .tb-cat:first-child .tb-cat__img{padding-top:35.5%;}

/* ---------- best sellers ---------- */
.tb-prodgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.tb-card{position:relative;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column;transition:.18s;}
.tb-card:hover{box-shadow:0 10px 26px rgba(10,44,82,.12);border-color:#cdd8e4;}
.tb-badge{position:absolute;top:12px;left:12px;z-index:2;background:var(--navy);color:#fff;font-family:var(--disp);
  text-transform:uppercase;letter-spacing:.08em;font-size:11px;padding:5px 10px;}
.tb-card__imgwrap{display:block;background:var(--mist);border-bottom:1px solid var(--line);}
.tb-card__imgwrap img{width:100%;height:200px;object-fit:contain;background:#fff;}
.tb-card__ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:200px;color:#9fb0c1;text-align:center;font-size:13px;font-weight:500;}
.tb-ph-ic{width:38px;height:38px;stroke:#bccadb;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.tb-card__ph small{color:#adbccd;font-weight:400;}
.tb-card__body{padding:15px 16px 17px;display:flex;flex-direction:column;flex:1;}
.tb-card__cat{font-family:var(--disp);text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:var(--navy);margin-bottom:7px;}
.tb-card__title{font-size:14px;font-weight:500;color:var(--ink);line-height:1.4;min-height:56px;}
.tb-card__title:hover{color:var(--navy);}
.tb-card__ships{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin:9px 0 14px;}
.tb-card__ships svg{width:15px;height:15px;stroke:var(--navy);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.tb-card__foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;}
.tb-card__price{font-family:var(--disp);font-weight:600;font-size:22px;color:var(--navy-ink);}
.tb-card__price del{font-size:15px;color:var(--muted);font-weight:400;margin-right:6px;}
.tb-card__price ins{text-decoration:none;}
.tb-addbtn{font-family:var(--text);font-weight:600;font-size:13px;background:var(--navy);color:#fff;
  border:0;padding:11px 15px;cursor:pointer;transition:.16s;white-space:nowrap;
  display:inline-flex;align-items:center;justify-content:center;min-height:44px;}
.tb-addbtn:hover{background:var(--accent);color:var(--accent-ink);}
/* §2.10 — AJAX add-to-cart feedback. WooCommerce's wc-add-to-cart.js adds .loading
   to the button during the request and .added on success, then inserts a
   .added_to_cart "View cart" link right after it. Give the V10 skin a real loading
   spinner and a styled success link (Woo's add-to-cart option is ON site-wide, so
   these classes actually fire; error state falls back to Woo's standard redirect). */
.tb-addbtn.loading{position:relative;color:transparent!important;pointer-events:none;opacity:.92;}
.tb-addbtn.loading::after{content:"";position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;
  border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:tb-atc-spin .6s linear infinite;}
@keyframes tb-atc-spin{to{transform:rotate(360deg);}}
/* The "View cart" action now lives ON the button (.tb-addbtn--incart, toggled by JS to
   match the live cart) so the card layout never shifts. Hide Woo's injected link. */
.tb-card__foot .added_to_cart{display:none!important;}
@media(prefers-reduced-motion:reduce){.tb-addbtn.loading::after{animation-duration:1.4s;}}

/* Keep button-label colors from being overridden by the general .tb-home a rule. */
.tb-home a.tb-btn--navy,.tb-home a.tb-addbtn{color:#fff;}
.tb-home a.tb-btn--navy:hover{color:#fff;}
.tb-home a.tb-addbtn:hover{color:var(--accent-ink);}
.tb-home a.tb-btn--accent{color:var(--accent-ink);}
/* In-cart state: accent "View cart" button (visually distinct from the navy "Add to cart"). */
.tb-home a.tb-addbtn--incart,.tb-addbtn--incart{background:var(--accent);color:var(--accent-ink);}
.tb-home a.tb-addbtn--incart:hover{background:var(--accent-d);color:var(--accent-ink);}
.tb-home a.tb-btn--outline{color:var(--navy);}
.tb-home a.tb-btn:focus-visible,.tb-home a.tb-addbtn:focus-visible,
.tb-home button.tb-btn:focus-visible,.tb-home button.tb-addbtn:focus-visible{outline:3px solid var(--accent);outline-offset:3px;}
.tb-seeall{text-align:center;margin-top:34px;}

/* best-seller card states */
.tb-badge--sale{background:var(--accent);color:var(--accent-ink);}
.tb-card__title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.tb-card__avail{font-weight:600;}
.tb-card__avail.is-oos{color:#b42318;}
.tb-card__avail.is-backorder{color:#b25e09;}
/* Disabled action (out-of-stock). Now a real <button disabled>, so re-author at
   >= the specificity of any competing .tb-addbtn rule (same cascade concern as
   the ghost variant below) and neutralize :hover so the grey never flips. */
.tb-addbtn.is-disabled,.tb-home .tb-addbtn.is-disabled,
.tb-addbtn.is-disabled:hover,.tb-home .tb-addbtn.is-disabled:hover,
.tb-addbtn:disabled,.tb-home .tb-addbtn:disabled{background:#c7d0da;color:#fff;cursor:not-allowed;pointer-events:none;}
/* Ghost variant must be authored at >= the specificity of the .tb-home a.tb-addbtn
   mitigation above (line ~173), otherwise it loses the cascade and renders white
   text on a white background. Same applies to :hover vs the mitigation's :hover. */
.tb-home a.tb-addbtn--ghost{background:#fff;color:var(--navy);border:1px solid var(--navy);}
.tb-home a.tb-addbtn--ghost:hover{background:var(--mist2);color:var(--navy);}
.tb-card__wish{position:absolute;top:10px;right:10px;z-index:3;}
.tb-card__wish a,.tb-card__wish .jvm_add_to_wishlist{background:rgba(255,255,255,.92)!important;border:1px solid var(--line)!important;border-radius:50%!important;width:44px;height:44px;display:inline-flex!important;align-items:center;justify-content:center;padding:0!important;}

/* ---------- why buy ---------- */
.tb-why{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.tb-whyc{border:1px solid var(--line);background:#fff;padding:24px;}
.tb-whyc .top{display:flex;align-items:center;gap:13px;margin-bottom:12px;}
.tb-whyc .ic{width:46px;height:46px;background:var(--mist2);display:flex;align-items:center;justify-content:center;flex:none;}
.tb-whyc .ic svg{width:24px;height:24px;stroke:var(--navy);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.tb-whyc h3{font-size:17px;color:var(--navy-ink);}
.tb-whyc p{font-size:14px;color:var(--body);line-height:1.6;margin:0;}

/* ---------- offers ---------- */
.tb-offers{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.tb-offer{background:var(--navy);color:#fff;padding:38px;}
.tb-offer:nth-child(2){background:var(--navy-ink);}
.tb-offer .k{font-family:var(--disp);text-transform:uppercase;letter-spacing:.14em;font-size:12px;color:var(--accent);margin-bottom:10px;}
.tb-offer h3{color:#fff;font-size:26px;margin-bottom:12px;}
.tb-offer p{color:#cfe0f0;font-size:14.5px;margin-bottom:22px;}

/* ---------- compliance strip ---------- */
.tb-comply{background:var(--mist2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.tb-comply .tb-wrap{display:flex;align-items:center;gap:14px;padding:14px 24px;}
.tb-comply svg{width:30px;height:30px;stroke:var(--navy);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none;}
.tb-comply p{font-size:14px;color:var(--body);margin:0;}
.tb-comply strong{color:var(--navy-ink);}

/* ---------- faq ---------- */
.tb-faq{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
.tb-fq{border:1px solid var(--line);background:#fff;padding:22px;}
.tb-fq h3{font-size:17px;color:var(--navy-ink);margin-bottom:8px;}
.tb-fq p{font-size:14px;margin-bottom:10px;}
.tb-fq a{font-weight:600;color:var(--navy);font-size:14px;}

/* ---------- newsletter ---------- */
.tb-news{background:var(--navy);color:#fff;text-align:center;}
.tb-news h2{color:#fff;font-size:clamp(24px,3vw,34px);margin:12px 0 8px;}
.tb-news p{color:#cfe0f0;max-width:560px;margin:0 auto 22px;}
.tb-news .tb-eyebrow{justify-content:center;color:#BBD4EC;}
.tb-news form{display:flex;gap:10px;max-width:520px;margin:0 auto;}
.tb-news input{flex:1;border:0;padding:14px 16px;font:inherit;font-size:15px;min-width:0;}
.tb-news .fine{font-size:12px;color:#B0C7DF;margin-top:14px;}
.tb-news .fine a{color:#cfe0f0;text-decoration:underline;}

/* ---------- footer ---------- */
.tb-foot{background:var(--navy-ink);color:#b9cbdd;font-size:14px;}
.tb-foot .fbadges{border-bottom:1px solid #123a63;}
.tb-foot .fbadges .tb-wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:24px;}
.tb-foot .fbadges .b2{display:flex;align-items:center;gap:12px;}
.tb-foot .fbadges svg{width:26px;height:26px;stroke:var(--accent);fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none;}
.tb-foot .fbadges .t{color:#fff;font-weight:700;font-size:13.5px;}
.tb-foot .fbadges .d{font-size:12px;color:#9fb6cd;}
.tb-foot .cols{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:30px;padding:48px 24px 36px;}
.tb-foot h4{font-family:var(--disp);text-transform:uppercase;letter-spacing:.08em;font-size:14px;color:#fff;margin:0 0 15px;}
.tb-foot ul{list-style:none;margin:0;padding:0;}
.tb-foot li{margin-bottom:9px;}
.tb-foot li a:hover{color:#fff;}
.tb-foot .flogo{font-family:var(--disp);font-weight:700;font-size:23px;color:#fff;}
.tb-foot .flogo .b{color:#5fa2e0;}
.tb-foot .flogo small{display:block;font-size:9px;letter-spacing:.28em;color:#7f9bb7;font-weight:600;margin-top:3px;}
.tb-foot .blurb{max-width:340px;line-height:1.6;color:#9fb6cd;margin:14px 0;}
.tb-foot .contact{font-size:13px;line-height:1.7;color:#9fb6cd;}
.tb-foot .contact a{color:#cfe0f0;}
.tb-foot .noffl{margin-top:12px;font-size:12.5px;color:#7f9bb7;border-left:2px solid var(--accent);padding-left:10px;}
.tb-foot .subs{display:flex;height:44px;}
.tb-foot .subs input{flex:1;border:0;padding:0 12px;font:inherit;font-size:13px;min-width:0;}
.tb-foot .subs button{background:var(--accent);color:var(--accent-ink);border:0;width:46px;font-size:18px;cursor:pointer;}
.tb-foot .pay{font-size:12px;color:#7f9bb7;margin-top:12px;line-height:1.6;}
.tb-foot .fbot{border-top:1px solid #123a63;}
.tb-foot .fbot .tb-wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:18px 24px;font-size:12.5px;color:#8ba6c1;}
.tb-foot .fbot a{color:#8ba6c1;} .tb-foot .fbot a:hover{color:#fff;}

/* ---------- responsive ---------- */
@media(max-width:960px){
  .tb-hdr .tb-wrap{display:grid;grid-template-columns:1fr auto;grid-template-areas:"brand icons" "search search";row-gap:12px;min-height:auto;}
  .tb-logo{grid-area:brand;position:static;transform:none;} .tb-hicons{grid-area:icons;position:static;transform:none;} .tb-search{grid-area:search;max-width:none;width:100%;}
  .tb-burger{display:flex;} .tb-nav{display:none;}
  .tb-util .light{display:none;}
  .tb-hero{width:100%;margin-top:0;}
  .tb-strip .tb-wrap{width:100%;}

  .tb-hero__vp{min-height:0;}
  .tb-slide{position:absolute;}
  .tb-slide.is-active{position:relative;}
  .tb-slide__scrim,.tb-slide--l .tb-slide__scrim,.tb-slide--r .tb-slide__scrim{background:linear-gradient(180deg,rgba(240,244,248,.9) 58%,rgba(240,244,248,.72));}
  .tb-slide .tb-wrap{min-height:540px;align-items:flex-start;padding:26px 24px 40px;}
  .tb-slide h1,.tb-slide__h{font-size:24px;}
  .tb-slide__sub{font-size:15px;margin:12px 0 18px;}
  .tb-slide__copy{padding-top:8px;}
  .tb-slide__copy,.tb-slide--r .tb-slide__copy{max-width:100%;margin:0;text-align:left;}
  .tb-slide--r .tb-slide__sub{margin-left:0;}
  .tb-slide--r .tb-slide__cta,.tb-slide--r .tb-chips{justify-content:flex-start;}
  .tb-slide--r .tb-eyebrow{flex-direction:row;} .tb-slide--r .tb-eyebrow::before{display:inline-block;}
  .tb-strip .tb-wrap{grid-template-columns:repeat(2,1fr);gap:14px;}
  .tb-catgrid{grid-template-columns:repeat(2,1fr);}
  .tb-catgrid .tb-cat:first-child{grid-column:span 2;}
  .tb-catgrid .tb-cat:first-child .tb-cat__img{padding-top:50%;}
  .tb-prodgrid{grid-template-columns:repeat(2,1fr);}
  .tb-why{grid-template-columns:1fr;}
  .tb-offers,.tb-faq{grid-template-columns:1fr;}
  .tb-foot .cols{grid-template-columns:1fr 1fr;}
  .tb-foot .fbadges .tb-wrap{grid-template-columns:1fr 1fr;}
  .tb-sec{padding:48px 0;}
}
@media(max-width:560px){
  .tb-slide .tb-wrap{min-height:500px;padding-top:22px;padding-bottom:36px;}
  .tb-prodgrid,.tb-foot .cols,.tb-foot .fbadges .tb-wrap,.tb-strip .tb-wrap{grid-template-columns:1fr;}
  /* Category tiles stay a clean 2-up grid on phones (featured tile spans both).
     Do NOT collapse .tb-catgrid to 1fr: the featured tile keeps grid-column:span 2
     (css ~302), and a span-2 item inside a 1fr grid spawns a lopsided implicit
     column that squishes the alternating tiles. Keeping repeat(2,1fr) here matches
     the design intent and the featured full-width tile tiles evenly. */
  .tb-catgrid{grid-template-columns:repeat(2,1fr);}
  .tb-catgrid .tb-cat:first-child .tb-cat__img{padding-top:60%;}
  .tb-card__title{min-height:0;}
  .tb-news form{flex-direction:column;}
  .tb-hero__arrow{display:none;}
}
@media(prefers-reduced-motion:reduce){.tb-home .reveal{opacity:1;transform:none;transition:none;}
  .tb-slide{transition:none;}}

/* ---------- all-categories dropdown (rich multi-level tree, ported) ---------- */
.tb-nav .tb-allcat{position:relative;display:inline-flex;}
.tb-nav .dropdown_cat{position:absolute;left:0;top:calc(100% + 12px);width:17rem;background:#fff;border-radius:10px;
  overflow:visible;opacity:0;visibility:hidden;transition:all .25s ease;box-shadow:0 8px 24px rgba(0,0,0,.12);
  z-index:9999;border:1px solid var(--line);}
.tb-nav .dropdown_cat.active{opacity:1;visibility:visible;}
.tb-nav .dropdown_cat .drop_heading{display:flex;padding:.75rem 1rem .5rem;align-items:center;justify-content:space-between;border-bottom:1px solid #f0f0f0;}
.tb-nav .dropdown_cat .drop_heading h6{margin:0;font-size:.8125rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#333;font-family:var(--disp);}
.tb-nav .dropdown_cat .close_cat{color:#667085;line-height:1;}
.tb-nav .dropdown_cat ul.cat-tree,.tb-nav .dropdown_cat ul.cat-tree ul{list-style:none;margin:0;padding:0;}
.tb-nav .dropdown_cat ul.cat-tree li,.tb-nav .dropdown_cat ul.cat-tree li li{display:block;padding:0;position:relative;}
.tb-nav .dropdown_cat .cat-row{display:flex;align-items:center;gap:.6rem;padding:.5rem 1rem;transition:background .2s;}
.tb-nav .dropdown_cat .cat-row:hover{background:#f7f9fc;}
.tb-nav .dropdown_cat li.open>.cat-row{background:#eef4fb;}
.tb-nav .dropdown_cat .cat-row img{width:32px;height:32px;object-fit:contain;border-radius:6px;flex:0 0 auto;}
.tb-nav .dropdown_cat .cat-row a{flex:1 1 auto;color:#344054;font-family:var(--text);font-size:.9rem;font-weight:500;text-decoration:none;}
.tb-nav .dropdown_cat .cat-row a:hover{color:var(--navy);}
.tb-nav .dropdown_cat .cat-toggle{flex:0 0 auto;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:#667085;cursor:pointer;border-radius:4px;padding:0;}
.tb-nav .dropdown_cat .cat-toggle:hover{background:#eef2f7;color:var(--navy);}
.tb-nav .dropdown_cat .cat-toggle i{font-size:.8rem;transition:transform .2s ease;}
.tb-nav .dropdown_cat ul.cat-tree ul.sub-cats{display:none;position:absolute;left:100%;top:0;min-width:15rem;overflow:visible;
  background:#fff;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:.25rem 0;z-index:10000;}
.tb-nav .dropdown_cat ul.cat-tree li.open>ul.sub-cats{display:block;}
.tb-nav .dropdown_cat ul.cat-tree ul.sub-cats ul.sub-cats{max-height:26rem;overflow:hidden auto;}
.tb-nav .dropdown_cat ul.sub-cats .cat-row a{font-size:.875rem;font-weight:400;}
/* tablet: accordion instead of side-flyout (below 960 the whole nav is replaced by the burger menu) */
@media(max-width:991px){
  .tb-nav .dropdown_cat{width:100%;max-width:340px;max-height:75vh;overflow:hidden auto;}
  .tb-nav .dropdown_cat ul.cat-tree ul.sub-cats,.tb-nav .dropdown_cat ul.cat-tree ul.sub-cats ul.sub-cats{position:static;left:auto;top:auto;min-width:0;max-height:none;overflow:visible;background:transparent;box-shadow:none;border-radius:0;padding:0;z-index:auto;}
  .tb-nav .dropdown_cat ul.cat-tree ul.sub-cats .cat-row{padding-left:2.4rem;background:#fbfcfe;}
  .tb-nav .dropdown_cat ul.cat-tree ul.sub-cats ul.sub-cats .cat-row{padding-left:3.6rem;background:#f6f8fb;}
  .tb-nav .dropdown_cat li.open>.cat-row>.cat-toggle i{transform:rotate(90deg);}
}

/* ---------- all-categories: accordion inside the mobile burger menu ---------- */
.tb-mcat__label{display:block;padding:13px 24px;border-top:1px solid var(--line);font-family:var(--disp);
  text-transform:uppercase;letter-spacing:.06em;font-size:13px;font-weight:600;color:var(--navy);}
.tb-mnav .dropdown_cat{position:static;opacity:1;visibility:visible;width:100%;background:#fff;
  box-shadow:none;border:0;border-radius:0;overflow:visible;}
.tb-mnav .dropdown_cat .drop_heading{display:none;}
.tb-mnav .dropdown_cat ul.cat-tree,.tb-mnav .dropdown_cat ul.cat-tree ul{list-style:none;margin:0;padding:0;}
.tb-mnav .dropdown_cat ul.cat-tree li{display:block;position:relative;}
.tb-mnav .dropdown_cat .cat-row{display:flex;align-items:center;gap:.6rem;padding:11px 24px;border-top:1px solid var(--line);}
.tb-mnav .dropdown_cat .cat-row img{width:26px;height:26px;object-fit:contain;border-radius:5px;flex:0 0 auto;}
.tb-mnav .dropdown_cat .cat-row a{flex:1 1 auto;color:#344054;font-size:14px;font-weight:500;}
.tb-mnav .dropdown_cat .cat-toggle{flex:0 0 auto;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:#667085;cursor:pointer;}
.tb-mnav .dropdown_cat .cat-toggle i{transition:transform .2s ease;}
.tb-mnav .dropdown_cat li.open>.cat-row>.cat-toggle i{transform:rotate(90deg);}
.tb-mnav .dropdown_cat ul.cat-tree ul.sub-cats,.tb-mnav .dropdown_cat ul.cat-tree ul.sub-cats ul.sub-cats{position:static;left:auto;top:auto;min-width:0;max-height:none;overflow:visible;background:transparent;box-shadow:none;border-radius:0;padding:0;z-index:auto;}
.tb-mnav .dropdown_cat ul.cat-tree ul.sub-cats .cat-row{padding-left:44px;background:#fbfcfe;}
.tb-mnav .dropdown_cat ul.cat-tree ul.sub-cats ul.sub-cats .cat-row{padding-left:62px;background:#f6f8fb;}

/* ---------- newsletter forms (Newsletter plugin, inline) ---------- */
.tb-news .tnp-subscription,.tb-news .tnp{max-width:520px;margin:0 auto;}
.tb-news .tnp-subscription form,.tb-news .tnp form{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch;}
.tb-news .tnp-field{margin:0;flex:1;min-width:220px;}
.tb-news .tnp-field-button{flex:0 0 auto;min-width:0;}
.tb-news .tnp-field label{display:none!important;}
.tb-news .tnp-email{width:100%;border:0;padding:14px 16px;font:inherit;font-size:15px;}
.tb-news .tnp-submit{background:var(--accent)!important;color:var(--accent-ink)!important;border:0!important;
  padding:14px 28px!important;font-weight:600!important;font-size:15px!important;cursor:pointer;width:auto!important;}
.tb-news .tnp-submit:hover{background:var(--accent-d)!important;}

.tb-foot .subs{display:block;height:auto;}
.tb-foot .subs .tnp-subscription form,.tb-foot .subs .tnp form{display:flex;gap:0;}
.tb-foot .subs .tnp-field{margin:0;}
.tb-foot .subs .tnp-field-email{flex:1;min-width:0;}
.tb-foot .subs .tnp-field label{display:none!important;}
.tb-foot .subs .tnp-email{width:100%;height:44px;border:0;padding:0 12px;font:inherit;font-size:13px;}
/* The Newsletter plugin's input ships with `border:0` here, and browsers draw no default
   focus ring on a borderless input inside a coloured box — measured as the only
   focus-visible failure on home, cart, checkout and register (WCAG 2.4.7). An explicit
   ring, offset so it reads against both the white and the navy surrounds. */
.tb-news .tnp-email:focus,
.tb-foot .subs .tnp-email:focus{outline:3px solid var(--accent);outline-offset:2px;}
.tb-foot .subs .tnp-submit{background:var(--accent)!important;color:var(--accent-ink)!important;border:0!important;
  height:44px;padding:0 18px!important;font-weight:700!important;cursor:pointer;width:auto!important;}

/* very small phones (≤400px): prevent header overflow (fixed logo + 3 icons + padding) */
@media(max-width:400px){
  .tb-wrap{padding:0 14px;}
  .tb-hdr .tb-wrap{padding-left:14px;padding-right:14px;}
  .tb-logo--img{width:140px;max-width:140px;}
  .tb-hicons{gap:0;}
  .tb-hicons a,.tb-burger,.tb-hicons .fkcart-shortcode-container{width:38px;}
  .tb-hicons svg,.tb-hicons .fkcart-shortcode-icon-wrap svg{width:21px;height:21px;}
}
