/* site-nav.css: nested site menu (Spirit and I, Oct 23 2026). Markup is written into every page by scripts/build_nav.py. */
.sn { padding:0; text-align:left; position:relative; z-index:50; background:rgba(17,17,17,.92); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); border-bottom:1px solid #2c2c2c; font-family:'Helvetica Neue', Arial, sans-serif; }
.sn ul { list-style:none; margin:0; padding:0; }
.sn a { text-decoration:none; margin:0 !important; }
.sn-bar { display:none; }
.sn-menu { display:flex; flex-wrap:wrap; justify-content:center; align-items:flex-start; gap:4px 6px; padding:10px 12px; max-width:1100px; margin:0 auto; }
.sn-top, .sn-toggle { display:inline-flex; align-items:center; gap:6px; min-height:44px; padding:0 14px; color:#a0a0a0; background:none; border:0; border-radius:8px; font:inherit; font-size:0.95rem; text-transform:uppercase; letter-spacing:1px; cursor:pointer; }
.sn-top:hover, .sn-toggle:hover, .sn-top:focus-visible, .sn-toggle:focus-visible, .sn-toggle[aria-expanded="true"] { color:#d4af37; }
.sn-top:focus-visible, .sn-toggle:focus-visible, .sn-sub a:focus-visible, .sn-help:focus-visible, .sn-burger:focus-visible { outline:2px solid #d4af37; outline-offset:2px; }
.sn [aria-current="page"], .sn-here > .sn-toggle { color:#f4f4f4; }
.sn-sub a[aria-current="page"] { color:#f1c40f; font-weight:bold; }
.sn-caret { display:inline-block; width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:6px solid currentColor; transition:transform .2s ease; }
.sn-toggle[aria-expanded="true"] .sn-caret { transform:rotate(180deg); }
.sn-sub a { display:flex; align-items:center; min-height:44px; padding:6px 14px; color:#f4f4f4; border-radius:8px; font-size:0.98rem; line-height:1.3; }
.sn-sub a:hover, .sn-sub a:focus-visible { background:#2a2a2a; color:#d4af37; }
.sn-sep { color:#d4af37; font-size:0.72rem; letter-spacing:2px; text-transform:uppercase; padding:10px 14px 2px; border-top:1px solid #333; margin-top:4px; grid-column:1 / -1; }
.sn-help { display:inline-flex; align-items:center; min-height:40px; padding:0 14px; color:#111; background:#d4af37; border-radius:999px; font-weight:bold; font-size:0.9rem; white-space:nowrap; }
.sn-help:hover { background:#f1c40f; }
.sn .sn-help, .sn .sn-sub a { text-transform:none; letter-spacing:normal; }   /* page CSS like 404 nav a {uppercase} must not reach these */
/* Without JavaScript every group is open as a plain list, so every link shows. */
html:not(.sn-js) .sn-toggle { cursor:default; color:#d4af37; }
html:not(.sn-js) .sn-caret { display:none; }
html:not(.sn-js) .sn-menu { align-items:flex-start; }
html:not(.sn-js) .sn-group { min-width:180px; }
html:not(.sn-js) .sn-bar { display:flex; justify-content:flex-end; padding:8px 12px 0; }
html:not(.sn-js) .sn-burger { display:none; }

/* Desktop: dropdown panels */
@media (min-width:900px) {
  .sn-js .sn-menu { flex-wrap:nowrap; align-items:center; }
  .sn-js .sn-item { position:relative; }
  .sn-js .sn-sub { position:absolute; top:calc(100% + 6px); left:50%; transform:translateX(-50%); min-width:240px; background:#1b1b1b; border:1px solid #3a3a3a; border-top:2px solid #d4af37; border-radius:10px; padding:8px; box-shadow:0 14px 40px rgba(0,0,0,.6); opacity:0; visibility:hidden; transition:opacity .15s ease, visibility 0s linear .15s; }
  .sn-js .sn-sub.sn-cols { display:grid; grid-template-columns:repeat(2, minmax(210px, 1fr)); min-width:470px; }
  .sn-js .sn-sub::before { content:""; position:absolute; left:0; right:0; top:-10px; height:10px; } /* hover bridge */
  .sn-js .sn-open > .sn-sub { opacity:1; visibility:visible; transition:opacity .15s ease; }
  .sn-js .sn-helpitem { margin-left:10px; }
}
.sn-helpitem { display:flex; align-items:center; min-height:44px; }
/* Phone: a Menu button opens a panel; groups expand on tap. */
@media (max-width:899.98px) {
  .sn-js .sn-bar { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; }
  .sn-js .sn-helpitem { display:none; }
  .sn-burger { display:inline-flex; align-items:center; gap:10px; min-height:48px; padding:0 16px; background:#2a2a2a; color:#f4f4f4; border:1px solid #444; border-radius:10px; font:inherit; font-size:1rem; letter-spacing:1px; text-transform:uppercase; cursor:pointer; }
  .sn-burger[aria-expanded="true"] { border-color:#d4af37; color:#d4af37; }
  .sn-burger-ico, .sn-burger-ico::before, .sn-burger-ico::after { display:block; width:20px; height:2px; background:currentColor; border-radius:2px; position:relative; transition:transform .2s ease; }
  .sn-burger-ico::before, .sn-burger-ico::after { content:""; position:absolute; left:0; }
  .sn-burger-ico::before { top:-6px; } .sn-burger-ico::after { top:6px; }
  .sn-burger[aria-expanded="true"] .sn-burger-ico { background:transparent; }
  .sn-burger[aria-expanded="true"] .sn-burger-ico::before { transform:translateY(6px) rotate(45deg); }
  .sn-burger[aria-expanded="true"] .sn-burger-ico::after { transform:translateY(-6px) rotate(-45deg); }
  .sn-js .sn-menu { display:none; flex-direction:column; align-items:stretch; gap:0; padding:4px 12px 14px; max-height:calc(100vh - 70px); overflow-y:auto; overscroll-behavior:contain; }
  .sn-js .sn.sn-panel-open .sn-menu { display:flex; }
  .sn-js .sn-item { border-top:1px solid #2e2e2e; }
  .sn-js .sn-top, .sn-js .sn-toggle { width:100%; justify-content:space-between; min-height:54px; font-size:1.02rem; color:#f4f4f4; padding:0 8px; }
  .sn-js .sn-sub { display:none; padding:0 0 10px 10px; }
  .sn-js .sn-open > .sn-sub { display:block; }
  .sn-js .sn-sub a { min-height:50px; font-size:1.02rem; }
  html:not(.sn-js) .sn-menu { flex-direction:column; align-items:stretch; }
}
@media (prefers-reduced-motion: reduce) {
  .sn-caret, .sn-burger-ico, .sn-burger-ico::before, .sn-burger-ico::after, .sn-js .sn-sub { transition:none !important; }
}
