/*
 * Theme layer over the approved mockup CSS (kits.css plus the per-page files, which are
 * copied verbatim from the mockups). This file only adds what WordPress introduces:
 * menu markup, the Affiliations dropdown, a mobile menu, the Contact page, and the plain
 * fallback pages. Font floors: 16px for anything read.
 */

/* ------------------------------------------------------------ utilities */
.skip-link { position: absolute; left: -9999px; top: 8px; z-index: 1000; background: var(--gold);
  color: #0A0A0A; padding: 12px 18px; font-size: 16px; font-weight: 600; text-decoration: none; }
.skip-link:focus { left: 12px; }
.btn-row { display: flex; flex-wrap: wrap; gap: 16px; }
.btn-row.center { justify-content: center; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

/* ------------------------------------------ WordPress menu = mockup nav */
.nav-links { list-style: none; margin: 0; padding: 0; }
.nav-links > li { position: relative; }
.nav.mast .nav-links > li > a { color: #fff; font-size: 16px; font-weight: 500;
  letter-spacing: .15em; text-transform: uppercase; }
.nav.mast .nav-links > li.here > a,
.nav.mast .nav-links > li.current-menu-item > a { color: var(--champagne); }

/* Affiliations dropdown: every destination from the old menu stays one click away */
.nav-links .sub-menu { list-style: none; margin: 0; padding: 10px 0; position: absolute;
  top: calc(100% + 10px); left: 50%; transform: translate(-50%, 6px); min-width: 280px;
  background: rgba(10,10,10,.96); border: 1px solid var(--rule); border-top: 2px solid var(--gold);
  box-shadow: 0 18px 40px rgba(0,0,0,.45); opacity: 0; visibility: hidden;
  transition: opacity 220ms var(--ease), transform 220ms var(--ease), visibility 0s linear 220ms;
  z-index: 60; }
.nav-links .sub-menu::before { content: ''; position: absolute; left: 0; right: 0; top: -14px; height: 14px; }
.nav-links > li:hover > .sub-menu,
.nav-links > li:focus-within > .sub-menu,
.nav-links > li.open > .sub-menu { opacity: 1; visibility: visible; transform: translate(-50%, 0);
  transition-delay: 0s; }
.nav-links .sub-menu a { display: block; padding: 10px 22px; color: rgba(255,255,255,.88);
  font-size: 16px; letter-spacing: .04em; text-transform: none; white-space: nowrap; opacity: 1; }
.nav-links .sub-menu a::after { display: none; }
.nav-links .sub-menu a:hover,
.nav-links .sub-menu a:focus-visible { color: var(--champagne); background: rgba(201,162,39,.08); }
.nav-links .menu-item-has-children > a::before { content: ''; display: inline-block; width: 7px; height: 7px;
  border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: translateY(-3px) rotate(45deg); margin-right: 9px; opacity: .8; }

.nav-toggle { display: none; background: transparent; color: #fff; border: 1px solid var(--gold);
  font: 600 16px/1 var(--font-body); letter-spacing: .14em; text-transform: uppercase;
  padding: 11px 20px; cursor: pointer; }

@media (max-width: 860px) {
  .nav-toggle { display: inline-block; }
  .nav.mast .nav-links { display: none; flex-direction: column; align-items: center; gap: 4px;
    width: 100%; padding: 10px 0 6px; }
  .nav.mast.menu-open .nav-links { display: flex; }
  .nav.mast.menu-open { background: rgba(10,10,10,.97); }
  .nav.mast .nav-links > li > a { display: block; padding: 10px 0; }
  .nav-links .sub-menu { position: static; transform: none; opacity: 1; visibility: visible;
    min-width: 0; box-shadow: none; border: 0; border-left: 2px solid var(--gold);
    background: transparent; padding: 0 0 6px; margin: 0 auto; text-align: center; display: none; }
  .nav-links > li.open > .sub-menu { display: block; transform: none; }
  .nav-links .sub-menu a { white-space: normal; padding: 8px 16px; }
}

/* ------------------------------------------------------------- footer */
.foot-tag { font-size: 16px; color: rgba(255,255,255,.72); margin: 0; max-width: none; }
.foot-copy { margin: 14px 0 0; font-size: 16px; color: rgba(255,255,255,.55); max-width: none; }
footer.site .foot-copy a { text-decoration: underline; text-underline-offset: 3px; }

/* --------------------------------------------- affiliations without a photo */
.toc-row.no-plate, .toc-row.no-plate:nth-child(even) { grid-template-columns: 1fr; }

/* ------------------------------------------------------- request card */
.req-v { color: #fff; text-align: right; }

/* ------------------------------------------------------------ contact */
.contact-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(32px, 5vw, 80px); align-items: start; }
.contact-name { font-size: clamp(30px, 3.4vw, 42px); margin: 6px 0 16px; }
.contact-addr { font-size: 19px; line-height: 1.6; color: var(--espresso); margin: 0 0 14px; max-width: none; }
.contact-phone { font-size: 22px; font-weight: 600; margin: 0 0 30px; }
.contact-phone a, .contact-lines a { color: var(--espresso); text-decoration: none;
  border-bottom: 2px solid var(--gold); }
.contact-lines { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.contact-lines li { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  padding: 16px 0; border-bottom: 1px solid var(--rule); font-size: 17px; }
.contact-lines li span { color: var(--muted); }
.contact-form h2 { margin-bottom: 10px; }
.wufoo-wrap { margin-top: 22px; background: #fff; border: 1px solid rgba(36,31,26,.12);
  border-top: 3px solid var(--gold); padding: 8px; }
@media (max-width: 980px) { .contact-grid { grid-template-columns: 1fr; } }

/* ------------------------------------------------------- plain pages */
.plain-hero { background: var(--ink); color: #fff; padding: clamp(160px, 20vh, 220px) 0 clamp(48px, 7vw, 80px); }
.plain-hero h1 { font-size: clamp(40px, 6vw, 72px); margin: 0; text-wrap: balance; }
.wrapx.narrow, .narrow { max-width: 860px; margin-inline: auto; }
.entry { font-size: 18px; line-height: 1.7; }
.entry p, .entry li { max-width: 70ch; }
.entry a { color: var(--gold-deep, #8A6D12); }
.entry img { max-width: 100%; height: auto; }

@media (prefers-reduced-motion: reduce) {
  .nav-links .sub-menu { transition: none; }
}
