/* Montserrat = logo face. Newsreader = stand-in for Anthropic Serif (not publicly licensed). Times New Roman = system classic serif. */
/* cyrillic-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/montserrat-italic-cyrillic-ext.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/montserrat-italic-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/montserrat-italic-vietnamese.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/montserrat-italic-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: italic;
  font-weight: 400 600;
  font-display: swap;
  src: url("../fonts/montserrat-italic-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;
}
/* cyrillic-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("../fonts/montserrat-normal-cyrillic-ext.woff2") format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("../fonts/montserrat-normal-cyrillic.woff2") format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("../fonts/montserrat-normal-vietnamese.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("../fonts/montserrat-normal-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 300 800;
  font-display: swap;
  src: url("../fonts/montserrat-normal-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;
}
/* vietnamese */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/newsreader-italic-vietnamese.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/newsreader-italic-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: italic;
  font-weight: 300 500;
  font-display: swap;
  src: url("../fonts/newsreader-italic-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;
}
/* vietnamese */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url("../fonts/newsreader-normal-vietnamese.woff2") format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url("../fonts/newsreader-normal-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 300 600;
  font-display: swap;
  src: url("../fonts/newsreader-normal-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;
}


:root{
/* Navy — the brand. 800 is primary; 900 is the logo file navy. */
--navy-950:#0A1B30;--navy-900:#0F2A48;--navy-800:#1C2D4A;--navy-700:#2B3F61;--navy-600:#3E5379;--navy-500:#52688C;--navy-300:#9AA8BF;--navy-200:#C3CCDA;--navy-100:#DDE3EC;--navy-50:#EEF1F5;
/* Paper & stone — warm neutrals */
--white:#FFFFFF;--paper:#F6F4EF;--paper-2:#EDEAE2;--stone-300:#D6D1C6;--stone-500:#8C877C;--stone-700:#5B5850;--ink:#14161A;
/* Beacon — single accent, the lighthouse light. Use sparingly. */
--beacon-100:#F8EAD0;--beacon-300:#EEC57E;--beacon-500:#E3A43A;--beacon-600:#C7861F;--beacon-700:#9A6514;
/* Semantic bases */
--green-600:#2F6B4F;--green-100:#DCEBE3;--red-600:#A63A2E;--red-100:#F3DEDA;

/* Semantic aliases */
--color-primary:var(--navy-800);--color-primary-hover:var(--navy-900);--color-primary-press:var(--navy-950);
--color-accent:var(--beacon-500);--color-accent-hover:var(--beacon-600);
--surface-page:var(--paper);--surface-sunken:var(--paper-2);--surface-card:var(--white);--surface-inverse:var(--navy-800);--surface-inverse-deep:var(--navy-900);--surface-tint:var(--navy-50);
--text-body:var(--ink);--text-heading:var(--navy-800);--text-muted:var(--stone-700);--text-subtle:var(--stone-500);--text-on-inverse:var(--paper);--text-on-inverse-muted:var(--navy-200);--text-link:var(--navy-800);--text-accent:var(--beacon-700);
--border-hairline:rgba(28,45,74,.14);--border-default:rgba(28,45,74,.28);--border-strong:var(--navy-800);--border-on-inverse:rgba(246,244,239,.22);
--focus-ring:var(--beacon-500);
--status-success:var(--green-600);--status-success-bg:var(--green-100);--status-warning:var(--beacon-700);--status-warning-bg:var(--beacon-100);--status-danger:var(--red-600);--status-danger-bg:var(--red-100);--status-info:var(--navy-600);--status-info-bg:var(--navy-50);
}

:root{
--font-sans:'Montserrat',ui-sans-serif,system-ui,sans-serif;
--font-serif:'Newsreader','Anthropic Serif','Times New Roman',Times,serif;
--font-serif-classic:'Times New Roman',Times,'Newsreader',serif;
--font-display:var(--font-serif);--font-label:var(--font-sans);--font-body:var(--font-sans);--font-longform:var(--font-serif);

--fw-light:300;/* @kind font */--fw-regular:400;/* @kind font */--fw-medium:500;/* @kind font */--fw-semibold:600;/* @kind font */--fw-bold:700;/* @kind font */

--fs-display-xl:88px;--fs-display-l:64px;--fs-h1:48px;--fs-h2:36px;--fs-h3:26px;--fs-h4:20px;
--fs-body-l:19px;--fs-body:16px;--fs-small:14px;--fs-caption:12px;--fs-micro:11px;

--lh-tight:1.02;/* @kind font */--lh-heading:1.12;/* @kind font */--lh-snug:1.3;/* @kind font */--lh-body:1.6;/* @kind font */--lh-longform:1.7;/* @kind font */

--ls-display:-0.02em;/* @kind font */--ls-heading:-0.01em;/* @kind font */--ls-body:0;/* @kind font */--ls-label:0.14em;/* @kind font */--ls-eyebrow:0.24em;/* @kind font */--ls-wordmark:0.08em;/* @kind font */
}

:root{
--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;
--container-max:1200px;/* @kind spacing */--container-narrow:720px;/* @kind spacing */--gutter:24px;
--radius-0:0;--radius-1:2px;--radius-pill:999px;
--border-width-hairline:1px;/* @kind spacing */--border-width-frame:2px;/* @kind spacing */
--shadow-0:none;--shadow-1:0 1px 2px rgba(15,42,72,.08);--shadow-2:0 18px 40px -18px rgba(15,42,72,.35);--shadow-3:0 30px 60px -20px rgba(10,27,48,.45);
--ease-out:cubic-bezier(.2,.7,.2,1);/* @kind other */--ease-in-out:cubic-bezier(.6,0,.2,1);/* @kind other */--dur-fast:120ms;/* @kind other */--dur-base:200ms;/* @kind other */--dur-slow:360ms;/* @kind other */
--control-h-sm:32px;/* @kind spacing */--control-h-md:44px;/* @kind spacing */--control-h-lg:56px;/* @kind spacing */
}

*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased}
a{color:var(--text-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--beacon-700)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
::selection{background:var(--beacon-300);color:var(--navy-900)}


/* ---------- Responsive layout (phones and tablets) ---------- */
:root { --sec-y: 96px; }
@media (max-width: 900px) {
  .aspb-events-list > div { padding: 28px 0 !important; border-left: none !important; }
}
@media (max-width: 820px) {
  :root { --sec-y: 72px; }
  .aspb-stack { grid-template-columns: minmax(0, 1fr) !important; gap: 40px !important; }
}
@media (max-width: 640px) {
  :root { --sec-y: 56px; --gutter: 20px; }
  /* Menu on its own row so every link fits */
  header > div { height: auto !important; flex-wrap: wrap; row-gap: 14px !important; padding-top: 14px !important; padding-bottom: 12px !important; }
  header nav { margin-left: 0 !important; width: 100%; justify-content: space-between; gap: 8px !important; }
  .aspb-identity { grid-template-columns: minmax(0, 1fr) !important; gap: 24px !important; }
  .aspb-identity > div:last-child { width: 112px !important; height: 112px !important; order: -1; }
  .aspb-words { grid-template-columns: minmax(0, 1fr) !important; }
  .aspb-words > div { padding: 32px 0 0 !important; border-left: none !important; }
  .aspb-words > div + div { margin-top: 32px; border-top: 1px solid var(--border-on-inverse); }
}
@media (max-width: 520px) {
  .aspb-footer-grid { grid-template-columns: auto auto !important; justify-content: start !important; gap: 18px 40px !important; padding-top: 24px !important; }
  .aspb-footer-band { grid-column: 1 / -1; }
}

/* ---------- Animated link underlines ---------- */
.aspb-link {
  text-decoration: none !important;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 1px;
  padding-bottom: 1px;
  transition: background-size var(--dur-slow) var(--ease-out), color var(--dur-base) var(--ease-out);
}
.aspb-link:hover, .aspb-link:focus-visible, a:hover > .aspb-link, a:focus-visible > .aspb-link { background-size: 100% 1px; }
.aspb-navlink { position: relative; }
.aspb-navlink::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px;
  background: currentColor; transform: scaleX(0); transform-origin: left;
  transition: transform var(--dur-slow) var(--ease-out);
}
.aspb-navlink:hover::after, .aspb-navlink:focus-visible::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .aspb-link, .aspb-navlink::after { transition: none; } }
@media (max-width: 820px) { .aspb-stack > div[style*="justify-self"] { justify-self: stretch !important; max-width: none !important; } }

/* ---------- Next-page button (appears at the bottom of each page) ---------- */
.aspb-next {
  position: fixed; left: 24px; bottom: 20px; z-index: 31;
  display: inline-flex; align-items: center; gap: 10px; height: 40px; padding: 0 18px;
  border: 0; border-radius: 999px; cursor: pointer;
  background: var(--navy-800); color: var(--paper); box-shadow: 0 0 0 1px rgba(246,244,239,.25), var(--shadow-2);
  font: 600 11px/1 var(--font-sans); letter-spacing: .16em; text-transform: uppercase;
  opacity: 0; transform: translateY(12px); pointer-events: none;
  transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out), background var(--dur-base);
}
.aspb-next.is-on { opacity: 1; transform: none; pointer-events: auto; }
.aspb-next:hover { background: var(--navy-950); }
.aspb-next span { color: var(--beacon-300); }
@media (max-width: 640px) { .aspb-next { left: 16px; bottom: 14px; } }
@media (prefers-reduced-motion: reduce) { .aspb-next { transition: none; } }
/* Leave room at the very bottom for the next-page button */
.aspb-footer-bar { padding-bottom: 64px !important; }
.aspb-social { transition: background var(--dur-base), color var(--dur-base), border-color var(--dur-base); }
.aspb-social:hover, .aspb-social:focus-visible { background: var(--beacon-500); color: var(--navy-950) !important; border-color: var(--beacon-500) !important; }

/* ---------- Photo corner brackets ----------
   Gold L-shaped corners frame the hero and About photos. */
.aspb-frame {
  --c: var(--beacon-500); --l: 26px; --w: 2px;
  background:
    linear-gradient(var(--c), var(--c)) top left / var(--l) var(--w),
    linear-gradient(var(--c), var(--c)) top left / var(--w) var(--l),
    linear-gradient(var(--c), var(--c)) top right / var(--l) var(--w),
    linear-gradient(var(--c), var(--c)) top right / var(--w) var(--l),
    linear-gradient(var(--c), var(--c)) bottom left / var(--l) var(--w),
    linear-gradient(var(--c), var(--c)) bottom left / var(--w) var(--l),
    linear-gradient(var(--c), var(--c)) bottom right / var(--l) var(--w),
    linear-gradient(var(--c), var(--c)) bottom right / var(--w) var(--l);
  background-repeat: no-repeat;
}
.aspb-frame--light { --c: var(--beacon-300); }
@media (max-width: 640px) { .aspb-frame { --l: 20px; } }

/* ---------- Page fade-in ---------- */
@keyframes aspb-fade { from { opacity: 0; } to { opacity: 1; } }
.aspb-page { animation: aspb-fade 240ms var(--ease-out); }
/* Page change: whole-screen crossfade (View Transitions). Browsers without it keep the content fade and glide the header colours instead */
::view-transition-old(root), ::view-transition-new(root) { animation-duration: 450ms; animation-timing-function: var(--ease-in-out); }
@supports (view-transition-name: none) { .aspb-page { animation: none; } }
@supports not (view-transition-name: none) {
  .aspb-header, .aspb-header > div > a span, .aspb-header nav a { transition: background-color 400ms var(--ease-in-out), border-color 400ms var(--ease-in-out), color 400ms var(--ease-in-out); }
}

/* ---------- Event card photo hover ---------- */
.aspb-ev-media img { transition: transform 600ms var(--ease-out), filter 400ms var(--ease-out); }
.aspb-ev-card:focus-visible { outline-offset: 4px; }
.aspb-ev-card:focus-visible .aspb-ev-media img { transform: scale(1.04); filter: brightness(1.08); }
@media (hover: hover) {
  .aspb-ev-card:hover .aspb-ev-media img { transform: scale(1.04); filter: brightness(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .aspb-page { animation: none; }
  .aspb-header, .aspb-header * { transition: none !important; }
  .aspb-ev-media img { transition: none; }
  .aspb-ev-card:hover .aspb-ev-media img, .aspb-ev-card:focus-visible .aspb-ev-media img { transform: none; }
}

/* ---------- Home slideshow ---------- */
.aspb-hero-track { transition: transform 800ms var(--ease-in-out); will-change: transform; }
.aspb-dot { width: 8px; height: 8px; padding: 0; border-radius: 50%; border: 1px solid rgba(246,244,239,.85); background: rgba(10,27,48,.35); cursor: pointer; transition: background var(--dur-base), transform var(--dur-base); }
.aspb-dot.is-on { background: var(--beacon-300); border-color: var(--beacon-300); transform: scale(1.2); }
.aspb-dot:focus-visible { outline: 2px solid var(--beacon-300); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .aspb-hero-track { transition: none; } }

/* ---------- Instagram card fan (Events heading) ----------
   Placed absolutely so it uses the empty space and adds no height. */
.aspb-ig { position: absolute; right: var(--gutter); bottom: -30px; display: flex; flex-direction: column; align-items: center; gap: 14px; z-index: 2; }
.aspb-ig-label { display: inline-flex; align-items: center; gap: 6px; font: 600 10px/1 var(--font-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--navy-800); text-decoration: none; }
.aspb-hand { --w: 104px; --h: 160px; --s: 1; position: relative; width: calc(var(--w) + 110px); height: calc(var(--h) + 8px); }
.aspb-card { position: absolute; left: 50%; bottom: 0; width: var(--w); height: var(--h); margin-left: calc(var(--w) / -2); display: flex; flex-direction: column; background: #fff; text-decoration: none; border: 1px solid var(--border-hairline); box-shadow: 0 8px 18px -10px rgba(15,42,72,.35); transform-origin: 50% 120%; transform: translate(var(--x0), 0) rotate(var(--r0)); transition: transform 550ms var(--ease-out), box-shadow 350ms var(--ease-out); }
.aspb-card img { display: block; width: 100%; aspect-ratio: 3 / 4; flex: none; min-height: 0; object-fit: contain; background: #fff; }
.aspb-card-meta { display: flex; align-items: center; gap: 4px; padding: 6px 7px 7px; font: 600 8px/1 var(--font-sans); color: var(--navy-800); white-space: nowrap; }
.aspb-card:nth-child(1) { --x0: -4px; --r0: -4deg; z-index: 2; }
.aspb-card:nth-child(2) { --x0: 5px; --r0: 5deg; z-index: 1; }
.aspb-card:nth-child(3) { --x0: 1px; --r0: 1deg; z-index: 0; }
.aspb-hand.one .aspb-card:nth-child(1) { --x0: 0px; --r0: -3deg; }
.aspb-hand:hover .aspb-card:nth-child(1), .aspb-hand:focus-within .aspb-card:nth-child(1) { transform: translate(-46px, -6px) rotate(-13deg); }
.aspb-hand:hover .aspb-card:nth-child(2), .aspb-hand:focus-within .aspb-card:nth-child(2) { transform: translate(46px, -6px) rotate(13deg); }
.aspb-hand:hover .aspb-card:nth-child(3), .aspb-hand:focus-within .aspb-card:nth-child(3) { transform: translate(0, -10px); z-index: 3; }
.aspb-hand.one:hover .aspb-card:nth-child(1) { transform: translate(0, -8px) rotate(0deg); }
.aspb-hand .aspb-card:hover, .aspb-hand .aspb-card:focus-visible { z-index: 5 !important; box-shadow: 0 22px 40px -16px rgba(15,42,72,.5); }
.aspb-hand:hover .aspb-card:nth-child(1):hover, .aspb-hand .aspb-card:nth-child(1):focus-visible { transform: translate(-50px, -16px) rotate(-9deg) scale(1.06); }
.aspb-hand:hover .aspb-card:nth-child(2):hover, .aspb-hand .aspb-card:nth-child(2):focus-visible { transform: translate(50px, -16px) rotate(9deg) scale(1.06); }
.aspb-hand:hover .aspb-card:nth-child(3):hover, .aspb-hand .aspb-card:nth-child(3):focus-visible { transform: translate(0, -24px) scale(1.06); }
.aspb-hand.one .aspb-card:nth-child(1):hover { transform: translate(0, -14px) scale(1.06); }
@media (max-width: 760px) {
  .aspb-ig { bottom: 36px; gap: 10px; }
  .aspb-hand { --w: 66px; --h: 88px; width: calc(var(--w) + 64px); }
  .aspb-card-meta { display: none; }
}
@media (hover: none) {
  .aspb-hand .aspb-card:nth-child(1) { transform: translate(-28px, -2px) rotate(-10deg); }
  .aspb-hand .aspb-card:nth-child(2) { transform: translate(28px, -2px) rotate(10deg); }
  .aspb-hand .aspb-card:nth-child(3) { transform: translate(0, -8px); z-index: 3; }
  .aspb-hand.one .aspb-card:nth-child(1) { transform: rotate(-3deg); }
}
@media (prefers-reduced-motion: reduce) { .aspb-card { transition: none; } }

/* ---------- Book Us: package cards above the enquiry form ---------- */
.aspb-pk { background: var(--paper-2); }
.aspb-pk-in { max-width: var(--container-max); margin: 0 auto; padding: var(--sec-y) var(--gutter); }
.aspb-pk-top { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px 32px; flex-wrap: wrap; }
.aspb-pk-title { margin: 20px 0 0; font: 300 clamp(40px, 6vw, 64px)/1.04 var(--font-serif); letter-spacing: -.02em; color: var(--navy-800); text-wrap: balance; }
.aspb-pk-title em { font-style: italic; }
.aspb-pk-lede { margin: 20px 0 0; max-width: 520px; font: 400 18px/1.6 var(--font-sans); color: var(--text-muted); }
.aspb-pk-legend { display: flex; gap: 18px; flex-wrap: wrap; font: 600 10px/1 var(--font-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--text-muted); }
.aspb-pk-legend span { display: inline-flex; align-items: center; gap: 7px; }
.aspb-pk-dot { width: 12px; height: 12px; border-radius: 50%; flex: none; }
.aspb-pk-dot.p { background: var(--beacon-500); }
.aspb-pk-dot.s { background: var(--navy-800); }
.aspb-pk-dot.b { border: 2px solid var(--navy-800); }
.aspb-pk-dot.m { background: var(--stone-300); }
.aspb-pk-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; margin-top: 48px; }
.aspb-pk-card { min-width: 0; background: var(--white); border-top: 3px solid var(--navy-800); padding: 24px 20px 20px; display: flex; flex-direction: column; gap: 14px; box-shadow: var(--shadow-1); transition: transform var(--dur-slow) var(--ease-out), box-shadow var(--dur-slow) var(--ease-out); }
.aspb-pk-lineup { display: flex; flex-wrap: wrap; gap: 6px; min-height: 30px; align-content: flex-start; }
.aspb-pk-card h3 { margin: 0; font: 400 26px/1.1 var(--font-serif); color: var(--navy-800); }
.aspb-pk-who { margin-top: 8px; font: 600 10px/1.5 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--text-muted); }
.aspb-pk-good { border-top: 1px solid var(--border-hairline); padding-top: 14px; }
.aspb-pk-good b { display: block; margin-bottom: 8px; font: 600 10px/1 var(--font-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--text-accent); }
.aspb-pk-good p { margin: 0; font: 400 14px/1.5 var(--font-sans); color: var(--text-muted); }
.aspb-pk-enq { margin-top: auto; height: 44px; background: none; border: 1px solid var(--navy-800); color: var(--navy-800); font: 600 11px/1 var(--font-sans); letter-spacing: var(--ls-label); text-transform: uppercase; cursor: pointer; transition: background var(--dur-base), color var(--dur-base), border-color var(--dur-base); }
.aspb-pk-enq:hover { background: var(--navy-800); color: var(--paper); }
.aspb-pk-card.is-feature { background: var(--navy-800); border-top-color: var(--beacon-500); }
.aspb-pk-card.is-feature h3 { color: var(--paper); }
.aspb-pk-card.is-feature .aspb-pk-who, .aspb-pk-card.is-feature .aspb-pk-good p { color: var(--navy-200); }
.aspb-pk-card.is-feature .aspb-pk-good { border-color: var(--border-on-inverse); }
.aspb-pk-card.is-feature .aspb-pk-good b { color: var(--beacon-300); }
.aspb-pk-card.is-feature .aspb-pk-dot.s { background: var(--paper); }
.aspb-pk-card.is-feature .aspb-pk-dot.b { border-color: var(--paper); }
.aspb-pk-card.is-feature .aspb-pk-dot.m { background: var(--navy-600); }
.aspb-pk-card.is-feature .aspb-pk-enq { background: var(--beacon-500); border-color: var(--beacon-500); color: var(--navy-950); }
.aspb-pk-card.is-feature .aspb-pk-enq:hover { background: var(--beacon-300); border-color: var(--beacon-300); }
.aspb-pk-other { margin-top: 14px; display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; flex-wrap: wrap; padding: 20px 24px; border: 1px dashed var(--border-default); }
.aspb-pk-other > div { min-width: 0; }
.aspb-pk-other h3 { margin: 0; font: 400 22px/1.2 var(--font-serif); color: var(--navy-800); }
.aspb-pk-other p { margin: 4px 0 0; font: 400 14px/1.5 var(--font-sans); color: var(--text-muted); }
.aspb-pk-other button { background: none; border: 0; border-bottom: 1px solid var(--beacon-500); padding: 0 0 4px; font: 600 11px/1 var(--font-sans); letter-spacing: var(--ls-label); text-transform: uppercase; color: var(--navy-800); cursor: pointer; white-space: nowrap; }
.aspb-pk-flag { display: inline-block; margin-left: 6px; vertical-align: 2px; padding: 4px 6px; font: 600 9px/1 var(--font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--beacon-700); background: var(--beacon-100); white-space: nowrap; }
.aspb-book-panel { scroll-margin-top: 120px; }
.aspb-book-panel.is-flash { animation: aspb-flash 900ms var(--ease-out); }
@keyframes aspb-flash { from { box-shadow: 0 0 0 0 rgba(227,164,58,.9); } to { box-shadow: 0 0 0 14px rgba(227,164,58,0); } }
@media (hover: hover) { .aspb-pk-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-2); } }
@media (max-width: 1100px) { .aspb-pk-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); } .aspb-pk-card.is-feature { grid-column: span 2; } }
@media (max-width: 640px) { .aspb-pk-cards { grid-template-columns: 1fr; gap: 12px; } .aspb-pk-card.is-feature { grid-column: auto; } }
@media (prefers-reduced-motion: reduce) { .aspb-pk-card, .aspb-pk-enq { transition: none; } .aspb-pk-card:hover { transform: none; } .aspb-book-panel.is-flash { animation: none; } }
