/* =============================================
   WP Smart Nav — Front-end CSS v1.1
   All colour/size values come from :root vars
   injected by PHP (wsn_build_css_vars)
   ============================================= */

/* ── Token defaults (PHP overrides these) ── */
:root {
  --wsn-header-h:       72px;
  --wsn-header-h-mob:   60px;
  --wsn-maxw:           1280px;
  --wsn-announce-h:     0px;
  --wsn-ab:             0px;   /* set by JS after DOM ready */

  --wsn-top-bg-rgba:    rgba(123,28,42,1);
  --wsn-scroll-bg-rgba: rgba(123,28,42,1);
  --wsn-blur-top:       0px;
  --wsn-blur-scroll:    0px;
  --wsn-border:         rgba(0,0,0,0.12);

  --wsn-top-text:    #ffffff;
  --wsn-top-link:    #ffffff;
  --wsn-scroll-text: #ffffff;
  --wsn-scroll-link: #ffffff;

  --wsn-link-size:    14px;
  --wsn-link-weight:  600;
  --wsn-link-radius:  6px;
  --wsn-link-px:      12px;
  --wsn-link-py:      8px;
  --wsn-link-hover-bg: transparent;
  --wsn-link-underline:   #E8D5B7;
  --wsn-link-underline-h: 2px;

  --wsn-dd-bg:          rgba(255,255,255,0.97);
  --wsn-dd-link:        #111111;
  --wsn-dd-blur:        14px;
  --wsn-dd-radius:      12px;
  --wsn-dd-shadow:      0 8px 32px rgba(0,0,0,0.14);
  --wsn-dd-hover-bg:    rgba(123,28,42,0.07);
  --wsn-dd-hover-color: #7B1C2A;

  --wsn-drawer-w:       300px;
  --wsn-drawer-bg:      #F5ECD7;
  --wsn-drawer-blur:    0px;
  --wsn-drawer-link:    #7B1C2A;
  --wsn-drawer-size:    17px;
  --wsn-drawer-weight:  700;
  --wsn-drawer-divider: rgba(123,28,42,0.10);
  --wsn-overlay-bg:     rgba(0,0,0,0.55);
  --wsn-overlay-blur:   3px;

  --wsn-acc-indicator: #7B1C2A;
  --wsn-acc-sub-link:  #A83040;
  --wsn-acc-sub-size:  15px;
  --wsn-acc-indent:    rgba(123,28,42,0.20);

  --wsn-burger-color:  #ffffff;
  --wsn-burger-bg:     transparent;
  --wsn-burger-border: transparent;
  --wsn-burger-radius: 6px;
  --wsn-burger-size:   22px;
  --wsn-burger-gap:    5px;

  --wsn-ann-bg:     rgba(0,0,0,0.75);
  --wsn-ann-text:   #ffffff;
  --wsn-ann-blur:   0px;
  --wsn-ann-border: transparent;

  --wsn-foot-bg:     #F5ECD7;
  --wsn-foot-text:   #7B1C2A;
  --wsn-foot-link:   #7B1C2A;
  --wsn-foot-hover:  #A83040;
  --wsn-foot-border: rgba(123,28,42,0.15);
  --wsn-foot-blur:   0px;
  --wsn-foot-pad-y:  40px;
  --wsn-foot-pad-x:  20px;
  --wsn-foot-maxw:   1280px;

  /* Runtime values set by JS scroll handler */
  --wsn-bg-rgba:    var(--wsn-top-bg-rgba);
  --wsn-blur-cur:   var(--wsn-blur-top);
  --wsn-text-cur:   var(--wsn-top-text);
  --wsn-link-cur:   var(--wsn-top-link);
  --wsn-border-cur: transparent;
}

/* ── Box sizing ── */
.wsn-header *, .wsn-drawer *, .wsn-overlay,
.wsn-footer *, .wsn-announce * { box-sizing: border-box; }

/* =============================================
   ANNOUNCEMENT BAR
   ============================================= */
.wsn-announce {
  position: fixed;
  top: var(--wsn-ab); left: 0; right: 0;
  height: var(--wsn-announce-h);
  z-index: 10001;
  display: flex; align-items: center; justify-content: center;
  background: var(--wsn-ann-bg);
  color: var(--wsn-ann-text);
  border-bottom: 1px solid var(--wsn-ann-border);
  backdrop-filter: blur(var(--wsn-ann-blur));
  -webkit-backdrop-filter: blur(var(--wsn-ann-blur));
  font-size: 13px; font-weight: 600; letter-spacing: .2px;
  overflow: hidden;
}
.wsn-ann__text { padding: 0 16px; }
.wsn-ann__link { color: inherit; text-decoration: none; display: block; width: 100%; text-align: center; padding: 0 16px; }
.wsn-ann__link:hover { text-decoration: underline; }

/* =============================================
   HEADER — fixed, always on screen from load
   ============================================= */
.wsn-header {
  position: fixed;
  /*
   * KEY FIX: top is calculated from:
   *   admin bar height (--wsn-ab, set by JS)
   *   + announcement bar height (--wsn-announce-h)
   * JS sets --wsn-ab immediately on DOMContentLoaded
   * AND in a <script> in <head> for zero flash.
   */
  top: calc(var(--wsn-ab) + var(--wsn-announce-h));
  left: 0; right: 0;
  height: var(--wsn-header-h);
  z-index: 9000;
  display: flex; align-items: center;
}

/* Glass pseudo-layer */
.wsn-header::before {
  content: '';
  position: absolute; inset: 0;
  background: var(--wsn-bg-rgba);
  backdrop-filter: blur(var(--wsn-blur-cur));
  -webkit-backdrop-filter: blur(var(--wsn-blur-cur));
  border-bottom: 1px solid var(--wsn-border-cur);
  transition: background 240ms ease, border-color 240ms ease;
  pointer-events: none;
}

.wsn-header.is-scrolled { box-shadow: 0 4px 20px rgba(0,0,0,.12); }

.wsn-inner {
  position: relative;
  width: min(var(--wsn-maxw), calc(100% - 40px));
  margin: 0 auto;
  display: flex; align-items: center; gap: 16px;
}

/* ── Logo ── */
.wsn-logo {
  display: flex; align-items: center;
  text-decoration: none; flex-shrink: 0;
  color: var(--wsn-link-cur) !important;
  font-weight: 800; font-size: 18px; letter-spacing: -.02em;
  white-space: nowrap;
  transition: color 240ms ease;
}
.wsn-logo-img { display: block; max-height: var(--wsn-logo-max-h, 44px); width: auto; }
.wsn-logo-text { color: inherit; }

/* ── Desktop nav ── */
.wsn-nav { display: flex; align-items: center; }
.wsn-nav--right  { margin-left: auto; }
.wsn-nav--center { flex: 1; justify-content: center; display: flex; }
.wsn-nav--left   { margin-right: auto; }

.wsn-menu {
  list-style: none; margin: 0; padding: 0;
  display: flex; align-items: center; gap: 2px;
}
.wsn-menu li { position: relative; }

/* Top-level link */
.wsn-menu > li > a {
  display: inline-flex; align-items: center;
  padding: var(--wsn-link-py) var(--wsn-link-px);
  font-size: var(--wsn-link-size);
  font-weight: var(--wsn-link-weight);
  color: var(--wsn-link-cur) !important;
  text-decoration: none;
  border-radius: var(--wsn-link-radius);
  position: relative;
  transition: color 240ms ease, background .18s ease;
}

/* Animated underline */
.wsn-menu > li > a::after {
  content: '';
  position: absolute;
  bottom: 4px;
  left: var(--wsn-link-px); right: var(--wsn-link-px);
  height: var(--wsn-link-underline-h);
  background: var(--wsn-link-underline);
  border-radius: 99px;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .22s cubic-bezier(.4,0,.2,1);
}
.wsn-menu > li:hover > a::after,
.wsn-menu > li:focus-within > a::after { transform: scaleX(1); }
.wsn-menu > li:hover > a { background: var(--wsn-link-hover-bg); }

/* ── Desktop dropdown ── */
.wsn-menu li ul.sub-menu {
  position: absolute;
  top: calc(100% + 6px); left: 0;
  min-width: 200px;
  background: var(--wsn-dd-bg);
  backdrop-filter: blur(var(--wsn-dd-blur));
  -webkit-backdrop-filter: blur(var(--wsn-dd-blur));
  border-radius: var(--wsn-dd-radius);
  box-shadow: var(--wsn-dd-shadow);
  list-style: none; margin: 0; padding: 6px;
  opacity: 0; visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .22s ease, transform .22s ease, visibility .22s;
  pointer-events: none;
  z-index: 9200;
}
.wsn-menu li:hover > ul.sub-menu,
.wsn-menu li:focus-within > ul.sub-menu {
  opacity: 1; visibility: visible; transform: translateY(0); pointer-events: auto;
}
.wsn-menu li ul.sub-menu li a {
  display: block; padding: 9px 12px;
  font-size: 13px; font-weight: 500;
  color: var(--wsn-dd-link) !important;
  text-decoration: none; border-radius: 8px;
  transition: background .14s ease, color .14s ease;
}
.wsn-menu li ul.sub-menu li a:hover { background: var(--wsn-dd-hover-bg); color: var(--wsn-dd-hover-color) !important; }

/* ── CTA buttons ── */
.wsn-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.wsn-btn {
  display: inline-flex; align-items: center;
  padding: 8px 18px; font-size: 13px; font-weight: 700;
  text-decoration: none; border-radius: 8px; white-space: nowrap;
  transition: filter .15s ease, transform .08s ease; cursor: pointer;
}
.wsn-btn:hover  { filter: brightness(1.06); }
.wsn-btn:active { transform: translateY(1px); }
.wsn-btn--ghost { background: rgba(255,255,255,.15); color: var(--wsn-link-cur) !important; border: 1px solid rgba(255,255,255,.3); }
.wsn-btn--solid { background: var(--wsn-link-cur); color: #fff !important; border: 0; }
.wsn-btn--pill  { border-radius: 999px; }
.wsn-btn--outline { background: transparent; border: 1.5px solid currentColor; }

/* ── Hamburger ── */
.wsn-burger {
  display: none;
  flex-direction: column; justify-content: center; align-items: flex-end;
  width: 40px; height: 40px; padding: 8px;
  background: var(--wsn-burger-bg);
  border: 1px solid var(--wsn-burger-border);
  border-radius: var(--wsn-burger-radius);
  cursor: pointer; gap: 0;
  margin-left: auto; flex-shrink: 0;
}
.wsn-bar {
  display: block; height: 2px;
  background: var(--wsn-burger-color);
  border-radius: 2px; transform-origin: center;
  transition: transform .32s cubic-bezier(.4,0,.2,1), opacity .32s ease, width .32s ease;
}
.wsn-bar--a { width: var(--wsn-burger-size); }
.wsn-bar--b { width: var(--wsn-burger-size); margin: var(--wsn-burger-gap) 0; }
.wsn-bar--c { width: calc(var(--wsn-burger-size) * .65); }

/* Morph to X */
.wsn-open .wsn-bar--a { transform: translateY(calc(var(--wsn-burger-gap) + 2px)) rotate(45deg); width: var(--wsn-burger-size); }
.wsn-open .wsn-bar--b { opacity: 0; transform: scaleX(0); }
.wsn-open .wsn-bar--c { transform: translateY(calc(-1 * (var(--wsn-burger-gap) + 2px))) rotate(-45deg); width: var(--wsn-burger-size); }

/* =============================================
   OVERLAY
   ============================================= */
.wsn-overlay {
  position: fixed; inset: 0;
  background: var(--wsn-overlay-bg);
  backdrop-filter: blur(var(--wsn-overlay-blur));
  -webkit-backdrop-filter: blur(var(--wsn-overlay-blur));
  z-index: 8900;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .32s cubic-bezier(.4,0,.2,1), visibility .32s;
}
.wsn-open .wsn-overlay { opacity: 1; visibility: visible; pointer-events: auto; }

/* =============================================
   DRAWER
   ============================================= */
.wsn-drawer {
  position: fixed;
  top: calc(var(--wsn-ab) + var(--wsn-announce-h));
  height: calc(100vh - var(--wsn-ab) - var(--wsn-announce-h));
  width: var(--wsn-drawer-w); max-width: 90vw;
  background: var(--wsn-drawer-bg);
  backdrop-filter: blur(var(--wsn-drawer-blur));
  -webkit-backdrop-filter: blur(var(--wsn-drawer-blur));
  z-index: 9100;
  display: flex; flex-direction: column;
  overflow-y: auto; overscroll-behavior: contain;
  transition: transform .32s cubic-bezier(.4,0,.2,1);
  box-shadow: 0 0 60px rgba(0,0,0,.18);
}
.wsn-drawer--right { right: 0; transform: translateX(100%); }
.wsn-drawer--left  { left:  0; transform: translateX(-100%); }
.wsn-open .wsn-drawer--right,
.wsn-open .wsn-drawer--left  { transform: translateX(0); }

/* Drawer head */
.wsn-drawer__head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--wsn-drawer-divider);
  flex-shrink: 0;
}
.wsn-drawer__close {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.06); border: none; border-radius: 50%;
  cursor: pointer; flex-shrink: 0;
  transition: background .14s;
}
.wsn-drawer__close:hover { background: rgba(0,0,0,.12); }
.wsn-drawer__close svg { width: 18px; height: 18px; stroke: var(--wsn-drawer-link); }
.wsn-drawer__body { flex: 1; padding: 8px 0 32px; }

/* ── Drawer menu ── */
.wsn-drawer-menu { list-style: none; margin: 0; padding: 0 12px; }
.wsn-drawer-menu .wsn-top { border-bottom: 1px solid var(--wsn-drawer-divider); }
.wsn-drawer-menu .wsn-top:last-child { border-bottom: none; }

/* Stagger animation */
.wsn-drawer-menu .wsn-top {
  opacity: 0; transform: translateX(16px);
  transition: opacity .34s ease, transform .34s ease;
}
.wsn-open .wsn-drawer-menu .wsn-top { opacity: 1; transform: translateX(0); }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(1)  { transition-delay:.05s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(2)  { transition-delay:.09s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(3)  { transition-delay:.13s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(4)  { transition-delay:.17s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(5)  { transition-delay:.21s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(6)  { transition-delay:.25s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(7)  { transition-delay:.29s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(8)  { transition-delay:.33s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(9)  { transition-delay:.37s; }
.wsn-open .wsn-drawer-menu .wsn-top:nth-child(10) { transition-delay:.41s; }

/* Top-level drawer links + accordion triggers */
.wsn-drawer-menu .wsn-top > .wsn-link,
.wsn-drawer-menu .wsn-top > .wsn-accord-btn {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 14px 6px;
  font-size: var(--wsn-drawer-size); font-weight: var(--wsn-drawer-weight);
  color: var(--wsn-drawer-link);
  text-decoration: none; background: none; border: none;
  cursor: pointer; font-family: inherit; text-align: left;
  border-radius: 8px;
  transition: background .14s;
}
.wsn-drawer-menu .wsn-top > .wsn-link:hover,
.wsn-drawer-menu .wsn-top > .wsn-accord-btn:hover { background: rgba(0,0,0,.04); }

/* Chevron */
.wsn-chevron { width: 18px; height: 18px; flex-shrink: 0; stroke: var(--wsn-acc-indicator); transition: transform .25s ease; }
.wsn-accord-btn[aria-expanded="true"] .wsn-chevron { transform: rotate(-180deg); }

/* Accordion sub-list */
.wsn-sub {
  list-style: none; margin: 0; padding: 0 0 6px 8px;
  overflow: hidden; max-height: 0; opacity: 0;
  transition: max-height .28s ease, opacity .24s ease;
}
.wsn-sub.is-open { max-height: 800px; opacity: 1; }
.wsn-sub .wsn-link {
  display: block; padding: 10px 10px 10px 12px;
  font-size: var(--wsn-acc-sub-size); font-weight: 600;
  color: var(--wsn-acc-sub-link) !important;
  text-decoration: none;
  border-left: 2px solid var(--wsn-acc-indent);
  margin: 2px 0; border-radius: 0 8px 8px 0;
  transition: background .14s, border-color .14s;
}
.wsn-sub .wsn-link:hover { background: rgba(0,0,0,.05); border-left-color: var(--wsn-drawer-link); }

/* Drawer CTA buttons */
.wsn-drawer .wsn-actions { padding: 16px 18px 0; flex-direction: column; }
.wsn-drawer .wsn-btn { width: 100%; justify-content: center; margin-bottom: 8px; }

/* =============================================
   RESPONSIVE
   ============================================= */
@media (max-width: 980px) {
  .wsn-header { height: var(--wsn-header-h-mob); }
  .wsn-nav    { display: none !important; }
  .wsn-burger { display: flex; }
}
@media (min-width: 981px) {
  .wsn-burger  { display: none !important; }
  .wsn-drawer  { display: none !important; }
  .wsn-overlay { display: none !important; }
}

html.wsn-lock, body.wsn-open { overflow: hidden !important; }

/* =============================================
   FOOTER
   ============================================= */
.wsn-footer {
  background: var(--wsn-foot-bg);
  backdrop-filter: blur(var(--wsn-foot-blur));
  -webkit-backdrop-filter: blur(var(--wsn-foot-blur));
  color: var(--wsn-foot-text);
  border-top: 1px solid var(--wsn-foot-border);
  padding: var(--wsn-foot-pad-y) var(--wsn-foot-pad-x);
}
.wsn-foot-inner {
  max-width: var(--wsn-foot-maxw); margin: 0 auto;
  display: flex; align-items: flex-start; gap: 40px; flex-wrap: wrap;
}
.wsn-footer--two-col .wsn-foot-inner  { justify-content: space-between; }
.wsn-footer--two-col .wsn-foot-col--right { text-align: right; }
.wsn-footer--centered .wsn-foot-inner { justify-content: center; }
.wsn-footer--centered .wsn-foot-center { text-align: center; width: 100%; }

.wsn-foot-heading {
  font-size: 11px; font-weight: 800; letter-spacing: .12em;
  text-transform: uppercase; opacity: .55; margin-bottom: 14px;
}
.wsn-foot-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 2px; flex-direction: column; }
.wsn-footer--centered .wsn-foot-menu { flex-direction: row; justify-content: center; }
.wsn-foot-menu a {
  color: var(--wsn-foot-link) !important;
  text-decoration: none; font-weight: 600; font-size: 14px;
  padding: 4px 6px; border-radius: 6px;
  transition: color .15s, background .15s;
}
.wsn-foot-menu a:hover { color: var(--wsn-foot-hover) !important; background: rgba(0,0,0,.04); }
.wsn-foot-note  { font-size: 13px; line-height: 1.6; opacity: .75; margin-bottom: 10px; }
.wsn-foot-credit { font-size: 12px; opacity: .4; margin-top: 10px; }
.wsn-foot-credit a { color: inherit; text-decoration: none; }
.wsn-foot-credit a:hover { text-decoration: underline; }
