/*
Theme Name:   Kadence Child TSA
Theme URI:    https://tsaindo.com/
Description:  Child theme for tsaindo.com (TSA). Brand tokens, local fonts, header/footer/homepage styling, Woo quote-list labels. Palette and typography are approved by Bos (brand.md v0.2, palette from the Bos logo); still change them in Customizer (Global Palette / Typography), not here, wherever possible.
Author:       Eve (UI) for Nami
Template:     kadence
Version:      0.3.0
Text Domain:  kadence-child-tsa
License:      GPL-2.0-or-later
*/

/* ==========================================================================
   1. Fonts (self-hosted IBM Plex, OFL 1.1; subset latin + latin-ext)
   ========================================================================== */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url(assets/fonts/ibm-plex-sans-latin-ext-400-normal.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url(assets/fonts/ibm-plex-sans-latin-400-normal.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url(assets/fonts/ibm-plex-sans-latin-ext-600-normal.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url(assets/fonts/ibm-plex-sans-latin-600-normal.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(assets/fonts/ibm-plex-mono-latin-ext-500-normal.woff2) format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url(assets/fonts/ibm-plex-mono-latin-500-normal.woff2) format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ==========================================================================
   2. Tokens. Palette slots come from Kadence Global Palette (Customizer),
   so swapping the palette there re-themes everything below.
   Only colors with no Kadence slot are hardcoded here.
   ========================================================================== */
:root{
  --tsa-navy:var(--global-palette3,#132D4B);
  --tsa-ink:var(--global-palette4,#14202E);
  --tsa-slate:var(--global-palette5,#4B5966);
  --tsa-line:var(--global-palette6,#D8DCE0);
  --tsa-mist:var(--global-palette7,#EDF0F3);
  --tsa-paper:var(--global-palette8,#F6F8F9);
  --tsa-white:var(--global-palette9,#fff);
  --tsa-orange:var(--global-palette1,#F7962A);
  --tsa-orange-hover:var(--global-palette2,#E5821A);
  --tsa-orange-tint:var(--global-palette10,#FFF2E0);
  --tsa-navy-dark:#0C1F36;
  --tsa-steel:#2D5A86;
  --tsa-gray:#9C9C9C;
  --tsa-link:#1B5C98;
  --tsa-orange-text:#9A4B00;
  --tsa-font-sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --tsa-font-mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --tsa-radius:4px;
  --tsa-gap:clamp(1rem,2.5vw,1.5rem);
}

/* ==========================================================================
   3. Base
   ========================================================================== */
body{-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5,h6{letter-spacing:-.005em}
:focus-visible{outline:2px solid var(--tsa-navy);outline-offset:2px}
.site-top-header-wrap :focus-visible,.site-footer :focus-visible,.tsa-hero :focus-visible{outline-color:var(--tsa-orange)}
.screen-reader-text:focus{z-index:100000}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;scroll-behavior:auto!important}}

/* Data type: SKU, model numbers, prices (tabular mono) */
.sku,.sku_wrapper .sku,.tsa-mono{font-family:var(--tsa-font-mono);font-weight:500}
.woocommerce .price,.woocommerce .price .amount,.wc-block-components-product-price,.wc-block-formatted-money-amount{font-family:var(--tsa-font-mono);font-weight:500;font-variant-numeric:tabular-nums;color:var(--tsa-ink)}
.woocommerce ul.products li.product .price{font-size:1.125rem}
.woocommerce div.product p.price,.woocommerce div.product span.price{font-size:1.25rem}
@media (min-width:768px){.woocommerce div.product p.price,.woocommerce div.product span.price{font-size:1.375rem}}

/* Buttons: orange bg always takes Ink text (white on orange = 2.24:1, fails) */
.button,button[type=submit],input[type=submit],.wp-block-button__link,.wp-element-button,.kb-button{color:var(--tsa-ink)}
.wp-block-button:not(.is-style-outline) .wp-block-button__link:not(.has-background){background:var(--tsa-orange);color:var(--tsa-ink);border-radius:var(--tsa-radius);font-weight:600}
.wp-block-button:not(.is-style-outline) .wp-block-button__link:not(.has-background):hover{background:var(--tsa-orange-hover);color:var(--tsa-ink)}
.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){background:transparent!important;color:var(--tsa-navy)!important;border:2px solid var(--tsa-navy)!important;border-radius:var(--tsa-radius);font-weight:600}
.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color):hover{background:var(--tsa-navy)!important;color:var(--tsa-white)!important}
.button,.wp-block-button__link{min-height:44px}

/* Pre-launch/hidden commerce badges: no sale flash, no stock label (no stock data, no promos) */
.woocommerce span.onsale,.onsale,.product .stock,.woocommerce div.product .stock,.wc-block-components-product-sale-badge,.wc-block-grid__product-onsale{display:none!important}

/* Product cards: see section 7 (catalog) */

/* ==========================================================================
   4. Header
   ========================================================================== */
.site-top-header-wrap{font-size:.8125rem}
.site-top-header-wrap .header-html{line-height:1.4}
.site-main-header-wrap{border-bottom:1px solid var(--tsa-line)}
.site-branding a.brand{display:inline-flex;align-items:center}
/* Kadence prints .logo-icon{max-width:60px} inline (logo_icon_width mod); the logo sizes itself via --tsa-logo-w below */
.site-branding a.brand span.logo-icon{display:block;line-height:0;max-width:none;width:auto}
.tsa-logo{--tsa-logo-w:200px;display:block;line-height:0}
.tsa-logo img{display:block;width:var(--tsa-logo-w);height:auto}
/* Official lockup: "TEKNOLOGI" cap height stays >= 9px at 200px wide. Below 768px the "TSA" mark takes over via <picture>. */
@media (min-width:1024px){.tsa-logo{--tsa-logo-w:224px}}
@media (max-width:767.98px){.tsa-logo{--tsa-logo-w:100px}.tsa-logo img{aspect-ratio:916/370}}
@media (max-width:400px){.tsa-logo{--tsa-logo-w:88px}}
/* Full lockup forced (coming-soon header): same width at every viewport */
.tsa-logo.tsa-logo--full{--tsa-logo-w:min(300px,76vw)}
.tsa-logo.tsa-logo--full img{aspect-ratio:1705/437}
.header-navigation .header-menu-container ul li.menu-item>a{font-weight:600}
.header-cart-wrap .header-cart-button,.search-toggle-open{min-height:44px;min-width:44px}
.header-cart-wrap .header-cart-label{margin-right:.4em;font-weight:600}
.search-toggle-open.search-toggle-style-bordered{min-width:44px}
@media (min-width:1024px){.search-toggle-open.search-toggle-style-bordered{min-width:11rem;justify-content:space-between}}
/* tablet/mobile: icon-only search, no box (the box collided with the logo mark) */
@media (max-width:1023.98px){.search-toggle-label{display:none}.search-toggle-open.search-toggle-style-bordered{border:0!important;padding:0!important;min-width:44px;justify-content:center}.site-header-main-section-right{gap:.25rem}}
.mobile-toggle-open-container .menu-toggle-open,.popup-drawer .menu-toggle-close{min-height:44px;min-width:44px}

/* ==========================================================================
   5. Footer (v2, IMM-style layout in TSA colors): brand | Pages | Categories | Contact,
   bottom bar = copyright left + buying/legal links right (mono).
   Markup: design/impl/footer-v2/*.html (block widgets footer1..4 + footer_html_content).
   ========================================================================== */
.site-footer{color:#D8DCE0}
.site-footer a{color:#D8DCE0;text-decoration:none}
.site-footer a:hover,.site-footer a:focus{color:var(--tsa-orange);text-decoration:underline}
.site-footer p{margin:0}
.tsa-f2-logo{display:inline-block;line-height:0}
.tsa-f2-logo img{display:block;width:180px;max-width:100%;height:auto}
.site-footer .tsa-f2-tagline{margin:1rem 0 0;font-family:var(--tsa-font-mono);font-weight:500;font-size:.8125rem;letter-spacing:.04em;color:var(--tsa-orange)}
.site-footer .tsa-f2-desc{margin:.75rem 0 0;max-width:34ch;font-size:.875rem;line-height:1.6;color:#AEB7C1}
.site-footer .tsa-f2-label{margin:0 0 1.25rem;font-size:.6875rem;line-height:1.4;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--tsa-white)}
.site-footer ul.tsa-f2-list{list-style:none;margin:0;padding:0}
.site-footer ul.tsa-f2-list li{margin:0 0 .7rem;font-size:.9375rem;line-height:1.5}
.site-footer ul.tsa-f2-list li:last-child{margin-bottom:0}
.site-footer .tsa-f2-contact li{display:flex;flex-direction:column;gap:.15rem}
.site-footer .tsa-f2-k{font-family:var(--tsa-font-mono);font-weight:500;font-size:.6875rem;letter-spacing:.08em;text-transform:uppercase;color:#8592A0}
.site-bottom-footer-wrap{border-top:1px solid rgb(255 255 255 / .12)}
.site-footer .tsa-f2-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 2rem;
  font-family:var(--tsa-font-mono);font-weight:500;font-size:.6875rem;line-height:1.6;letter-spacing:.02em;color:#8592A0;text-align:left}
.site-footer .tsa-f2-legal{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem}
#colophon .tsa-f2-legal a{text-decoration:none}
#colophon .tsa-f2-legal a:hover,#colophon .tsa-f2-legal a:focus{text-decoration:underline}
@media (min-width:1025px){
  .site-middle-footer-inner-wrap.site-footer-row-columns-4{grid-template-columns:1.5fr 1fr 1.25fr 1.35fr;column-gap:3rem}
}
@media (max-width:767px){
  .site-footer .tsa-f2-bottom{flex-direction:column;align-items:flex-start}
  .site-footer .tsa-f2-legal{gap:.6rem 1.25rem}
  .site-footer ul.tsa-f2-list li{margin-bottom:.85rem} /* bigger tap targets */
}

/* ==========================================================================
   6. Homepage sections (block patterns; see ~/tsaindo/design/impl/home.html)
   ========================================================================== */
.home .entry-content>*{margin-block-start:0}
.home .content-container .entry-content{margin:0}
.tsa-section{padding:clamp(2rem,5vw,3.5rem) 2rem}
.tsa-section,.tsa-hero{padding-left:2rem!important;padding-right:2rem!important;box-sizing:border-box}
.tsa-section>*{max-width:1152px;margin-left:auto;margin-right:auto}
.tsa-section h2{font-size:clamp(1.625rem,3vw,2rem);margin:0 0 1.5rem;color:var(--tsa-navy)}
.tsa-section--mist{background:var(--tsa-mist)}

/* Hero */
.tsa-hero{background:var(--tsa-navy);color:var(--tsa-white);padding:clamp(2.5rem,6vw,4.5rem) 2rem}
.tsa-hero>*{max-width:1152px;margin-left:auto;margin-right:auto}
.tsa-hero__inner{max-width:48rem}
.tsa-eyebrow{font-size:.75rem;line-height:1.4;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tsa-orange);margin:0 0 1rem}
.tsa-hero h1{color:var(--tsa-white);font-size:clamp(1.875rem,4.5vw,2.5rem);line-height:1.15;margin:0 0 1rem}
.tsa-hero p.tsa-lead{font-size:1.125rem;line-height:1.55;color:#E6EDEF;margin:0 0 1.75rem;max-width:44rem}
.tsa-hero .wp-block-woocommerce-product-search{margin:0 0 1.25rem;max-width:40rem;width:100%;box-sizing:border-box}
.tsa-hero .wc-block-product-search__fields{display:flex;gap:.5rem;flex-wrap:nowrap}
.tsa-hero .wc-block-product-search__field{flex:1 1 0;min-width:0;width:100%;box-sizing:border-box;min-height:52px;padding:0 1rem;font-size:1rem;color:var(--tsa-ink);background:#fff;border:2px solid transparent;border-radius:var(--tsa-radius)}
.tsa-hero .wc-block-product-search__field::placeholder{color:var(--tsa-slate);opacity:1}
.tsa-hero .wc-block-product-search__button{flex:0 0 auto;min-height:52px;min-width:52px;padding:0 1rem;background:var(--tsa-orange);color:var(--tsa-ink);border:0;border-radius:var(--tsa-radius);cursor:pointer}
.tsa-hero .wc-block-product-search__button:hover{background:var(--tsa-orange-hover)}
.tsa-hero .wc-block-product-search__button svg{fill:currentColor}
.tsa-hero .wp-block-buttons{gap:.75rem}
.tsa-hero .wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color){color:var(--tsa-white)!important;border-color:var(--tsa-white)!important}
.tsa-hero .wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color):hover{background:var(--tsa-white)!important;color:var(--tsa-navy)!important}

/* Hero background: decorative "measuring instrument" animation (markup: inc/hero-bg.html, injected by functions.php).
   Only transform/opacity are animated, each on its own element (compositor-only). No JS. */
.tsa-hero{position:relative;isolation:isolate}
.tsa-hero>.tsa-hero__bg{position:absolute!important;inset:0;max-width:none!important;margin:0!important;overflow:hidden;pointer-events:none;z-index:-1;contain:strict}
.tsa-hero__bg *{pointer-events:none}
.tsa-bg__grid{position:absolute;inset:0}
.tsa-bg__scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(19,45,75,.94) 0,rgba(19,45,75,.84) 40%,rgba(19,45,75,0) 68%)}
.tsa-bg__art{position:absolute;top:0;right:0;height:100%;aspect-ratio:520/440}
.tsa-bg__layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.tsa-bg__ruler{position:absolute;left:0;width:calc(100% + 100px);opacity:.32;will-change:transform}
.tsa-bg__ruler--a{top:0}
.tsa-bg__ruler--b{top:24px;width:calc(100% + 90px);opacity:.22}
.tsa-bg__wave{position:absolute;left:0;bottom:14px;opacity:.5;will-change:transform}
.tsa-bg__th{transform-origin:71.5% 44.5%}
.tsa-bg__needle{transform-origin:63.5% 50%;transform:rotate(24deg);will-change:transform}
@keyframes tsa-slide-a{to{transform:translate3d(-100px,0,0)}}
@keyframes tsa-slide-b{to{transform:translate3d(-90px,0,0)}}
@keyframes tsa-slide-w{to{transform:translate3d(-260px,0,0)}}
@keyframes tsa-breathe-a{from{transform:scale(1);opacity:.75}to{transform:scale(1.04);opacity:1}}
@keyframes tsa-breathe-b{from{transform:scale(.97);opacity:1}to{transform:scale(1.06);opacity:.7}}
@keyframes tsa-sweep{0%,100%{transform:rotate(-96deg)}30%{transform:rotate(24deg)}42%{transform:rotate(14deg)}68%{transform:rotate(62deg)}80%{transform:rotate(52deg)}}
@media (prefers-reduced-motion:no-preference){
.tsa-bg__ruler--a{animation:tsa-slide-a 40s linear infinite}
.tsa-bg__ruler--b{animation:tsa-slide-b 40s linear infinite}
.tsa-bg__wave{animation:tsa-slide-w 24s linear infinite}
.tsa-bg__th--a{animation:tsa-breathe-a 14s ease-in-out infinite alternate}
.tsa-bg__th--b{animation:tsa-breathe-b 9s ease-in-out infinite alternate}
.tsa-bg__needle{animation:tsa-sweep 18s ease-in-out infinite}
}
@media (max-width:1100px){.tsa-bg__art{right:-80px;opacity:.4}.tsa-bg__scrim{background:linear-gradient(90deg,rgba(19,45,75,.94) 0,rgba(19,45,75,.88) 55%,rgba(19,45,75,.5) 100%)}}
@media (max-width:767.98px){
.tsa-bg__art{height:auto;width:330px;right:-86px;top:auto;bottom:-6px;opacity:.3}
.tsa-bg__th--b,.tsa-bg__ruler--b{display:none}
.tsa-bg__ruler--a{opacity:.2}
.tsa-bg__wave{opacity:.28}
.tsa-bg__scrim{background:linear-gradient(90deg,rgba(19,45,75,.55) 0,rgba(19,45,75,.35) 100%)}
}


/* WP may wrap group contents in .wp-block-group__inner-container: flatten it for grid layouts and kill flow margins on grid items */
.tsa-cats>.wp-block-group__inner-container,.tsa-trust>.wp-block-group__inner-container,.tsa-steps>.wp-block-group__inner-container{display:contents}
.tsa-cat-card,.tsa-trust__item,.tsa-step{margin:0!important}
.tsa-cat-card>*,.tsa-trust__item>*,.tsa-step>*{margin-block-start:0}
.tsa-hero .wp-block-buttons{margin-top:0}

/* Category grid: 2 cols mobile, 3 tablet, 5x2 wide */
.tsa-cats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tsa-gap)}
@media (min-width:768px){.tsa-cats{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1100px){.tsa-cats{grid-template-columns:repeat(5,minmax(0,1fr))}}
.tsa-cat-card{position:relative;background:var(--tsa-white);border:1px solid var(--tsa-line);border-top:3px solid var(--tsa-navy);border-radius:var(--tsa-radius);padding:1rem 1rem .75rem;transition:border-color .15s ease,box-shadow .15s ease}
.tsa-cat-card:hover,.tsa-cat-card:focus-within{border-color:var(--tsa-steel);box-shadow:0 2px 8px rgb(19 45 75 / .12)}
.tsa-cat-card h3.wp-block-heading,.tsa-cat-card h3{font-size:1rem;line-height:1.3;margin:0 0 .5rem}
.tsa-cat-card h3 a{color:var(--tsa-navy);text-decoration:none}
.tsa-cat-card h3 a::after{content:"";position:absolute;inset:0}
.tsa-cat-card h3 a:focus-visible{outline:none}
.tsa-cat-card:focus-within{outline:2px solid var(--tsa-navy);outline-offset:2px}
.tsa-cat-card ul{list-style:none;margin:0;padding:0;font-size:.875rem;line-height:1.5}
.tsa-cat-card li{margin:0}
.tsa-cat-card li a{position:relative;z-index:1;display:inline-block;padding:.25rem 0;color:var(--tsa-link);text-decoration:none}
.tsa-cat-card li a:hover{color:var(--tsa-navy);text-decoration:underline}
.tsa-more{margin-top:1.25rem;font-size:.9375rem}

/* Trust strip */
.tsa-trust{display:grid;grid-template-columns:1fr;gap:var(--tsa-gap)}
@media (min-width:768px){.tsa-trust{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.tsa-trust{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tsa-trust__item{background:var(--tsa-white);border-left:4px solid var(--tsa-orange);border-radius:var(--tsa-radius);padding:1rem 1.25rem}
.tsa-trust__item h3{font-size:1.0625rem;line-height:1.3;margin:0 0 .35rem;color:var(--tsa-navy)}
.tsa-trust__item p{margin:0;font-size:.9375rem;color:var(--tsa-ink)}

/* Steps */
.tsa-steps{display:grid;grid-template-columns:1fr;gap:var(--tsa-gap);counter-reset:tsa-step;margin:0;padding:0}
@media (min-width:768px){.tsa-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.tsa-steps{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tsa-step{counter-increment:tsa-step;position:relative;margin:0;padding:0 0 0 3.25rem}
.tsa-step::before{content:counter(tsa-step);position:absolute;left:0;top:0;width:2.5rem;height:2.5rem;border-radius:50%;background:var(--tsa-navy);color:var(--tsa-white);display:flex;align-items:center;justify-content:center;font-family:var(--tsa-font-mono);font-weight:500;font-size:1.125rem}
.tsa-steps h3{font-size:1.0625rem;line-height:1.3;margin:.15rem 0 .35rem;color:var(--tsa-navy)}
.tsa-steps p{margin:0;font-size:.9375rem;color:var(--tsa-ink)}
.tsa-cta-row{margin-top:2rem}

@media (max-width:767.98px){.tsa-section,.tsa-hero{padding-left:1.25rem!important;padding-right:1.25rem!important}}

/* Placeholder pages */
.tsa-tbd{color:var(--tsa-slate);font-style:italic}

/* Woo coming-soon page (anonymous): logo in header instead of title text */
.woocommerce-coming-soon-header .tsa-brand-link{display:inline-block;line-height:0}
.woocommerce-coming-soon-header .wp-block-site-title{margin:0;line-height:0}

/* Coming-soon (anonymous): belt and braces for the removed login/social blocks */
.woocommerce-coming-soon-header-login,.woocommerce-coming-soon-powered-by-woo{display:none!important}

/* Hero search: label for screen readers only */
.tsa-hero .wc-block-product-search__label{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Mobile drawer: navy background, search on top */
#mobile-drawer .drawer-inner,.popup-drawer .drawer-inner{background:var(--tsa-navy)}
#mobile-drawer .drawer-header,#mobile-drawer .drawer-content{color:var(--tsa-white)}
#mobile-drawer .menu-toggle-close{color:var(--tsa-white)}
#mobile-drawer .menu-toggle-close:hover{color:var(--tsa-orange)}
#mobile-drawer .mobile-navigation a,#mobile-drawer .mobile-navigation .drawer-nav-drop-wrap button{color:var(--tsa-white)}
#mobile-drawer .mobile-navigation a:hover,#mobile-drawer .mobile-navigation .current-menu-item>a{color:var(--tsa-orange)}
.tsa-drawer-search{display:flex;gap:.5rem;margin:0 0 1rem;padding:0 1rem}
.tsa-drawer-search input[type=search]{flex:1 1 0;min-width:0;min-height:44px;padding:0 .75rem;font-size:1rem;color:var(--tsa-ink);background:#fff;border:2px solid transparent;border-radius:var(--tsa-radius)}
.tsa-drawer-search input[type=search]::placeholder{color:var(--tsa-slate);opacity:1}
.tsa-drawer-search button{flex:0 0 auto;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--tsa-orange);color:var(--tsa-ink);border:0;border-radius:var(--tsa-radius);cursor:pointer}
.tsa-drawer-search button:hover{background:var(--tsa-orange-hover)}
#mobile-drawer .tsa-drawer-search :focus-visible{outline:2px solid var(--tsa-orange);outline-offset:2px}


/* ==========================================================================
   7. Catalog: product cards, archives, product page, Brands index
   (ux-spec 2.3 / 2.4 / 2.5; markup in inc/catalog.php)
   Source photos are only ~270px wide: they are never scaled up. Cards use a fixed 1:1 white box and
   object-fit:contain; the product page shows the image at native size (max 300px), centered.
   ========================================================================== */

/* ---- 7.1 Cards ---- */
.woocommerce ul.products li.product.loop-entry{display:flex;flex-direction:column;background:var(--tsa-white);border:1px solid var(--tsa-line);border-radius:var(--tsa-radius);box-shadow:none;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}
.woocommerce ul.products li.product.loop-entry:hover,.woocommerce ul.products li.product.loop-entry:focus-within{border-color:var(--tsa-steel);box-shadow:0 2px 8px rgb(19 45 75 / .12)}
.woocommerce ul.products li.product a.woocommerce-loop-image-link{display:block;position:relative;aspect-ratio:1/1;width:100%;background:#fff;border-bottom:1px solid var(--tsa-mist);overflow:hidden;flex:0 0 auto}
.woocommerce ul.products li.product a.woocommerce-loop-image-link img{position:absolute;inset:0;margin:auto;width:auto!important;height:auto!important;max-width:calc(100% - 32px)!important;max-height:calc(100% - 32px)!important;object-fit:contain}
.woocommerce ul.products li.product .product-details{flex:1 1 auto;display:flex;flex-direction:column;padding:.875rem 1rem 1rem;background:var(--tsa-white)}
.tsa-card-brand{margin:0 0 .25rem;font-size:.75rem;line-height:1.4;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.tsa-card-brand a{color:var(--tsa-slate);text-decoration:none}
.tsa-card-brand a:hover{color:var(--tsa-navy);text-decoration:underline}
.woocommerce ul.products li.product .woocommerce-loop-product__title{display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin:0;padding:0;font-size:1rem;line-height:1.3;min-height:3.9em;font-weight:600;overflow-wrap:anywhere}
.woocommerce ul.products li.product .woocommerce-loop-product__title a{color:var(--tsa-navy);text-decoration:none}
.woocommerce ul.products li.product .woocommerce-loop-product__title a:hover{text-decoration:underline}
.woocommerce ul.products li.product .price{display:block;margin:.5rem 0 .875rem}
.woocommerce ul.products li.product .product-action-wrap{margin-top:auto}
.woocommerce ul.products li.product .product-action-wrap .button,.woocommerce ul.products li.product .button{min-height:44px;width:100%;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}
@media (max-width:599.98px){
  .woocommerce ul.products li.product .product-details{padding:.75rem .75rem .875rem}
  .woocommerce ul.products li.product .woocommerce-loop-product__title{font-size:.9375rem}
  .woocommerce ul.products li.product .price{font-size:1rem}
}

/* ---- 7.2 Archive header (compact, left aligned) ---- */
.entry-hero[class*="archive-hero-section"] .entry-hero-container-inner,.entry-hero[class*="archive-hero-section"] .entry-header{min-height:0}
/* page hero (Brands, Quote List, static pages): same compact left-aligned style */
.entry-hero.page-hero-section .entry-hero-container-inner,.entry-hero.page-hero-section .entry-header{min-height:0}
.entry-hero.page-hero-section .hero-container{padding-top:1.5rem;padding-bottom:1.5rem}
.entry-hero.page-hero-section .entry-header,.entry-hero[class*="archive-hero-section"] .entry-header{text-align:left}
.entry-hero.page-hero-section .entry-title{margin:0;font-size:clamp(1.75rem,3.5vw,2.25rem)}
body.archive.woocommerce .content-area,body.single-product .content-area{margin-top:2rem;margin-bottom:3rem}
body.single-product .content-area{margin-top:1.25rem}
.entry-hero[class*="archive-hero-section"] .hero-container{padding-top:1.5rem;padding-bottom:1.5rem}
.entry-hero[class*="archive-hero-section"] .archive-title{margin:0;font-size:clamp(1.75rem,3.5vw,2.25rem)}
.entry-hero[class*="archive-hero-section"] .kadence-breadcrumbs,.entry-hero[class*="archive-hero-section"] .kadence-breadcrumbs a{font-size:.875rem;color:var(--tsa-slate)}
.entry-hero[class*="archive-hero-section"] .kadence-breadcrumbs a:hover{color:var(--tsa-navy)}
.woocommerce-products-header{margin:0}
.tsa-archive-nav{margin:0 0 1.25rem}

/* chips (subcategories, sibling categories, brand categories, shop tiles) */
.tsa-chips{margin:0 0 1rem}
.tsa-chips__label{margin:0 0 .5rem;font-size:.75rem;line-height:1.4;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--tsa-slate)}
.tsa-chips ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
.tsa-chips li{margin:0}
.tsa-chips a{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:.25rem .875rem;box-sizing:border-box;background:var(--tsa-white);color:var(--tsa-navy);border:1px solid var(--tsa-line);border-radius:999px;font-size:.9375rem;font-weight:600;text-decoration:none}
.tsa-chips a:hover,.tsa-chips a:focus-visible{border-color:var(--tsa-navy);background:var(--tsa-mist)}
.tsa-chips__n{font-family:var(--tsa-font-mono);font-weight:500;font-size:.8125rem;color:var(--tsa-slate)}
.tsa-chips--tiles ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
@media (min-width:768px){.tsa-chips--tiles ul{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:1100px){.tsa-chips--tiles ul{grid-template-columns:repeat(5,minmax(0,1fr))}}
.tsa-chips--tiles a{display:flex;justify-content:space-between;align-items:flex-start;height:100%;min-height:64px;padding:.75rem 1rem;border-radius:var(--tsa-radius);border-top:3px solid var(--tsa-navy);line-height:1.3}

/* filter bar: <details> dropdowns, no JS */
.tsa-filters{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin:0 0 1rem}
.tsa-dd{position:static}
.tsa-dd>summary,.tsa-dd__more>summary{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:0 1rem;box-sizing:border-box;background:var(--tsa-white);color:var(--tsa-navy);border:1px solid var(--tsa-slate);border-radius:var(--tsa-radius);font-weight:600;font-size:.9375rem;cursor:pointer;list-style:none}
.tsa-dd>summary::-webkit-details-marker,.tsa-dd__more>summary::-webkit-details-marker{display:none}
.tsa-dd>summary::after{content:"";width:.45rem;height:.45rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px)}
.tsa-dd[open]>summary{background:var(--tsa-mist)}
.tsa-dd[open]>summary::after{transform:rotate(-135deg) translateY(-2px)}
.tsa-dd__panel{position:absolute;left:0;top:calc(100% + 4px);z-index:20;width:min(360px,100%);max-height:70vh;overflow:auto;background:var(--tsa-white);border:1px solid var(--tsa-line);border-radius:var(--tsa-radius);box-shadow:0 8px 24px rgb(19 45 75 / .16);padding:.5rem}
.tsa-dd__panel ul{list-style:none;margin:0;padding:0}
.tsa-dd__panel li{margin:0}
.tsa-dd__panel a{display:flex;justify-content:space-between;gap:1rem;align-items:center;min-height:44px;padding:.25rem .75rem;box-sizing:border-box;color:var(--tsa-ink);text-decoration:none;border-radius:var(--tsa-radius)}
.tsa-dd__panel a:hover,.tsa-dd__panel a:focus-visible{background:var(--tsa-mist);color:var(--tsa-navy)}
.tsa-dd__panel a.is-active{background:var(--tsa-orange-tint);font-weight:600;box-shadow:inset 3px 0 0 var(--tsa-orange)}
.tsa-dd__more{margin-top:.25rem}
.tsa-dd__more>summary{width:100%;border:0;background:transparent;color:var(--tsa-link);justify-content:flex-start;padding:0 .75rem;font-weight:600}
.tsa-active{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
.tsa-active li{margin:0}
.tsa-active a{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .875rem;box-sizing:border-box;background:var(--tsa-orange-tint);color:var(--tsa-ink);border:1px solid var(--tsa-orange);border-radius:999px;font-size:.875rem;font-weight:600;text-decoration:none}
.tsa-active a:hover{background:#fde4c0}
.tsa-active a.tsa-active__clear{background:transparent;border-color:transparent;color:var(--tsa-link);text-decoration:underline}

/* toolbar row from Kadence (count + sort) */
.kadence-shop-top-row{margin:0 0 1.25rem;padding:.5rem 0;border-top:1px solid var(--tsa-line);align-items:center;gap:1rem}
.woocommerce-result-count{margin:0;color:var(--tsa-slate);font-size:.9375rem}
.woocommerce-ordering select{min-height:44px;font-size:.9375rem;font-weight:600;color:var(--tsa-navy)}

.tsa-empty{padding:2rem 1rem;text-align:center;background:var(--tsa-white);border:1px solid var(--tsa-line);border-radius:var(--tsa-radius)}
.tsa-empty p{margin:0 0 .75rem}
.tsa-cant-find{margin:2rem 0 0;padding:1rem 1.25rem;background:var(--tsa-mist);border-left:4px solid var(--tsa-navy);border-radius:var(--tsa-radius)}
nav.woocommerce-pagination{margin-top:2rem}

/* ---- 7.3 Breadcrumb (long product titles are cut with an ellipsis) ---- */
.kadence-breadcrumbs{font-size:.875rem;color:var(--tsa-slate)}
.kadence-breadcrumbs a{color:var(--tsa-link)}
.kadence-breadcrumb-container{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .35rem}
.kadence-breadcrumbs .kadence-bread-current{display:inline-block;max-width:min(42ch,70vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;color:var(--tsa-slate)}

/* ---- 7.4 Product page ---- */
body.single-product div.product.type-product{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1.5rem clamp(1.5rem,4vw,3rem);align-items:start}
body.single-product div.product.type-product>*{grid-column:1/-1;min-width:0}
body.single-product div.product.type-product>.woocommerce-product-gallery{grid-column:1;grid-row:1;width:auto!important;float:none!important;margin:0!important;opacity:1!important}
body.single-product div.product.type-product>.summary{grid-column:2;grid-row:1;width:auto!important;float:none!important;margin:0!important;padding:0}
@media (max-width:767.98px){
  body.single-product div.product.type-product{grid-template-columns:minmax(0,1fr)}
  body.single-product div.product.type-product>.woocommerce-product-gallery,body.single-product div.product.type-product>.summary{grid-column:1;grid-row:auto}
}
body.single-product .woocommerce-product-gallery__wrapper{margin:0}
body.single-product .woocommerce-product-gallery__image{display:flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:340px;padding:1.5rem;background:#fff;border:1px solid var(--tsa-line);border-radius:var(--tsa-radius)}
body.single-product .woocommerce-product-gallery__image img{display:block;width:auto!important;height:auto!important;max-width:min(100%,300px)!important;max-height:440px;margin:0 auto;object-fit:contain}
@media (max-width:767.98px){body.single-product .woocommerce-product-gallery__image{min-height:260px;padding:1rem}body.single-product .woocommerce-product-gallery__image img{max-height:320px}}

.tsa-pdp-brand{margin:0 0 .5rem;font-size:.8125rem;line-height:1.4;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.tsa-pdp-brand a{color:var(--tsa-link);text-decoration:none}
.tsa-pdp-brand a:hover{color:var(--tsa-navy);text-decoration:underline}
.single-product .summary .product_title{margin:0 0 .75rem;font-size:clamp(1.5rem,2.6vw,2rem);line-height:1.2;overflow-wrap:anywhere}
body.tsa-title-long.single-product .summary .product_title{font-size:clamp(1.25rem,2.2vw,1.5rem);line-height:1.3}
.single-product .summary .woocommerce-product-details__short-description{margin:0 0 1rem;color:var(--tsa-slate);max-width:60ch}
.single-product .summary .woocommerce-product-details__short-description p{margin:0}
.single-product .summary p.price{margin:0 0 .25rem;font-size:1.75rem;line-height:1.2}
.tsa-cur{font-family:var(--tsa-font-mono);font-weight:500;font-size:.9375rem;color:var(--tsa-slate);letter-spacing:.04em}
.tsa-price-note{margin:0 0 1.25rem;font-size:.875rem;line-height:1.5;color:var(--tsa-slate);max-width:60ch}
.single-product form.cart{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;gap:.75rem;margin:0 0 .75rem}
.single-product form.cart,.single-product form.cart .quantity{margin-left:0!important}
.single-product form.cart .quantity{margin-top:0;margin-bottom:0}
.single-product form.cart .quantity input.qty{width:5rem;min-height:48px;text-align:center;border:1px solid var(--tsa-slate);border-radius:var(--tsa-radius);font-size:1rem;color:var(--tsa-ink)}
.single-product form.cart .single_add_to_cart_button{min-height:48px;padding:0 1.75rem;flex:0 1 auto}
.single-product form.cart::before,.single-product form.cart::after{display:none!important;content:none!important}
.tsa-pdp-links{margin:0 0 1.5rem;font-size:.9375rem}
dl.tsa-meta{margin:0;padding:1rem 1.25rem;background:var(--tsa-paper);border:1px solid var(--tsa-line);border-radius:var(--tsa-radius);font-size:.9375rem}
dl.tsa-meta>div{display:flex;gap:.75rem;margin:0;padding:.25rem 0}
dl.tsa-meta dt{flex:0 0 6.5rem;margin:0;font-weight:600;color:var(--tsa-slate)}
dl.tsa-meta dd{margin:0;color:var(--tsa-ink);overflow-wrap:anywhere}
dl.tsa-meta .sku{font-size:.9375rem}

.tsa-specs,.tsa-more{margin-top:1rem;padding-top:2rem;border-top:1px solid var(--tsa-line)}
.tsa-specs h2,.tsa-more h2{margin:0 0 1rem;font-size:1.5rem;color:var(--tsa-navy)}
.tsa-specs ul{margin:0 0 1rem;padding-left:1.25rem;max-width:80ch}
.tsa-specs li{margin:0 0 .4rem;line-height:1.55}
.tsa-specs__note{margin:1rem 0 0;font-size:.875rem;color:var(--tsa-slate);max-width:80ch}
.tsa-more{margin-bottom:2rem}
.tsa-more ul.products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0 0 1rem;padding:0;list-style:none}
@media (min-width:768px){.tsa-more ul.products{grid-template-columns:repeat(4,minmax(0,1fr))}}
.tsa-more__links{margin:0;font-size:.9375rem}

/* ---- 7.5 Brands index ---- */
.tsa-brands__lead{margin:0 0 1.25rem;color:var(--tsa-slate);max-width:70ch}
.tsa-az{margin:0 0 2rem}
.tsa-az ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
.tsa-az li{margin:0}
.tsa-az a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 .5rem;box-sizing:border-box;background:var(--tsa-white);color:var(--tsa-navy);border:1px solid var(--tsa-line);border-radius:var(--tsa-radius);font-weight:600;text-decoration:none}
.tsa-az a:hover,.tsa-az a:focus-visible{background:var(--tsa-navy);color:var(--tsa-white);border-color:var(--tsa-navy)}
.tsa-brands__group{margin:0 0 1.75rem;scroll-margin-top:1rem}
.tsa-brands__group h2{margin:0 0 .5rem;padding-bottom:.35rem;font-size:1.5rem;border-bottom:2px solid var(--tsa-navy)}
.tsa-brands__group ul{column-width:15rem;column-gap:2rem;list-style:none;margin:0;padding:0}
.tsa-brands__group li{break-inside:avoid;margin:0;padding:.35rem 0}
.tsa-brands__group li a{color:var(--tsa-link);font-weight:600}

/* ---- 7.6 Quote List (cart) on phones: keep the white card from touching the edges ---- */
@media (max-width:767.98px){body.woocommerce-cart .entry-content-wrap{padding-left:1rem;padding-right:1rem}}

/* Shipping is quoted separately (single zero-cost rate, label "Shipping: quoted separately", see inc/shipping-label.php).
   Hide the "Free" price Woo Blocks prints for a zero-cost rate: it would read as free shipping. */
.wc-block-components-totals-shipping .wc-block-components-totals-item__value,
.wc-block-checkout__shipping-option--free,
.wc-block-components-shipping-rates-control .wc-block-components-radio-control__secondary-label,
.wc-block-components-shipping-rates-control .wc-block-components-radio-control__description {
	display: none;
}
