/*
 * Twin Hills Halloween: faithful premium application skin
 *
 * This layer intentionally preserves the selected faithful landing-page language:
 * midnight navy, warm limestone, burnished copper, restrained aubergine,
 * photographic neighborhood atmosphere, editorial serif type, and physical
 * signage/paper cues. It extends that language across every operational screen.
 */

:root {
  --app-wide: 1450px;
  --app-wide-map: 1760px;
  --app-reading: 780px;
  --night-1000: #030a10;
  --night-975: #051019;
  --night-950: #07131c;
  --night-925: #091823;
  --night-900: #0b1b26;
  --night-850: #102432;
  --night-800: #142b3a;
  --limestone-50: #fff8ed;
  --limestone-100: #f4e9da;
  --limestone-200: #e5d4bd;
  --limestone-300: #cfb796;
  --copper-300: #d9a06d;
  --copper-400: #bd7b49;
  --copper-500: #93542f;
  --ember-400: #f09448;
  --ember-500: #dc7128;
  --ember-600: #b84f18;
  --aubergine-400: #b48ad2;
  --aubergine-500: #8f5eb5;
  --moss-400: #9dbd70;
  --moon-400: #8eabb9;
  --surface-line: rgba(205, 145, 94, .38);
  --surface-line-soft: rgba(205, 145, 94, .18);
  --surface-highlight: rgba(255, 255, 255, .035);
  --shadow-deep: 0 32px 80px rgba(0, 0, 0, .36);
  --shadow-panel: 0 20px 55px rgba(0, 0, 0, .24);
}

html { color-scheme: dark; }

body.app-page {
  background:
    radial-gradient(ellipse at 50% -3%, rgba(73, 99, 118, .28), transparent 34%),
    radial-gradient(ellipse at 6% 46%, rgba(49, 72, 88, .15), transparent 28%),
    radial-gradient(ellipse at 95% 78%, rgba(93, 54, 111, .09), transparent 25%),
    linear-gradient(180deg, var(--night-950), #06111a 48%, var(--night-1000));
}

body.app-page::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(112deg, transparent 0 49.85%, rgba(194, 131, 78, .035) 50%, transparent 50.15%),
    radial-gradient(circle at 50% 15%, transparent 0 36%, rgba(0, 0, 0, .12) 76%);
}

.app-shell { width: min(var(--app-wide), calc(100% - clamp(34px, 5vw, 94px))); }
body[data-page="stops"] .app-shell,
body[data-page="routes"] .app-shell { width: min(var(--app-wide-map), calc(100% - clamp(28px, 3.4vw, 72px))); }

/* --- Header: keep the faithful baseline, increase material quality --- */
body.app-page .site-header {
  background: linear-gradient(180deg, rgba(4, 13, 21, .975), rgba(5, 15, 23, .93));
  border-bottom-color: rgba(190, 124, 72, .33);
  box-shadow: 0 10px 36px rgba(0, 0, 0, .22);
}
body.app-page .site-header::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent 4%, rgba(235, 161, 102, .42) 22%, rgba(235, 161, 102, .12) 50%, rgba(235, 161, 102, .42) 78%, transparent 96%);
}
body.app-page .owner-btn {
  background: linear-gradient(180deg, #db7730, #a84818);
  border-color: #e59456;
  box-shadow: inset 0 1px rgba(255,255,255,.18), 0 12px 28px rgba(0,0,0,.3);
}
body.app-page .main-nav a { color: #d8d1c8; }
body.app-page .main-nav a.active { color: var(--limestone-50); }

/* --- Editorial application hero --- */
.app-hero {
  --hero-photo: url('/assets/hero-twin-hills.webp');
  --hero-position: center 52%;
  --hero-accent: rgba(226, 113, 39, .34);
  min-height: 390px;
  padding: 94px 0 58px;
  isolation: isolate;
  background: var(--night-950);
  border-bottom: 1px solid rgba(189, 123, 73, .42);
}
.app-hero.compact { min-height: 330px; padding: 82px 0 50px; }
.app-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image: var(--hero-photo);
  background-size: cover;
  background-position: var(--hero-position);
  filter: saturate(.82) contrast(1.05) brightness(.68);
  transform: scale(1.015);
}
.app-hero::after {
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(4, 12, 19, .97) 0%, rgba(4, 12, 19, .93) 38%, rgba(4, 12, 19, .55) 65%, rgba(4, 12, 19, .22) 100%),
    linear-gradient(180deg, rgba(4, 10, 15, .24), transparent 38%, #07131c 100%),
    radial-gradient(circle at 78% 26%, var(--hero-accent), transparent 26%);
}
.app-hero .app-shell::before {
  content: "";
  display: block;
  width: 72px;
  height: 1px;
  margin: 0 0 19px;
  background: linear-gradient(90deg, var(--ember-400), transparent);
  box-shadow: 0 0 18px rgba(240, 148, 72, .42);
}
.app-hero .app-shell::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: -48px;
  width: min(33vw, 500px);
  aspect-ratio: 2.4 / 1;
  opacity: .085;
  background: url('/assets/twin-hills-logo-cream.png') right bottom / contain no-repeat;
  filter: drop-shadow(0 0 20px rgba(255, 170, 100, .2));
  pointer-events: none;
}
.app-hero h1 {
  max-width: 900px;
  font-size: clamp(54px, 5.1vw, 84px);
  line-height: .92;
  text-wrap: balance;
  text-shadow: 0 5px 34px rgba(0,0,0,.44);
}
.app-hero p.lead { max-width: 690px; color: #e1dad1; }
.crumbs { margin-bottom: 15px; color: #a6adaf; }

body[data-page="stops"] .app-hero,
body[data-page="routes"] .app-hero { --hero-photo: url('/assets/twin-hills-map-fallback.svg'); --hero-position: center; --hero-accent: rgba(154,101,214,.28); }
body[data-page="register"] .app-hero,
body[data-page="registration-success"] .app-hero,
body[data-page="host-access"] .app-hero { --hero-photo: url('/assets/hero-twin-hills.webp'); --hero-position: center 48%; }
body[data-page="host"] .app-hero { --hero-photo: url('/assets/decorated-home.webp'); --hero-position: center 62%; }
body[data-page="vote"] .app-hero,
body[data-page="ballot"] .app-hero,
body[data-page="results"] .app-hero { --hero-photo: url('/assets/vote-home.webp'); --hero-position: center 52%; --hero-accent: rgba(154,101,214,.34); }
body[data-page="passport"] .app-hero { --hero-photo: url('/assets/03-neighborhood-trick-or-treat-atmosphere.jpg'); --hero-position: center 45%; --hero-accent: rgba(137,80,170,.38); }
body[data-page="print"] .app-hero { --hero-photo: url('/assets/04-official-treat-stop-yard-sign.jpg'); --hero-position: center 64%; }
body[data-page="costume"] .app-hero { --hero-photo: url('/assets/trick-or-treat.webp'); --hero-position: center 52%; --hero-accent: rgba(154,101,214,.36); }
body[data-page="volunteer"] .app-hero { --hero-photo: url('/assets/candy.webp'); --hero-position: center 54%; --hero-accent: rgba(157,204,98,.23); }
body[data-page="event-info"] .app-hero,
body[data-page="faq"] .app-hero { --hero-photo: url('/assets/calendar.webp'); --hero-position: center 48%; }
body[data-page="accessibility"] .app-hero,
body[data-page="privacy"] .app-hero { --hero-photo: url('/assets/safety-pumpkins.webp'); --hero-position: center 55%; --hero-accent: rgba(126,154,104,.24); }
body[data-page="404"] .app-hero,
body[data-page="offline"] .app-hero { --hero-photo: url('/assets/08-antique-porch-lantern.jpg'); --hero-position: center; }

/* --- Section rhythm --- */
.page-section { position: relative; padding: 72px 0; }
.page-section + .page-section::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  width: min(1450px, calc(100% - 68px));
  height: 1px;
  translate: -50% 0;
  background: linear-gradient(90deg, transparent, rgba(187, 124, 76, .22) 14%, rgba(187, 124, 76, .12) 50%, rgba(187, 124, 76, .22) 86%, transparent);
}
.page-section.dark-band {
  background:
    radial-gradient(circle at 82% 12%, rgba(112, 68, 127, .08), transparent 28%),
    linear-gradient(180deg, rgba(3, 11, 18, .22), rgba(3, 11, 18, .42));
  border-block-color: rgba(174,117,71,.17);
}
.page-section.paper {
  background:
    linear-gradient(rgba(244, 233, 216, .96), rgba(229, 211, 185, .97)),
    url('/assets/09-passport-parchment-texture.jpg') center / 760px;
}
.page-title-row { margin-bottom: 35px; }
.page-title-row h2 { color: var(--limestone-100); }
.page-title-row p { color: #aeb6b8; }

/* --- Shared surfaces: signed, architectural, never generic glass cards --- */
.panel,
.host-action,
.directory-card,
.route-option,
.entry-card,
.print-product,
.costume-card,
.rescue-card,
.showtime-card,
.admin-card,
.kanban-card {
  position: relative;
  border-color: var(--surface-line);
  border-radius: 6px;
  background:
    linear-gradient(180deg, rgba(18, 39, 52, .97), rgba(6, 19, 28, .985));
  box-shadow: var(--shadow-panel), inset 0 1px var(--surface-highlight);
}
.panel::before,
.host-action::before,
.entry-card::before,
.print-product::before,
.costume-card::before,
.rescue-card::before,
.admin-card::before {
  content: "";
  position: absolute;
  left: 13px;
  right: 13px;
  top: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(237, 168, 109, .58), transparent);
  opacity: .65;
  pointer-events: none;
}
.panel-header { padding: 25px 28px; border-bottom-color: rgba(198, 136, 83, .17); }
.panel-header h2 { font-size: 32px; }
.panel-body { padding: 28px; }
.panel-foot { padding: 18px 28px; border-top-color: rgba(198, 136, 83, .17); }
.panel.paper-panel {
  background:
    linear-gradient(rgba(242, 231, 212, .97), rgba(227, 208, 179, .98)),
    url('/assets/09-passport-parchment-texture.jpg') center / 700px;
  border-color: #b7976d;
  box-shadow: 0 28px 60px rgba(0,0,0,.32), inset 0 0 0 1px rgba(255,255,255,.32);
}

/* Buttons mirror the faithful hero buttons. */
.button,.button-secondary,.button-quiet,.button-danger {
  min-height: 48px;
  padding-inline: 19px;
  border-radius: 4px;
  letter-spacing: .025em;
}
.button {
  background: linear-gradient(180deg, #e17a31, #ac4616);
  border-color: #f09a5b;
  box-shadow: inset 0 1px rgba(255,255,255,.18), 0 10px 26px rgba(0,0,0,.28);
}
.button-secondary {
  background: linear-gradient(180deg, #342647, #1c1c30);
  border-color: #8f5eb5;
  box-shadow: inset 0 1px rgba(255,255,255,.06), 0 10px 25px rgba(0,0,0,.22);
}
.button-quiet {
  background: linear-gradient(180deg, rgba(16,35,47,.96), rgba(7,20,29,.97));
  border-color: rgba(226, 184, 146, .32);
}
.button-danger { background: linear-gradient(180deg, #7b3a3c, #54282b); }
.button:hover,.button-secondary:hover,.button-quiet:hover { border-color: var(--ember-400); box-shadow: 0 12px 32px rgba(0,0,0,.32); }

/* Notices have a physical callout-strip treatment. */
.notice {
  border-radius: 4px;
  border-left-width: 4px;
  background: linear-gradient(90deg, rgba(37,91,111,.19), rgba(8,24,34,.82));
  box-shadow: inset 0 1px rgba(255,255,255,.025);
}
.notice.warning { background: linear-gradient(90deg, rgba(147,89,25,.2), rgba(24,24,26,.76)); }
.notice.error { background: linear-gradient(90deg, rgba(120,42,42,.23), rgba(24,20,23,.8)); }
.notice.success { background: linear-gradient(90deg, rgba(79,116,45,.2), rgba(13,28,28,.8)); }

/* --- Forms: calm, legible, and closer to a beautifully printed registration pack --- */
.form-layout { gap: 28px; grid-template-columns: minmax(0, 1.18fr) minmax(360px, .82fr); }
.form-panel { padding: 38px; }
.form-panel h2 { font-size: 40px; }
.form-panel > p { max-width: 760px; color: #adb5b8; line-height: 1.7; }
.field { gap: 8px; }
.field label,.field .label { color: #d9d2ca; letter-spacing: .11em; }
.field input,.field select,.field textarea,
.admin-main input,.admin-main select,.admin-main textarea {
  min-height: 49px;
  border-color: rgba(212, 159, 111, .21);
  border-radius: 3px;
  background: linear-gradient(180deg, #081720, #06131c);
  box-shadow: inset 0 1px 8px rgba(0,0,0,.19);
}
.field input:hover,.field select:hover,.field textarea:hover { border-color: rgba(233, 165, 105, .38); }
.field input:focus,.field select:focus,.field textarea:focus,
.admin-main input:focus,.admin-main select:focus,.admin-main textarea:focus {
  border-color: var(--ember-400);
  box-shadow: 0 0 0 3px rgba(236, 135, 54, .11), inset 0 1px 8px rgba(0,0,0,.16);
}
.select-card {
  min-height: 88px;
  padding: 17px;
  border-color: rgba(207, 151, 101, .21);
  border-radius: 4px;
  background: linear-gradient(135deg, rgba(12,29,40,.98), rgba(7,20,29,.98));
}
.select-card:hover { border-color: rgba(230, 160, 101, .46); }
.select-card:has(input:checked) {
  border-color: var(--ember-400);
  background: linear-gradient(135deg, rgba(130, 61, 22, .23), rgba(11, 27, 38, .98));
  box-shadow: inset 4px 0 var(--ember-500), inset 0 0 0 1px rgba(255,155,61,.09);
}
.form-stepper { margin-bottom: 34px; }
.step { color: #748188; }
.step::after { background: linear-gradient(90deg, rgba(255,255,255,.14), rgba(255,255,255,.04)); }
.step span { width: 29px; height: 29px; border-color: rgba(218, 165, 118, .25); background: #081720; }
.step.active span,.step.complete span { background: linear-gradient(180deg, #d5742e, #a44717); border-color: #ee9555; box-shadow: 0 0 18px rgba(223,109,39,.24); }
.preview-sticky { top: 112px; }
.public-preview .preview-image { height: 250px; }
.public-preview .preview-content { padding: 28px; }
.public-preview h3 { font-size: 32px; }
.badge { border-color: rgba(218,160,109,.19); background: #081822; }

/* --- Halloween Live: make the map feel like the flagship product. --- */
body[data-page="stops"] { padding-top: 82px; }
body[data-page="stops"] .site-footer { display: none; }
.map-layout {
  height: calc(100vh - 82px);
  grid-template-columns: 440px minmax(0, 1fr);
  background: var(--night-1000);
}
.map-sidebar {
  background:
    radial-gradient(circle at 20% 0, rgba(193,113,54,.1), transparent 23%),
    linear-gradient(180deg, #102430, #071720 60%, #06121a);
  border-right-color: rgba(190, 124, 72, .44);
  box-shadow: 14px 0 40px rgba(0,0,0,.24);
}
.map-sidebar-head { padding: 27px 26px 21px; border-bottom-color: rgba(195,134,82,.18); }
.map-sidebar-head h1 { font-size: 36px; line-height: 1.02; }
.search-input input { height: 48px; border-color: rgba(211,151,101,.22); background: rgba(4,15,23,.78); }
.quick-filters { padding: 16px 26px; border-bottom-color: rgba(195,134,82,.15); }
.filter-button { padding: 8px 12px; border-color: rgba(210,155,106,.19); background: #091923; }
.filter-button.active { border-color: var(--ember-400); background: rgba(204,86,21,.17); box-shadow: inset 0 0 0 1px rgba(255,155,61,.08); }
.advanced-filters { padding: 0 26px 17px; }
.advanced-filters select { height: 39px; border-color: rgba(210,155,106,.19); }
.directory-count { padding: 11px 26px; }
.directory-list { padding: 0 16px 22px; }
.directory-card {
  grid-template-columns: 60px minmax(0,1fr);
  gap: 15px;
  margin: 9px 0;
  padding: 17px;
  border-color: rgba(202, 141, 89, .16);
  border-radius: 4px;
  box-shadow: none;
}
.directory-card::after {
  content: "";
  position: absolute;
  left: 0;
  top: 12px;
  bottom: 12px;
  width: 2px;
  background: transparent;
}
.directory-card:hover,.directory-card.selected { border-color: var(--ember-400); background: linear-gradient(90deg, rgba(167,73,20,.17), #102331 38%); transform: translateX(3px); }
.directory-card.selected::after { background: var(--ember-400); box-shadow: 0 0 12px var(--ember-400); }
.stop-number-box { height: 60px; border-color: var(--copper-500); color: var(--ember-400); background: #05131c; }
.directory-card h3 { font-size: 20px; }
.map-stage .map-image { filter: brightness(.69) saturate(.72) contrast(1.1); }
.map-stage::after { background: linear-gradient(90deg, rgba(5,16,24,.28), transparent 22%), radial-gradient(circle at 62% 38%, transparent 0, rgba(4,10,16,.2) 72%); }
.map-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: url('/assets/10-moonlit-fog-overlay.png') center / cover;
  opacity: .09;
  mix-blend-mode: screen;
}
.map-floating-card { border-color: var(--surface-line); background: rgba(5,16,24,.94); backdrop-filter: blur(14px); box-shadow: var(--shadow-deep); }
.map-toolbar button,.map-toolbar .button-quiet { backdrop-filter: blur(12px); }
.map-pin { transition: transform .2s ease, filter .2s ease, opacity .2s ease; }
.map-pin::after {
  content: "";
  position: absolute;
  inset: 5px 8px 13px;
  border-radius: 50%;
  box-shadow: 0 0 18px var(--marker);
  opacity: .4;
}

/* --- Stop detail --- */
.stop-hero { min-height: 520px; border-color: var(--surface-line); box-shadow: var(--shadow-deep); }
.stop-photo { min-height: 500px; }
.stop-summary { padding: 58px 50px; background: radial-gradient(circle at 100% 0, rgba(145,87,171,.12), transparent 33%), linear-gradient(180deg,#102634,#07161f); }
.stop-summary h1 { font-size: clamp(48px,4.4vw,72px); }
.stop-meta-grid { background: rgba(190,127,75,.17); }
.stop-meta-grid > div { padding: 18px; background: #081923; }
.feature-item { border-color: rgba(204,145,94,.16); background: linear-gradient(135deg,#0b1d28,#081720); }
.timeline-item::before { background: linear-gradient(180deg, rgba(181,122,76,.5), rgba(255,255,255,.05)); }
.timeline-item div::before { background: var(--aubergine-400); box-shadow: 0 0 14px var(--aubergine-500); }

/* --- Homeowner console: one-handed porch-light control panel --- */
.host-shell { width: min(1280px, calc(100% - 44px)); }
.host-live-state {
  overflow: hidden;
  padding: 46px 44px 42px;
  background:
    linear-gradient(90deg, rgba(5,15,23,.97), rgba(7,22,31,.92)),
    url('/assets/decorated-home.webp') center 60% / cover;
}
.host-live-state::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(circle at 50% 35%, rgba(232,129,48,.15), transparent 30%), linear-gradient(180deg, transparent 45%, rgba(2,8,13,.5));
}
.host-live-state > * { position: relative; z-index: 1; }
.host-live-state .big-state { color: var(--limestone-50); text-shadow: 0 6px 40px rgba(0,0,0,.72), 0 0 30px rgba(237,126,46,.13); }
.status-control-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; }
.status-control {
  min-height: 124px;
  padding: 18px;
  border-color: rgba(207,151,101,.2);
  background: linear-gradient(150deg, rgba(12,31,42,.94), rgba(5,18,27,.96));
  transition: transform .2s, border-color .2s, background .2s, box-shadow .2s;
}
.status-control:hover { transform: translateY(-2px); border-color: rgba(239,158,89,.5); }
.status-control.active { border-color: var(--ember-400); background: linear-gradient(145deg, rgba(169,73,21,.27), rgba(9,25,35,.97)); box-shadow: inset 4px 0 var(--ember-500), 0 13px 28px rgba(0,0,0,.22); }
.status-control b { font-size: 13px; }
.host-actions-grid { gap: 15px; }
.host-action { min-height: 190px; padding: 26px; border-color: rgba(203,142,91,.18); }
.host-action:hover { border-color: rgba(229,159,99,.4); background: linear-gradient(150deg, #102837, #071720); }
.host-action h3 { font-size: 27px; }
.host-action p { font-size: 12px; line-height: 1.65; }

/* --- Routes: map first, route cards as a field-guide rail --- */
.routes-app { grid-template-columns: 410px minmax(0,1fr); min-height: 720px; border-color: var(--surface-line); box-shadow: var(--shadow-deep); }
.routes-rail { padding: 26px; background: radial-gradient(circle at 10% 0, rgba(138,80,159,.11), transparent 24%), linear-gradient(180deg,#0f222f,#071620); }
.route-option { padding: 17px; border-color: rgba(204,145,94,.17); background: linear-gradient(135deg,#0b1d28,#071720); }
.route-option:hover { border-color: rgba(235,160,99,.44); }
.route-option.active { border-color: var(--ember-400); background: linear-gradient(90deg,rgba(165,70,18,.2),#102432); box-shadow: inset 3px 0 var(--ember-500); }
.route-duration { border-color: var(--copper-500); background: #06151e; }
.route-stage { min-height: 720px; }
.route-stage > img { filter: brightness(.67) saturate(.68) contrast(1.08); }
.route-itinerary { top: 26px; right: 26px; width: 340px; padding: 22px; border-color: var(--surface-line); background: rgba(5,17,25,.95); backdrop-filter: blur(14px); box-shadow: var(--shadow-deep); }
.route-path path { stroke: var(--ember-400); stroke-width: 4; }

/* --- Voting: make the ballot feel official, not like social media. --- */
.code-entry {
  position: relative;
  overflow: hidden;
  max-width: 700px;
  padding: 52px;
  background:
    linear-gradient(rgba(241,229,210,.96),rgba(226,207,178,.98)),
    url('/assets/09-passport-parchment-texture.jpg') center / 720px;
  color: #251b14;
  border: 1px solid #b58f62;
  box-shadow: 18px 28px 70px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.34);
}
.code-entry::before { content:""; position:absolute; inset:16px; border:1px solid rgba(95,64,38,.27); pointer-events:none; }
.code-entry > * { position: relative; z-index: 1; }
.code-entry .eyebrow { color: #a44717; }
.code-entry .muted { color: #6f5a46; }
.code-entry h1 { font-size: 55px; }
.code-input { border: 1px solid #8c6848; background: rgba(255,249,239,.7); color: #251b14; box-shadow: inset 0 2px 8px rgba(73,45,27,.12); }
.ballot-layout { gap: 18px; }
.category-nav,.ballot-tray { border-color: var(--surface-line); background: linear-gradient(180deg,#102432,#071720); }
.entry-card { overflow: hidden; border-color: rgba(201,139,88,.17); }
.entry-card:hover,.entry-card.selected { border-color: var(--ember-400); transform: translateY(-2px); box-shadow: 0 18px 42px rgba(0,0,0,.28); }
.ballot-tray { position: sticky; top: 108px; }
.choice { border-color: rgba(205,145,94,.17); background: #081923; }
.rank-badge { background: linear-gradient(180deg,#d87731,#a94717); border: 1px solid #ed9859; }
.receipt { border-color: #b58f62; background: linear-gradient(rgba(242,231,213,.98),rgba(227,209,181,.98)),url('/assets/09-passport-parchment-texture.jpg') center/700px; color:#241a13; box-shadow: var(--shadow-deep); }

/* --- Passport: preserve its strongest material shift. --- */
.passport-layout { gap: 30px; }
.passport-paper {
  min-height: 670px;
  padding: 55px;
  background:
    linear-gradient(rgba(241,229,209,.91),rgba(226,207,176,.94)),
    url('/assets/09-passport-parchment-texture.jpg') center / cover;
  box-shadow: 18px 32px 80px rgba(0,0,0,.42), inset 0 0 0 1px rgba(255,255,255,.34);
  transform: rotate(-.28deg);
}
.passport-paper::before { inset: 20px; border-color: rgba(92,61,35,.34); }
.passport-paper::after {
  content: "";
  position: absolute;
  right: 38px;
  bottom: 34px;
  width: 92px;
  height: 92px;
  border: 3px double rgba(121,62,94,.3);
  border-radius: 50%;
  transform: rotate(-12deg);
}
.passport-paper h1 { font-size: 52px; }
.stamp-grid { gap: 22px; }
.stamp-slot { background: rgba(255,255,255,.12); }
.checkpoint-form { padding: 38px; }
.checkpoint-input { border-color: var(--aubergine-500); background: #071720; }
.progress-bar i { background: linear-gradient(90deg,var(--aubergine-500),var(--ember-500)); }

/* --- Print center: physical materials on a dark presentation table. --- */
body[data-page="print"] .page-section:first-of-type {
  background: radial-gradient(circle at 80% 25%, rgba(224,126,47,.09), transparent 28%);
}
.print-grid { gap: 18px; }
.print-product { overflow: hidden; border-color: rgba(203,142,91,.2); }
.print-thumb { min-height: 220px; background: linear-gradient(135deg,#111d25,#07141d); }
.print-thumb::after { content:""; position:absolute; inset:0; box-shadow: inset 0 0 70px rgba(0,0,0,.24); pointer-events:none; }
.print-sheet { box-shadow: 10px 16px 34px rgba(0,0,0,.38); }

/* --- Editorial information / FAQ pages --- */
.reading-shell { width: min(840px, calc(100% - 36px)); }
.reading-shell > .panel { padding: 10px; }
.reading-shell .panel-body { padding: 42px 46px; }
.reading-shell h2 { font: 500 42px/1.05 var(--serif); }
.reading-shell h3 { margin-top: 32px; color: var(--limestone-100); font: 500 25px/1.1 var(--serif); }
.reading-shell p { color: #b2b9bb; line-height: 1.78; }
.faq-panel.panel { padding: 34px 38px; }
.faq-panel h2 { font: 500 38px/1 var(--serif); }
.faq-row { min-height: 54px; border-bottom-color: rgba(198,136,83,.18); }
.faq-row:hover { color: var(--ember-400); }
.faq-answer { color: #aeb7ba; }
.empty-state { padding: 65px 42px; text-align: center; }
.empty-state .icon { color: var(--ember-400); text-shadow: 0 0 24px rgba(237,128,45,.35); }

/* --- Costume and volunteer modules --- */
body[data-page="costume"] .form-panel { background: radial-gradient(circle at 100% 0, rgba(142,84,167,.12), transparent 25%), linear-gradient(180deg,rgba(16,34,46,.98),rgba(7,20,29,.99)); }
.entry-grid,.costume-grid { gap: 18px; }
.costume-card,.entry-card { transition: transform .2s, border-color .2s, box-shadow .2s; }
.costume-card:hover,.entry-card:hover { transform: translateY(-3px); border-color: rgba(229,159,99,.48); }
.rescue-list { gap: 16px; }
.rescue-card { border-left: 3px solid var(--ember-500); }

/* --- Administration: same family, quieter operational mode. --- */
body.admin-page {
  min-height: 100vh;
  background:
    radial-gradient(circle at 88% 0, rgba(89,54,105,.12), transparent 26%),
    linear-gradient(180deg,#07131c,#040b11 72%);
}
.admin-layout { grid-template-columns: 252px minmax(0,1fr); }
.admin-sidebar {
  background:
    linear-gradient(rgba(5,15,23,.96),rgba(4,12,18,.985)),
    url('/assets/hero-twin-hills.webp') 38% center / cover;
  border-right: 1px solid rgba(190,124,72,.38);
  box-shadow: 16px 0 50px rgba(0,0,0,.28);
}
.admin-sidebar::after {
  content:"";
  position:absolute;
  inset:auto 25px 26px;
  height:80px;
  opacity:.1;
  background:url('/assets/twin-hills-logo-cream.png') center/contain no-repeat;
}
.admin-brand { padding: 28px 24px 22px; border-bottom-color: rgba(195,133,81,.2); }
.admin-brand img { width: 155px; }
.admin-brand span { color: var(--ember-400); letter-spacing: .22em; }
.admin-nav { padding: 18px 12px; }
.admin-nav a { min-height: 45px; border-left: 2px solid transparent; border-radius: 3px; color: #aeb6b9; }
.admin-nav a:hover { color:#fff; background:rgba(255,255,255,.035); }
.admin-nav a.active { border-left-color: var(--ember-500); color: #fff; background: linear-gradient(90deg,rgba(173,72,19,.2),rgba(255,255,255,.025)); }
.admin-main { padding: 36px 40px 64px; }
.admin-top {
  position: relative;
  min-height: 132px;
  margin: -36px -40px 30px;
  padding: 40px 40px 28px;
  border-bottom: 1px solid rgba(190,124,72,.26);
  background:
    linear-gradient(90deg,rgba(5,15,23,.98),rgba(5,15,23,.78)),
    url('/assets/hero-twin-hills.webp') center 38% / cover;
  overflow: hidden;
}
.admin-top::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,transparent,#07131c); pointer-events:none; }
.admin-top > * { position:relative; z-index:1; }
.admin-top h1 { font-size: clamp(38px,3.2vw,58px); }
.admin-card-grid { gap: 14px; }
.admin-card { min-height: 132px; padding: 24px; border-color: rgba(203,142,91,.18); }
.admin-card strong { font-size: 38px; color: var(--limestone-100); }
.admin-split { gap: 16px; }
.data-table-wrap { border-top: 1px solid rgba(196,133,81,.14); }
.data-table th { color: #cbbfb3; background: #081822; border-bottom-color: rgba(204,143,91,.25); }
.data-table td { border-bottom-color: rgba(255,255,255,.055); }
.data-table tbody tr:hover { background: rgba(213,106,35,.055); }
.readiness-item { border-color: rgba(203,142,91,.15); background: linear-gradient(90deg,#0b1d28,#081720); }
.kanban-col { border-color: rgba(203,142,91,.16); background:#07151e; }
.kanban-card { border-color: rgba(203,142,91,.17); }
.login-wrap {
  background:
    linear-gradient(90deg,rgba(4,12,19,.83),rgba(4,12,19,.38)),
    url('/assets/hero-twin-hills.webp') center/cover;
}
.login-card { border-color: var(--surface-line); background: rgba(6,18,27,.96); box-shadow: var(--shadow-deep); backdrop-filter: blur(12px); }

/* --- Dialogs and toast --- */
.dialog { border-color: var(--surface-line); background: linear-gradient(180deg,#102432,#071720); box-shadow: 0 38px 100px rgba(0,0,0,.55); }
.dialog-head { border-bottom-color: rgba(202,139,88,.18); }
.toast { border-color: rgba(207,145,94,.34); background: rgba(7,20,29,.96); backdrop-filter: blur(12px); }

/* --- Responsive refinement --- */
@media (max-width: 1200px) {
  .form-layout { grid-template-columns: 1fr minmax(320px,.72fr); }
  .map-layout { grid-template-columns: 390px minmax(0,1fr); }
  .status-control-grid { grid-template-columns: repeat(3,1fr); }
  .host-actions-grid { grid-template-columns: repeat(2,1fr); }
  .admin-layout { grid-template-columns: 224px minmax(0,1fr); }
}

@media (max-width: 900px) {
  body.app-page { padding-top:70px; }
  .app-hero,.app-hero.compact { min-height: 345px; padding: 82px 0 46px; }
  .app-hero::after { background: linear-gradient(90deg,rgba(4,12,19,.95),rgba(4,12,19,.7)), linear-gradient(180deg,transparent,#07131c); }
  .app-hero .app-shell::after { display:none; }
  .page-section { padding: 58px 0; }
  .form-layout,.detail-grid,.passport-layout { grid-template-columns:1fr; }
  .preview-sticky { position:relative; top:auto; }
  .map-layout { height:auto; min-height:calc(100vh - 70px); grid-template-columns:1fr; }
  .map-sidebar { max-height:none; border-right:0; border-bottom:1px solid var(--surface-line); }
  .directory-list { max-height:420px; }
  .map-stage { min-height:560px; }
  .routes-app { grid-template-columns:1fr; }
  .route-stage { min-height:620px; }
  .status-control-grid { grid-template-columns:repeat(2,1fr); }
  .admin-layout { display:block; }
  .admin-sidebar { position:relative; width:100%; min-height:0; border-right:0; border-bottom:1px solid var(--surface-line); }
  .admin-sidebar::after { display:none; }
  .admin-brand { display:flex; justify-content:space-between; align-items:center; }
  .admin-nav { display:flex; overflow:auto; padding:10px 14px; }
  .admin-nav a { flex:0 0 auto; min-height:40px; padding-inline:14px; border-left:0; border-bottom:2px solid transparent; }
  .admin-nav a.active { border-bottom-color:var(--ember-500); }
  .admin-main { padding:26px 22px 50px; }
  .admin-top { margin:-26px -22px 24px; padding:30px 22px 24px; }
}

@media (max-width: 620px) {
  .app-hero,.app-hero.compact { min-height: 390px; padding: 88px 0 42px; align-items:flex-end; }
  .app-hero::after { background: linear-gradient(180deg,rgba(4,12,19,.37),rgba(4,12,19,.74) 45%,#07131c 100%); }
  .app-hero h1 { font-size: 50px; }
  .page-section { padding: 48px 0; }
  .page-title-row { display:block; }
  .page-title-row > p,.page-title-row > .action-row { margin-top:15px; }
  .form-panel { padding:27px 21px; }
  .form-grid,.check-grid { grid-template-columns:1fr; }
  .form-stepper { overflow-x:auto; padding-bottom:8px; }
  .step { min-width:118px; flex:0 0 auto; }
  .step::after { min-width:24px; }
  .map-stage { min-height:460px; }
  .map-floating-card { left:12px; right:12px; bottom:12px; width:auto; }
  .route-stage { min-height:520px; }
  .route-itinerary { left:12px; right:12px; top:auto; bottom:12px; width:auto; max-height:44%; }
  .host-live-state { padding:36px 20px 28px; }
  .host-live-state .big-state { font-size:64px; }
  .status-control-grid { grid-template-columns:1fr 1fr; gap:8px; }
  .status-control { min-height:108px; padding:14px; }
  .host-actions-grid { grid-template-columns:1fr; }
  .host-action { min-height:auto; }
  .code-entry { padding:38px 22px; }
  .code-entry h1 { font-size:43px; }
  .passport-paper { min-height:570px; padding:42px 27px; transform:none; }
  .passport-paper h1 { font-size:42px; }
  .stamp-grid { grid-template-columns:repeat(3,1fr); gap:14px; }
  .reading-shell .panel-body { padding:30px 23px; }
  .admin-top { display:block; }
  .admin-top .action-row { margin-top:16px; }
}

@media (prefers-reduced-motion: reduce) {
  .map-pin,.directory-card,.route-option,.status-control,.host-action,.entry-card,.costume-card { transition:none!important; }
}

/* Live event utility bar with real event data, restrained enough to remain part of the faithful shell. */
.event-live-bar {
  position: fixed;
  left: 0;
  right: 0;
  top: 82px;
  z-index: 35;
  height: 34px;
  border-bottom: 1px solid rgba(190,124,72,.25);
  background: rgba(6,17,25,.94);
  backdrop-filter: blur(12px);
  box-shadow: 0 8px 20px rgba(0,0,0,.16);
}
.event-live-shell {
  width: min(var(--app-wide),calc(100% - 64px));
  height: 34px;
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: 15px;
  color: #9da7aa;
  font-size: 9px;
  font-weight: 750;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.event-live-state { display:inline-flex;align-items:center;gap:8px;color:var(--ember-400); }
.event-live-state i { width:6px;height:6px;border-radius:50%;background:var(--ember-500);box-shadow:0 0 11px rgba(235,116,39,.8); }
.event-live-bar[data-state="active"] .event-live-state i { background:var(--moss-400);box-shadow:0 0 11px rgba(157,189,112,.8); }
.event-live-detail { color:#c3c5c3;letter-spacing:.03em;text-transform:none;font-weight:600; }
.event-live-spacer { flex:1; }
.event-live-shell a { color:#b8b3ad; }
.event-live-shell a:hover { color:var(--limestone-50); }
body.app-page { padding-top:116px; }
body.app-page .app-main { min-height:calc(100vh - 116px); }
body[data-page="stops"] { padding-top:116px; }
body[data-page="stops"] .map-layout { height:calc(100vh - 116px); }

@media (max-width:900px){
  .event-live-bar{top:70px;height:32px}
  .event-live-shell{width:calc(100% - 34px);height:32px;gap:9px}
  .event-live-shell a{display:none}
  body.app-page{padding-top:102px}
  body.app-page .app-main{min-height:calc(100vh - 102px)}
  body[data-page="stops"]{padding-top:102px}
  body[data-page="stops"] .map-layout{min-height:calc(100vh - 102px);height:auto}
}
@media (max-width:620px){
  .event-live-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .event-live-state b{white-space:nowrap}
}

/* RC3 official schedule administration extends the faithful panels without introducing a new visual language. */
.schedule-admin-layout {
  display:grid;
  grid-template-columns:minmax(420px,.82fr) minmax(480px,1.18fr);
  border-top:1px solid var(--surface-line);
}
.schedule-editor { border-right:1px solid var(--surface-line); }
.schedule-admin-list { display:grid;gap:11px;align-content:start;max-height:760px;overflow:auto; }
.schedule-admin-card {
  display:grid;
  grid-template-columns:78px minmax(0,1fr) auto;
  gap:16px;
  align-items:start;
  padding:16px;
  border:1px solid rgba(190,124,72,.2);
  border-radius:10px;
  background:linear-gradient(135deg,rgba(255,255,255,.025),rgba(255,255,255,.008));
}
.schedule-admin-card.is-cancelled { opacity:.66; }
.schedule-admin-date {
  min-height:70px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(190,124,72,.35);
  background:rgba(8,19,28,.72);
  color:var(--limestone-100);
  text-transform:uppercase;
}
.schedule-admin-date strong { font:500 17px var(--serif); }
.schedule-admin-date small { margin-top:5px;color:var(--ember-400);font-size:9px;font-weight:850;letter-spacing:.08em; }
.schedule-admin-copy h3 { margin:10px 0 5px;font:500 23px var(--serif);color:var(--limestone-50); }
.schedule-admin-copy p { margin:0 0 7px;color:#aeb5b5;font-size:12px;line-height:1.65; }
.schedule-admin-copy > small { color:#8f999b; }
.schedule-admin-actions { display:flex;flex-direction:column;gap:8px;align-items:flex-end; }
.schedule-admin-actions .button-quiet { min-width:74px; }
.event-card.schedule-cancelled { opacity:.72;filter:saturate(.55); }
.event-card.schedule-cancelled .event-image::after { content:'CANCELLED';position:absolute;inset:auto 15px 15px;padding:6px 8px;border:1px solid rgba(207,98,91,.55);background:rgba(49,12,16,.88);color:#f1b6b0;font-size:9px;font-weight:900;letter-spacing:.14em; }

@media (max-width:1100px){
  .schedule-admin-layout{grid-template-columns:1fr}
  .schedule-editor{border-right:0;border-bottom:1px solid var(--surface-line)}
}
@media (max-width:620px){
  .schedule-admin-card{grid-template-columns:62px minmax(0,1fr)}
  .schedule-admin-actions{grid-column:1/-1;flex-direction:row;justify-content:flex-end}
}

/* RC3 public schedule and resilient homepage map states. */
.live-map.map-has-no-stops > img { filter:brightness(.58) saturate(.6) contrast(1.08); }
.live-map.map-has-no-stops::before {
  content:'OFFICIAL STOPS APPEAR HERE';
  position:absolute;
  z-index:2;
  left:50%;
  top:42%;
  translate:-50% -50%;
  color:rgba(242,232,220,.56);
  font-size:10px;
  font-weight:850;
  letter-spacing:.16em;
  white-space:nowrap;
}
.map-status-card.map-empty-card { cursor:default!important; }
.map-status-card.map-empty-card::before {
  content:'☾';
  display:grid;
  place-items:center;
  width:36px;
  height:36px;
  flex:0 0 36px;
  border:1px solid rgba(190,124,72,.45);
  border-radius:50%;
  color:var(--ember-400);
}
.event-schedule-section { padding-top:0; }
.official-schedule-list { display:grid;gap:12px;margin-top:25px; }
.official-schedule-list > .loading { min-height:160px; }
.official-schedule-item {
  display:grid;
  grid-template-columns:90px minmax(0,1fr) auto;
  gap:20px;
  align-items:center;
  padding:20px;
  border:1px solid rgba(190,124,72,.22);
  border-radius:10px;
  background:linear-gradient(135deg,rgba(15,34,46,.92),rgba(7,19,28,.92));
  box-shadow:0 17px 38px rgba(0,0,0,.15);
}
.official-schedule-item.is-cancelled { opacity:.68;filter:saturate(.55); }
.official-schedule-date {
  min-height:78px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(190,124,72,.4);
  background:rgba(6,16,24,.72);
  text-align:center;
  text-transform:uppercase;
}
.official-schedule-date strong { font:500 20px var(--serif);color:var(--limestone-50); }
.official-schedule-date small { margin-top:5px;color:var(--ember-400);font-size:9px;font-weight:850;letter-spacing:.1em; }
.official-schedule-item h3 { margin:8px 0 5px;font:500 25px var(--serif);color:var(--limestone-50); }
.official-schedule-item p { margin:0 0 7px;color:#adb5b7;font-size:12px;line-height:1.6; }
.official-schedule-item > div > small { color:#8f999c;font-size:10px; }
.official-schedule-item > .text-action { align-self:center;white-space:nowrap; }

@media (max-width:760px) {
  .official-schedule-item { grid-template-columns:70px minmax(0,1fr);gap:14px;padding:15px; }
  .official-schedule-item > .text-action { grid-column:1/-1;justify-self:end; }
  .official-schedule-date { min-height:68px; }
}

/* RC4 managed public-content editor extends the Faithful application language. */
.content-editor-intro { overflow:hidden; }
.content-editor-intro .panel-header { align-items:flex-start;gap:28px; }
.content-editor-intro .panel-header > div:first-child { max-width:780px; }
.content-source-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;
  padding:0!important;
  border-top:1px solid var(--surface-line);
  background:var(--surface-line);
}
.content-source-grid article {
  min-width:0;
  padding:24px;
  background:linear-gradient(145deg,rgba(16,34,46,.97),rgba(8,22,31,.98));
}
.content-source-grid p { margin:13px 0 0;color:#aab4b6;font-size:12px;line-height:1.7; }
.content-editor-navigation {
  position:sticky;
  z-index:9;
  top:12px;
  display:grid;
  grid-template-columns:minmax(260px,.85fr) minmax(480px,1.6fr);
  gap:16px 28px;
  align-items:end;
  margin-top:24px;
  padding:20px 22px 0;
  border-color:rgba(190,124,72,.3);
  background:linear-gradient(145deg,rgba(9,24,34,.97),rgba(5,16,24,.98));
  box-shadow:0 25px 70px rgba(0,0,0,.32);
  backdrop-filter:blur(18px);
}
.content-editor-search label {
  display:block;
  margin-bottom:7px;
  color:#d9c8b7;
  font-size:9px;
  font-weight:850;
  letter-spacing:.13em;
  text-transform:uppercase;
}
.content-editor-search input { width:100%;min-height:44px; }
.content-editor-previews {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  align-items:center;
  gap:8px 16px;
  min-height:44px;
  color:#8f999c;
  font-size:10px;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.content-editor-previews a {
  color:var(--limestone-100);
  font-weight:750;
  text-decoration:none;
  border-bottom:1px solid rgba(190,124,72,.4);
}
.content-editor-previews a:hover,.content-editor-previews a:focus-visible { color:var(--ember-400); }
.content-group-tabs {
  grid-column:1/-1;
  display:flex;
  gap:2px;
  overflow-x:auto;
  margin:0 -22px;
  padding:0 22px;
  border-top:1px solid rgba(190,124,72,.15);
  scrollbar-width:thin;
}
.content-group-tab {
  position:relative;
  display:flex;
  gap:9px;
  align-items:center;
  flex:0 0 auto;
  min-height:52px;
  padding:0 15px;
  border:0;
  border-bottom:2px solid transparent;
  background:transparent;
  color:#899497;
  font:750 10px/1 var(--sans);
  letter-spacing:.05em;
  cursor:pointer;
}
.content-group-tab small {
  display:grid;
  place-items:center;
  min-width:24px;
  height:20px;
  padding:0 6px;
  border:1px solid rgba(190,124,72,.22);
  border-radius:999px;
  color:#b8a999;
  font-size:9px;
}
.content-group-tab:hover,.content-group-tab:focus-visible { color:var(--limestone-50); }
.content-group-tab.active {
  border-bottom-color:var(--ember-400);
  color:var(--limestone-50);
  background:linear-gradient(180deg,transparent,rgba(190,124,72,.08));
}
.content-group-tab.active small { border-color:rgba(237,132,55,.55);color:var(--ember-400); }
.content-field-summary {
  grid-column:1/-1;
  margin:0 -22px;
  padding:10px 22px 12px;
  border-top:1px solid rgba(255,255,255,.035);
  color:#7f8a8d;
  font-size:10px;
  letter-spacing:.035em;
}
.content-editor { display:grid;gap:24px;margin-top:24px; }
.content-group { overflow:hidden; }
.content-group-header {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:28px;
  padding:28px 30px;
  border-bottom:1px solid var(--surface-line);
  background:
    radial-gradient(circle at 92% 0%,rgba(116,66,104,.17),transparent 32%),
    linear-gradient(135deg,rgba(14,33,45,.98),rgba(7,20,29,.98));
}
.content-group-header .eyebrow { margin:0 0 8px; }
.content-group-header h2 { margin:0;font:500 clamp(27px,2vw,38px)/1.05 var(--serif);color:var(--limestone-50); }
.content-group-header p { max-width:740px;margin:9px 0 0;color:#9ba6a8;font-size:12px;line-height:1.65; }
.content-group-header > strong {
  flex:0 0 auto;
  padding:8px 10px;
  border:1px solid rgba(190,124,72,.25);
  color:#bda790;
  font-size:9px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.content-field-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1px;
  background:var(--surface-line);
}
.content-field {
  position:relative;
  min-width:0;
  padding:25px 28px 22px;
  background:linear-gradient(145deg,rgba(11,27,38,.98),rgba(7,20,29,.98));
  transition:background .18s ease,box-shadow .18s ease;
}
.content-field::before {
  content:'';
  position:absolute;
  inset:0 auto 0 0;
  width:2px;
  background:transparent;
}
.content-field.is-overridden {
  background:linear-gradient(145deg,rgba(33,24,39,.98),rgba(13,21,30,.98));
}
.content-field.is-overridden::before { background:linear-gradient(var(--aubergine-500),var(--ember-500)); }
.content-field:focus-within { z-index:1;box-shadow:inset 0 0 0 1px rgba(237,132,55,.38); }
.content-field-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  margin-bottom:12px;
}
.content-field-head label { display:block;color:var(--limestone-50);font-size:13px;font-weight:780;line-height:1.35; }
.content-field-head code { display:block;margin-top:5px;color:#667478;font:9px/1.35 var(--mono,monospace);word-break:break-all; }
.content-field-source {
  flex:0 0 auto;
  padding:6px 8px;
  border:1px solid rgba(190,124,72,.24);
  color:#a99a8b;
  font-size:8px;
  font-weight:850;
  letter-spacing:.09em;
  text-transform:uppercase;
  white-space:nowrap;
}
.content-field-source.source-event { border-color:rgba(126,78,127,.58);background:rgba(91,51,91,.17);color:#d7b3d2; }
.content-field-source.source-deployment { border-color:rgba(88,125,132,.5);background:rgba(61,99,106,.15);color:#acd0d4; }
.content-field-help { margin:-2px 0 13px;color:#899598;font-size:10px;line-height:1.55; }
.content-field input,.content-field textarea {
  width:100%;
  border-color:rgba(190,124,72,.23);
  background:rgba(2,12,18,.64);
  color:#ece2d7;
}
.content-field textarea { min-height:112px;resize:vertical;line-height:1.65; }
.content-field input:focus,.content-field textarea:focus { border-color:rgba(237,132,55,.72);box-shadow:0 0 0 3px rgba(237,132,55,.08); }
.content-field-meta {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  margin-top:10px;
  color:#667377;
  font-size:9px;
}
.content-field-meta .text-action { font-size:9px; }
.content-field-meta button:disabled { opacity:.35;cursor:not-allowed;text-decoration:none; }
.has-unsaved-content #save-content { box-shadow:0 0 0 1px rgba(237,132,55,.25),0 12px 35px rgba(213,97,29,.18); }
#save-content:disabled { opacity:.46;box-shadow:none;cursor:not-allowed; }
#content-save-status { position:sticky;z-index:8;bottom:18px;margin-top:18px;box-shadow:0 18px 55px rgba(0,0,0,.36); }

@media (max-width:1180px) {
  .content-source-grid { grid-template-columns:1fr; }
  .content-editor-navigation { position:relative;top:auto;grid-template-columns:1fr; }
  .content-editor-previews { justify-content:flex-start; }
  .content-field-grid { grid-template-columns:1fr; }
}
@media (max-width:720px) {
  .content-editor-intro .panel-header,.content-group-header { align-items:flex-start;flex-direction:column; }
  .content-editor-intro .action-row { width:100%; }
  .content-editor-intro .action-row > * { flex:1; }
  .content-editor-navigation { padding-inline:15px; }
  .content-group-tabs,.content-field-summary { margin-inline:-15px;padding-inline:15px; }
  .content-group-header,.content-field { padding:21px 18px; }
  .content-field-head { flex-direction:column; }
  .content-field-source { align-self:flex-start; }
}

/* ========================================================================== 
   RC6 · Multiple participation paths, home photography, and honest map fallback
   ========================================================================== */

/* --- Registration path chooser ------------------------------------------ */
.stage-heading { max-width:820px; margin-bottom:24px; }
.stage-heading h2 { margin:3px 0 8px; }
.participation-path-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
  margin:24px 0 20px;
}
.participation-path {
  position:relative;
  display:grid;
  grid-template-columns:48px minmax(0,1fr);
  grid-template-rows:1fr auto;
  gap:14px 15px;
  min-height:210px;
  padding:25px 22px 20px;
  overflow:hidden;
  border:1px solid rgba(205,145,94,.22);
  border-radius:8px;
  background:
    radial-gradient(circle at 88% 0,rgba(255,255,255,.045),transparent 36%),
    linear-gradient(145deg,rgba(15,35,47,.98),rgba(7,20,29,.98));
  box-shadow:0 22px 45px rgba(0,0,0,.18),inset 0 1px rgba(255,255,255,.025);
  cursor:pointer;
  transition:transform .2s var(--ease-out,ease),border-color .2s,box-shadow .2s,background .2s;
}
.participation-path::after {
  content:'';
  position:absolute;
  inset:auto 0 0;
  height:3px;
  opacity:.25;
  background:linear-gradient(90deg,transparent,var(--path-accent,var(--ember-400)),transparent);
}
.participation-path:hover { transform:translateY(-3px); border-color:rgba(236,166,107,.48); }
.participation-path:has(input:focus-visible) { outline:3px solid rgba(240,148,72,.34); outline-offset:3px; }
.participation-path:has(input:checked) {
  transform:translateY(-3px);
  border-color:var(--path-accent,var(--ember-400));
  background:
    radial-gradient(circle at 88% 0,color-mix(in srgb,var(--path-accent,var(--ember-400)) 20%,transparent),transparent 42%),
    linear-gradient(145deg,rgba(24,42,52,.99),rgba(8,22,31,.99));
  box-shadow:0 24px 58px rgba(0,0,0,.3),inset 0 0 0 1px color-mix(in srgb,var(--path-accent,var(--ember-400)) 24%,transparent),0 0 30px color-mix(in srgb,var(--path-accent,var(--ember-400)) 14%,transparent);
}
.participation-path input { position:absolute; inline-size:1px; block-size:1px; opacity:0; }
.participation-path .path-icon {
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  border:1px solid color-mix(in srgb,var(--path-accent,var(--ember-400)) 48%,transparent);
  border-radius:50%;
  background:rgba(3,13,19,.65);
  font-size:24px;
  filter:saturate(.8);
}
.participation-path > span:nth-of-type(2) { align-self:center; }
.participation-path strong { display:block; color:var(--limestone-50); font:500 23px/1.1 var(--serif); }
.participation-path small { display:block; margin-top:8px; color:#a7b1b4; font-size:11px; line-height:1.58; }
.participation-path b {
  grid-column:1/-1;
  align-self:end;
  width:max-content;
  padding:6px 9px;
  border:1px solid rgba(255,255,255,.09);
  color:#8d9a9f;
  font-size:8px;
  letter-spacing:.12em;
  text-transform:uppercase;
}
.participation-path:has(input:checked) b { border-color:color-mix(in srgb,var(--path-accent,var(--ember-400)) 52%,transparent); color:var(--limestone-50); }
.participation-path:has(input:checked) b::before { content:'✓ '; color:var(--path-accent,var(--ember-400)); }
.treat-path { --path-accent:var(--ember-400); }
.decoration-path { --path-accent:var(--aubergine-400); }
.activity-path { --path-accent:var(--moon-400); }

.path-detail-panel {
  position:relative;
  margin:15px 0;
  padding:24px;
  border:1px solid rgba(205,145,94,.2);
  border-radius:7px;
  background:
    linear-gradient(90deg,rgba(213,112,42,.045),transparent 28%),
    rgba(6,18,26,.68);
  animation:path-panel-in .24s var(--ease-out,ease) both;
}
.path-detail-panel::before { content:''; position:absolute; left:0; top:20px; bottom:20px; width:2px; background:linear-gradient(var(--ember-400),transparent); }
#decoration-path-panel::before { background:linear-gradient(var(--aubergine-400),transparent); }
#activity-path-panel::before { background:linear-gradient(var(--moon-400),transparent); }
.shared-options-panel::before { background:linear-gradient(var(--moss-400),transparent); }
.path-panel-heading { display:flex; align-items:flex-start; gap:16px; margin-bottom:18px; }
.path-panel-heading > span {
  flex:0 0 auto;
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  border:1px solid rgba(223,151,91,.34);
  border-radius:50%;
  color:var(--copper-300);
  font:600 11px var(--sans);
  letter-spacing:.08em;
}
.path-panel-heading h3 { margin:0; color:var(--limestone-50); font:500 25px/1.1 var(--serif); }
.path-panel-heading p { margin:6px 0 0; color:#95a2a6; font-size:11px; line-height:1.55; }
.compact-check-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.compact-check-grid .select-card { min-height:68px; }
.conditional-section { margin-top:20px; }
.section-rule { display:flex; align-items:center; gap:13px; margin:25px 0 18px; color:var(--copper-300); font-size:9px; font-weight:850; letter-spacing:.14em; }
.section-rule::before,.section-rule::after { content:''; height:1px; flex:1; background:linear-gradient(90deg,transparent,rgba(207,151,101,.3)); }
.section-rule::after { background:linear-gradient(90deg,rgba(207,151,101,.3),transparent); }
@keyframes path-panel-in { from { opacity:0; transform:translateY(-7px); } to { opacity:1; transform:none; } }

/* --- Registration home photos ------------------------------------------ */
.home-photo-section { margin-top:27px; }
.photo-drop-zone {
  position:relative;
  display:grid;
  justify-items:center;
  gap:9px;
  min-height:230px;
  padding:34px 24px;
  border:1px dashed rgba(226,159,102,.46);
  border-radius:9px;
  background:
    radial-gradient(circle at 50% 0,rgba(226,119,47,.11),transparent 45%),
    repeating-linear-gradient(135deg,rgba(255,255,255,.018) 0 1px,transparent 1px 12px),
    rgba(4,15,23,.72);
  text-align:center;
  cursor:pointer;
  transition:border-color .2s,background .2s,box-shadow .2s,transform .2s;
}
.photo-drop-zone:hover,.photo-drop-zone.is-dragging { border-color:var(--ember-400); background-color:rgba(12,31,42,.88); box-shadow:0 0 38px rgba(220,113,40,.09); }
.photo-drop-zone.is-dragging { transform:scale(1.007); }
.photo-drop-icon {
  display:grid;
  place-items:center;
  width:58px;
  height:58px;
  border:1px solid rgba(232,140,71,.48);
  border-radius:50%;
  color:var(--ember-400);
  background:rgba(218,102,29,.08);
  font:300 34px/1 var(--sans);
}
.photo-drop-zone strong { color:var(--limestone-50); font:500 26px var(--serif); }
.photo-drop-zone small { max-width:560px; color:#96a2a6; line-height:1.55; }
.faux-button { pointer-events:none; margin-top:4px; }
.photo-preview-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-top:15px; }
.home-photo-preview {
  position:relative;
  min-width:0;
  margin:0;
  overflow:hidden;
  aspect-ratio:4/3;
  border:1px solid rgba(205,145,94,.26);
  border-radius:7px;
  background:#06111a;
  box-shadow:0 16px 35px rgba(0,0,0,.25);
}
.home-photo-preview img { width:100%; height:100%; object-fit:cover; }
.home-photo-preview figcaption {
  position:absolute;
  inset:auto 0 0;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  padding:18px 10px 9px;
  background:linear-gradient(transparent,rgba(2,9,14,.94));
  color:#e7ded4;
  font-size:9px;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.home-photo-preview button { border:0; background:transparent; color:#f0a268; font:inherit; cursor:pointer; }
.photo-consent { margin-top:14px; border-color:rgba(157,189,112,.25); }
.photo-consent:has(input:checked) { border-color:rgba(157,189,112,.62); background:rgba(83,114,58,.12); }
.preview-image { position:relative; overflow:hidden; }
.preview-photo-strip { position:absolute; inset:0; display:grid; grid-template-columns:repeat(3,1fr); opacity:0; transition:opacity .2s; }
.preview-photo-strip img { width:100%; height:100%; object-fit:cover; min-width:0; }
.preview-image.has-photos .preview-photo-strip { opacity:1; }
.preview-image.has-photos::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,transparent 48%,rgba(3,10,15,.6)); pointer-events:none; }
.participation-mini-list { display:flex; flex-wrap:wrap; gap:5px; margin:8px 0; }
.participation-mini-list span { padding:5px 8px; border:1px solid rgba(207,151,101,.24); border-radius:999px; color:#d5c6b5; background:rgba(6,18,26,.72); font-size:8px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.upload-progress { margin-top:20px; padding:16px; border:1px solid rgba(222,144,80,.25); background:rgba(5,17,25,.72); }
.upload-progress-bar { height:5px; overflow:hidden; background:#020a0f; }
.upload-progress-bar i { display:block; width:20%; height:100%; background:linear-gradient(90deg,var(--ember-600),var(--ember-400)); animation:upload-progress 1.25s ease-in-out infinite alternate; }
.upload-progress p { margin:9px 0 0; color:#aab3b5; font-size:10px; }
@keyframes upload-progress { to { width:82%; transform:translateX(20%); } }
.review-photo-strip { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin-top:12px; }
.review-photo-strip img { width:100%; aspect-ratio:4/3; object-fit:cover; border:1px solid rgba(205,145,94,.25); border-radius:5px; }

/* --- Public stop photography ------------------------------------------- */
.stop-photo-gallery { position:relative; min-height:500px; overflow:hidden; background:#041017; }
.stop-photo-main { width:100%; height:100%; min-height:500px; object-fit:cover; display:block; }
.stop-photo-gallery::after { content:''; position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,transparent 58%,rgba(5,16,24,.62)),linear-gradient(0deg,rgba(4,12,18,.52),transparent 42%); }
.stop-photo-thumbs { position:absolute; z-index:2; left:18px; bottom:18px; display:flex; gap:8px; }
.stop-photo-thumbs button { width:72px; height:54px; padding:0; overflow:hidden; border:1px solid rgba(244,224,195,.4); border-radius:4px; background:#06131b; cursor:pointer; box-shadow:0 8px 22px rgba(0,0,0,.35); }
.stop-photo-thumbs button:hover,.stop-photo-thumbs button:focus-visible { border-color:var(--ember-400); transform:translateY(-2px); }
.stop-photo-thumbs img { width:100%; height:100%; object-fit:cover; }
.stop-photo-placeholder { display:grid; place-items:center; align-content:center; gap:12px; min-height:500px; padding:40px; color:#8e999d; text-align:center; background:radial-gradient(circle at 40% 25%,rgba(121,75,125,.13),transparent 38%),url('/assets/decorated-home.webp') center/cover;  position:relative;overflow:hidden;}
.stop-photo-placeholder::before { content:''; position:absolute; inset:0; background:rgba(4,13,19,.72); }
.stop-photo-placeholder > * { position:relative; z-index:1; }
.stop-photo-placeholder span { font:500 54px var(--serif); color:var(--copper-300); }
.directory-card.has-photo { grid-template-columns:84px 44px minmax(0,1fr); align-items:start; }
.directory-card-photo { width:84px; height:76px; object-fit:cover; border:1px solid rgba(209,149,98,.22); border-radius:4px; }
.floating-stop-photo { width:calc(100% + 34px); height:150px; margin:-18px -17px 15px; object-fit:cover; border-bottom:1px solid rgba(205,145,94,.24); }
.contest-category-line { margin:13px 0; padding:10px 12px; border-left:2px solid var(--aubergine-400); background:rgba(104,62,112,.11); color:#d9ccd8; font-size:11px; }

/* --- Map participation markers and the offline reference ---------------- */
.map-stage .map-image { object-fit:cover; }
.map-pin.decorations,.google-stop-marker.decorations .google-stop-lantern { --marker:#a777c9; }
.map-pin.mixed,.google-stop-marker.mixed .google-stop-lantern { --marker:#e98b48; }
.map-pin.decorations { background:#8f5eb5; box-shadow:0 0 0 4px rgba(143,94,181,.14),0 8px 22px rgba(0,0,0,.4); }
.map-pin.mixed { background:linear-gradient(135deg,#e88031 0 48%,#9362b7 52% 100%); box-shadow:0 0 0 4px rgba(217,126,62,.14),0 8px 22px rgba(0,0,0,.4); }
.key-marker.decorations { background:#9362b7; }
.key-marker.mixed { background:linear-gradient(135deg,#e88031 0 48%,#9362b7 52% 100%); }
.google-stop-marker.decorations .google-stop-lantern { border-color:#c09bd8; color:#d3b5e5; background:#342342; }
.google-stop-marker.mixed .google-stop-lantern { border-color:#f0a15e; color:#f3c18d; background:linear-gradient(135deg,#5f2d12 0 48%,#392441 52% 100%); }
.map-key { max-width:calc(100% - 42px); flex-wrap:wrap; }

/* --- Host home-photo manager ------------------------------------------- */
.host-action.photo-action { background:radial-gradient(circle at 100% 0,rgba(143,94,181,.15),transparent 40%),linear-gradient(150deg,#102535,#071720); }
.host-photo-manager { display:grid; gap:16px; }
.host-photo-summary { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:14px 16px; border:1px solid rgba(205,145,94,.2); background:rgba(4,14,21,.55); }
.host-photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.host-photo-card { position:relative; overflow:hidden; min-height:190px; border:1px solid rgba(205,145,94,.22); border-radius:6px; background:#051019; }
.host-photo-card img { display:block; width:100%; height:170px; object-fit:cover; }
.host-photo-card footer { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px; }
.host-photo-status { color:#9ca8aa; font-size:9px; letter-spacing:.08em; text-transform:uppercase; }
.host-photo-status.approved { color:var(--moss-400); }
.host-photo-status.rejected { color:#e68b82; }
.host-photo-card button { border:0; background:transparent; color:#efa066; font-size:9px; text-transform:uppercase; cursor:pointer; }
.host-photo-uploader { padding:20px; border:1px dashed rgba(205,145,94,.36); background:rgba(5,17,25,.64); text-align:center; }
.host-photo-uploader input { margin-top:12px; }
.host-path-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.host-path-grid .select-card { min-height:94px; }
.host-contest-categories { margin-top:15px; padding:17px; border:1px solid rgba(143,94,181,.28); background:rgba(79,44,84,.1); }

/* --- Ballot image gallery ---------------------------------------------- */
.entry-media { position:relative; height:205px; overflow:hidden; background:#040d13; }
.entry-media-main { width:100%; height:100%; object-fit:cover; display:block; }
.entry-media::after { content:''; position:absolute; inset:auto 0 0; height:45%; background:linear-gradient(transparent,rgba(4,12,18,.64)); pointer-events:none; }
.entry-media-thumbs { position:absolute; z-index:2; right:9px; bottom:9px; display:flex; gap:5px; }
.entry-media-thumbs button { width:42px; height:32px; padding:0; overflow:hidden; border:1px solid rgba(255,255,255,.45); border-radius:3px; background:#06121a; cursor:pointer; }
.entry-media-thumbs button[aria-pressed="true"] { border-color:var(--ember-400); box-shadow:0 0 0 2px rgba(232,128,49,.18); }
.entry-media-thumbs img { width:100%; height:100%; object-fit:cover; }
.entry-image-placeholder { display:grid; place-items:center; width:100%; height:100%; color:#765f50; background:radial-gradient(circle at 50% 32%,rgba(143,94,181,.13),transparent 45%),#06131c; font:500 44px var(--serif); }

/* --- Admin photo/path signals ------------------------------------------ */
.registration-path-badges { display:flex; flex-wrap:wrap; gap:4px; margin-top:5px; }
.registration-path-badges span { padding:3px 5px; border:1px solid rgba(205,145,94,.2); border-radius:999px; color:#b8aa9d; font-size:7px; letter-spacing:.06em; text-transform:uppercase; }
.media-owner-line { margin:8px 0; color:#929da0; font-size:10px; }
.media-owner-line strong { color:#dfd2c5; }
.photo-queue-warning { color:#e4a463; }

@media (max-width:1180px) {
  .participation-path-grid { grid-template-columns:1fr; }
  .participation-path { min-height:135px; grid-template-columns:48px minmax(0,1fr) auto; grid-template-rows:1fr; align-items:center; }
  .participation-path b { grid-column:auto; }
  .compact-check-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .host-photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:720px) {
  .participation-path { grid-template-columns:42px minmax(0,1fr); grid-template-rows:1fr auto; padding:20px 17px 16px; }
  .participation-path b { grid-column:1/-1; }
  .participation-path strong { font-size:21px; }
  .compact-check-grid,.photo-preview-grid,.host-photo-grid,.host-path-grid { grid-template-columns:1fr; }
  .photo-drop-zone { min-height:205px; padding:28px 17px; }
  .home-photo-preview { aspect-ratio:16/10; }
  .directory-card.has-photo { grid-template-columns:70px minmax(0,1fr); }
  .directory-card.has-photo .stop-number-box { position:absolute; z-index:2; top:20px; left:20px; width:34px; height:34px; }
  .directory-card-photo { width:70px; height:84px; }
  .stop-photo-gallery,.stop-photo-main,.stop-photo-placeholder { min-height:330px; }
  .stop-photo-gallery::after { background:linear-gradient(0deg,rgba(5,16,24,.68),transparent 52%); }
  .stop-photo-thumbs { left:12px; bottom:12px; }
  .stop-photo-thumbs button { width:58px; height:43px; }
  .map-key { left:10px; right:10px; max-width:none; }
}
@media (prefers-reduced-motion:reduce) {
  .path-detail-panel,.upload-progress-bar i { animation:none!important; }
  .participation-path,.photo-drop-zone,.stop-photo-thumbs button { transition:none!important; }
}

/* RC6: the offline SVG is a complete neighborhood reference, not a crop. */
.map-stage .map-image {
  object-fit:fill;
  filter:brightness(.93) saturate(.9) contrast(1.04);
  background:#07131c;
}
.map-stage::after {
  background:linear-gradient(90deg,rgba(5,16,24,.12),transparent 20%),radial-gradient(circle at 62% 38%,transparent 0,rgba(4,10,16,.08) 78%);
}

/* RC6: keep feature names and supporting copy visually distinct on stop pages. */
.feature-item > div {
  min-width: 0;
}
.feature-item strong,
.feature-item small {
  display: block;
}
.feature-item small {
  margin-top: 3px;
  line-height: 1.4;
}

/* RC6: keep the desktop map inside the viewport. Grid items must be allowed to
   shrink so a long directory scrolls inside its rail instead of stretching the
   map canvas and misaligning fallback markers. */
@media (min-width:901px) {
  body[data-page="stops"] .map-layout {
    grid-template-rows:minmax(0,1fr);
    overflow:hidden;
  }
  body[data-page="stops"] .map-sidebar,
  body[data-page="stops"] .map-stage {
    min-height:0;
    height:100%;
  }
  body[data-page="stops"] .map-sidebar {
    overflow:hidden;
  }
}

/* RC6: the route fallback uses the same authored Twin Hills footprint and an
   itinerary-derived path, so the line never implies a route through fictional
   streets. Google Maps remains the precise road-routing layer. */
.route-stage > img {
  object-fit:fill;
}
.route-path path {
  stroke-linecap:round;
  stroke-linejoin:round;
}

/* --- RC7: Treat Map discovery, galleries, sharing, and My Night -------- */
.treat-note-field { margin-top:18px; padding-top:18px; border-top:1px solid rgba(205,145,94,.18); }
.treat-note-field .optional { margin-left:6px; color:#879398; font-size:9px; font-weight:500; text-transform:uppercase; letter-spacing:.08em; }
.directory-photo-button,.stop-photo-main-button,.entry-main-photo { position:relative; display:block; width:100%; padding:0; border:0; background:transparent; color:inherit; cursor:zoom-in; overflow:hidden; }
.directory-photo-button { width:84px; height:76px; border-radius:4px; }
.photo-count-badge { position:absolute; z-index:4; right:8px; bottom:8px; min-width:24px; min-height:22px; display:grid; place-items:center; padding:3px 7px; border:1px solid rgba(255,236,210,.42); border-radius:999px; background:rgba(4,13,19,.86); color:#f5dfc6; box-shadow:0 6px 18px rgba(0,0,0,.32); font-size:8px; font-weight:850; letter-spacing:.05em; text-transform:uppercase; }
.stop-photo-main-button { height:100%; min-height:500px; }
.stop-photo-main-button:focus-visible { outline:2px solid var(--ember-400); outline-offset:-4px; }
.stop-photo-thumbs button[aria-pressed="true"] { border-color:var(--ember-400); box-shadow:0 0 0 2px rgba(232,128,49,.22),0 8px 22px rgba(0,0,0,.35); }
.directory-card-actions { display:flex; align-items:center; gap:9px; }
.directory-card-actions button { padding:0; border:0; background:transparent; }
.directory-treat-note { padding:8px 10px; border-left:2px solid var(--ember-400); background:rgba(211,104,35,.08); color:#e8d6c3!important; line-height:1.45; }
.map-stop-note { display:grid; gap:3px; margin:12px 0; padding:11px 12px; border:1px solid rgba(230,137,67,.25); border-left:3px solid var(--ember-400); background:linear-gradient(90deg,rgba(171,70,19,.16),rgba(7,20,29,.15)); }
.map-stop-note strong { color:#f0a164; font-size:8px; letter-spacing:.12em; text-transform:uppercase; }
.map-stop-note span { color:#f0e2d2; font-size:11px; line-height:1.5; }
.map-stop-note.prominent { margin:18px 0; padding:14px 16px; }
.map-floating-card { max-height:calc(100% - 100px); overflow:auto; padding:0; }
.map-floating-card .stop-photo-gallery { min-height:155px; height:155px; border-bottom:1px solid rgba(205,145,94,.24); }
.map-floating-card .stop-photo-main-button,.map-floating-card .stop-photo-main { min-height:155px; height:155px; }
.map-floating-card .stop-photo-gallery::after { background:linear-gradient(0deg,rgba(4,13,19,.56),transparent 58%); }
.map-floating-card .stop-photo-thumbs { left:10px; bottom:10px; gap:5px; }
.map-floating-card .stop-photo-thumbs button { width:48px; height:36px; }
.floating-stop-copy { padding:17px 18px 19px; }
.floating-stop-copy .action-row { gap:7px; }
.floating-stop-copy .button,.floating-stop-copy .button-secondary,.floating-stop-copy .button-quiet { min-height:36px; padding:9px 11px; font-size:8px; }
.map-toolbar { flex-wrap:wrap; justify-content:flex-end; max-width:calc(100% - 40px); }
.map-toolbar #my-night-count { display:inline-grid; min-width:17px; height:17px; place-items:center; margin-left:4px; border-radius:50%; background:var(--ember-500); color:#08131b; font-size:8px; font-weight:900; }
.my-night-dialog { min-width:min(620px,82vw); }
.my-night-list { display:grid; gap:8px; margin:18px 0; }
.my-night-list article { display:grid; grid-template-columns:30px 52px minmax(0,1fr) 34px; align-items:center; gap:10px; padding:10px; border:1px solid rgba(205,145,94,.18); background:rgba(4,14,21,.55); }
.my-night-list article>span { width:28px; height:28px; display:grid; place-items:center; border:1px solid #a4693d; color:var(--ember-400); font:500 15px var(--serif); }
.my-night-list img { width:52px; height:42px; object-fit:cover; border-radius:3px; }
.my-night-list strong,.my-night-list small { display:block; }
.my-night-list small { margin-top:3px; color:#8f9b9f; font-size:9px; }
.my-night-list article>button { width:30px; height:30px; border:1px solid rgba(255,255,255,.12); border-radius:50%; background:transparent; color:#e5b08b; cursor:pointer; }
.my-night-route-summary { margin:15px 0; padding:12px 14px; border:1px solid rgba(205,145,94,.24); background:rgba(202,107,39,.08); }
.my-night-route-summary strong,.my-night-route-summary span { display:block; }
.my-night-route-summary span { margin-top:4px; color:#9fa9ac; font-size:9px; line-height:1.5; }
.route-option.my-night-option { border-color:rgba(226,131,60,.45); background:linear-gradient(135deg,rgba(176,76,22,.18),rgba(75,45,80,.1)); }
.route-stop-sequence { display:grid; }
.itinerary-stop { grid-template-columns:42px minmax(0,1fr) auto; align-items:center; }
.itinerary-stop img { width:38px; height:38px; object-fit:cover; border:1px solid rgba(205,145,94,.24); border-radius:3px; }
.itinerary-stop>button { width:30px; height:30px; border:1px solid rgba(255,255,255,.12); border-radius:50%; background:transparent; color:#e5a174; cursor:pointer; }
.route-actions { margin-top:14px; }
.nearby-stop-photo { width:100%; height:150px; margin:-1px -1px 12px; object-fit:cover; }

/* Accessible full-screen home and ballot photography. */
.photo-lightbox { width:min(1040px,88vw); }
.photo-lightbox-stage { position:relative; display:grid; place-items:center; min-height:min(68vh,720px); overflow:hidden; background:#02070b; border:1px solid rgba(205,145,94,.2); }
.photo-lightbox-stage>img { display:block; width:100%; max-height:68vh; object-fit:contain; }
.photo-lightbox-nav { position:absolute; z-index:2; top:50%; translate:0 -50%; width:48px; height:56px; border:1px solid rgba(255,255,255,.2); background:rgba(4,12,18,.78); color:#fff1df; font:400 34px var(--serif); cursor:pointer; }
.photo-lightbox-nav.previous { left:12px; }
.photo-lightbox-nav.next { right:12px; }
.photo-lightbox-count { position:absolute; right:14px; bottom:12px; padding:5px 9px; border-radius:999px; background:rgba(4,12,18,.82); color:#ead9c5; font-size:9px; }
.photo-lightbox-thumbs { display:flex; justify-content:center; gap:8px; overflow:auto; padding:12px 0 2px; }
.photo-lightbox-thumbs button { flex:0 0 72px; height:52px; padding:0; overflow:hidden; border:1px solid rgba(255,255,255,.25); background:#06131b; cursor:pointer; }
.photo-lightbox-thumbs button[aria-pressed="true"] { border-color:var(--ember-400); box-shadow:0 0 0 2px rgba(232,128,49,.18); }
.photo-lightbox-thumbs img { width:100%; height:100%; object-fit:cover; }
.entry-main-photo { height:100%; }
.entry-copy-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:10px; }
.entry-copy-actions button { padding:0; border:0; background:transparent; }
.entry-media .photo-count-badge { top:9px; right:9px; bottom:auto; }

@media (max-width:900px) {
  .map-toolbar { left:10px; right:10px; max-width:none; justify-content:flex-end; }
  .map-floating-card { max-height:56%; }
  .my-night-dialog,.photo-lightbox { min-width:0; width:86vw; }
}
@media (max-width:620px) {
  .directory-photo-button { width:70px; height:84px; }
  .map-toolbar { gap:5px; }
  .map-toolbar button,.map-toolbar .button-quiet { height:33px; padding:0 8px; font-size:8px; }
  .map-floating-card .stop-photo-gallery,.map-floating-card .stop-photo-main-button,.map-floating-card .stop-photo-main { min-height:120px; height:120px; }
  .floating-stop-copy { padding:13px; }
  .floating-stop-copy .action-row { display:grid; grid-template-columns:1fr 1fr; }
  .my-night-list article { grid-template-columns:26px 44px minmax(0,1fr) 30px; }
  .my-night-list img { width:44px; height:38px; }
  .photo-lightbox { width:92vw; }
  .photo-lightbox-stage { min-height:48vh; }
  .photo-lightbox-nav { width:38px; height:48px; }
}

/* RC7 completion: resilient galleries, ordered My Night stops, and a usable mobile map drawer. */
.photo-lightbox-stage>img { transition:opacity .18s ease; }
.photo-lightbox-stage.loading>img { opacity:0; }
.photo-lightbox-loader { position:absolute; z-index:1; inset:0; display:grid; place-content:center; justify-items:center; gap:10px; color:#b9c3c6; background:radial-gradient(circle at 50% 44%,rgba(24,48,62,.5),rgba(2,7,11,.95) 62%); text-align:center; pointer-events:none; opacity:0; transition:opacity .16s ease; }
.photo-lightbox-stage.loading .photo-lightbox-loader,.photo-lightbox-stage.error .photo-lightbox-loader { opacity:1; }
.photo-lightbox-stage:not(.loading):not(.error) .photo-lightbox-loader { visibility:hidden; }
.photo-lightbox-loader span { width:34px; height:34px; border:2px solid rgba(234,217,197,.18); border-top-color:var(--ember-400); border-radius:50%; animation:gallery-spin .8s linear infinite; }
.photo-lightbox-stage.error .photo-lightbox-loader span { display:none; }
.photo-lightbox-stage.error .photo-lightbox-loader small { font-size:0; }
.photo-lightbox-stage.error .photo-lightbox-loader small::after { content:'This approved photo could not be displayed. Choose another thumbnail or try again.'; display:block; max-width:320px; color:#e4c6b3; font-size:11px; line-height:1.55; }
@keyframes gallery-spin { to { rotate:360deg; } }

.my-night-list article { grid-template-columns:30px 52px minmax(0,1fr) auto; }
.my-night-photo-placeholder { width:52px!important; height:42px!important; display:grid!important; place-items:center!important; border:1px solid rgba(205,145,94,.18)!important; color:#9a7daa!important; background:#07141d!important; font:500 20px var(--serif)!important; }
.my-night-item-actions { display:flex; align-items:center; gap:4px; }
.my-night-item-actions button { width:28px; height:28px; padding:0; border:1px solid rgba(255,255,255,.12); border-radius:50%; background:transparent; color:#e5b08b; cursor:pointer; }
.my-night-item-actions button:hover:not(:disabled),.my-night-item-actions button:focus-visible { border-color:var(--ember-400); color:#ffd7ba; }
.my-night-item-actions button:disabled { opacity:.28; cursor:not-allowed; }

@media (max-width:900px) {
  body[data-page="stops"] .map-stage { min-height:650px; height:72vh; }
  body[data-page="stops"] .map-floating-card { max-height:62%; scrollbar-width:thin; }
}
@media (max-width:620px) {
  body[data-page="stops"] .map-stage { min-height:690px; height:78vh; }
  body[data-page="stops"] .map-floating-card { max-height:64%; bottom:8px; }
  body[data-page="stops"] .map-toolbar { overflow-x:auto; flex-wrap:nowrap; justify-content:flex-start; scrollbar-width:none; }
  body[data-page="stops"] .map-toolbar::-webkit-scrollbar { display:none; }
  .my-night-list article { grid-template-columns:24px 44px minmax(0,1fr); align-items:start; }
  .my-night-item-actions { grid-column:2/-1; justify-content:flex-end; }
  .my-night-photo-placeholder { width:44px!important; height:38px!important; }
}
@media (prefers-reduced-motion:reduce) {
  .photo-lightbox-loader span { animation:none; }
}

/* Keep ballot categories readable as a horizontal task rail on small screens. */
@media (max-width:900px) {
  body[data-page="ballot"] .category-nav { display:block; overflow:visible; }
  body[data-page="ballot"] .category-nav .panel-header { border-bottom:1px solid rgba(205,145,94,.18); }
  body[data-page="ballot"] #category-nav { display:flex; gap:7px; overflow-x:auto; padding:8px; scroll-snap-type:x proximity; scrollbar-width:thin; }
  body[data-page="ballot"] .category-button { flex:0 0 150px; min-height:64px; display:grid; align-content:center; gap:5px; width:auto; padding:10px 12px; border:1px solid rgba(255,255,255,.09); background:rgba(5,16,24,.56); white-space:normal; scroll-snap-align:start; }
  body[data-page="ballot"] .category-button span,body[data-page="ballot"] .category-button small { display:block; }
  body[data-page="ballot"] .category-button small { color:#8f9a9f; font-size:8px; }
  body[data-page="ballot"] .category-button.active { border-color:var(--ember-400); box-shadow:inset 3px 0 var(--ember-400); }
}

/* RC8 · Live Walk and Treat Map exploration controls */
#search-map-area:not([hidden]) {
  border-color:#e78235;
  background:linear-gradient(180deg,rgba(205,100,30,.96),rgba(144,61,16,.96));
  color:#fff6ea;
  box-shadow:0 8px 28px rgba(172,73,21,.3);
}
#clear-map-area:not([hidden]) { border-color:rgba(203,151,104,.5); color:#f3cfad; }
#live-walk-start[aria-pressed="true"],#route-live-walk-start[aria-pressed="true"] {
  border-color:#f39a4c;
  background:linear-gradient(180deg,#d86f29,#9d4016);
  color:#fff9ef;
  box-shadow:0 0 22px rgba(232,123,50,.25);
}
.live-walk-panel {
  position:absolute;
  z-index:8;
  left:22px;
  bottom:22px;
  width:min(390px,calc(100% - 44px));
  padding:20px;
  border:1px solid rgba(222,150,93,.48);
  border-radius:6px;
  background:
    linear-gradient(180deg,rgba(13,32,44,.97),rgba(5,16,24,.98)),
    url('/assets/noise.png');
  box-shadow:0 24px 65px rgba(0,0,0,.52),inset 0 1px rgba(255,255,255,.04);
  color:#f7eee2;
  backdrop-filter:blur(18px);
}
.live-walk-panel[hidden] { display:none!important; }
.live-walk-head { display:flex;justify-content:space-between;align-items:flex-start;gap:16px; }
.live-walk-head .eyebrow { margin:0 0 4px;color:#ef9a54; }
.live-walk-head h2 { margin:0;font:500 25px/1.05 var(--serif);outline:none; }

.live-walk-head-actions { display:flex;align-items:center;gap:7px; }
.live-walk-collapse { width:30px;height:30px;padding:0;border:1px solid rgba(223,148,88,.34);background:rgba(4,13,20,.52);color:#eac6a3;font:600 18px/1 var(--sans);cursor:pointer; }
.live-walk-panel.is-collapsed { width:min(330px,calc(100% - 28px)); }
.live-walk-panel.is-collapsed .live-walk-signal,
.live-walk-panel.is-collapsed .live-walk-metrics,
.live-walk-panel.is-collapsed .live-walk-next,
.live-walk-panel.is-collapsed .live-walk-actions,
.live-walk-panel.is-collapsed .live-walk-privacy { display:none; }
.live-walk-panel.is-collapsed .live-walk-head h2 { font-size:18px; }

.live-walk-state {
  flex:none;
  padding:6px 9px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:999px;
  color:#c6d0d4;
  font:800 8px/1 var(--sans);
  letter-spacing:.12em;
  text-transform:uppercase;
}
.live-walk-state.active { border-color:rgba(239,139,65,.7);background:rgba(205,92,25,.18);color:#ffc18b; }
.live-walk-state.paused { border-color:rgba(211,172,101,.52);color:#efd3a0; }
.live-walk-signal { margin:14px 0 12px;padding:9px 11px;border-left:3px solid #7e8a90;background:rgba(255,255,255,.035);font-size:10px;color:#bdc7cb; }
.live-walk-signal.excellent { border-color:#8fc774;color:#d2efc4; }
.live-walk-signal.good { border-color:#84b9b5;color:#c3e7e4; }
.live-walk-signal.approximate { border-color:#db9c52;color:#f3d0a4; }
.live-walk-signal.weak { border-color:#cc674e;color:#f2b4a5; }
.live-walk-metrics { display:grid;grid-template-columns:repeat(3,1fr);border:1px solid rgba(255,255,255,.08); }
.live-walk-metrics>div { padding:11px 10px;border-right:1px solid rgba(255,255,255,.08); }
.live-walk-metrics>div:last-child { border-right:0; }
.live-walk-metrics small { display:block;color:#809098;font:800 7px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase; }
.live-walk-metrics strong { display:block;margin-top:5px;font:500 18px/1 var(--serif);color:#fff5e8; }
.live-walk-next { margin-top:12px;padding:12px 13px;border:1px solid rgba(218,146,88,.24);background:rgba(4,13,20,.44); }
.live-walk-next small { display:block;color:#d98a4d;font:850 7px/1 var(--sans);letter-spacing:.13em; }
.live-walk-next strong { display:block;margin-top:6px;font:500 16px/1.15 var(--serif); }
.live-walk-next span { display:block;margin-top:5px;color:#9eaaaf;font-size:9px; }
.live-walk-actions { display:flex;flex-wrap:wrap;gap:7px;margin-top:12px; }
.live-walk-actions button { min-height:36px;padding:8px 10px;font-size:8px; }
.live-walk-actions .danger { border-color:rgba(202,91,65,.4);color:#f0aa9a; }
.live-walk-privacy { margin:11px 0 0;color:#74838b;font-size:8px;line-height:1.45; }
.live-walk-consent p,.live-walk-consent li { color:#aab5ba;line-height:1.58; }
.live-walk-consent ul { margin:14px 0;padding-left:20px; }
.live-walk-consent .notice { margin:15px 0; }
.live-walk-fallback-overlay { position:absolute;inset:0;z-index:3;pointer-events:none; }
.live-walk-fallback-overlay[hidden] { display:none; }
.live-walk-fallback-overlay svg { width:100%;height:100%;overflow:visible; }
.live-walk-trail-path,.live-walk-plan-path { fill:none;vector-effect:non-scaling-stroke; }
.live-walk-plan-path { stroke:#c28b5d;stroke-width:4;stroke-dasharray:8 8;opacity:.58; }
.live-walk-trail-path { stroke:#ff9a45;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 7px rgba(255,129,48,.7)); }
.live-walk-user-dot { position:absolute;translate:-50% -50%;width:26px;height:26px;border:2px solid #fff0dc;border-radius:50%;background:#ef7e31;box-shadow:0 0 0 9px rgba(238,128,52,.14),0 0 20px rgba(255,144,61,.72); }
.live-walk-user-dot i { position:absolute;inset:7px;border-radius:50%;background:#fff8e9; }
.live-walk-user-dot b,.google-user-location b { display:none;position:absolute;z-index:-1;left:50%;top:-13px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:17px solid #fff0dc;transform:translateX(-50%) rotate(var(--walk-heading,0deg));transform-origin:50% 28px;filter:drop-shadow(0 0 5px rgba(255,142,56,.75)); }
.live-walk-user-dot.has-heading b,.google-user-location.has-heading b { display:block; }
.google-user-location { position:relative;width:30px;height:30px;border:2px solid #fff2df;border-radius:50%;background:#ed7c2e;box-shadow:0 0 0 10px rgba(238,126,45,.15),0 0 26px rgba(255,146,62,.68); }
.google-user-location>span,.google-user-location i { position:absolute;inset:0;border-radius:50%; }
.google-user-location i { inset:8px;background:#fff8e9; }
.google-map-active .live-walk-fallback-overlay { display:none; }
.route-stage .live-walk-panel { left:22px;right:auto;bottom:22px;max-height:calc(100% - 44px);overflow:auto; }
body[data-page="routes"] .routes-rail #route-live-walk-start { letter-spacing:.07em; }
.map-stage[data-area-filter="true"]::before { content:"MAP AREA FILTERED";position:absolute;z-index:5;left:18px;top:18px;padding:7px 9px;border:1px solid rgba(226,147,84,.4);background:rgba(6,18,27,.88);color:#f2ad75;font:850 7px/1 var(--sans);letter-spacing:.14em; }

@media(max-width:1100px){
  .live-walk-panel { width:min(360px,calc(100% - 28px));left:14px;bottom:14px; }
}
@media(max-width:900px){
  body[data-page="stops"] .live-walk-panel { position:fixed;left:10px;right:10px;bottom:72px;width:auto;max-height:58vh;overflow:auto;z-index:40; }

  body[data-page="stops"] .live-walk-panel.is-collapsed { left:10px;right:10px;bottom:72px;width:auto;max-height:none; }
  body[data-page="routes"] .live-walk-panel.is-collapsed { left:12px;right:12px;bottom:12px;width:auto;max-height:none; }

  body[data-page="routes"] .live-walk-panel { left:12px;right:12px;bottom:12px;width:auto;max-height:55%; }
  .live-walk-head h2 { font-size:22px; }
}
@media(max-width:620px){
  .live-walk-panel { padding:16px; }
  .live-walk-metrics strong { font-size:16px; }
  .live-walk-actions { display:grid;grid-template-columns:1fr 1fr; }
  .live-walk-actions button { width:100%; }
  .live-walk-privacy { font-size:7.5px; }
  .map-stage[data-area-filter="true"]::before { top:58px;left:10px; }
}


@media (max-width:720px) {
  body.live-walk-active .toast-stack { top:76px;bottom:auto;left:10px;right:10px; }
  body.live-walk-active .toast { max-width:none; }
}
