/* =========================================================================
   GROOVE PROTOCOL - NIGHT EDITION
   Global design layer. Enqueued after every other theme stylesheet, so it
   is the single place that defines the publication's tokens, typeface,
   base typography and shared chrome. Page compositions live in their own
   files (night-home.css for the front page).
   ========================================================================= */

/* ---- Typeface: Familjen Grotesk (SIL OFL 1.1), self-hosted, variable 400-700 ----
   size-adjust:109% gives Familjen the x-height (0.545em) of the Inter stack
   the existing layouts were tuned for, so line lengths and component sizes
   keep their proportions and small text reads at the intended size. */
@font-face{
  font-family:"Familjen Grotesk";
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  size-adjust:109%;
  src:url("../fonts/familjen-grotesk-latin-ext.woff2") format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Familjen Grotesk";
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  size-adjust:109%;
  src:url("../fonts/familjen-grotesk-latin.woff2") format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* Metric-matched fallback so the swap to the webfont does not move the layout. */
@font-face{
  font-family:"Familjen Fallback";
  src:local("Arial"),local("Liberation Sans"),local("Helvetica Neue"),local("Helvetica");
  size-adjust:103%;
  ascent-override:108.5%;
  descent-override:23.8%;
  line-gap-override:0%;
}

:root{
  /* Surfaces */
  --ne-bg:#0b0b0b;
  --ne-surface:#131313;
  --ne-surface-2:#1a1a1a;
  --ne-paper:#ebe8e1;          /* Archive mode */
  --ne-paper-2:#e1ddd3;
  --ne-ink:#111111;
  --ne-ink-2:#4b4842;
  --ne-ink-3:#615d56;          /* 5.2:1 on paper */

  /* Foreground on black */
  --ne-text:#f1efe9;
  --ne-text-2:rgba(241,239,233,.76);
  --ne-muted:rgba(241,239,233,.58);
  --ne-faint:rgba(241,239,233,.40);

  /* Restrained red: fills/bars use --ne-red, text-level accents --ne-red-text */
  --ne-red:#b3261e;
  --ne-red-bright:#d6332c;
  --ne-red-text:#e0463d;
  --ne-red-ink:#a3221b;        /* red on Archive paper */

  /* Rules */
  --ne-rule:rgba(241,239,233,.14);
  --ne-rule-strong:rgba(241,239,233,.30);
  --ne-rule-ink:rgba(17,17,17,.16);
  --ne-rule-ink-strong:rgba(17,17,17,.42);

  /* Type */
  --ne-sans:"Familjen Grotesk","Familjen Fallback","Helvetica Neue",Arial,sans-serif;
  --ne-fs-meta:12px;           /* indexes, dates, categories only */
  --ne-fs-small:14px;          /* secondary readable information */
  --ne-fs-body:16px;
  --ne-fs-lead:clamp(17px,1.35vw,19px);
  --ne-fs-h3:clamp(20px,1.7vw,24px);
  --ne-fs-h2:clamp(30px,3.1vw,44px);
  --ne-fs-display:clamp(42px,5.4vw,80px);
  --ne-track-meta:.08em;

  /* Layout */
  --ne-wrap:1320px;
  --ne-gutter:clamp(16px,3.2vw,48px);
  --ne-section:clamp(72px,8.5vw,128px);
  --ne-section-tight:clamp(48px,5.5vw,80px);

  /* Motion */
  --ne-t-fast:160ms;
  --ne-t:240ms;
  --ne-t-slow:320ms;
  --ne-ease:cubic-bezier(.2,.7,.2,1);

  /* ---- Legacy token remap: every older layer now speaks the same palette ---- */
  --gp-bg:var(--ne-bg);
  --gp-surface:var(--ne-surface);
  --gp-surface-2:var(--ne-surface-2);
  --gp-surface-3:#1e1e1e;
  --gp-surface-raised:#222222;
  --gp-surface-sunken:#0e0e0e;
  --gp-text:var(--ne-text);
  --gp-text-strong:#f6f4ef;
  --gp-muted:rgba(241,239,233,.72);
  --gp-text-soft:rgba(241,239,233,.60);
  --gp-text-faint:rgba(241,239,233,.40);
  --gp-accent:var(--ne-red-text);
  --gp-red:var(--ne-red-bright);
  --gp-red-strong:var(--ne-red-text);
  --gp-red-deep:var(--ne-red);
  --gp-red-soft:rgba(179,38,30,.14);
  --gp-red-line:rgba(179,38,30,.40);
  --gp-focus:var(--ne-red-text);
  --gp-premium-sans:var(--ne-sans);
  --gp-ease:var(--ne-ease);
}

/* Older layers re-declare some tokens on body:not(.page-template-page-culture)
   (specificity 0,1,1). ":root body" has the same specificity and this file
   loads last, so the publication palette and typeface win everywhere. */
:root body{
  --gp-premium-accent:var(--ne-red);
  --gp-premium-accent-strong:var(--ne-red-bright);
  --gp-premium-ink:var(--ne-text);
  --gp-premium-bg:var(--ne-bg);
  --gp-premium-surface:var(--ne-surface);
  --gp-premium-sunken:#070707;
  --gp-premium-line:rgba(241,239,233,.09);
  --gp-premium-sans:var(--ne-sans);
  --gp-red:var(--ne-red-bright);
  --gp-red-strong:var(--ne-red-text);
  --gp-accent:var(--ne-red-text);
}

/* ---- Base ---- */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
:root body{
  font-family:var(--ne-sans);
  font-size:var(--ne-fs-body);
  line-height:1.55;
  letter-spacing:0;
  color:var(--ne-text);
  background-color:var(--ne-bg);
  font-kerning:normal;
  font-feature-settings:"kern" 1;
}
h1,h2,h3,h4,h5,h6{text-wrap:balance;}
p{text-wrap:pretty;}
::selection{background:rgba(179,38,30,.55);color:#fff;}

/* Focus: one visible, consistent ring across the publication */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--ne-red-text);
  outline-offset:3px;
}

/* Body-copy links: off-white with a red underline instead of the legacy purple */
.gp-content a:not(.gp-btn):not(.gp-pill),
.gp-contact-link,
.gp-link:not(.gp-pill):not(.gp-brand-title){
  color:var(--ne-text);
  text-decoration:underline;
  text-decoration-color:rgba(214,51,44,.75);
  text-decoration-thickness:1px;
  text-underline-offset:3px;
  transition:text-decoration-color var(--ne-t-fast) var(--ne-ease);
}
.gp-content a:not(.gp-btn):not(.gp-pill):hover,
.gp-contact-link:hover,
.gp-link:not(.gp-pill):not(.gp-brand-title):hover{
  text-decoration-color:var(--ne-text);
}

/* Shared utility: visually hidden but available to assistive technology */
.screen-reader-text,
.ne-sr{
  position:absolute !important;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);
  white-space:nowrap;border:0;
}
.screen-reader-text:focus{
  position:fixed !important;
  left:12px;top:12px;
  width:auto;height:auto;
  padding:10px 14px;margin:0;
  clip:auto;overflow:visible;
  background:var(--ne-text);color:var(--ne-ink);
  z-index:100000;
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}

/* SIGNAL premium-v2 masthead: Familjen's bold set is wider than the stack the
   ch-based measure was tuned on; widen it so titles keep their approved breaks. */
.gp-sig-story--premium-v2 .gp-sig-story__title{max-width:11.8ch;}
@media (max-width:720px){
  .gp-sig-story--premium-v2 .gp-sig-story__title{max-width:10.9ch;}
}

/* =========================================================================
   HEADER - masthead + quiet navigation
   Prefixed with ":root body .gp-header" to sit above the layered legacy
   nav rules (max specificity 0,3,2) without !important.
   ========================================================================= */
:root body .gp-header{
  position:sticky;top:0;z-index:999;
  background:rgba(11,11,11,.97);
  -webkit-backdrop-filter:none;backdrop-filter:none;
  border-bottom:1px solid var(--ne-rule);
}
:root body .gp-header > .gp-container{max-width:var(--ne-wrap);padding:0 var(--ne-gutter);}
:root body .gp-header .gp-header-inner,
:root body .gp-header.gp-header--scrolled .gp-header-inner{
  min-height:72px;padding:0;gap:32px;align-items:center;
}

/* Masthead: the wordmark carries the authority, the mark supports it */
:root body .gp-header .gp-brand{gap:13px;}
:root body .gp-header .gp-brand img,
:root body .gp-header .custom-logo,
:root body .gp-header .gp-brand-logo .gp-brand-mark--header,
:root body .gp-header.gp-header--scrolled .gp-brand img{
  width:38px;height:38px;border-radius:50%;object-fit:cover;
}
:root body .gp-header .gp-brand-title{
  font-size:21px;font-weight:500;letter-spacing:-.018em;line-height:1;
  color:var(--ne-text);text-decoration:none;
}
:root body .gp-header .gp-brand-title:hover{opacity:1;color:#fff;}

/* Navigation */
:root body .gp-header .gp-nav ul{gap:clamp(18px,2.1vw,32px);}
:root body .gp-header .gp-nav a{
  position:relative;
  padding:27px 0;
  font-size:15px;font-weight:400;letter-spacing:.005em;line-height:18px;
  color:rgba(241,239,233,.86);
  background:none;border:0;border-radius:0;box-shadow:none;
  transition:color var(--ne-t-fast) var(--ne-ease);
}
:root body .gp-header .gp-nav a:hover{color:var(--ne-text);background:none;}
:root body .gp-header .gp-nav .current-menu-item > a,
:root body .gp-header .gp-nav .current_page_item > a,
:root body .gp-header .gp-nav .current-menu-ancestor > a,
:root body .gp-header .gp-nav .current_page_parent > a,
:root body .gp-header .gp-nav a[aria-current="page"]{
  color:var(--ne-text);background:none;border:0;
}
/* Active and hover bar: a short rule under the item, red only for the current section */
:root body .gp-header .gp-nav .menu > li > a::after{
  content:"";position:absolute;left:0;right:0;bottom:19px;height:2px;
  background:var(--ne-rule-strong);
  transform:scaleX(0);transform-origin:left center;
  transition:transform var(--ne-t) var(--ne-ease);
}
:root body .gp-header .gp-nav .menu > li > a:hover::after{transform:scaleX(1);}
:root body .gp-header .gp-nav .menu > .current-menu-item > a::after,
:root body .gp-header .gp-nav .menu > .current_page_item > a::after,
:root body .gp-header .gp-nav .menu > .current-menu-ancestor > a::after,
:root body .gp-header .gp-nav .menu > .current_page_parent > a::after{
  transform:scaleX(1);background:var(--ne-red-bright);
}
:root body .gp-header .gp-nav a:focus-visible{outline:2px solid var(--ne-red-text);outline-offset:4px;}

/* Sub-menus: a plain dark index, no glass */
:root body .gp-header .gp-nav .sub-menu{
  min-width:250px;margin-top:0;padding:8px 0;
  background:#111;border:1px solid var(--ne-rule);border-radius:0;
  box-shadow:0 18px 40px rgba(0,0,0,.45);
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
:root body .gp-header .gp-nav .sub-menu a{padding:10px 18px;font-size:14px;line-height:1.35;white-space:nowrap;}
:root body .gp-header .gp-nav .sub-menu a::after{display:none;}
:root body .gp-header .gp-nav .sub-menu a:hover{background:rgba(241,239,233,.05);}

/* Mobile: compact masthead, text toggle, full-width index panel */
@media (max-width:960px){
  :root body .gp-header .gp-header-inner,
  :root body .gp-header.gp-header--scrolled .gp-header-inner{min-height:60px;gap:16px;}
  :root body .gp-header .gp-brand img,
  :root body .gp-header .custom-logo,
  :root body .gp-header.gp-header--scrolled .gp-brand img{width:32px;height:32px;}
  :root body .gp-header .gp-brand-title{font-size:19px;}
  :root body .gp-header .gp-nav-toggle{
    min-width:44px;min-height:44px;padding:0 2px;margin-right:-2px;
    background:none;border:0;border-radius:0;
    font:inherit;font-size:15px;font-weight:500;color:var(--ne-text);
  }
  :root body .gp-header .gp-nav-toggle[aria-expanded="true"] span{border-bottom:2px solid var(--ne-red-bright);}
  :root.gp-js body .gp-header .gp-nav{
    position:absolute;left:calc(-1 * var(--ne-gutter));right:calc(-1 * var(--ne-gutter));top:100%;
    max-height:calc(100svh - 60px);overflow-y:auto;
    margin:0;padding:8px var(--ne-gutter) 24px;
    background:#0b0b0b;border:0;border-top:1px solid var(--ne-rule);border-bottom:1px solid var(--ne-rule);
    border-radius:0;box-shadow:0 24px 40px rgba(0,0,0,.5);
    -webkit-backdrop-filter:none;backdrop-filter:none;
  }
  :root body .gp-header .gp-nav ul{gap:0;}
  :root body .gp-header .gp-nav .menu > li{border-bottom:1px solid var(--ne-rule);}
  :root body .gp-header .gp-nav a{padding:15px 0;font-size:18px;color:var(--ne-text);}
  :root body .gp-header .gp-nav .menu > li > a::after{display:none;}
  :root body .gp-header .gp-nav .menu > .current-menu-item > a,
  :root body .gp-header .gp-nav .menu > .current_page_item > a,
  :root body .gp-header .gp-nav .menu > .current-menu-ancestor > a{box-shadow:inset 3px 0 0 var(--ne-red-bright);padding-left:14px;}
  :root body .gp-header .gp-nav .sub-menu{
    position:static;display:block;min-width:0;padding:0 0 10px 14px;
    background:none;border:0;box-shadow:none;
  }
  :root body .gp-header .gp-nav .sub-menu a{padding:8px 0;font-size:15px;color:var(--ne-text-2);white-space:normal;}
  :root body .gp-header .gp-nav .sub-menu a:hover{background:none;color:var(--ne-text);}
}

/* =========================================================================
   FOOTER - closing signature: mark + wordmark on one axis, a quiet index
   below, a colophon line. On the front page the footer follows Bookings
   without a rule; elsewhere a hairline separates it from page content.
   ========================================================================= */
:root body .gp-footer.gp-footer--ne{
  margin-top:0;padding:clamp(88px,9vw,144px) 0 0;
  background:var(--ne-bg);border-top:1px solid var(--ne-rule);
  color:var(--ne-text);
}
:root body.home .gp-footer.gp-footer--ne{border-top:0;}
:root body .gp-footer--ne > .gp-container{max-width:var(--ne-wrap);padding:0 var(--ne-gutter);}
.gp-footer--ne .ne-foot{display:grid;grid-template-columns:minmax(0,1fr);row-gap:clamp(48px,5vw,72px);align-items:start;}
.gp-footer--ne .ne-foot__mast{display:grid;grid-template-columns:104px minmax(0,1fr);align-items:center;}
.gp-footer--ne .ne-foot__mark{display:block;grid-column:1;}
.gp-footer--ne .ne-foot__mark img{display:block;width:clamp(44px,5vw,72px);height:auto;aspect-ratio:1;border-radius:50%;object-fit:cover;}
.gp-footer--ne .ne-foot__word{
  grid-column:2;justify-self:start;
  font-size:clamp(44px,7.4vw,112px);font-weight:500;line-height:.92;letter-spacing:-.042em;
  color:var(--ne-text);text-decoration:none;
}
.gp-footer--ne .ne-foot__word:hover{color:#fff;}
.gp-footer--ne .ne-foot__about{grid-column:2;margin:20px 0 0;font-size:15px;line-height:1.55;color:var(--ne-muted);max-width:44ch;}
.gp-footer--ne .ne-foot__cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding-left:104px;}
.gp-footer--ne .ne-foot__h{margin:0 0 12px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ne-muted);}
.gp-footer--ne .ne-foot__col ul{display:grid;gap:2px;margin:0;padding:0;list-style:none;}
.gp-footer--ne .ne-foot__col a{
  display:inline-flex;align-items:center;gap:6px;min-height:36px;
  font-size:15px;color:var(--ne-text-2);text-decoration:none;
  transition:color var(--ne-t-fast) var(--ne-ease);
}
.gp-footer--ne .ne-foot__col a:hover{color:var(--ne-text);}
.gp-footer--ne .ne-foot__colophon{
  display:flex;gap:10px 28px;flex-wrap:wrap;align-items:center;
  margin-top:clamp(56px,6vw,88px);padding:18px 0 28px;border-top:1px solid var(--ne-rule);
  font-size:12px;color:var(--ne-muted);
}
.gp-footer--ne .ne-foot__colophon small{font-size:12px;color:var(--ne-muted);}
.gp-footer--ne .ne-foot__colophon .gp-footer-email{margin-left:auto;font-size:12px;color:var(--ne-muted);}
@media (max-width:960px){
  .gp-footer--ne .ne-foot__mast{grid-template-columns:auto minmax(0,1fr);column-gap:20px;}
  .gp-footer--ne .ne-foot__about{grid-column:1 / -1;}
  .gp-footer--ne .ne-foot__cols{grid-template-columns:repeat(3,minmax(0,1fr));padding-left:0;}
}
@media (max-width:640px){
  .gp-footer--ne .ne-foot__word{font-size:clamp(40px,12vw,56px);}
  .gp-footer--ne .ne-foot__cols{grid-template-columns:1fr 1fr;}
  .gp-footer--ne .ne-foot__col:last-child{grid-column:1 / -1;}
  .gp-footer--ne .ne-foot__colophon .gp-footer-email{margin-left:0;}
}
