/* navigation.css */
/* JAMVIBES V44 — moved without changing V43 declarations. */
.composition__hotspots { position:absolute; inset:0; pointer-events:none; }
.hotspot { position:absolute; display:block; appearance:none; background:transparent; border:0; padding:0; margin:0; cursor:pointer; pointer-events:auto; touch-action:manipulation; color:transparent; overflow:hidden; }
.hotspot:focus-visible { outline:2px solid #ffc468; outline-offset:2px; background:rgba(239,123,61,.11); border-radius:4px; z-index:8; }
.hotspot:hover:not(:focus-visible) { background:rgba(255,190,91,.055); }


/* dialogs.css */
/* JAMVIBES V43 — isolated panel/dialogue presentation. Values unchanged from V42. */
.dialog { color:var(--ivory); border:1px solid #9b6950; border-radius:12px; max-width:min(660px,92vw); width:620px; max-height:min(85dvh,850px); background:linear-gradient(155deg,#281222,#120b16 74%); box-shadow:0 28px 90px #000b; padding:0; }
.dialog::backdrop { background:rgba(3,2,5,.78); backdrop-filter:blur(5px); }
.dialog__inner { padding:clamp(23px,4vw,42px); }
.dialog__close { font:24px "Trebuchet MS",sans-serif; border:1px solid #93674f; background:#23151c; border-radius:50%; cursor:pointer; color:white; width:40px; height:40px; float:right; }
.dialog__close:hover { background:#563124; }
.dialog__eyebrow { color:#f99954; font:700 11px "Trebuchet MS",sans-serif; letter-spacing:.22em; text-transform:uppercase; }
.dialog h2 { font-size:clamp(24px,4vw,40px); font-style:italic; font-weight:400; margin:14px 0 18px; }
.dialog p { line-height:1.6; font-size:16px; }
.dialog a, .dialog button { color:inherit; }
.dialog .action { display:inline-block; border:1px solid #ee8a6c; background:#cf5653; color:white; text-decoration:none; font:600 14px "Trebuchet MS",sans-serif; padding:12px 18px; border-radius:999px; margin:8px 8px 0 0; cursor:pointer; }
.dialog .action--subtle { background:none; }
.dialog .error { color:#ffc2b3; }
.dialog .query { font:16px "Trebuchet MS",sans-serif; width:100%; border-radius:8px; padding:12px; background:#f4e6d7; color:#241822; border:0; }
.dialog .video-wrap { width:100%; aspect-ratio:16 / 9; background:#000; }
.dialog .video-wrap video { width:100%; height:100%; display:block; object-fit:contain; }

@media (max-width:600px) { .dialog { width:96vw; max-height:90dvh; } }


/* stage.css */
/* JAMVIBES V36 — autonomous interactive picture-window surface. */
.stage-region {
  position: absolute;
  z-index: 16;
  pointer-events: none;
  overflow: visible;
}
.stage-region__trigger {
  position: absolute;
  inset: 0;
  border: 0;
  margin: 0;
  padding: 0;
  background: transparent;
  color: transparent;
  font-size: 0;
  pointer-events: auto;
  cursor: pointer;
  touch-action: manipulation;
}
.stage-region__trigger:hover:not(:focus-visible) { background: rgba(255,190,91,.05); }
.stage-region__trigger:focus-visible {
  outline: 2px solid #ffc468;
  outline-offset: -3px;
  background: rgba(255,190,91,.10);
}
.stage-region--playing .stage-region__trigger { display: none; }
.stage-region > .real-player:not([hidden]) {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  pointer-events: auto;
}


/* menu.css */
/* JAMVIBES V49 — Corbel approved as final font for the navigation. */
:root {
  --menu-font: "Corbel", "Candara", "Tahoma", "Trebuchet MS", Arial, sans-serif;
  --menu-text-colour: #f8e9dc;
  --menu-font-size-desktop: clamp(12px, 0.96cqw, 15px);
  --menu-font-size-tablet: clamp(11px, 1.43cqw, 14px);
  --menu-font-weight: 400;
  --menu-letter-spacing: 0.025em;
}
.composition__header { container-type:inline-size; }
.composition__header-art { user-select:none; pointer-events:none; }
.composition__menu { z-index:4; }
/* Approved upright Corbel lettering, with a restrained vertical marker.
   No SVG glyphs before text, no red moving underline. */
.menu-control {font-family:var(--menu-font);font-weight:var(--menu-font-weight);letter-spacing:var(--menu-letter-spacing);color:var(--menu-text-colour);font-size:var(--menu-font-size-desktop);line-height:1.25;text-shadow:0 1px 3px #000a;overflow:visible;}
.menu-control--label {display:flex;align-items:center;justify-content:center;white-space:nowrap;gap:7px;font-family:var(--menu-font);font-style:normal;font-weight:400;user-select:text!important;-webkit-user-select:text!important;cursor:pointer;text-decoration:none;touch-action:auto;-webkit-user-drag:none;overflow:hidden;}
.menu-control--label::before {content:"";width:1px;height:13px;flex:0 0 1px;background:rgba(244,198,161,.68);box-shadow:0 0 3px rgba(0,0,0,.22);pointer-events:none;transition:background-color .18s ease;}
.menu-control--label:hover::before,.menu-control--label:focus-visible::before,.menu-control--selected::before {background:#f5c6a3;}
.menu-control--label:hover:not(:focus-visible){color:#fff4e6;background:transparent;}
/* A fixed-width label slot prevents wider fallback fonts from changing the
   approved button geometry or colliding with adjacent menu entries.  Actual
   glyphs still differ between font families; their optical height/fit is
   restrained in menu.js without stretching the Corbel design. */
.menu-control__text {display:block;flex:1;min-width:0;max-width:100%;white-space:nowrap;text-align:center;line-height:1.15;user-select:text;-webkit-user-select:text;}
.menu-control--label::after {content:none!important;}
.menu-control--icon {font-size:0;}
/* Keep necessary Search and Menu controls on desktop/tablet/mobile. */
.menu-control--search::before {content:"";position:absolute;width:28%;height:28%;border:2px solid #f7e8dd;border-radius:50%;left:31%;top:29%;}
.menu-control--search::after {content:"";position:absolute;width:23%;height:2px;background:#f7e8dd;transform:rotate(49deg);left:54%;top:66%;border-radius:2px;}
.menu-control--menu::before {content:"";position:absolute;width:38%;height:22%;border-top:2px solid #f7e8dd;border-bottom:2px solid #f7e8dd;left:31%;top:37%;}
.menu-control--menu::after {content:"";position:absolute;width:38%;height:2px;background:#f7e8dd;left:31%;top:48%;}
.composition--tablet .menu-control--label {font-size:var(--menu-font-size-tablet);gap:7px;}
.composition--tablet .menu-control--label::before {height:13px;}
.composition--mobile .menu-control--menu::before,.composition--mobile .menu-control--menu::after {border-width:3px;height:3px;}
.composition--mobile .menu-control--menu::before {height:23%;}
@media(prefers-reduced-motion:reduce){.menu-control--label::before{transition:none;}}



/* header-info.css */
/* JAMVIBES V48 — Isolated header information. Original positions and styles retained.
   The logos stay in their approved independent HTML image links; header info is
   editable without accessing the menu component or the original raster images. */
:root {
  --tagline-font: "Trebuchet MS", Arial, sans-serif;
  --tagline-size-desktop: .553cqw;
  --tagline-size-tablet: 1.026cqw;
  --tagline-size-mobile: 1.399cqw;
  --tagline-letter-spacing: .24em;
 }
.header-brand { position:absolute; display:block; z-index:3; line-height:0; }
.header-brand img { display:block; width:100%; height:100%; }
.header-brand:focus-visible { outline:2px solid #f8be7f; outline-offset:-4px; }
.header-brand--desktop { left:7.94199%;top:0;width:15.12431%;height:100%; }
.header-brand--tablet { left:31.69231%;top:20%;width:40.71795%;height:45.26316%; }
.header-brand--mobile { left:26.57343%;top:9.09091%;width:45.31469%;height:72.72727%; }
.header-tagline { position:absolute; z-index:3; margin:0; color:#ebded2; line-height:1; white-space:nowrap; font-family:var(--tagline-font); font-weight:600; letter-spacing:var(--tagline-letter-spacing); text-align:center; }
.header-tagline--desktop { left:26.60%; top:46%; width:30.7%; font-size:var(--tagline-size-desktop); }
.header-tagline--tablet { left:34.25%; top:65.7%; width:33.20%; font-size:var(--tagline-size-tablet); }
.header-tagline--mobile { left:29.1%; top:85.5%; width:43.0%; font-size:var(--tagline-size-mobile); }

/* Decorative date in the original tablet header. */
.tablet-status-date{position:absolute;top:5.8%;left:8.6%;font:400 1.36cqw/1 'Trebuchet MS',Arial,sans-serif;color:#f4f0ee;white-space:nowrap;pointer-events:none;}


/* hero.css */
/* JAMVIBES V42 — shared visual styling of the isolated hero component.
   Exact responsive coordinates are centralized in js/hero-layout.js. */
.composition { container-type: inline-size; }
.hero-edit { position:absolute; inset:0; z-index:5; pointer-events:none; }
.hero-edit__title, .hero-edit__description, .hero-edit__button, .hero-edit__stroke {position:absolute; margin:0;}
/* Text is actual HTML and must accept mouse dragging and copying; the
   decorative overlay stays click-through everywhere else. */
.hero-edit__title, .hero-edit__description { pointer-events:auto; user-select:text; -webkit-user-select:text; cursor:text; }
.hero-edit__title::selection, .hero-edit__description::selection {background:#ef8e6e99;color:#fff;}
.hero-edit__title { white-space:pre-line; font-family:Georgia,'Times New Roman',serif; font-style:italic; font-weight:400; letter-spacing:-.045em; line-height:.95; color:#ffefdc; text-shadow:0 2px 8px #0009; }
.hero-edit__description {font-family:Georgia,'Times New Roman',serif; font-weight:400; color:#f8e9dd; line-height:1.22; text-shadow:0 1px 6px #000c;}
.hero-edit__stroke {height:4px; background:linear-gradient(96deg,#fa6d68 0%,#ef6e67 68%,transparent 100%); border-radius:100%; transform:rotate(-3deg); box-shadow:0 0 5px #be324885;}
.hero-edit__button {pointer-events:auto; cursor:pointer; display:flex; gap:0; align-items:center; justify-content:space-evenly; padding:0 9px; color:white; font-family:Georgia,'Times New Roman',serif; font-weight:600; text-decoration:none; border:0; border-radius:999px; background:linear-gradient(110deg,#ff554f,#e75154); box-shadow:0 4px 12px #440d2380, inset 0 1px 2px #ffb5a066;}
.hero-edit__button:hover{filter:brightness(1.05)}
.hero-edit__button:focus-visible{outline:2px solid #fff2c5; outline-offset:3px;}
.hero-edit__play {width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:12px solid #fff; flex:none;}
.hero-edit__arrow {font:400 1.25em Arial,sans-serif;flex:none;}
.composition--mobile .hero-edit__play {border-top-width:9px;border-bottom-width:9px;border-left-width:13px;}
@media(prefers-reduced-motion: reduce){.hero-edit__button{transition:none}}




/* sessions.css */
/* V8: isolated session cards ONLY. All coordinates measured against the approved V7 bitmap.
 * This independent layer replaces only the three photographic cards and printed card metadata.
 * Modify typography here and the content in js/sessions-config.js. */
.session-cards {position:absolute;inset:0;z-index:6;pointer-events:none;}
.session-card {position:absolute;pointer-events:none;color:#ffebd9;}
.session-card__cover {position:absolute;top:0;left:0;width:100%;height:var(--thumb-height);border:0;padding:0;margin:0;overflow:hidden;display:block;cursor:pointer;background:#16091a;border-radius:3.1%;pointer-events:auto;box-shadow:none;}
.session-card__image {display:block;width:100%;height:100%;object-fit:fill;}
.session-card__cover:hover .session-card__image {filter:brightness(1.06);}
.session-card__cover:focus-visible{outline:2px solid #f3b96a;outline-offset:3px;}
.session-card__play {position:absolute;bottom:8%;left:4.3%;width:10.5%;aspect-ratio:1;border:1.7px solid #fff;border-radius:50%;display:grid;place-items:center;background:#120e1a99;box-shadow:0 0 3px #0009;}
.session-card__play::after {content:"";width:0;height:0;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:8px solid white;margin-left:2px;}
.session-card__duration {position:absolute;right:2.6%;bottom:5%;padding:.12em .25em .1em;border-radius:.25em;background:#130d19e8;color:#fff;font:700 .85cqw/1.15 Arial, sans-serif;text-shadow:0 1px 2px #0009;}
.session-card__details{position:absolute;top:calc(var(--thumb-height) + 3%);left:3%;right:-1%;pointer-events:none;}
.session-card__title,.session-card__genre,.session-card__date {position:relative;margin:0;pointer-events:auto;user-select:text;-webkit-user-select:text;cursor:text;}
.session-card__title {font:400 1.22cqw/1.13 Georgia,'Times New Roman',serif;letter-spacing:-.025em;color:#fff0e2;white-space:nowrap;}
.session-card__genre {font:400 .89cqw/1.22 Georgia,'Times New Roman',serif;color:#eed7d1;white-space:nowrap;letter-spacing:-.015em;}
.session-card__date{display:flex;align-items:center;gap:.55em;font:400 .88cqw/1.24 Georgia,'Times New Roman',serif;color:#e5cdc2;white-space:nowrap;margin-top:.32em;}
.session-card__calendar{flex:none;width:1.05em;height:1.05em;border:1.4px solid #ead3b6;border-radius:1px;position:relative;}
.session-card__calendar::before{content:"";position:absolute;top:24%;left:0;right:0;border-top:1.2px solid #ead3b6;}
.session-card__calendar::after{content:"";position:absolute;left:20%;top:-22%;width:50%;height:36%;border-left:1.3px solid #ead3b6;border-right:1.3px solid #ead3b6;}
.session-card ::selection {background:#d46b8799;color:white;}
.composition--tablet .session-card__title {font-size:1.80cqw;}
.composition--tablet .session-card__genre {font-size:1.33cqw;}
.composition--tablet .session-card__date {font-size:1.32cqw;}
.composition--tablet .session-card__duration {font-size:1.14cqw;}
.composition--tablet .session-card__play{width:10.1%;bottom:7%;left:4.7%;}
.composition--mobile .session-card__title {font-size:clamp(10px,2.78cqw,18px);}
.composition--mobile .session-card__genre {font-size:clamp(7.5px,2.05cqw,13px);}
.composition--mobile .session-card__date {font-size:clamp(7.5px,2.08cqw,13px);}
.composition--mobile .session-card__duration {font-size:clamp(8px,1.9cqw,12px);}
.composition--mobile .session-card__play{width:13%;bottom:6%;left:5%;}
.composition--mobile .session-card__details{top:calc(var(--thumb-height) + 3%);}
@media(prefers-reduced-motion:reduce){.session-card__image{transition:none;}}

/* V15 — restrained editorial typography; no layout or image changes.
   Metadata cannot escape its own card on narrow viewports. */
.session-card__details {right:0;}
.session-card__title,.session-card__genre,.session-card__date {max-width:100%;overflow:hidden;text-overflow:ellipsis;}
.session-card__title {font-weight:400;}
.session-card__genre {color:#e5d0cd;}
.session-card__date {color:#d8c2ba;margin-top:.27em;}


/* events.css */
/* JAMVIBES V8.4 — calendar refinement, isolated from the approved page.
   Each date / title / description is independently editable and selectable.
   Safe content width reserves the bell artwork; no element can overlap it. */
.composition { container-type:inline-size; }
.event-list { position:absolute; inset:0; z-index:5; pointer-events:none; overflow:hidden; }
.event-entry { position:absolute; pointer-events:none; }
.event-entry__link { position:relative; display:block; width:100%; height:100%;
  color:#f8e8d9; text-decoration:none; pointer-events:auto; cursor:pointer;
  user-select:text; -webkit-user-select:text; }
.event-entry__link:focus-visible { outline:2px solid #f8ae79; outline-offset:1px; }

/* Date card hides the old printed outline and introduces a coherent grid. */
.event-entry__date {
 position:absolute; left:-.12cqw; top:50%; transform:translateY(-50%);
 width:4.77cqw; height:4.51cqw; min-width:0;
 display:grid; grid-template-rows:1fr 2.1fr 1fr; align-items:center; justify-items:center;
 padding:.27cqw .2cqw .32cqw; margin:0;
 color:#ffead7; font-style:normal; text-align:center;
 border:1px solid rgba(232,172,124,.74); border-radius:.48cqw;
 background:linear-gradient(150deg,#2c1723 0%,#1b0d18 90%);
 box-shadow:0 0 0 2px rgba(27,10,22,.95), inset 0 0 0 1px rgba(255,208,160,.11);
 white-space:nowrap;
}
.event-entry__weekday, .event-entry__month {
 font:600 .68cqw/1.0 "Trebuchet MS",Arial,sans-serif;
 letter-spacing:.1em; text-transform:uppercase; color:#dcbda9;
}
.event-entry__day {
 font:400 1.85cqw/.98 Georgia,'Times New Roman',serif;
 letter-spacing:-.035em; color:#fff0de;
}
.event-entry__words {
 position:absolute; top:50%; transform:translateY(-50%);
 left:5.77cqw; right:4.15cqw;
 display:flex; flex-direction:column; gap:.28cqw; min-width:0;
 overflow:hidden;
}
.event-entry__title {
 display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;
 color:#f8e5d3; font:500 1.05cqw/1.17 'Trebuchet MS',Arial,Arial,sans-serif;
 letter-spacing:.004em;
}
.event-entry__summary {
 display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2;
 line-clamp:2; overflow:hidden; overflow-wrap:break-word;
 font:400 .80cqw/1.3 "Trebuchet MS",Arial,sans-serif;
 color:#bbaab1; letter-spacing:.004em;
}
.event-entry__link:hover .event-entry__title,
.event-entry__link:focus-visible .event-entry__title {color:#ffb998;}

/* Tablet artwork has a full-width event list and slightly taller date cards. */
.composition--tablet .event-entry__date {
 left:-.15cqw; width:7.40cqw; height:6.55cqw;
 padding:.32cqw .2cqw .38cqw; border-radius:.65cqw;
}
.composition--tablet .event-entry__weekday,
.composition--tablet .event-entry__month {font-size:1.05cqw;}
.composition--tablet .event-entry__day {font-size:2.66cqw;}
.composition--tablet .event-entry__words {left:9.1cqw; right:6.5cqw; gap:.38cqw;}
.composition--tablet .event-entry__title {font-size:1.64cqw;}
.composition--tablet .event-entry__summary {font-size:1.28cqw;}

/* The phone mock-up itself scales down; keep text legible and contained. */
.composition--mobile .event-entry__date {
 left:-.30cqw; width:11.35cqw; height:10.50cqw;
 border-radius:1.0cqw; padding:.53cqw .25cqw .65cqw;
}
.composition--mobile .event-entry__weekday,
.composition--mobile .event-entry__month {font-size:clamp(7px,1.78cqw,11px);}
.composition--mobile .event-entry__day {font-size:clamp(13px,3.65cqw,25px);}
.composition--mobile .event-entry__words {left:13.5cqw; right:9.2cqw; gap:.6cqw;}
.composition--mobile .event-entry__title {font-size:clamp(11px,2.80cqw,19px);}
.composition--mobile .event-entry__summary {font-size:clamp(9px,1.96cqw,14px);}

@media (prefers-reduced-motion:reduce) { .event-entry__link { transition:none; } }

/* Badges are independent of the former raster outlines (removed only inside
   the three date slots in each asset). Keep them entirely within the page. */
.composition--tablet .event-entry__date { height:min(6.35cqw, 98%); }
.composition--mobile .event-entry__date { height:min(8.8cqw, 98%); }

/* Final compact sizing: all three badges fit including the shorter last row. */
.composition--tablet .event-entry__date {
  width:6.45cqw; height:5.34cqw; left:-.1cqw;
  padding:.24cqw .15cqw .29cqw;
}
.composition--tablet .event-entry__weekday,
.composition--tablet .event-entry__month {font-size:.93cqw;}
.composition--tablet .event-entry__day {font-size:2.33cqw;}
.composition--tablet .event-entry__words {left:8.15cqw;}
.composition--mobile .event-entry__date {padding:.25cqw .15cqw .35cqw;}
.composition--mobile .event-entry__weekday,
.composition--mobile .event-entry__month {font-size:clamp(6px,1.70cqw,11px);}
.composition--mobile .event-entry__day {font-size:clamp(11px,3.36cqw,23px);}

/* On compact phones the second line is ellipsized rather than being pushed
   outside the short last row of the approved mobile artwork. */
.composition--mobile .event-entry__summary {
 display:block; white-space:nowrap; text-overflow:ellipsis;
}


/* art-copy.css */

/* V10 — ONLY independently editable English artwork headings and community ribbon copy. */
.art-copy {position:absolute;z-index:5;display:flex;align-items:center;margin:0;pointer-events:none;white-space:nowrap;color:#fce9d7;text-shadow:0 1px 4px #0008;}
.art-copy--featured,.art-copy--events {font:italic 400 1.51cqw/1.18 Georgia,'Times New Roman',serif;letter-spacing:-.035em;}
.art-copy--archive,.art-copy--all-events {pointer-events:auto;cursor:pointer;justify-content:flex-end;gap:12px;color:#ff7953;text-decoration:none;font:600 1.04cqw/1.1 Georgia,'Times New Roman',serif;}
.art-copy--archive:hover,.art-copy--all-events:hover {color:#ffc8a0;}
.art-copy a,.art-copy:focus-visible {outline-color:#ffa879;}
.art-copy--archive span,.art-copy--all-events span {font:400 1.3em/1 Arial,sans-serif;}
.composition--tablet .art-copy--featured,.composition--tablet .art-copy--events {font-size:2.50cqw;}
.composition--tablet .art-copy--archive,.composition--tablet .art-copy--all-events {font-size:1.47cqw;gap:10px;}
.composition--mobile .art-copy--featured,.composition--mobile .art-copy--events {font-size:3.70cqw;}
.composition--mobile .art-copy--archive,.composition--mobile .art-copy--all-events {font-size:2.16cqw;gap:6px;}
.club-band__static {position:absolute;inset:0;z-index:2;pointer-events:none;transition:opacity .35s ease;}
.club-band__static-title,.club-band__static-tagline {position:absolute;left:29%;right:3%;margin:0;text-align:center;white-space:nowrap;}
.club-band__static-title {top:12%;font:italic 400 1.86cqw/1.1 Georgia,'Times New Roman',serif;color:#ffe8db;text-shadow:0 1px 3px #0009;}
.club-band__static-tagline {top:77%;font:600 .69cqw/1 "Trebuchet MS",Arial,sans-serif;letter-spacing:.20em;color:#eee3dc;}
.composition--messages-visible .club-band__static {opacity:0;}
.composition--tablet .club-band__static-title {top:7%;font-size:2.80cqw;}
.composition--tablet .club-band__static-tagline {top:71%;font-size:.84cqw;letter-spacing:.19em;}
.composition--mobile .club-band__static-title {left:29%;right:3%;top:12%;font-size:3.62cqw;letter-spacing:-.03em;}
.composition--mobile .club-band__static-tagline {left:20%;right:5%;top:74%;font-size:1.06cqw;letter-spacing:.14em;}
@media(prefers-reduced-motion:reduce){.club-band__static{transition:none;}}
/* All newly separated titles remain selectable, matching the project's HTML text policy. */
.art-copy--featured,.art-copy--events {pointer-events:auto;user-select:text;-webkit-user-select:text;cursor:text;}
.club-band__static-title,.club-band__static-tagline {pointer-events:auto;user-select:text;-webkit-user-select:text;cursor:text;}
.composition--messages-visible .club-band__static-title,.composition--messages-visible .club-band__static-tagline {pointer-events:none;}

/* V12: centre title and tagline as one typographic group in the approved ribbon.
   Desktop centres on the full ribbon; smaller screens reserve room for the wave. */
.club-band__static {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;}
.composition .club-band__static-title,
.composition .club-band__static-tagline {position:static;top:auto;left:auto;right:auto;width:100%;}
.composition--tablet .club-band__static {padding-left:10%;}
.composition--mobile .club-band__static {padding-left:20%;gap:4px;}

/* V14 — Measured alignment against the ORIGINAL RASTER ribbon.
   Visual ribbon: approximately y=671..758 in the 1448x1086 composition.
   Interactive ribbon box: y=671..737 (shorter than the artwork by ~21px).
   Move ONLY the desktop static text down by half that difference (10.6px
   at native width); keep its horizontal centre at the true 50% axis.
   This does not reposition the message ticker, pen button, or any image. */
.composition--desktop .club-band__static {
  transform: translateY(.73cqw);
}

/* V15 — section headings yield prominence to the imagery, consistently. */
.art-copy--featured,.art-copy--events {font-weight:400;}


/* band.css */
/* V35: approved 1670x70 PNG used verbatim; shift only Voices from the Club title down by 5px. */
/* JAMVIBES V28 — restored original 12s / 18s alternating ticker.
   Exact 70px containing element on all compositions.  Only band styling changes. */
.club-band {
  position:absolute;left:0;width:100%;height:70px;
  box-sizing:border-box;z-index:7;overflow:hidden;pointer-events:none;
  background-color:#1f1018;
  background-image:url('../assets/club-band-approved.png');
  background-repeat:no-repeat;
  background-position:center center;
  background-size:auto; /* Original 1670 × 70 PNG at native scale: centered, with horizontal clipping only. */
  border-top:1px solid rgba(0,0,0,.80);
  border-bottom:1px solid rgba(0,0,0,.80);
}
.composition--desktop .club-band {top:62.523900574%;}
.composition--tablet .club-band {top:52.999240699%;}
.composition--mobile .club-band {top:52.282157676%;}
.club-band::before {content:none;}
/* Static mode: entire copy centered together, the original font families. */
.composition .club-band__static {
  position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;
  justify-content:center;align-items:center;gap:9px;
  padding:0 8px;margin:0;transform:none;opacity:1;
  background:transparent;transition:opacity .24s ease;pointer-events:none;
}
.composition .club-band__static-title, .composition .club-band__static-tagline {
  position:static;inset:auto;display:block;width:auto;height:auto;max-width:100%;
  margin:0;padding:0;transform:none;text-align:center;white-space:nowrap;
  text-shadow:0 1px 3px rgba(0,0,0,.72);pointer-events:none;
}
.composition .club-band__static-title {
  color:#ffe8db;font:italic 400 clamp(11px,1.20cqw,18px)/1.12 Georgia,'Times New Roman',serif;
}
.composition .club-band__static-tagline {
  color:#eee3dc;font:600 clamp(7px,.61cqw,10px)/1.1 'Trebuchet MS',Arial,sans-serif;
  letter-spacing:.115em;
}
.composition--tablet .club-band__static-title {font-size:clamp(11px,1.55cqw,16px);}
.composition--tablet .club-band__static-tagline {font-size:clamp(7px,.78cqw,9px);letter-spacing:.08em;}
.composition--mobile .club-band__static-title {font-size:clamp(10px,2.7cqw,14px);}
.composition--mobile .club-band__static-tagline {font-size:clamp(6px,1.35cqw,8px);letter-spacing:.03em;}
/* Switch exactly one of the two modes into view. */
.composition--messages-visible .club-band__static {opacity:0;visibility:hidden;}
.club-band__messages {
  position:absolute;inset:0;z-index:3;opacity:0;visibility:hidden;
  overflow:hidden;background:transparent;pointer-events:none;
  transition:opacity .24s ease,visibility 0s linear .24s;
}
.club-band--messages .club-band__messages {opacity:1;visibility:visible;transition:opacity .24s ease,visibility 0s;}
.club-band__eyebrow {
  position:absolute;left:0;right:0;top:15px;height:18px;
  margin:0;display:flex;align-items:center;justify-content:center;
  white-space:nowrap;text-align:center;color:#ffe8db;
  font:italic 400 clamp(10px,1.04cqw,15px)/1.12 Georgia,'Times New Roman',serif;
  text-shadow:0 1px 3px rgba(0,0,0,.74);
}
/* Keep the scrolling messages within 35px of each outer edge of the 70px band.
   This is a clipping boundary, not a change to the approved background or title. */
.club-band__viewport {
  position:absolute;left:35px;right:35px;top:36px;height:24px;
  display:flex;align-items:center;overflow:hidden;white-space:nowrap;
  background:transparent; /* crisp clip exactly 35px from either edge */
}
.club-band__track {display:flex;align-items:center;gap:28px;width:max-content;will-change:transform;
  animation:club-band-ticker var(--ticker-time,23s) linear infinite;}
.club-band__group {display:flex;align-items:center;gap:28px;flex:none;white-space:nowrap;}
.club-band__entry {display:inline-flex;align-items:baseline;gap:.35em;flex:none;
  font:400 clamp(11px,.91cqw,14px)/1.1 Georgia,'Times New Roman',serif;
  color:#ffe7d7;text-shadow:0 1px 3px #000c;}
.club-band__name {color:#ffbd9b;font-weight:700;}
.club-band__divider {color:#d68aae;font-size:.85em;margin-left:.18em;}
.club-band__track {animation-play-state:paused;}
.club-band--messages .club-band__track {animation-play-state:running;}
@keyframes club-band-ticker {from{transform:translateX(0)}to{transform:translateX(calc(-1 * var(--loop-width,0px)))}}
.composition--tablet .club-band__entry {font-size:clamp(10px,1.20cqw,13px);}
.composition--mobile .club-band__eyebrow {top:15px;height:18px;font-size:clamp(9px,2.1cqw,13px);}
.composition--mobile .club-band__entry {font-size:clamp(9px,1.78cqw,12px);}
/* Original small write button, available in both modes. */
.club-band__write {position:absolute;right:1%;top:calc(50% - 11px);z-index:6;
  width:22px;height:22px;display:grid;place-items:center;border-radius:50%;padding:0;
  border:1px solid #e4b09685;color:#ffddc9;background:#281723bb;opacity:.75;
  pointer-events:auto;cursor:pointer;}
.club-band__write:hover {opacity:1;background:#663342;}
.club-band__write:focus-visible {outline:2px solid #ffd7a5;outline-offset:2px;}
.club-band__pencil {display:block;width:9px;height:3px;border:1.2px solid currentColor;
  border-radius:1px;transform:rotate(-42deg);position:relative;box-sizing:border-box;}
.club-band__pencil::after {content:'';position:absolute;right:-3px;top:-1.2px;width:3px;height:3px;
  border-top:1.2px solid currentColor;border-right:1.2px solid currentColor;transform:rotate(45deg);}

/* Dialog restored from V18. */
.band-dialog {color:#f9e6d9;background:linear-gradient(145deg,#251324,#100c14);border:1px solid #b66c62;border-radius:13px;box-shadow:0 30px 90px #08030abf;width:min(430px,94vw);padding:0;max-height:90dvh;}
.band-dialog::backdrop {background:#070407cf;backdrop-filter:blur(5px);}
.band-dialog__inner {padding:25px;display:grid;gap:12px;font-family:"Trebuchet MS",Arial,sans-serif;}
.band-dialog__top {display:flex;align-items:center;justify-content:space-between;gap:10px;}
.band-dialog__title {font:italic 400 28px Georgia,serif;color:#ffe9d5;margin:0;}
.band-dialog__close {font:26px/1 "Trebuchet MS",Arial,sans-serif;cursor:pointer;color:#fff;background:none;border:0;width:36px;height:36px;border-radius:5px;}
.band-dialog__close:hover {background:#492434;}
.band-dialog__hint {margin:0;font-size:12px;color:#d1b9bf;line-height:1.5;}
.band-dialog label {font-size:12px;font-weight:600;color:#f3cfb9;}
.band-dialog__field {display:grid;gap:5px;}
.band-dialog input, .band-dialog select {color:#ffeadf;background:#140d18;border:1px solid #775261;border-radius:7px;padding:10px 11px;width:100%;font:14px "Trebuchet MS",sans-serif;}
.band-dialog input:focus-visible,.band-dialog select:focus-visible {outline:2px solid #ffa56e;outline-offset:1px;}
.band-dialog__counter {justify-self:end;font-size:11px;color:#c4a2ac;}
.band-dialog__submit {cursor:pointer;padding:11px 15px;border-radius:999px;border:0;background:linear-gradient(110deg,#ed625d,#dd4b63);color:white;font-weight:700;}
.band-dialog__submit:hover {filter:brightness(1.1);}
.band-dialog__notice {color:#f2bf9e;font-size:12px;min-height:1.4em;margin:0;}
.band-dialog__divider {height:1px;background:#503445;border:0;margin:3px 0;}
.band-dialog__select {display:grid;gap:6px;}


@media(prefers-reduced-motion:reduce){
 .club-band__static,.club-band__messages{transition:none;}
 .club-band__track{animation:none;}

}


/* footer.css */
/* JAMVIBES V45 — original approved institutional footer styles, extracted without visual changes. */
.site-footer { position:relative; isolation:isolate; background:radial-gradient(ellipse at 12% 1%,rgba(114,49,68,.22),transparent 44%),linear-gradient(165deg,#1c101c,#100a13 70%); border-top:1px solid rgba(250,157,108,.34); color:#f3e8df; font:400 14px/1.55 "Trebuchet MS",Arial,sans-serif; }
.site-footer__inner {width:min(100% - 80px,1240px);margin:auto;padding:clamp(48px,5.5vw,82px) 0 23px;}
.site-footer__eyebrow {margin:0 0 14px;font-size:10px;letter-spacing:.18em;font-weight:700;color:#e9a27c;}
.site-footer__intro {display:grid;grid-template-columns:1fr minmax(310px,.7fr);align-items:end;gap:clamp(20px,6vw,110px);padding-bottom:clamp(36px,4vw,60px);}
.site-footer__intro h2 {margin:0;max-width:750px;font:italic 400 clamp(31px,3.3vw,49px)/1.09 Georgia,"Times New Roman",serif;letter-spacing:-.034em;}
.site-footer__period {color:#e78b65;}
.site-footer__statement {font-size:14px;line-height:1.82;margin:0;max-width:420px;color:#d7c6c7;}
.site-footer__formats {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:59px;}
.site-footer__format {display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-height:190px;padding:26px 28px 24px;border:1px solid rgba(233,172,149,.25);background:linear-gradient(118deg,rgba(107,52,64,.17),rgba(42,25,38,.1));color:#e7d5d4;text-decoration:none;transition:border-color .2s,background .2s;}
.site-footer__format:hover,.site-footer__format:focus-visible {border-color:#f4b18b;background:rgba(129,65,65,.22);outline-offset:3px;}
.site-footer__format-index {font-size:10px;color:#e8a276;letter-spacing:.16em;font-weight:700;}
.site-footer__format strong {font:italic 400 clamp(23px,2.2vw,29px)/1.15 Georgia,serif;color:#fff0e6;}
.site-footer__format>span:nth-child(3) {font-size:13px;line-height:1.6;max-width:420px;}
.site-footer__more {margin-top:auto;color:#ffae81!important;font-size:12px;letter-spacing:.02em;}
.site-footer__nav {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px;border-top:1px solid rgba(225,178,159,.2);padding:36px 0 45px;}
.site-footer__column {display:flex;flex-direction:column;gap:11px;align-items:flex-start;}
.site-footer__column h3 {margin:0 0 7px;font:700 11px/1.3 "Trebuchet MS",sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#edb08b;}
.site-footer__column a {color:#e4d4d5;font-size:13px;text-decoration:none;border-bottom:1px solid transparent;}
.site-footer__column a:hover,.site-footer__column a:focus-visible {color:#ffbf98;border-bottom-color:currentColor;outline-offset:3px;}
.site-footer__muted {color:#ac979e;font-size:11px;white-space:nowrap;}
.site-footer__bottom {border-top:1px solid rgba(225,178,159,.20);display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:20px;color:#ae9fa6;font-size:10px;}
.site-footer__bottom p {margin:0;max-width:650px;line-height:1.6;text-align:right;}
.site-footer__bottom-brand {display:flex;align-items:center;gap:13px;white-space:nowrap;letter-spacing:.11em;font-weight:700;}
.site-footer__bottom-brand span:last-child {letter-spacing:.03em;font-weight:400;}
.site-footer__bottom-divider {width:1px;height:15px;background:#765c60;}
@media(max-width:850px) {
  .site-footer__inner{width:min(100% - 48px,750px);padding-top:45px;}
  .site-footer__intro{grid-template-columns:1fr;gap:17px;}
  .site-footer__statement{max-width:700px;}
  .site-footer__nav{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:33px;}
  .site-footer__bottom{flex-direction:column;align-items:flex-start;}
  .site-footer__bottom p{text-align:left;}
}
@media(max-width:600px) {
  .site-footer__inner{width:calc(100% - 34px);padding-top:38px;}
  .site-footer__eyebrow{font-size:9px;letter-spacing:.1em;}
  .site-footer__intro h2{font-size:clamp(29px,8vw,38px);}
  .site-footer__statement{font-size:13px;line-height:1.75;}
  .site-footer__formats{grid-template-columns:1fr;margin-bottom:38px;}
  .site-footer__format{min-height:165px;padding:20px;}
  .site-footer__nav{gap:27px 16px;padding:29px 0 39px;}
  .site-footer__column a{font-size:12px;}
  .site-footer__bottom-brand{flex-wrap:wrap;font-size:10px;}
}


