/* ==========================================================================
   TMB App Shell — header, sheets, mobile thumb tray, site footer
   File: assets/css/tmb-app-shell.css        Load order: 3 of 4
   --------------------------------------------------------------------------
   Markup:  header.php (header + menu sheet), footer.php (search sheet,
            thumb tray, browse sheet, site footer)
   Script:  assets/js/tmb-app-shell.js
   Uses only tokens from assets/css/tmb-core.css.

   Two modes, one breakpoint:
     App      < 900px   dark compact header, bottom thumb tray, bottom sheets
     Desktop  ≥ 900px   light header with full navigation, no tray

   Class names .tmb-header, .tmb-footer.tmb-thumb-tray, .tmb-thumb-tray__*,
   .tmb-browse-tray and #tmb-mobile / #tmb-search / #tmb-footer-search are
   relied on by the product page and TMB plugins — keep them.
   ========================================================================== */

:root{
  --tmb-header-height: calc(var(--tmb-app-header-h) + var(--tmb-safe-top));
  --tmb-z-tray-dim: 2147482999; /* below the tray so its buttons stay usable */
}
@media (min-width:900px){
  :root{ --tmb-header-height: var(--tmb-app-header-h-desktop); }
}


/* --------------------------------------------------------------------------
   Skip link
-------------------------------------------------------------------------- */
.tmb-skip{
  position:absolute;
  left:var(--tmb-space-3);
  top:-100px;
  z-index:calc(var(--tmb-z-sheet) + 1);
  padding:var(--tmb-space-3) var(--tmb-space-4);
  border-radius:var(--tmb-radius-sm);
  background:var(--tmb-color-surface);
  color:var(--tmb-color-text);
  font-weight:var(--tmb-fw-bold);
  box-shadow:var(--tmb-shadow-lg);
}
.tmb-skip:focus{ top:calc(var(--tmb-space-3) + var(--tmb-safe-top)); }


/* --------------------------------------------------------------------------
   Header — app mode (default, mobile first)
-------------------------------------------------------------------------- */
.tmb-header{
  position:sticky;
  top:0;
  z-index:var(--tmb-z-chrome);
  padding-top:var(--tmb-safe-top);
  background:var(--tmb-color-primary);
  color:var(--tmb-color-on-primary);
  transition:box-shadow var(--tmb-motion-base) ease;
}
.tmb-header.is-scrolled{ box-shadow:0 6px 20px rgba(5,15,23,.22); }

.tmb-header__bar{
  display:flex;
  align-items:center;
  gap:var(--tmb-space-3);
  width:min(100% - (var(--tmb-space-4) * 2), var(--tmb-container-wide));
  height:var(--tmb-app-header-h);
  margin-inline:auto;
  padding-inline:var(--tmb-safe-left) var(--tmb-safe-right);
}

.tmb-header__brand{
  display:flex;
  align-items:center;
  min-width:0;
  min-height:var(--tmb-tap-min);
  margin-right:auto;
  color:inherit;
}
.tmb-header__brand:hover{ text-decoration:none; }
/* Scoped under .tmb-header so WooCommerce's ".woocommerce-page img" can't override it. */
.tmb-header .tmb-header__logo{
  width:auto;
  height:var(--tmb-app-logo-h);
  max-width:min(52vw, 220px);
  object-fit:contain;
  object-position:left center;
}
.tmb-header__logo--on-light{ display:none; }
/* Only one logo uploaded: knock it out to white on the dark app bar. */
.tmb-header__brand--single .tmb-header__logo--on-light{ display:block; filter:brightness(0) invert(1); }
.tmb-header__site-name{
  font-size:var(--tmb-fs-lg);
  font-weight:var(--tmb-fw-bold);
  letter-spacing:-.01em;
  white-space:nowrap;
}

.tmb-header__nav{ display:none; }

.tmb-header__actions{
  display:flex;
  align-items:center;
  gap:var(--tmb-space-1);
  flex:0 0 auto;
}
.tmb-header__action{ color:inherit; }
.tmb-header__action:hover{ background:rgba(255,255,255,.10); }
.tmb-header__action-label{ display:none; }
.tmb-header__action--search,
.tmb-header__action--account{ display:none; } /* these live in the thumb tray */
.tmb-header__action .tmb-count{ box-shadow:0 0 0 2px var(--tmb-color-primary); }

.tmb-header-search{ display:none; }

/* WordPress admin bar */
body.admin-bar .tmb-header{ top:46px; }
@media (min-width:783px){ body.admin-bar .tmb-header{ top:32px; } }
@media (max-width:600px){ body.admin-bar .tmb-header{ top:0; } }


/* --------------------------------------------------------------------------
   Header — desktop mode
-------------------------------------------------------------------------- */
@media (min-width:900px){
  .tmb-header{
    z-index:1000;
    padding-top:0;
    background:color-mix(in srgb, var(--tmb-color-surface) 94%, transparent);
    -webkit-backdrop-filter:saturate(1.4) blur(12px);
    backdrop-filter:saturate(1.4) blur(12px);
    color:var(--tmb-color-text);
    border-bottom:1px solid var(--tmb-color-border);
  }
  .tmb-header.is-scrolled{ box-shadow:var(--tmb-shadow-md); }

  .tmb-header__bar{
    gap:var(--tmb-space-6);
    width:min(100% - (var(--tmb-gutter) * 2), var(--tmb-container-wide));
    height:var(--tmb-app-header-h-desktop);
  }
  .tmb-header__brand{ margin-right:0; }
  .tmb-header .tmb-header__logo{ height:var(--tmb-app-logo-h-desktop); max-width:240px; }
  .tmb-header__logo--on-dark{ display:none; }
  .tmb-header__logo--on-light,
  .tmb-header__brand--single .tmb-header__logo--on-light{ display:block; filter:none; }

  .tmb-header__nav{ display:block; flex:1; min-width:0; }
  .tmb-header__menu,
  .tmb-header__nav .menu{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:var(--tmb-space-1);
    margin:0;
    padding:0;
    list-style:none;
  }
  .tmb-header__nav li{ position:relative; margin:0; }
  .tmb-header__nav .menu > li > a{
    position:relative;
    display:flex;
    align-items:center;
    gap:6px;
    min-height:var(--tmb-tap-min);
    padding:0 14px;
    border-radius:var(--tmb-radius-pill);
    color:var(--tmb-color-text);
    font-size:.95rem;
    font-weight:var(--tmb-fw-bold);
    white-space:nowrap;
    transition:background var(--tmb-motion-fast) ease, color var(--tmb-motion-fast) ease;
  }
  .tmb-header__nav .menu > li > a:hover{ text-decoration:none; background:var(--tmb-color-primary-soft); }
  .tmb-header__nav .menu > li > a::after{
    content:"";
    position:absolute;
    left:14px;
    right:14px;
    bottom:6px;
    height:2px;
    border-radius:2px;
    background:var(--tmb-color-accent);
    transform:scaleX(0);
    transition:transform var(--tmb-motion-base) var(--tmb-ease-standard);
  }
  .tmb-header__nav .menu > .current-menu-item > a,
  .tmb-header__nav .menu > .current-menu-ancestor > a,
  .tmb-header__nav .menu > .current_page_item > a{ color:var(--tmb-color-primary); }
  .tmb-header__nav .menu > .current-menu-item > a::after,
  .tmb-header__nav .menu > .current-menu-ancestor > a::after,
  .tmb-header__nav .menu > .current_page_item > a::after{ transform:scaleX(1); }
  .tmb-header__nav .menu-item-has-children > a::before{
    content:"";
    order:2;
    width:6px;
    height:6px;
    margin-top:-3px;
    border-right:2px solid currentColor;
    border-bottom:2px solid currentColor;
    transform:rotate(45deg);
    opacity:.55;
  }

  /* Dropdowns */
  .tmb-header__nav .sub-menu{
    position:absolute;
    top:100%;
    left:0;
    z-index:2;
    min-width:230px;
    margin:0;
    padding:var(--tmb-space-2);
    list-style:none;
    border:1px solid var(--tmb-color-border);
    border-radius:var(--tmb-radius-sm);
    background:var(--tmb-color-surface);
    box-shadow:var(--tmb-shadow-lg);
    opacity:0;
    visibility:hidden;
    transform:translateY(6px);
    transition:opacity var(--tmb-motion-fast) ease, transform var(--tmb-motion-fast) ease, visibility 0s linear var(--tmb-motion-fast);
  }
  .tmb-header__nav li:hover > .sub-menu,
  .tmb-header__nav li:focus-within > .sub-menu{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
    transition-delay:0s;
  }
  .tmb-header__nav .sub-menu a{
    display:block;
    padding:10px 12px;
    border-radius:var(--tmb-radius-xs);
    color:var(--tmb-color-text);
    font-size:var(--tmb-fs-sm);
    font-weight:var(--tmb-fw-medium);
  }
  .tmb-header__nav .sub-menu a:hover{ text-decoration:none; background:var(--tmb-color-primary-soft); color:var(--tmb-color-primary); }

  .tmb-header__actions{ gap:var(--tmb-space-2); }
  .tmb-header__action{
    border-color:var(--tmb-color-border);
    background:var(--tmb-color-surface);
    padding:0 14px;
  }
  .tmb-header__action:hover{ background:var(--tmb-color-primary-soft); border-color:var(--tmb-color-border-strong); }
  .tmb-header__action svg{ width:19px; height:19px; }
  .tmb-header__action-label{ display:inline; }
  .tmb-header__action--search,
  .tmb-header__action--account{ display:inline-flex; }
  .tmb-header__action--menu{ display:none; }
  .tmb-header__action .tmb-count{ position:static; box-shadow:none; }

  /* Desktop search drop-down */
  .tmb-header-search{
    position:absolute;
    left:0;
    right:0;
    top:100%;
    display:block;
    padding:var(--tmb-space-4) 0 var(--tmb-space-5);
    border-bottom:1px solid var(--tmb-color-border);
    background:var(--tmb-color-surface);
    box-shadow:var(--tmb-shadow-lg);
    opacity:0;
    visibility:hidden;
    transform:translateY(-6px);
    transition:opacity var(--tmb-motion-fast) ease, transform var(--tmb-motion-fast) ease, visibility 0s linear var(--tmb-motion-fast);
  }
  .tmb-header-search.is-open{ opacity:1; visibility:visible; transform:translateY(0); transition-delay:0s; }
  .tmb-header-search__inner{ width:min(100% - (var(--tmb-gutter) * 2), 760px); margin-inline:auto; }
}


/* --------------------------------------------------------------------------
   Menu sheet (#tmb-mobile) — app mode only
-------------------------------------------------------------------------- */
@media (min-width:900px){
  .tmb-menu-sheet,
  .tmb-menu-dim{ display:none !important; }
}
.tmb-menu-sheet__close{ color:var(--tmb-color-text-muted); }
.tmb-menu-sheet__close svg{ width:20px; height:20px; }

.tmb-menu-sheet__quick{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:var(--tmb-space-2);
  margin-bottom:var(--tmb-space-3);
}
.tmb-menu-sheet__tile{
  position:relative;
  display:flex;
  align-items:center;
  gap:var(--tmb-space-3);
  min-height:60px;
  padding:var(--tmb-space-3) var(--tmb-space-4);
  border-radius:var(--tmb-radius-sm);
  background:var(--tmb-color-primary-soft);
  color:var(--tmb-color-primary);
  font-weight:var(--tmb-fw-bold);
}
.tmb-menu-sheet__tile:hover{ text-decoration:none; }
.tmb-menu-sheet__tile svg{ width:22px; height:22px; flex:0 0 auto; }
.tmb-menu-sheet__tile .tmb-count{ margin-left:auto; }

.tmb-menu-sheet__nav .menu,
.tmb-menu-sheet__nav .sub-menu{ list-style:none; margin:0; padding:0; }
.tmb-menu-sheet__nav .menu > li + li{ border-top:1px solid var(--tmb-color-border); }
.tmb-menu-sheet__nav a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--tmb-space-3);
  min-height:52px;
  padding:var(--tmb-space-2) var(--tmb-space-1);
  color:var(--tmb-color-text);
  font-size:var(--tmb-fs-md);
  font-weight:var(--tmb-fw-medium);
}
.tmb-menu-sheet__nav a:hover{ text-decoration:none; color:var(--tmb-color-primary); }
.tmb-menu-sheet__nav .menu > li > a::after{
  content:"";
  width:8px;
  height:8px;
  border-top:2px solid currentColor;
  border-right:2px solid currentColor;
  transform:rotate(45deg);
  opacity:.35;
  flex:0 0 auto;
}
.tmb-menu-sheet__nav .current-menu-item > a,
.tmb-menu-sheet__nav .current_page_item > a{ color:var(--tmb-color-primary); font-weight:var(--tmb-fw-bold); }
.tmb-menu-sheet__nav .sub-menu{ padding:0 0 var(--tmb-space-2) var(--tmb-space-4); }
.tmb-menu-sheet__nav .sub-menu a{ min-height:44px; font-size:var(--tmb-fs-sm); color:var(--tmb-color-text-muted); }
.tmb-menu-sheet__nav .sub-menu a::after{ display:none; }

.tmb-menu-sheet__footer{
  display:grid;
  gap:var(--tmb-space-2);
  margin-top:var(--tmb-space-4);
  padding-top:var(--tmb-space-4);
  border-top:1px solid var(--tmb-color-border);
}
.tmb-menu-sheet__contact{
  display:flex;
  align-items:center;
  gap:var(--tmb-space-2);
  min-height:var(--tmb-tap-min);
  color:var(--tmb-color-text-muted);
  font-size:var(--tmb-fs-sm);
  font-weight:var(--tmb-fw-medium);
}
.tmb-menu-sheet__contact svg{ width:18px; height:18px; }
.tmb-install-hint{
  margin:0;
  padding:var(--tmb-space-3);
  border-radius:var(--tmb-radius-sm);
  background:var(--tmb-color-surface-muted);
  color:var(--tmb-color-text-muted);
  font-size:var(--tmb-fs-sm);
  line-height:var(--tmb-leading-body);
}
.tmb-install-hint[hidden],
[data-tmb-install][hidden]{ display:none !important; }


/* --------------------------------------------------------------------------
   Thumb tray — app mode only
-------------------------------------------------------------------------- */
.tmb-footer--mobile,
.tmb-footer.tmb-thumb-tray,
.tmb-footer-search,
.tmb-thumb-tray-dim{ display:none; }

@media (max-width:899.98px){
  /* Reserve room for the tray. The site footer absorbs it (so the space is
     navy, not a blank strip); pages without the footer fall back to body. */
  body.tmb-co-app-shell{ padding-bottom:calc(var(--tmb-app-tray-h) + var(--tmb-safe-bottom)); }
  body.tmb-co-app-shell:has(.tmb-site-footer){ padding-bottom:0; }
  body.tmb-co-app-shell .tmb-site-footer{ padding-bottom:calc(var(--tmb-space-6) + var(--tmb-app-tray-h) + var(--tmb-safe-bottom)); }

  .tmb-footer.tmb-thumb-tray{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:var(--tmb-z-chrome);
    display:block;
    padding-bottom:var(--tmb-safe-bottom);
    background:var(--tmb-color-primary);
    color:var(--tmb-color-on-primary);
    box-shadow:0 -8px 24px rgba(5,15,23,.16);
    overflow:visible;
  }

  .tmb-thumb-tray__nav{
    position:relative;
    z-index:10;
    display:grid;
    grid-template-columns:repeat(var(--tmb-footer-count, 5), minmax(0, 1fr));
    height:var(--tmb-app-tray-h);
    padding:0 max(var(--tmb-space-1), var(--tmb-safe-right)) 0 max(var(--tmb-space-1), var(--tmb-safe-left));
    background:var(--tmb-color-primary);
  }

  .tmb-thumb-tray__item{
    appearance:none;
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:5px;
    min-width:0;
    padding:6px 2px 4px;
    border:0;
    background:none;
    color:rgba(255,255,255,.70);
    font:inherit;
    text-decoration:none !important;
    cursor:pointer;
    transition:color var(--tmb-motion-fast) ease;
  }
  .tmb-thumb-tray__item::before{
    content:"";
    position:absolute;
    top:0;
    left:50%;
    width:28px;
    height:3px;
    border-radius:0 0 3px 3px;
    background:var(--tmb-color-accent);
    transform:translateX(-50%) scaleX(0);
    transition:transform var(--tmb-motion-base) var(--tmb-ease-emphasized);
  }
  .tmb-thumb-tray__item:hover,
  .tmb-thumb-tray__item:focus-visible,
  .tmb-thumb-tray__item.is-active{ color:#fff; }
  .tmb-thumb-tray__item.is-active::before,
  .tmb-thumb-tray__item[aria-expanded="true"]::before{ transform:translateX(-50%) scaleX(1); }
  .tmb-thumb-tray__item.is-active .tmb-thumb-tray__icon{ color:var(--tmb-color-accent); }
  .tmb-thumb-tray__item:focus-visible{ outline:2px solid var(--tmb-color-accent); outline-offset:-4px; border-radius:var(--tmb-radius-xs); }

  .tmb-thumb-tray__icon{
    display:grid;
    place-items:center;
    width:24px;
    height:24px;
    transition:transform var(--tmb-motion-fast) var(--tmb-ease-standard);
  }
  .tmb-thumb-tray__icon svg{ width:24px; height:24px; }
  .tmb-thumb-tray__item:active .tmb-thumb-tray__icon{ transform:scale(.88); }

  .tmb-thumb-tray__label{
    max-width:100%;
    overflow:hidden;
    font-size:var(--tmb-fs-2xs);
    font-weight:var(--tmb-fw-bold);
    line-height:1;
    letter-spacing:.01em;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  /* SVG icons from /assets/icons are drawn as masks so they take currentColor.
     The brand flame appears briefly while an item is pressed. */
  .tmb-icon-stack{ position:relative; display:block; width:24px; height:24px; }
  .tmb-icon-mask,
  .tmb-icon-inline{
    position:absolute;
    inset:0;
    transition:opacity .14s ease, transform .18s var(--tmb-ease-emphasized);
  }
  .tmb-icon-mask{
    background-color:currentColor;
    -webkit-mask:var(--tmb-icon-url) center / contain no-repeat;
    mask:var(--tmb-icon-url) center / contain no-repeat;
  }
  .tmb-icon-inline svg{ width:100%; height:100%; }
  .tmb-icon-mask--press{ opacity:0; transform:scale(.6); background-color:var(--tmb-color-accent); }
  .tmb-thumb-tray__item.is-flame-press .has-press-icon .tmb-icon-mask--default,
  .tmb-thumb-tray__item.is-flame-press .has-press-icon .tmb-icon-inline--default{ opacity:0; transform:scale(.6); }
  .tmb-thumb-tray__item.is-flame-press .tmb-icon-mask--press{ opacity:1; transform:scale(1.1); }

  /* Dim behind tray sheets (browse, account portals, search) */
  .tmb-thumb-tray-dim{
    position:fixed;
    inset:0;
    z-index:var(--tmb-z-tray-dim);
    display:block;
    background:rgba(5,12,20,.46);
    -webkit-backdrop-filter:blur(2px);
    backdrop-filter:blur(2px);
    animation:tmb-fade-in var(--tmb-motion-base) ease;
  }
  .tmb-thumb-tray-dim[hidden]{ display:none; }
}


/* --------------------------------------------------------------------------
   Tray sheets: browse (brands / categories) and account portals.
   They live inside the tray and rise from its top edge.
-------------------------------------------------------------------------- */
@media (max-width:899.98px){
  .tmb-browse-tray,
  .tmb-account-portal-tray{
    position:absolute;
    left:0;
    right:0;
    bottom:100%;
    z-index:5;
    max-height:min(70svh, 580px);
    padding:var(--tmb-space-2) max(var(--tmb-space-4), var(--tmb-safe-left)) var(--tmb-space-5) max(var(--tmb-space-4), var(--tmb-safe-right));
    overflow:auto;
    overscroll-behavior:contain;
    border-radius:var(--tmb-radius-lg) var(--tmb-radius-lg) 0 0;
    background:var(--tmb-color-surface);
    color:var(--tmb-color-text);
    box-shadow:var(--tmb-shadow-sheet);
    animation:tmb-sheet-in var(--tmb-motion-base) var(--tmb-ease-emphasized);
  }
  .tmb-browse-tray[hidden],
  .tmb-account-portal-tray[hidden],
  .tmb-browse-tray__section[hidden]{ display:none; }
  .tmb-browse-tray::before,
  .tmb-account-portal-tray::before{
    content:"";
    display:block;
    width:40px;
    height:5px;
    margin:0 auto var(--tmb-space-3);
    border-radius:var(--tmb-radius-pill);
    background:var(--tmb-color-border-strong);
  }

  .tmb-browse-tray__head{
    position:sticky;
    top:calc(var(--tmb-space-2) * -1);
    z-index:1;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:var(--tmb-space-3);
    margin:0 0 var(--tmb-space-3);
    padding:var(--tmb-space-1) 0 var(--tmb-space-2);
    background:var(--tmb-color-surface);
  }
  .tmb-browse-tray__head strong{ font-size:var(--tmb-fs-lg); font-weight:var(--tmb-fw-bold); }
  .tmb-browse-tray__head a{
    display:inline-flex;
    align-items:center;
    min-height:var(--tmb-tap-min);
    padding:0 var(--tmb-space-3);
    border-radius:var(--tmb-radius-pill);
    background:var(--tmb-color-primary-soft);
    color:var(--tmb-color-primary);
    font-size:var(--tmb-fs-sm);
    font-weight:var(--tmb-fw-bold);
  }
  .tmb-browse-tray__head a:hover{ text-decoration:none; }

  .tmb-browse-tray__brand-list,
  .tmb-browse-tray__category-list{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:var(--tmb-space-4) var(--tmb-space-3);
  }
  .tmb-browse-tray__brand{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:var(--tmb-space-2);
    min-width:0;
    color:var(--tmb-color-text);
    font-size:var(--tmb-fs-xs);
    font-weight:var(--tmb-fw-medium);
    line-height:var(--tmb-leading-snug);
    text-align:center;
  }
  .tmb-browse-tray__brand:hover{ text-decoration:none; }
  .tmb-browse-tray__brand > span:last-child{
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }
  .tmb-browse-tray__brand-icon{
    display:grid;
    place-items:center;
    width:100%;
    aspect-ratio:1/1;
    overflow:hidden;
    border:1px solid var(--tmb-color-border);
    border-radius:var(--tmb-radius-sm);
    background:var(--tmb-color-surface);
    color:var(--tmb-color-primary);
    font-size:var(--tmb-fs-xl);
    font-weight:var(--tmb-fw-bold);
    transition:transform var(--tmb-motion-fast) ease;
  }
  .tmb-browse-tray__brand:active .tmb-browse-tray__brand-icon{ transform:scale(.95); }
  .tmb-browse-tray .tmb-browse-tray__brand-icon img{ width:100%; height:100%; padding:var(--tmb-space-3); object-fit:contain; }
  .tmb-browse-tray__category-list .tmb-browse-tray__brand-icon{ background:var(--tmb-color-primary-soft); border-color:transparent; }
  .tmb-browse-tray .tmb-browse-tray__category-list .tmb-browse-tray__brand-icon img{ padding:0; object-fit:cover; }

  .tmb-account-portal-tray__inner{ display:grid; gap:var(--tmb-space-2); }
  .tmb-account-portal-tray__option{
    display:grid;
    gap:2px;
    min-height:56px;
    padding:var(--tmb-space-3) var(--tmb-space-4);
    border-radius:var(--tmb-radius-sm);
    background:var(--tmb-color-surface-muted);
    color:var(--tmb-color-text);
  }
  .tmb-account-portal-tray__option:hover{ text-decoration:none; }
  .tmb-account-portal-tray__option.is-active{ background:var(--tmb-color-primary-soft); color:var(--tmb-color-primary); }
  .tmb-account-portal-tray__label{ font-weight:var(--tmb-fw-bold); }
  .tmb-account-portal-tray__context{ font-size:var(--tmb-fs-xs); color:var(--tmb-color-text-subtle); }
}


/* --------------------------------------------------------------------------
   Search sheet (#tmb-footer-search) — sits just above the tray
-------------------------------------------------------------------------- */
@media (max-width:899.98px){
  .tmb-footer-search{
    position:fixed;
    left:0;
    right:0;
    bottom:calc(var(--tmb-app-tray-h) + var(--tmb-safe-bottom));
    z-index:var(--tmb-z-chrome);
    display:block;
    padding:var(--tmb-space-2) max(var(--tmb-space-4), var(--tmb-safe-left)) var(--tmb-space-4) max(var(--tmb-space-4), var(--tmb-safe-right));
    border-radius:var(--tmb-radius-lg) var(--tmb-radius-lg) 0 0;
    background:var(--tmb-color-surface);
    color:var(--tmb-color-text);
    box-shadow:var(--tmb-shadow-sheet);
    animation:tmb-sheet-in var(--tmb-motion-base) var(--tmb-ease-emphasized);
  }
  .tmb-footer-search[hidden]{ display:none; }
  .tmb-footer-search::before{
    content:"";
    display:block;
    width:40px;
    height:5px;
    margin:0 auto var(--tmb-space-3);
    border-radius:var(--tmb-radius-pill);
    background:var(--tmb-color-border-strong);
  }
  /* Results from the live-search plugin open upward inside the sheet. */
  .tmb-footer-search__inner{ max-height:min(62svh, 520px); overflow:auto; overscroll-behavior:contain; }
}

/* Fallback search form (used when the live-search plugin is inactive) */
.tmb-search-fallback-form{ margin:0; }


/* --------------------------------------------------------------------------
   Site footer
-------------------------------------------------------------------------- */
.tmb-site-footer{
  background:var(--tmb-color-primary);
  color:rgba(255,255,255,.76);
  padding:var(--tmb-space-8) 0 var(--tmb-space-6);
}
.tmb-site-footer a{ color:#fff; }
.tmb-site-footer a:hover{ color:var(--tmb-color-accent); text-decoration:none; }
.tmb-site-footer__inner{ width:min(100% - (var(--tmb-gutter) * 2), var(--tmb-container)); margin-inline:auto; }
.tmb-site-footer__grid{
  display:grid;
  grid-template-columns:1fr;
  gap:var(--tmb-space-7);
}
.tmb-site-footer .tmb-site-footer__logo img{
  width:auto;
  height:var(--tmb-footer-logo-height, 52px);
  max-width:220px;
  object-fit:contain;
}
.tmb-site-footer__logo--filtered img{ filter:brightness(0) invert(1); }
.tmb-site-footer__site-name{ font-size:var(--tmb-fs-xl); font-weight:var(--tmb-fw-bold); }
.tmb-site-footer__blurb{
  max-width:42ch;
  margin-top:var(--tmb-space-4);
  font-size:var(--tmb-fs-sm);
  line-height:var(--tmb-leading-body);
}
.tmb-site-footer__blurb p{ margin:0; }
.tmb-site-footer__title{
  margin:0 0 var(--tmb-space-3);
  color:var(--tmb-color-accent);
  font-size:var(--tmb-fs-xs);
  font-weight:var(--tmb-fw-bold);
  letter-spacing:var(--tmb-tracking-caps);
  text-transform:uppercase;
}
.tmb-site-footer__links,
.tmb-site-footer__contact{ list-style:none; margin:0; padding:0; display:grid; gap:2px; }
.tmb-site-footer__links{ grid-template-columns:repeat(2, minmax(0, 1fr)); column-gap:var(--tmb-space-4); }
.tmb-site-footer__links a{
  display:flex;
  align-items:center;
  min-height:40px;
  font-size:var(--tmb-fs-sm);
  font-weight:var(--tmb-fw-medium);
}
.tmb-site-footer__contact li{
  display:flex;
  align-items:center;
  gap:var(--tmb-space-3);
  min-height:40px;
  font-size:var(--tmb-fs-sm);
}
.tmb-site-footer__icon{ display:inline-grid; place-items:center; width:20px; height:20px; color:var(--tmb-color-accent); flex:0 0 auto; }
.tmb-site-footer__icon svg{ width:18px; height:18px; }
.tmb-site-footer__social{ display:flex; gap:var(--tmb-space-2); margin-top:var(--tmb-space-4); }
.tmb-site-footer__social a{
  display:grid;
  place-items:center;
  width:var(--tmb-tap-min);
  height:var(--tmb-tap-min);
  border:1px solid rgba(255,255,255,.18);
  border-radius:var(--tmb-radius-pill);
  transition:background var(--tmb-motion-fast) ease, border-color var(--tmb-motion-fast) ease;
}
.tmb-site-footer__social a:hover{ background:rgba(255,255,255,.08); border-color:var(--tmb-color-accent); }
.tmb-site-footer__social svg{ width:18px; height:18px; }
.tmb-site-footer__bottom{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:var(--tmb-space-2) var(--tmb-space-6);
  margin-top:var(--tmb-space-7);
  padding-top:var(--tmb-space-5);
  border-top:1px solid rgba(255,255,255,.12);
  font-size:var(--tmb-fs-xs);
  color:rgba(255,255,255,.6);
}
.tmb-site-footer__bottom p{ margin:0; }
.tmb-site-footer__tagline{ display:inline-flex; align-items:center; gap:var(--tmb-space-2); }
.tmb-site-footer__tagline::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--tmb-color-accent); }

@media (min-width:900px){
  .tmb-site-footer{ padding:var(--tmb-space-9) 0 var(--tmb-space-6); }
  .tmb-site-footer__grid{ grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr); gap:var(--tmb-space-8); }
  .tmb-site-footer__links{ grid-template-columns:1fr; }
}


/* --------------------------------------------------------------------------
   Installed app (Add to Home Screen) — standalone display mode
-------------------------------------------------------------------------- */
@media (display-mode: standalone){
  /* No rubber-band reveal of a blank page behind the app frame. */
  body{ overscroll-behavior-y:none; }
}

/* Page behind an open sheet doesn't scroll. */
body.tmb-has-sheet{ overflow:hidden; }
