/*
Theme Name: BudTrader
Theme URI: https://www.budtrader.com/
Author: BudTrader
Description: Presentation layer for the BudTrader marketplace: one account with Buying and Selling sides, light and dark modes, accessible navigation, Elementor-compatible templates. Works on its own; marketplace features come from the BudTrader Core plugin.
Version: 0.17.0
Requires at least: 6.4
Requires PHP: 8.2
License: GPL-2.0-or-later
Text Domain: budtrader
*/

/* Tokens and base components come from assets/css/bt-base.css (shared with the core plugin). */
:root{--btt-wrap:96rem;--btt-wide:96rem;--btt-gutter:clamp(1rem,4vw,2rem);--btt-bar:4.5rem} /* content and footer share the header's width (owner, 22 September 2026) */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:6rem}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
body{margin:0;background:var(--bt-bg);color:var(--bt-text);font:400 1.0625rem/1.65 var(--bt-font);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg,video{max-width:100%;height:auto}
a{color:var(--bt-link);text-underline-offset:.15em}
h1,h2,h3,h4{font-family:var(--bt-display);font-weight:700;line-height:1.1;letter-spacing:-.012em;text-wrap:balance;margin:0 0 .5em}
h1{font-size:clamp(2.3rem,5vw,3.4rem)}
h2{font-size:clamp(1.85rem,3.8vw,2.75rem)}
h3{font-size:1.5rem;line-height:1.15}
h4{font-size:1.25rem;line-height:1.2}
p{margin:0 0 1.1em}
table{border-collapse:collapse;width:100%}
.btt-wrap{width:100%;max-width:var(--btt-wrap);margin-inline:auto;padding-inline:var(--btt-gutter)}
/* Boxed layout (owner, 24 September 2026): the page sits in a centred box on a quieter background; the Customizer can switch to full width */
.btt-boxed{background:color-mix(in srgb,var(--bt-bg-soft) 70%,var(--bt-bg))}
.btt-boxed .btt-site{max-width:var(--btt-box,84rem);margin-inline:auto;background:var(--bt-bg);box-shadow:0 0 0 1px var(--bt-line),0 24px 64px rgba(0,0,0,.06);min-height:100vh}
.btt-boxed .btt-site .btt-wrap,.btt-boxed .btt-site .btt-wrap--wide{max-width:calc(var(--btt-box,84rem) - 2*var(--btt-gutter))}
@media (max-width:1400px){.btt-boxed .btt-site{box-shadow:none}}
.btt-wrap--wide{max-width:var(--btt-wide)}
.btt-skip{position:absolute;left:1rem;top:-5rem;z-index:2000;padding:.75rem 1rem;border-radius:var(--bt-r-ctl);background:var(--bt-accent);color:var(--bt-accent-ink);font-weight:700}
.btt-skip:focus{top:1rem}
.btt-main:focus{outline:none}

/* Header. The blur lives on a pseudo-element: backdrop-filter on the header itself would make it the containing block
   for the fixed slide-out menu (zero height and horizontal overflow). Carried over from the reference, where rendering
   the page exposed it. */
.btt-header{position:sticky;top:0;z-index:900;border-bottom:1px solid var(--bt-line);transition:box-shadow .2s}
.btt-header.is-scrolled{box-shadow:0 10px 24px -14px rgba(22,32,28,.35)}
.btt-header::before{content:"";position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--bt-bg) 94%,transparent);-webkit-backdrop-filter:saturate(1.3) blur(10px);backdrop-filter:saturate(1.3) blur(10px)}
.admin-bar .btt-header{top:32px}.admin-bar .btt-nav{top:calc(var(--btt-bar) + 32px)}
@media (max-width:782px){.admin-bar .btt-header{top:46px}.admin-bar .btt-nav{top:calc(var(--btt-bar) + 46px)}}
@media (max-width:600px){.admin-bar .btt-header{top:0}.admin-bar .btt-nav{top:var(--btt-bar)}}
/* The header may run a little wider than the page content on large screens, so the centred sections have room */
.btt-header__bar{display:flex;align-items:center;gap:1rem;min-height:var(--btt-bar)}
.btt-logo,.custom-logo-link{display:inline-flex;align-items:center;flex:none;min-height:44px;text-decoration:none}
.btt-logo img,.custom-logo{height:30px;width:auto;display:block}
.btt-burger{order:3;width:48px;height:48px;border:1.5px solid var(--bt-ctl-line);border-radius:var(--bt-r-ctl);background:transparent;cursor:pointer;display:grid;place-items:center;flex:none}
.btt-burger span[aria-hidden]{width:18px;height:2px;background:var(--bt-text);box-shadow:0 6px 0 var(--bt-text),0 -6px 0 var(--bt-text)}
.btt-header__cta{margin-left:auto}
.btt-nav{position:fixed;inset:var(--btt-bar) 0 0 auto;width:min(25rem,100%);background:var(--bt-bg);border-left:1px solid var(--bt-line);padding:1rem var(--btt-gutter) 2rem;overflow:auto;transform:translateX(102%);visibility:hidden;transition:transform .22s ease,visibility .22s;display:grid;gap:1.25rem;align-content:start}
.btt-nav.is-open{transform:none;visibility:visible}
.btt-menu,.btt-menu ul{list-style:none;margin:0;padding:0}
.btt-menu>li{border-bottom:1px solid var(--bt-line);display:grid;grid-template-columns:1fr auto;align-items:center}
.btt-menu>li>a{display:flex;align-items:center;min-height:48px;color:var(--bt-text);text-decoration:none;font-weight:600}
.btt-mega__toggle{width:48px;height:48px;border:0;background:transparent;cursor:pointer;color:var(--bt-text)}
.btt-mega__toggle::before{content:"";display:inline-block;width:.55rem;height:.55rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);transition:transform .15s}
.btt-mega__toggle[aria-expanded="true"]::before{transform:rotate(-135deg)}
.btt-menu .btt-mega{grid-column:1/-1;display:none;gap:0 1.5rem;padding:0 0 1rem}
.btt-menu .btt-mega.is-open{display:grid}
.btt-mega a{display:flex;align-items:center;min-height:44px;color:var(--bt-text);text-decoration:none;line-height:1.3}
.btt-mega a:hover{color:var(--bt-link);text-decoration:underline}
.btt-mega__all a{font-weight:600;color:var(--bt-link)}
.btt-utils{display:grid;gap:.75rem;justify-items:start}
.btt-utils__link{display:flex;align-items:center;min-height:44px;font-weight:600;font-size:.95rem;color:var(--bt-text);text-decoration:none}
.btt-utils__link:hover{color:var(--bt-link);text-decoration:underline}
.btt-mode{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:0 .85rem;border-radius:var(--bt-r-ctl);border:1.5px solid var(--bt-ctl-line);background:transparent;color:var(--bt-text);font:600 .875rem var(--bt-font);cursor:pointer}
.btt-mode__icon{width:1rem;height:1rem;border-radius:50%;background:var(--bt-text);box-shadow:inset -.35rem -.1rem 0 0 var(--bt-bg)}
[data-theme="dark"] .btt-mode__icon{box-shadow:none;background:var(--bt-placard)}
/* Full navigation from 1280px, centred (owner scope, Phase 1 item 4). The bar becomes three grid columns: logo, sections,
   account. The outer two share the space equally, so the sections sit in the centre of the bar and not merely in the
   space left over. theme.js measures the two outer tracks: if the account controls need more than half the space
   (narrow desktops, wide fallback fonts) it adds .btt-nav-left, which puts the sections beside the logo instead; if the
   bar would overflow it adds .btt-collapse, which leaves the slide-out layout in place. */
@media (min-width:1280px){
  :root:not(.btt-collapse) .btt-burger,:root:not(.btt-collapse) .btt-header__cta{display:none}
  :root:not(.btt-collapse) .btt-header__bar{display:grid;grid-template-columns:1fr auto 1fr;gap:.75rem;align-items:center}
  :root:not(.btt-collapse) .btt-nav{display:contents;position:static;transition:none;transform:none;visibility:visible}
  :root:not(.btt-collapse) .btt-nav>nav{justify-self:center;min-width:0}
  :root:not(.btt-collapse) .btt-utils{justify-self:end}
  :root.btt-nav-left:not(.btt-collapse) .btt-header__bar{grid-template-columns:auto auto 1fr}
  :root.btt-nav-left:not(.btt-collapse) .btt-nav>nav{justify-self:start}
  :root:not(.btt-collapse) .btt-menu{display:flex;align-items:center;gap:.5rem}
  :root:not(.btt-collapse) .btt-menu>li{border:0;position:relative;display:flex}
  :root:not(.btt-collapse) .btt-menu>li>a{min-height:48px;padding:0 .9rem;font-size:1.0625rem;border-radius:var(--bt-r-ctl);white-space:nowrap}
  :root:not(.btt-collapse) .btt-menu>li>a:hover{background:var(--bt-bg-soft)}
  :root:not(.btt-collapse) .btt-mega__toggle{width:20px;height:44px;margin-left:-.3rem;margin-right:.1rem}
  :root:not(.btt-collapse) .btt-mega{position:absolute;top:100%;left:0;min-width:19rem;padding:.75rem 1.25rem 1rem;background:var(--bt-surface);border:1px solid var(--bt-line);border-radius:var(--bt-r-box);box-shadow:var(--bt-shadow)}
  :root:not(.btt-collapse) .btt-menu>li:hover>.btt-mega,:root:not(.btt-collapse) .btt-menu>li:focus-within>.btt-mega,:root:not(.btt-collapse) .btt-mega.is-open{display:grid}
  :root:not(.btt-collapse) .btt-menu>li:nth-last-child(-n+3) .btt-mega{left:auto;right:0}
  :root:not(.btt-collapse) .btt-utils{display:flex;align-items:center;gap:.5rem;flex:none}
  :root:not(.btt-collapse) .btt-mode__label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  :root:not(.btt-collapse) .btt-mode{padding:0;width:44px;justify-content:center}
  :root:not(.btt-collapse) .btt-utils__link--join{display:none}
}
@media (min-width:1600px){:root:not(.btt-collapse) .btt-menu>li>a{padding:0 1.1rem;font-size:1.15rem}}
.btt-utils__link,.btt-header .bt-btn{white-space:nowrap}
.btt-backdrop{position:fixed;inset:0;z-index:890;background:rgba(22,32,28,.5);cursor:pointer}
.btt-backdrop[hidden]{display:none}
/* The wordmark is nearly seven times as wide as it is tall, so it steps down on phones to leave room for the button */
@media (max-width:479px){.btt-header__bar{gap:.5rem}.btt-header .btt-logo img,.btt-header .custom-logo{height:24px}}
@media (max-width:389px){.btt-header .btt-logo img,.btt-header .custom-logo{height:20px}}
@media (max-width:359px){.btt-header__cta{display:none}.btt-burger{margin-left:auto}}

/* Hero: what BudTrader is, what it is not, a search, and the state tile map (the one signature element). */
.btt-hero{position:relative;isolation:isolate;color:#fff;border-bottom:1px solid var(--bt-line);background:linear-gradient(105deg,rgba(9,36,24,.92) 0%,rgba(9,36,24,.78) 45%,rgba(9,36,24,.45) 100%),var(--btt-hero-image,none) center/cover no-repeat #0F2A1E}
.btt-hero h1,.btt-hero .btt-hero__sub{color:#fff}.btt-hero .btt-hero__sub{color:rgba(255,255,255,.86)}
.btt-hero .btt-hero__copy a:not(.bt-btn){color:#fff}
.btt-hero .btt-hero__copy .bt-btn--ghost{color:#fff;border-color:rgba(255,255,255,.7)}.btt-hero .btt-hero__copy .bt-btn--ghost:hover{background:rgba(255,255,255,.12)}
.btt-hero .btt-searchbar,.btt-hero .btt-states{background:var(--bt-bg);color:var(--bt-text);padding:1rem;border-radius:var(--bt-r-box);box-shadow:0 12px 32px rgba(0,0,0,.18)}
.btt-hero .btt-searchbar .bt-field__label,.btt-hero .btt-states .bt-field__label,.btt-hero .btt-states .btt-states__rule span:not(.bt-tag),.btt-hero .btt-states h2,.btt-hero .btt-states p{color:var(--bt-text)}
.btt-hero .btt-searchbar__more,.btt-hero .btt-searchbar__more a{color:var(--bt-link)}
@media (prefers-reduced-motion:reduce){.btt-hero .btt-hero__copy>*{animation:none}}
.btt-hero__grid{display:grid;gap:clamp(2rem,5vw,3rem);padding-block:clamp(2.25rem,5vw,4rem);grid-template-columns:minmax(0,1fr)}
@media (min-width:1100px){.btt-hero__grid{grid-template-columns:minmax(0,1fr) minmax(0,34rem);align-items:start}}
.btt-hero__copy,.btt-states{min-width:0}
.btt-hero h1{max-width:18ch;margin-bottom:.35em}
.btt-hero__sub{font-size:clamp(1.08rem,2.2vw,1.25rem);line-height:1.55;color:var(--bt-muted);max-width:none;margin-bottom:1.75rem}
.btt-states__rule{display:flex;gap:.7rem;align-items:flex-start;margin:1.25rem 0 0;font-size:.95rem;line-height:1.5;color:var(--bt-text);max-width:54ch}
.btt-states__rule .bt-tag{margin-top:.1rem;flex:none}
/* Search bar: labels on one line, controls on the next, all one height */
.btt-searchbar{display:grid;gap:.85rem;grid-template-columns:minmax(0,1fr);align-items:end;max-width:40rem}
@media (min-width:640px){.btt-searchbar{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr) auto}}
.btt-searchbar__more{margin:.85rem 0 0;font-size:.95rem}
/* State tile map. Tiles sit roughly where the states do. Below 640px tiles would fall under 44px, so phones get a select. */
.btt-states h2{font-size:clamp(1.5rem,3vw,1.9rem);margin-bottom:.3em}
.btt-states__intro{color:var(--bt-muted);margin:0 0 1.1rem;max-width:48ch;font-size:.95rem;line-height:1.5}
.btt-states__map{display:none;list-style:none;margin:0;padding:0;grid-template-columns:repeat(11,minmax(0,1fr));gap:4px}
.btt-states__map li{grid-area:var(--r)/var(--c)}
.btt-states__map a{display:grid;place-items:center;aspect-ratio:1;min-height:44px;border:1px solid var(--bt-line);border-radius:var(--bt-r-tag);background:var(--bt-surface);color:var(--bt-text);text-decoration:none;font:600 .875rem/1 var(--bt-font);transition:background-color .12s,border-color .12s,color .12s}
.btt-states__map a:hover,.btt-states__map a:focus-visible{background:var(--bt-accent);border-color:var(--bt-accent);color:var(--bt-accent-ink)}
.btt-states__pick{display:grid;gap:.85rem;grid-template-columns:minmax(0,1fr) auto;align-items:end}
@media (min-width:640px){.btt-states__map{display:grid}.btt-states__pick{display:none}}

/* Sections */
.btt-section{padding-block:clamp(3rem,7vw,5.5rem)}
.btt-section--soft{background:var(--bt-bg-soft)}
.btt-section--band{background:var(--bt-band);color:var(--bt-band-text)}
.btt-section--band h2{color:#fff}
.btt-section--band .btt-section__head p{color:var(--bt-band-muted)}
.btt-section--band .bt-ruled>li{border-top-color:var(--bt-band-accent)}
.btt-section--band .bt-ruled h3{color:#fff}
.btt-section--band .bt-ruled p{color:var(--bt-band-muted)}
.btt-section__head{max-width:none;margin-bottom:2.25rem}
.btt-section__head p{color:var(--bt-muted);font-size:1.1rem;line-height:1.55;margin:0}
.btt-section__inner{margin-top:3rem}
.btt-section__more{margin:2rem 0 0}
/* Market index: a directory's contents page, not a wall of cards */
.btt-index{list-style:none;margin:0;padding:0;border-top:1px solid var(--bt-line)}
.btt-index>li{display:grid;gap:.5rem 2.5rem;padding:1.5rem 0;border-bottom:1px solid var(--bt-line);grid-template-columns:minmax(0,1fr)}
@media (min-width:860px){.btt-index>li{grid-template-columns:minmax(0,17rem) minmax(0,1fr);padding:1.75rem 0}}
.btt-index h3{margin:0;font-size:clamp(1.55rem,2.6vw,1.9rem)}
.btt-index h3 a{color:var(--bt-text);text-decoration:none}
.btt-index h3 a:hover{color:var(--bt-link);text-decoration:underline}
.btt-index__count{margin:.3rem 0 0;font-size:.875rem;color:var(--bt-muted)}
.btt-index__body p{margin:0 0 .4rem;color:var(--bt-muted);max-width:64ch}
.btt-index__links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0 1.4rem}
.btt-index__links a{display:inline-flex;align-items:center;min-height:44px;color:var(--bt-link);font-weight:600;font-size:.95rem;white-space:nowrap}
@media (max-width:639px){.btt-index__links{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-inline:calc(var(--btt-gutter) * -1);padding-inline:var(--btt-gutter);scrollbar-width:none}.btt-index__links::-webkit-scrollbar{display:none}}
/* Two sides of one account. Each side really is a sequence, so the steps are numbered. */
.btt-sides{display:grid;gap:2.5rem 3.5rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr))}
.btt-side{border-top:2px solid var(--bt-accent);padding-top:1.1rem}
.btt-side h3{margin:0 0 1rem;font-size:1.75rem}
.btt-side ol{list-style:none;margin:0;padding:0;display:grid;gap:1.1rem;counter-reset:btt-step}
.btt-side li{display:grid;grid-template-columns:2.25rem minmax(0,1fr);gap:0 .5rem;counter-increment:btt-step}
.btt-side li::before{content:counter(btt-step);font:700 1.6rem/1.15 var(--bt-display);color:var(--bt-link)}
.btt-side li strong{display:block;font-weight:600}
.btt-side li span{display:block;color:var(--bt-muted);font-size:.95rem;line-height:1.55}
/* FAQ and similar: heading on the left, content on the right */
@media (min-width:960px){
  .btt-section--split>.btt-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:3rem;align-items:start}
  .btt-section--split .btt-section__head{margin:0;position:sticky;top:6rem}
  .btt-section--split .bt-faq{max-width:none}
}
/* Phones: card rows on the homepage become a swipeable strip instead of a very long stack */
@media (max-width:640px){
  .home .btt-section .bt-grid{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:.75rem;margin-inline:calc(var(--btt-gutter) * -1);padding-inline:var(--btt-gutter);scroll-padding-inline:var(--btt-gutter)}
  .home .btt-section .bt-grid>*{flex:0 0 86%;scroll-snap-align:start}
}

/* Pages and articles */
.btt-pagehead{padding-block:clamp(2rem,5vw,3.5rem) clamp(1rem,2.5vw,1.75rem)}
.btt-pagehead h1{max-width:none;margin-bottom:.35em}
.btt-wrap--wide.btt-pagehead h1{max-width:34ch}
.btt-pagehead .bt-intro,.btt-pagehead .bt-intro p{max-width:none}
.btt-apphead{padding-block:1.5rem .5rem}
.btt-apphead h1{font-size:clamp(1.7rem,4vw,2.4rem);margin:0}
.btt-content{padding-bottom:clamp(3rem,7vw,5rem)}
.btt-content--page>*{max-width:none}
.btt-content--page>.bt-grid,.btt-content--page>.bt-tiles,.btt-content--page>.bt-cta,.btt-content--page>.bt-ruled,.btt-content--page>.bt-app,.btt-content--page>.bt-search,.btt-content--page>.alignwide,.btt-content--page>.alignfull{max-width:none}
/* Body headings get room above them. :where() keeps this at zero specificity, so a component inside the content
   (a card, a gate, anything the core plugin renders) always wins without having to be listed here. */
:where(.btt-content) h2{margin-top:1.6em}
:where(.btt-content)>h2:first-child{margin-top:0}
.btt-crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.25rem .5rem;padding:0;margin:0 0 1rem;font-size:.875rem;color:var(--bt-muted)}
.btt-crumbs li+li::before{content:"/";margin-right:.5rem;opacity:.6}
.btt-crumbs a{color:var(--bt-muted)}
.btt-meta{font-size:.875rem;color:var(--bt-muted);margin:0}
.btt-article__grid{display:grid;gap:2.5rem;grid-template-columns:minmax(0,1fr)}
@media (min-width:1040px){.btt-article__grid{grid-template-columns:16rem minmax(0,44rem);justify-content:center}.btt-toc{position:sticky;top:6rem;align-self:start;max-height:calc(100vh - 8rem);overflow:auto}}
.btt-toc{padding:1rem 1.15rem;border:1px solid var(--bt-line);border-radius:var(--bt-r-box);background:var(--bt-surface);font-size:.875rem}
.btt-toc__title{font:700 .875rem var(--bt-font);margin:0 0 .5rem}
.btt-toc ol{margin:0;padding-left:1.1rem;display:grid;gap:.15rem}
.btt-toc a{display:inline-block;padding:.3rem 0;color:var(--bt-text);text-decoration:none}
.btt-toc a:hover,.btt-toc a.is-active{color:var(--bt-link);text-decoration:underline}
.btt-prose{font-size:1.0625rem;line-height:1.75}
.btt-prose table{display:block;overflow-x:auto;margin:1.75rem 0;font-size:.95rem;border:1px solid var(--bt-line);border-radius:var(--bt-r-box)}
.btt-prose th,.btt-prose td{padding:.75rem .9rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--bt-line);min-width:9rem}
.btt-prose th{background:var(--bt-bg-soft);font-size:.875rem}
.btt-prose li{margin-bottom:.45em}
.btt-article__hero img{border-radius:var(--bt-r-box);width:100%}
.btt-article__after{display:grid;gap:3rem;padding-bottom:4rem}
.btt-searchform{display:grid;gap:.85rem;grid-template-columns:minmax(0,1fr) auto;align-items:end;max-width:34rem}
.nav-links{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:2rem}
.nav-links .page-numbers{min-width:44px;min-height:44px;display:grid;place-items:center;padding:0 .6rem;border:1.5px solid var(--bt-ctl-line);border-radius:var(--bt-r-ctl);text-decoration:none;color:var(--bt-text);font-weight:600}
.nav-links .current{background:var(--bt-accent);border-color:var(--bt-accent);color:var(--bt-accent-ink)}
.btt-404__code{font:700 clamp(3.5rem,11vw,6.5rem)/1 var(--bt-display);color:var(--bt-link);margin:0}

/* Footer */
.btt-footer{background:var(--bt-band);color:var(--bt-band-muted);padding-block:clamp(2.5rem,6vw,4rem) 2rem;font-size:.95rem}
.btt-footer a{color:#DCE5E0;text-decoration:none}
.btt-footer a:hover{color:#fff;text-decoration:underline}
.btt-footer__grid{display:grid;gap:2rem 1.5rem;grid-template-columns:minmax(0,1fr);align-items:start}
.btt-footer__brand{max-width:32rem}
.btt-footer__brand p{margin:.75rem 0 0}
/* Desktop: brand plus four link columns on one row, so no column is stranded on a row of its own */
@media (min-width:600px){.btt-footer__grid{grid-template-columns:repeat(3,minmax(0,1fr))}.btt-footer__brand{grid-column:1/-1}}
@media (min-width:900px){.btt-footer__grid{grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));gap:2rem 2.5rem}.btt-footer__brand{grid-column:auto}}
.btt-footer h2{font:700 .95rem/1.3 var(--bt-font);color:#fff;margin:0 0 .35rem;min-height:1.25rem}
.btt-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:0}
.btt-footer__grid a{display:inline-flex;align-items:center;min-height:44px;line-height:1.3}
.btt-footer__disclaimer{margin:2.5rem 0 0;padding:1.5rem 0;border-top:1px solid var(--bt-band-line);border-bottom:1px solid var(--bt-band-line);font-size:.875rem;line-height:1.65;max-width:none}
.btt-footer__base{padding-top:1.25rem}
.btt-footer__base{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between;align-items:center;font-size:.875rem}
.btt-footer__base p{margin:0}
.btt-footer__base ul{display:flex;flex-wrap:wrap;gap:0 1.25rem}
.btt-footer__base a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.btt-footer__contact{margin-top:.5rem}
.btt-footer .btt-mode{margin-top:.75rem;color:#DCE5E0;border-color:#6B7A73}
.btt-footer .btt-mode__icon{background:#DCE5E0;box-shadow:inset -.35rem -.1rem 0 0 var(--bt-band)}
[data-theme="dark"] .btt-footer .btt-mode__icon{box-shadow:none;background:var(--bt-placard)}
.btt-footer .btt-social{display:flex;flex-wrap:wrap;gap:.15rem;margin:.35rem 0 0 -.7rem}
.btt-footer .btt-social a{justify-content:center;min-width:44px;border-radius:var(--bt-r-ctl)}
.btt-footer .btt-social a:hover{background:rgba(255,255,255,.08)}
@media print{.btt-header,.btt-footer,.bt-cta,.btt-toc{display:none}}

/* Motion. Three kinds only: feedback for something the visitor just did, one load moment on the state map (the
   signature element), and page-to-page transitions where the browser offers them. Sections do not fade or slide in as
   you scroll: that is decoration, and it is the most recognisable mark of a generated page. Base states are the final
   states, so with motion off (the reduce rule near the top, or a browser without support) nothing is ever hidden. */
@media (prefers-reduced-motion:no-preference){
  @view-transition{navigation:auto}
  .btt-states__map a{animation:btt-tile .5s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--c,0)*24ms + var(--r,0)*16ms)}
  .btt-backdrop{animation:btt-fade .2s both}
}
@media (prefers-reduced-motion:no-preference) and (min-width:1280px){
  :root:not(.btt-collapse) .btt-menu>li:hover>.btt-mega,:root:not(.btt-collapse) .btt-menu>li:focus-within>.btt-mega,:root:not(.btt-collapse) .btt-mega.is-open{animation:btt-drop .16s ease-out both}
}
@keyframes btt-tile{from{opacity:0;transform:translateY(8px) scale(.92)}}
@keyframes btt-drop{from{opacity:0;transform:translateY(-6px)}}
@keyframes btt-fade{from{opacity:0}}

/* Home motion: elements reveal as they enter the viewport; the hero settles in on load */
.btt-reveal{opacity:0;transform:translateY(12px);transition:opacity var(--bt-med) var(--bt-ease),transform var(--bt-med) var(--bt-ease)}
.btt-reveal.is-in{opacity:1;transform:none}
.btt-hero .btt-hero__copy>*{animation:bt-rise 420ms var(--bt-ease) both}.btt-hero .btt-hero__copy>*:nth-child(2){animation-delay:60ms}.btt-hero .btt-hero__copy>*:nth-child(3){animation-delay:120ms}.btt-hero .btt-hero__copy>*:nth-child(4){animation-delay:180ms}
.btt-states li{transition:transform var(--bt-fast) var(--bt-ease)}.btt-states li:hover{transform:scale(1.06)}
.btt-index li>div{transition:transform var(--bt-fast) var(--bt-ease),box-shadow var(--bt-fast) var(--bt-ease)}.btt-index li>div:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.07)}
/* Home carousels: a scroll-snap row of cards with arrows, no library */
.btt-carousel{position:relative}
.btt-carousel__track{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:.25rem .25rem 1rem;margin:0;list-style:none;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.btt-carousel__track>li{flex:0 0 min(78%,18rem);scroll-snap-align:start}
.btt-ccard{display:flex;flex-direction:column;gap:.5rem;height:100%;padding:1rem;border:1px solid var(--bt-line);border-radius:var(--bt-r-box);background:var(--bt-surface);color:var(--bt-text);text-decoration:none;transition:transform var(--bt-fast) var(--bt-ease),box-shadow var(--bt-fast) var(--bt-ease)}
.btt-ccard:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)}
.btt-ccard__media{aspect-ratio:16/10;border-radius:var(--bt-r-ctl);background:var(--bt-bg-soft);overflow:hidden;display:flex;align-items:center;justify-content:center}.btt-ccard__media img{width:100%;height:100%;object-fit:cover}
.btt-ccard h3{margin:0;font-size:1.05rem;line-height:1.3}.btt-ccard p{margin:0;color:var(--bt-muted);font-size:.95rem}
.btt-ccard .bt-tag{align-self:flex-start}
.btt-carousel__nav{display:flex;gap:.5rem;justify-content:flex-end;margin:-.25rem 0 .5rem}
.btt-carousel__nav button{width:44px;height:44px;border:1.5px solid var(--bt-ctl-line);border-radius:50%;background:var(--bt-surface);color:var(--bt-text);cursor:pointer;font-size:1.2rem;transition:background-color var(--bt-fast) var(--bt-ease),transform var(--bt-fast) var(--bt-ease)}.btt-carousel__nav button:hover{background:var(--bt-bg-soft);transform:translateY(-1px)}
@media (prefers-reduced-motion:reduce){.btt-reveal{opacity:1;transform:none;transition:none}.btt-carousel__track{scroll-behavior:auto}}
