/* Shared AA contrast, focus and reflow rules for the guide and private portal. */
:root {
  --a11y-ink: #173a47;
  --a11y-teal: #126772;
  --a11y-border: #607985;
  --a11y-gold: #8a5600;
  --ocean: #126772;
}
.label, .eyebrow { color: var(--a11y-gold); }
.hero .eyebrow { color: #f6b84b; }
.masthead ~ main .eyebrow { color: #116c69; }
.hero-shade { background: rgba(10, 31, 50, .78); }
.countdown { background: #173a47; }
.countdown-toggle { background: #173a47; color: white; border: 1px solid white; min-height: 44px; font: inherit; cursor: pointer; padding: 8px 12px; border-radius: 4px; }
.notice-bar .text-link, footer .text-link { color: #ffe29b; }
.text-link, main p a:not(.button):not(.store-badge) { text-decoration: underline; text-underline-offset: .2em; }
.deck-explorer button, .deck-explorer select, .deck-search input,
input:not([type=checkbox]):not([type=hidden]), select, textarea { border-color: var(--a11y-border); }
input::placeholder, textarea::placeholder { color: #52656c; opacity: 1; }
input[type=checkbox] { accent-color: var(--a11y-teal); }
.language-picker select { width: auto; min-width: 108px; max-width: 100%; }
.language-picker button { min-width: 40px; }
body :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid #173a47;
  outline-offset: 3px;
  box-shadow: 0 0 0 3px #ffffff;
}
:focus { scroll-margin-block: calc(var(--navigation-height, 110px) + 20px) 110px; }
.skip, .skip-link { position: fixed; z-index: 100; color: #173a47; background: white; }
.skip:focus, .skip-link:focus { top: 12px; left: 12px; }
main:focus { outline: none; }
.hero h1 { font-size: 4rem; line-height: 1.15; overflow-wrap: anywhere; }
.section h2 { font-size: 2rem; line-height: 1.3; overflow-wrap: anywhere; }
.countdown-time { font-size: 1.6rem; }
main p, main li, .button, button, summary, .brand span { overflow-wrap: anywhere; }
main, .section, .section-head, .deck-explorer, .masthead nav { min-width: 0; }
.topbar .brand { flex-shrink: 0; }
.topbar .brand span { white-space: nowrap; overflow-wrap: normal; }
.hero-content { max-width: 800px; }
.deck-explorer .map-cabin { height: auto; min-height: 88px; }
.floating-tools { max-width: calc(100% - 2rem); }
body:not(.quick-page) { padding-bottom: 96px; }
.tabs button { border-color: var(--a11y-border); }
.tabs button[aria-selected=true] { text-decoration: underline; text-underline-offset: .2em; }
.table-scroll:focus-visible { outline-offset: 2px; }
.session-warning { color: #172c32; background: white; border: 3px solid #173a47; border-radius: 8px; padding: 24px; width: min(480px, 90vw); max-height: 85svh; overflow: auto; }
.session-warning::backdrop { background: rgba(0, 0, 0, .65); }
.session-warning h2 { font-size: 1.5rem; }
.session-warning button { background: #126772; color: white; border: 1px solid #126772; border-radius: 4px; min-height: 44px; padding: 8px 12px; font: inherit; }
.session-actions { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.session-actions a { color: #075e60; text-decoration: underline; }
.session-error { color: #a62435; font-weight: bold; }
@media (max-width: 1600px) {
  .topbar .menu-button { display: inline-flex; }
  .topbar .language-picker { margin-left: auto; }
  .topbar .nav-links { display: none; position: absolute; top: 100%; left: 0; right: 0; background: #173a47; padding: 12px; max-height: 65svh; overflow-y: auto; flex-wrap: wrap; }
  .topbar .nav-links.open { display: flex; }
}
@media (max-width: 720px) {
  .hero h1 { font-size: 2.5rem; }
  .section h2 { font-size: 1.75rem; }
  .print-card { padding: 1rem; }
  .print-card table { font-size: 1rem; overflow-wrap: anywhere; }
  .topbar { gap: 6px; padding: 8px; }
  .topbar .brand-logo { width: 64px; height: 44px; }
  .menu-button { padding: 8px 10px; }
  .language-picker { gap: 4px; }
  .floating-tools { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .floating-tools button, .floating-tools a { padding: 8px 6px; min-width: 0; font-size: 1rem; }
}
@media (max-height: 500px) {
  .masthead, .topbar { position: relative; max-height: none; overflow: visible; }
  .hero .hero-content { padding-top: 2rem; }
  html { scroll-padding-top: 16px; }
  :focus { scroll-margin-top: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
@media (forced-colors: active) {
  body :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: Highlight; }
  .tabs button[aria-selected=true] { border: 3px solid Highlight; }
}
@media print {
  body:not(.quick-page) { padding-bottom: 0; }
  .hero-shade { display: none; }
}
