.banner-gallery { min-width:0; container-type:inline-size; background:var(--site-surface,#fffefa); border:1px solid var(--site-line,#e0e5da); border-radius:var(--site-radius,12px); overflow:hidden; }
.banner-gallery-heading { padding:24px 30px; }
.banner-gallery-heading h2 { font-size:clamp(20px,2.5vw,30px); font-weight:500; line-height:1.6; margin:0; color:var(--site-primary,#254d39); }
.banner-gallery-heading p { font-size:14px; line-height:1.9; color:#6a785e; margin:10px 0 0; }
.banner-viewport { overflow-x:auto; scroll-snap-type:x mandatory; background:#e9ede5; scrollbar-width:thin; }
.banner-track { display:flex; }
.banner-slide { flex:0 0 100%; min-width:0; aspect-ratio:16/7; scroll-snap-align:start; background:#e9ede5; }
.banner-slide a { display:block; height:100%; }
.banner-slide img { width:100%; height:100%; display:block; object-fit:contain; }
.banner-fit-cover .banner-slide img { object-fit:cover; }
.banner-layout-grid .banner-track { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; padding:10px; }
.banner-layout-grid .banner-slide { aspect-ratio:16/9; border-radius:6px; overflow:hidden; }
.banner-layout-grid .banner-slide:only-child { grid-column:1/-1; aspect-ratio:16/7; }
.banner-gallery.is-enhanced .banner-viewport { overflow:hidden; scroll-snap-type:none; }
.banner-gallery.is-enhanced .banner-track { transition:transform .55s ease; }
.banner-layout-fade.is-enhanced .banner-track { display:grid; transition:none; }
.banner-layout-fade.is-enhanced .banner-slide { grid-area:1/1; opacity:0; visibility:hidden; transition:opacity .65s ease,visibility .65s; }
.banner-layout-fade.is-enhanced .banner-slide.is-active { opacity:1; visibility:visible; z-index:1; }
.banner-controls { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:12px; padding:16px 20px; border-top:1px solid #dce2d5; background:#fffefa; color:#6c795f; }
.banner-controls[hidden] { display:none; }
.banner-controls button { font:inherit; color:#3b5c42; background:#f7f8f1; border:1px solid #cdd7c3; cursor:pointer; border-radius:50%; width:38px; height:38px; display:grid; place-items:center; }
.banner-controls button:hover { background:#e6eddf; }
.banner-controls button:focus-visible,.banner-slide a:focus-visible { outline:2px solid #9e854c; outline-offset:-3px; }
.banner-dots { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:2px; }
.banner-dots button { width:24px; height:28px; border:0; background:transparent; }
.banner-dots button::before { content:''; width:6px; height:6px; border-radius:50%; background:#c4cebb; }
.banner-dots button[aria-current=true]::before { background:#466b45; width:17px; border-radius:6px; }
.banner-counter { font-size:14px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.banner-controls .banner-play { width:auto; border-radius:6px; padding:0 12px; font-size:14px; }
.banner-gallery-action { padding:18px 25px; }
.banner-empty { padding:60px 25px; text-align:center; color:#708464; }
.banner-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@container(max-width:600px) { .banner-gallery-heading { padding:20px; }.banner-gallery-heading h2 { font-size:22px; }.banner-slide { aspect-ratio:16/9; }.banner-layout-grid .banner-track { grid-template-columns:1fr; }.banner-controls { gap:7px; padding:12px 8px; }.banner-dots { order:2; flex-basis:100%; }.banner-gallery-action { padding:16px; } }
@media(prefers-reduced-motion:reduce) { .banner-gallery.is-enhanced .banner-track,.banner-layout-fade.is-enhanced .banner-slide { transition:none; } }
.banner-stage { position:relative; }
.banner-gallery.is-enhanced .banner-viewport { touch-action:pan-y; }
.banner-viewport:focus-visible { outline:2px solid var(--site-gold,#bda16c); outline-offset:-3px; }
/* The row, not a viewport-sized child, expands. This avoids horizontal overflow. */
#site-main.site-home.has-leading-full-banner { padding-top:0; }
.site-home > .site-row.banner-row-full { width:100%; max-width:none; padding:0!important; border:0!important; border-radius:0!important; gap:0; }
.site-row.banner-row-full > .site-column { padding:0!important; border:0!important; border-radius:0!important; }
.site-row.banner-row-full .banner-display-full,
.site-row.banner-row-full .site-banner { border:0!important; border-radius:0!important; box-shadow:none!important; }
.site-row.banner-row-full .banner-display-full { padding:0!important; }
.site-row.banner-row-full .banner-display-full:not(.banner-layout-grid):not(.banner-fit-natural):not(.banner-fit-original) .banner-slide { aspect-ratio:16/7; }
/* Let the image determine the frame height, including on mobile and in grids. */
.banner-gallery:is(.banner-fit-natural,.banner-fit-original) .banner-track { align-items:start; }
.banner-gallery:is(.banner-fit-natural,.banner-fit-original) .banner-slide { aspect-ratio:auto; align-self:start; }
.banner-gallery:is(.banner-fit-natural,.banner-fit-original) .banner-slide a { height:auto; }
.banner-gallery:is(.banner-fit-natural,.banner-fit-original) .banner-slide img { height:auto; max-width:100%; }
.banner-gallery.banner-fit-original .banner-slide img { width:auto; margin-inline:auto; }
.site-row.banner-row-full:has(+ .site-header) { margin-bottom:0; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-controls {
    position:absolute; inset:0; padding:0; border:0; background:transparent; pointer-events:none;
}
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-controls > * { pointer-events:auto; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-controls button {
    color:#fff8e6; background:#173c35e8; border-color:#c9b67ab3; box-shadow:0 4px 16px #122b2930;
}
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-controls button:hover { background:#102f29; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-prev],
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-next] {
    position:absolute; top:50%; transform:translateY(-50%); width:44px; height:44px; border-radius:14px;
}
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-prev] { left:20px; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-next] { right:20px; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots { position:absolute; left:50%; bottom:16px; transform:translateX(-50%); padding:0 8px; border-radius:22px; background:#102e28c9; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots button { box-shadow:none; background:transparent; border:0; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots button::before { background:#e8e5d0a6; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots button[aria-current=true]::before { background:#e1c584; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-counter { position:absolute; left:20px; bottom:16px; padding:4px 10px; color:#fff8e6; background:#102e28d9; border-radius:18px; }
.banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-play { position:absolute; right:20px; bottom:16px; height:30px; padding:0 10px; }
.banner-controls-hover .banner-controls { opacity:0; visibility:hidden; transition:opacity .2s; }
.banner-controls-hover:is(:hover,:focus-within) .banner-controls { opacity:1; visibility:visible; }
/* Hidden controls remain keyboard reachable, including pause for autoplay. */
.banner-controls-hidden .banner-controls { position:absolute; bottom:12px; left:12px; right:12px; z-index:2; border:1px solid #c7b77b; border-radius:14px; box-shadow:0 5px 25px #17362d30; }
.banner-controls-hidden .banner-controls:not(:focus-within) { width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; border:0; }
@media (hover:none) { .banner-controls-hover .banner-controls { opacity:1; visibility:visible; } }
@container(max-width:600px) {
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-prev] { left:10px; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) [data-banner-next] { right:10px; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots { bottom:9px; flex-wrap:nowrap; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots button { width:14px; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-dots button[aria-current=true]::before { width:10px; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-counter { left:9px; bottom:9px; font-size:11px; }
    .banner-gallery:is(.banner-controls-overlay,.banner-controls-hover) .banner-play { right:9px; top:9px; bottom:auto; height:28px; font-size:11px; }
}
