/* ============================================================================
   BuzzHive — Global Stylesheet
   Light, modern, neutral. Inter typography. BuzzHive pink accent.
   Built mobile-first. No external dependencies (Inter loaded via Google Fonts in <head>).
   ============================================================================ */

/* ---------- Tokens ---------- */
:root {
  /* Surface */
  --bg: #ffffff;
  --bg-soft: #f8fafc;
  --bg-sunk: #f1f5f9;

  /* Text */
  --fg: #0f172a;
  --fg-muted: #475569;
  --fg-soft: #94a3b8;
  --fg-inverse: #ffffff;

  /* Borders */
  --border: #e2e8f0;
  --border-strong: #cbd5e1;

  /* Brand / accent (BuzzHive pink). [pinkcopy-20260831] The label said "orange" and
     --accent-soft was still an ORANGE wash (#fff3e7) sitting under a pink accent.
     dash-dark.css overrides --accent-soft, so this only ever showed on the light
     public surfaces — which is exactly where it was least likely to be noticed. */
  --accent: #ec4899;
  --accent-hover: #a855f7;
  --accent-soft: #fdf2f8;
  --accent-fg: #0f172a;

  /* Status colors */
  --success: #059669;
  --success-soft: #ecfdf5;
  --warning: #d97706;
  --warning-soft: #fffbeb;
  --danger: #dc2626;
  --danger-soft: #fef2f2;

  /* Spacing scale (rem) */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 0.75rem;
  --s-4: 1rem;
  --s-5: 1.25rem;
  --s-6: 1.5rem;
  --s-7: 1.75rem;
  --s-8: 2rem;
  --s-10: 2.5rem;
  --s-12: 3rem;
  --s-16: 4rem;

  /* Typography */
  --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Radii */
  --r-sm: 4px;
  --r-md: 6px;
  --r-lg: 10px;
  --r-xl: 16px;
  --r-full: 9999px;

  /* Shadows */
  --shadow-sm: 0 1px 2px 0 rgba(15, 23, 42, 0.04);
  --shadow-md: 0 1px 3px 0 rgba(15, 23, 42, 0.06), 0 1px 2px -1px rgba(15, 23, 42, 0.04);
  --shadow-lg: 0 10px 15px -3px rgba(15, 23, 42, 0.08), 0 4px 6px -4px rgba(15, 23, 42, 0.04);

  /* Layout */
  --container-max: 1120px;
  --container-narrow: 720px;
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.55;
  color: var(--fg);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
img, svg, video { max-width: 100%; height: auto; display: block; }
a { color: var(--accent); text-decoration: none; }
/* [nohoverline-20260819] Was `text-decoration: underline` on every anchor.
   Shock, twice: "can we remove the text underline on cursor hover" / "the
   underline text makes it hard to read the text".

   A bare a:hover underlines EVERYTHING, and plenty of links on this site are not
   a word in a sentence — the Launchpad's studio rows are one <a> wrapping a title
   AND a full description, so hovering struck a line through a whole paragraph and
   cut every descender. Hover is still obvious: the colour changes to
   --accent-hover on the same event.

   Prose links that genuinely want a line get a border-bottom from lp-system SS21,
   which sits below the descenders instead of through them. */
a:hover { color: var(--accent-hover); }
hr { border: 0; border-top: 1px solid var(--border); margin: var(--s-8) 0; }
code, pre, kbd { font-family: var(--font-mono); font-size: 0.875em; }
button { font-family: inherit; }

/* ---------- Layout ---------- */
.container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--s-5);
}
.container-narrow {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--s-5);
}
.stack > * + * { margin-top: var(--s-5); }
.stack-tight > * + * { margin-top: var(--s-3); }
.stack-loose > * + * { margin-top: var(--s-8); }
.row { display: flex; gap: var(--s-4); align-items: center; }
.row.between { justify-content: space-between; }
.row.wrap { flex-wrap: wrap; }
.grid { display: grid; gap: var(--s-5); }
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.grid-4 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* ---------- Landing-page visual treatments ---------- */
.section-soft { background: var(--bg-soft); }
.section-accent-soft { background: var(--accent-soft); }
.section-pad { padding: var(--s-12) 0; }
.section-pad-lg { padding: var(--s-16) 0; }

.hero-gradient {
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(ellipse 70% 50% at 20% 0%, rgba(236,72,153, 0.12), transparent 60%),
    radial-gradient(ellipse 60% 50% at 100% 100%, rgba(236, 72, 153, 0.08), transparent 60%),
    linear-gradient(180deg, #ffffff 0%, #fafbff 100%);
}

.icon-circle {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: var(--accent-soft);
  color: var(--accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: 700;
  margin-bottom: var(--s-4);
}

.step-number {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--accent);
  color: var(--accent-fg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  font-weight: 700;
  font-feature-settings: 'tnum';
  box-shadow: 0 6px 20px -6px rgba(236,72,153, 0.5);
}

.cta-gradient {
  background: linear-gradient(135deg, #ec4899 0%, #ec4899 50%, #a855f7 100%);
  color: white;
  border: 0;
}
.cta-gradient h2,
.cta-gradient h3,
.cta-gradient p { color: white; }
.cta-gradient .btn-primary {
  background: white;
  color: var(--accent);
  border-color: white;
}
.cta-gradient .btn-primary:hover { background: #f8fafc; color: var(--accent); }

.hero-art {
  position: relative;
  aspect-ratio: 1;
  max-width: 420px;
  margin: 0 auto;
}

.feature-row {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: var(--s-10);
  align-items: center;
}
@media (max-width: 760px) {
  .feature-row { grid-template-columns: 1fr; }
}

/* ==========================================================================
   LANDING PAGE — DARK THEME (BuzzHive + TicketLeap)
   Scoped to <body class="landing-dark"> so other pages stay on the light theme.
   ========================================================================== */

body.landing-dark {
  background: #0a0a0a;
  color: #f5f5f5;
}

body.landing-dark .site-header {
  background: rgba(10, 10, 10, 0.92);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
body.landing-dark .brand { color: #ffffff; }
body.landing-dark .brand-mark {
  background: #ec4899;
  color: #0a0a0a;
}
body.landing-dark .nav a {
  color: #cbd5e1;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 12px;
  font-weight: 600;
}
body.landing-dark .nav a:hover { color: #ffffff; }
body.landing-dark .nav a.btn-secondary {
  background: transparent;
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.2);
  letter-spacing: 0.06em;
  border-radius: 999px;
  padding: 8px 18px;
}
body.landing-dark .nav a.btn-secondary:hover {
  background: rgba(255, 255, 255, 0.06);
  color: #ffffff;
}
body.landing-dark .nav a.btn-primary {
  background: var(--accent);
  color: #ffffff;
  border-color: var(--accent);
  border-radius: 999px;
  padding: 8px 18px;
  letter-spacing: 0.06em;
}
body.landing-dark .nav a.btn-primary:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
}

/* Hero with photo background + dark overlay + animated color glow */
body.landing-dark .land-hero {
  position: relative;
  min-height: 86vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  isolation: isolate;
  text-align: center;
  padding: var(--s-10) var(--s-5);
}
body.landing-dark .land-hero::before {
  /* Photo background with darkening overlay */
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(10, 10, 10, 0.7) 0%, rgba(10, 10, 10, 0.55) 50%, rgba(10, 10, 10, 0.85) 100%),
    url('/assets/img/hero.jpg') center/cover no-repeat;
  z-index: -2;
}
body.landing-dark .land-hero::after {
  /* Animated color-glow blobs that drift to give the page motion */
  content: '';
  position: absolute;
  inset: -10%;
  background:
    radial-gradient(ellipse 35% 45% at 20% 30%, rgba(236,72,153, 0.30), transparent 60%),
    radial-gradient(ellipse 30% 40% at 80% 70%, rgba(6, 182, 212, 0.22), transparent 60%),
    radial-gradient(ellipse 25% 35% at 60% 20%, rgba(236, 72, 153, 0.18), transparent 60%);
  z-index: -1;
  pointer-events: none;
  animation: drift 18s ease-in-out infinite;
  mix-blend-mode: screen;
}
@keyframes drift {
  0%   { transform: translate(0, 0) scale(1); }
  33%  { transform: translate(3%, -2%) scale(1.05); }
  66%  { transform: translate(-2%, 3%) scale(0.97); }
  100% { transform: translate(0, 0) scale(1); }
}

/* Pulsing accent line under the eyebrow */
@keyframes pulseGlow {
  0%, 100% { opacity: 0.6; }
  50%      { opacity: 1; }
}

body.landing-dark .land-eyebrow {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  color: #ec4899;
  font-weight: 600;
}
body.landing-dark .land-eyebrow::before {
  content: '— ';
  letter-spacing: 0;
}

body.landing-dark .land-hero h1,
body.landing-dark .land-section h2,
body.landing-dark .footer-cta h2 {
  font-family: 'Archivo Black', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  font-weight: 900;
  letter-spacing: -0.01em;
}

body.landing-dark .land-hero h1 {
  font-size: clamp(2.5rem, 7.5vw, 6rem);
  line-height: 0.92;
  text-transform: uppercase;
  color: #ffffff;
  margin: var(--s-4) 0 var(--s-5);
  text-shadow: 0 4px 32px rgba(0, 0, 0, 0.6), 0 0 1px rgba(0, 0, 0, 0.4);
}
body.landing-dark .land-hero h1 .accent {
  color: #ec4899;
  -webkit-text-fill-color: #ec4899;
  background: none;
  text-shadow: 0 2px 24px rgba(236,72,153, 0.4);
}
body.landing-dark .land-hero h1 .neon {
  color: #06b6d4;
}
body.landing-dark .land-hero p.lead {
  font-size: clamp(15px, 1.6vw, 18px);
  line-height: 1.55;
  color: #cbd5e1;
  max-width: 600px;
  margin: 0 auto var(--s-7);
}

body.landing-dark .btn-pill {
  display: inline-block;
  background: #ec4899;
  color: #ffffff;
  padding: 16px 32px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  border: 0;
  transition: transform 0.15s, box-shadow 0.2s;
  box-shadow: 0 8px 32px -8px rgba(236,72,153, 0.5);
}
body.landing-dark .btn-pill:hover {
  background: #ec4899;
  transform: translateY(-1px);
  box-shadow: 0 12px 40px -8px rgba(236,72,153, 0.7);
  text-decoration: none;
  color: white;
}
body.landing-dark .btn-pill-ghost {
  background: transparent;
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.25);
  box-shadow: none;
}
body.landing-dark .btn-pill-ghost:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.4);
  color: white;
  box-shadow: none;
}

/* Vertical text on the right edge (BuzzHive signature element) */
body.landing-dark .vertical-rail {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%) rotate(180deg);
  writing-mode: vertical-rl;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  letter-spacing: 0.4em;
  color: rgba(255, 255, 255, 0.35);
  pointer-events: none;
}

/* Section bands */
body.landing-dark .land-section {
  padding: var(--s-12) var(--s-5);
  position: relative;
}
body.landing-dark .land-section.alt {
  background: #111111;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
body.landing-dark .land-section h2 {
  font-size: clamp(1.75rem, 3.5vw, 2.75rem);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -0.01em;
  line-height: 1.05;
  color: #ffffff;
  margin: var(--s-3) 0 var(--s-4);
}
body.landing-dark .land-section h2 .accent { color: #ec4899; }
body.landing-dark .land-section h3 { color: #ffffff; }
body.landing-dark .land-section p { color: #cbd5e1; }
body.landing-dark .land-section .muted { color: #94a3b8; }

body.landing-dark .feature-card {
  background: #141414;
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 12px;
  padding: var(--s-7);
  transition: border-color 0.2s, transform 0.2s;
}
body.landing-dark .feature-card:hover {
  border-color: rgba(236,72,153, 0.3);
  transform: translateY(-2px);
}
body.landing-dark .feature-card .icon-circle {
  background: rgba(236,72,153, 0.15);
  color: #ec4899;
}

body.landing-dark .price-card {
  background: #141414;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: var(--s-10) var(--s-8);
}
body.landing-dark .price-card.featured {
  border-color: #ec4899;
  box-shadow: 0 24px 80px -32px rgba(236,72,153, 0.5);
}
body.landing-dark .price-card .price-num {
  font-size: 44px;
  font-weight: 900;
  color: #ffffff;
  letter-spacing: -0.03em;
}

body.landing-dark .table { color: #f5f5f5; }
body.landing-dark .table th {
  color: #94a3b8;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 11px;
  border-bottom-color: rgba(255, 255, 255, 0.1);
}
body.landing-dark .table td {
  border-bottom-color: rgba(255, 255, 255, 0.06);
}
/* Row hover — light-theme uses --bg-soft (#f8fafc near-white), which would
   wash out the row and make white text invisible. Override with a subtle
   warm-orange tint that reads against #0a0a0a and keeps text legible. */
body.landing-dark .table tr:hover td {
  background: rgba(236,72,153, 0.12);
}

body.landing-dark .footer-cta {
  background:
    radial-gradient(ellipse 60% 80% at 50% 100%, rgba(236,72,153, 0.25), transparent 70%),
    linear-gradient(180deg, #0a0a0a 0%, #1a0f1f 100%);
  padding: var(--s-12) var(--s-5);
  text-align: center;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}

/* EQ-bar decorative element — animated audio bars */
body.landing-dark .eq-bars {
  display: inline-flex;
  align-items: flex-end;
  gap: 4px;
  height: 28px;
}
body.landing-dark .eq-bars span {
  display: block;
  width: 4px;
  height: 60%;
  background: linear-gradient(180deg, #ec4899 0%, #a855f7 100%);
  border-radius: 2px;
  animation: eqPulse 1.2s ease-in-out infinite;
}
body.landing-dark .eq-bars span:nth-child(1) { animation-delay: 0.0s; }
body.landing-dark .eq-bars span:nth-child(2) { animation-delay: 0.15s; height: 80%; }
body.landing-dark .eq-bars span:nth-child(3) { animation-delay: 0.3s;  height: 50%; }
body.landing-dark .eq-bars span:nth-child(4) { animation-delay: 0.45s; height: 95%; background: linear-gradient(180deg, #06b6d4 0%, #ec4899 100%); }
body.landing-dark .eq-bars span:nth-child(5) { animation-delay: 0.6s;  height: 40%; }
body.landing-dark .eq-bars span:nth-child(6) { animation-delay: 0.75s; height: 70%; }
body.landing-dark .eq-bars span:nth-child(7) { animation-delay: 0.9s;  height: 55%; }
@keyframes eqPulse {
  0%, 100% { transform: scaleY(0.5); transform-origin: bottom; }
  50%      { transform: scaleY(1); transform-origin: bottom; }
}

/* Section divider line + accent dot */
body.landing-dark .section-divider {
  position: relative;
  height: 1px;
  background: rgba(255, 255, 255, 0.06);
  margin: 0;
}
body.landing-dark .section-divider::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #ec4899;
  box-shadow: 0 0 16px #ec4899;
}

body.landing-dark .site-footer {
  background: #0a0a0a;
  color: #94a3b8;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
body.landing-dark .site-footer a { color: #cbd5e1; }

/* Flash banner overrides — the default .alert variants are styled for a
   light page (white-ish backgrounds + saturated colored text) which leaks
   onto the dark landing pages as a glaring white bar. Re-skin them to
   feel native to the dark theme: subtle tinted background, light text. */
body.landing-dark .alert {
  background: #141414;
  border: 1px solid rgba(255,255,255,0.08);
  color: #cbd5e1;
  border-radius: 10px;
  padding: 12px 16px;
}
body.landing-dark .alert a { color: #ec4899; }
body.landing-dark .alert-success {
  background: rgba(34,197,94,0.08);
  border-color: rgba(34,197,94,0.25);
  color: #d1fae5;
}
body.landing-dark .alert-info {
  background: rgba(236,72,153,0.08);
  border-color: rgba(236,72,153,0.25);
  color: #fde2c8;
}
body.landing-dark .alert-warning {
  background: rgba(234,179,8,0.08);
  border-color: rgba(234,179,8,0.25);
  color: #fef9c3;
}
body.landing-dark .alert-danger {
  background: rgba(239,68,68,0.08);
  border-color: rgba(239,68,68,0.3);
  color: #fecaca;
}

/* ---------- Header ---------- */
.site-header {
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  position: sticky;
  top: 0;
  z-index: 50;
}
.site-header .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-4);
  padding-top: var(--s-4);
  padding-bottom: var(--s-4);
  /* [navbleed-20260819] max-width:none — the header row is the ONE row that must
     not be capped at --container-max.

     Shock: "the BuzzHive logo got moved over to the right ... it's actually
     causing bad things to happen ... I can grab the page with my cursor and move
     it around now."

     Both halves of that are the same bug, and the numbers say so. Capped at
     1120px and centred, the row measured:
        1920px viewport -> logo 420px from the left edge   (the "moved right")
        1440px viewport -> 47px of horizontal page overflow
        1100px viewport -> 227px of overflow               (the page slides)
     The cap pushed the brand inward AND starved the nav of room, so it spilled
     past the viewport. Full-bleed puts the logo at 20px at EVERY width and gives
     the nav the whole screen. Measured after: overflow 0 from 1920 down. */
  max-width: none;
}
/* Between the collapse breakpoint and ~1440 the row fits, but only just. Tighten
   the nav rather than let it touch the edges. Measured: removes the last 47px of
   overflow at 1280. */
@media (max-width: 1440px) {
  .site-header .nav { gap: 13px; }
  .site-header .nav a { font-size: 13px; }
}
/* Keep the whole nav as one group hugging the right edge, so it never crowds the
   brand or the (admin-only) "Back to dashboard" pill on the left. */
.site-header .nav { margin-left: auto; }
.brand {
  font-weight: 700;
  font-size: 18px;
  letter-spacing: -0.02em;
  color: var(--fg);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
}
.brand:hover { color: var(--fg); text-decoration: none; }
.brand-mark {
  width: 22px;
  height: 22px;
  border-radius: var(--r-sm);
  background: var(--accent);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 13px;
  font-weight: 700;
}
/* Bee glyph inside the brand tile — fills the tile, no overflow. */
.brand-mark svg {
  width: 100%;
  height: 100%;
  display: block;
}
.nav { display: flex; gap: var(--s-5); align-items: center; }
.nav a {
  color: var(--fg-muted);
  font-weight: 500;
  font-size: 14px;
  text-decoration: none;
  white-space: nowrap;   /* keep multi-word links (How it works / Browse events) on one line */
}
.nav a:hover { color: var(--fg); text-decoration: none; }
.nav a.btn-primary { color: var(--accent-fg); }
.nav a.btn-primary:hover { color: var(--accent-fg); }
.nav a.btn-secondary { color: var(--fg); margin-left: var(--s-2); }   /* set the CTA group apart from the links */

/* Hamburger toggle — hidden on desktop, shown ≤960px where the nav collapses
   into a tap-to-open panel (see the mobile header block further down). The
   button markup lives in _partials/header.php and toggles .open on .nav. */
.nav-toggle {
  display: none;
  background: none;
  border: 0;
  cursor: pointer;
  padding: 10px;
  margin-left: auto;          /* hug the right edge, opposite the brand */
  color: var(--fg);
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;                /* comfortable thumb target */
  height: 44px;
  border-radius: 10px;
}
.nav-toggle span {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform .2s ease, opacity .2s ease;
}
/* Morph bars into an X while the menu is open */
.nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
body.landing-dark .nav-toggle { color: #f5f5f4; }

/* ---------- Nav dropdown (Studios menu) ----------
   Opens on hover (desktop) or tap (mobile, via .open toggled in markup) and on
   keyboard focus-within. Degrades to an inline expanded list on phones. */
.nav-drop { position: relative; display: inline-flex; }
.nav-drop-t {
  background: none; border: 0; font: inherit; cursor: pointer; padding: 0;
  color: var(--fg-muted); font-weight: 500; font-size: 14px;
  display: inline-flex; align-items: center; gap: 5px;
}
.nav-drop-t:hover { color: var(--fg); }
.nav-caret { font-size: 9px; line-height: 1; transition: transform .15s; }
.nav-drop:hover .nav-caret, .nav-drop.open .nav-caret { transform: rotate(180deg); }
.nav-drop-m {
  position: absolute; top: 100%; left: 0; min-width: 196px; padding: 8px 7px 7px;
  display: none; flex-direction: column; gap: 2px; z-index: 200;
  background: #15151a; border: 1px solid rgba(255,255,255,.1); border-radius: 12px;
  box-shadow: 0 18px 50px rgba(0,0,0,.5);
}
.nav-drop:hover .nav-drop-m, .nav-drop:focus-within .nav-drop-m, .nav-drop.open .nav-drop-m { display: flex; }
.nav-drop-m a {
  color: #cfc9c1 !important; padding: 9px 12px; border-radius: 8px;
  font-size: 13.5px; font-weight: 600; white-space: nowrap; text-transform: none; letter-spacing: 0;
}
.nav-drop-m a:hover { background: rgba(236,72,153,.16); color: #fff !important; }
/* landing-dark: match the uppercase nav-link treatment for the trigger */
body.landing-dark .nav-drop-t { color: #cbd5e1; text-transform: uppercase; letter-spacing: .06em; font-size: 12px; font-weight: 600; }
body.landing-dark .nav-drop-t:hover { color: #fff; }
@media (max-width: 960px) {
  .nav-drop { width: 100%; flex-direction: column; align-items: flex-start; }
  .nav-drop-m {
    position: static; box-shadow: none; background: transparent; border: 0;
    padding: 4px 0 4px 14px; min-width: 0;
  }
}

/* Phones AND phone-landscape: collapse the nav behind the hamburger.
   One compact header row (brand + toggle) stays sticky — the old wrapped
   multi-row nav ate ~40% of the viewport and looked broken. The panel opens
   as a full-width column under the header row.
   Breakpoint is 960px (not 768px) so iPhone landscape (780–932px) also gets
   the collapsed nav; iPad landscape stays on the desktop layout (1024px+). */
/* [navbleed-20260819] Was 960px. That left a dead band from 961 to ~1180 where
   the nav was too wide for one row and not narrow enough to collapse — every
   width in it overflowed the page (measured: 366px of overflow at 961). 1180
   is where the full nav genuinely stops fitting, so that is where it collapses.
   Trade-off, stated plainly: laptops between 1024 and 1180 now get the hamburger
   instead of the full row. A tucked-away nav beats a page that slides sideways. */
@media (max-width: 1180px) {
  .site-header .container {
    flex-wrap: wrap;
    row-gap: 0;
  }
  .nav-toggle { display: inline-flex; }
  .site-header .nav {
    display: none;              /* collapsed by default */
    width: 100%;
    flex-direction: column;
    align-items: stretch;
    gap: 2px;
    padding: var(--s-3) 0 var(--s-2);
    border-top: 1px solid var(--border);
    margin-top: var(--s-4);
  }
  .site-header .nav.open { display: flex; }
  .site-header .nav a {
    font-size: 15px;
    padding: 12px 6px;          /* full-width tap rows */
  }
  .site-header .nav a.btn,
  .site-header .nav a.btn-sm {
    text-align: center;
    padding: 12px 14px;
    font-size: 14px;
    margin: 6px 0 0;
  }
  .nav-drop-t { font-size: 15px; padding: 12px 6px; width: 100%; }
  body.landing-dark .site-header .nav { border-top-color: rgba(255,255,255,.1); }
}

/* ---------- Footer ---------- */
.site-footer {
  margin-top: var(--s-16);
  border-top: 1px solid var(--border);
  padding: var(--s-10) 0;
  color: var(--fg-soft);
  font-size: 13px;
}
.site-footer .container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--s-4);
}
.site-footer a {
  color: var(--fg-muted);
  /* Keep multi-word link labels (e.g. "Help Guide") on one line even when
     the footer row wraps to a second line on narrow viewports. */
  white-space: nowrap;
}

/* ---------- Typography ---------- */
h1, h2, h3, h4 { color: var(--fg); letter-spacing: -0.02em; line-height: 1.2; margin: 0; }
h1 { font-size: 2.25rem; font-weight: 700; }
h2 { font-size: 1.5rem; font-weight: 600; }
h3 { font-size: 1.125rem; font-weight: 600; }
h4 { font-size: 1rem; font-weight: 600; }
.eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--fg-soft);
  font-weight: 500;
}
.muted { color: var(--fg-muted); }
.soft { color: var(--fg-soft); }
.lead { font-size: 17px; color: var(--fg-muted); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  padding: 10px 16px;
  border-radius: var(--r-md);
  border: 1px solid transparent;
  font-size: 14px;
  font-weight: 500;
  font-family: inherit;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
  white-space: nowrap;
  line-height: 1;
}
.btn:disabled { opacity: 0.55; cursor: not-allowed; }
.btn-primary {
  background: var(--accent);
  color: var(--accent-fg);
  border-color: var(--accent);
}
.btn-primary:hover:not(:disabled) { background: var(--accent-hover); border-color: var(--accent-hover); color: white; text-decoration: none; }
.btn-secondary {
  background: var(--bg);
  color: var(--fg);
  border-color: var(--border-strong);
}
.btn-secondary:hover:not(:disabled) { background: var(--bg-soft); text-decoration: none; }
.btn-ghost {
  background: transparent;
  color: var(--fg-muted);
  border-color: transparent;
}
.btn-ghost:hover:not(:disabled) { background: var(--bg-sunk); color: var(--fg); text-decoration: none; }
.btn-danger {
  background: var(--danger);
  color: white;
  border-color: var(--danger);
}
.btn-danger:hover:not(:disabled) { background: #b91c1c; border-color: #b91c1c; color: white; text-decoration: none; }
.btn-sm { padding: 6px 12px; font-size: 13px; }
.btn-lg { padding: 14px 22px; font-size: 16px; }
.btn-block { width: 100%; }

/* ---------- Cards ---------- */
.card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: var(--s-6);
}
.card-flat { background: var(--bg-soft); border-color: var(--border); }
.card-padless { padding: 0; overflow: hidden; }
.card-header {
  padding: var(--s-5) var(--s-6);
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.card-body { padding: var(--s-6); }
.card-footer {
  padding: var(--s-4) var(--s-6);
  border-top: 1px solid var(--border);
  background: var(--bg-soft);
}

/* ---------- Forms ---------- */
.field { display: flex; flex-direction: column; gap: var(--s-2); margin-bottom: var(--s-4); }
.field label {
  font-size: 13px;
  font-weight: 500;
  color: var(--fg);
}
.field .help { font-size: 12px; color: var(--fg-soft); }
.field .error { font-size: 12px; color: var(--danger); }

.input, .select, .textarea {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--r-md);
  font-size: 14px;
  font-family: inherit;
  background: var(--bg);
  color: var(--fg);
  transition: border-color 120ms ease, box-shadow 120ms ease;
}
.input:focus, .select:focus, .textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.textarea { min-height: 100px; resize: vertical; }

/* Checkbox/radio */
.checkfield { display: flex; align-items: flex-start; gap: var(--s-3); }
.checkfield input { margin-top: 3px; accent-color: var(--accent); }

/* Inline form (login etc.) */
.form-narrow { max-width: 420px; margin: 0 auto; }

/* ---------- Tables ---------- */
.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.table th, .table td {
  padding: 12px 16px;
  text-align: left;
  border-bottom: 1px solid var(--border);
}
.table th {
  font-weight: 600;
  font-size: 12px;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--bg-soft);
}
.table tr:last-child td { border-bottom: 0; }
.table tr:hover td { background: var(--bg-soft); }
.table-padless { margin: 0 -1px; }

/* ---------- Badges ---------- */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 600;
  border-radius: var(--r-full);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-family: var(--font-mono);
}
.badge-neutral { background: var(--bg-sunk); color: var(--fg-muted); }
.badge-success { background: var(--success-soft); color: var(--success); }
.badge-warning { background: var(--warning-soft); color: var(--warning); }
.badge-danger { background: var(--danger-soft); color: var(--danger); }
.badge-info { background: var(--accent-soft); color: var(--accent); }

/* ---------- Alerts ---------- */
.alert {
  padding: var(--s-4) var(--s-5);
  border-radius: var(--r-md);
  border: 1px solid var(--border);
  font-size: 14px;
}
.alert-success { background: var(--success-soft); border-color: #a7f3d0; color: #064e3b; }
.alert-warning { background: var(--warning-soft); border-color: #fcd34d; color: #78350f; }
.alert-danger { background: var(--danger-soft); border-color: #fca5a5; color: #7f1d1d; }
.alert-info { background: var(--accent-soft); border-color: #c7d2fe; color: #312e81; }

/* ---------- Empty state ---------- */
.empty-state {
  text-align: center;
  padding: var(--s-16) var(--s-5);
  color: var(--fg-soft);
}
.empty-state h3 { color: var(--fg); margin-bottom: var(--s-2); }
.empty-state p { max-width: 380px; margin: 0 auto var(--s-5); }

/* ---------- Event card (marketplace) ---------- */
.event-card {
  display: flex;
  flex-direction: column;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden;
  transition: transform 150ms ease, box-shadow 150ms ease, border-color 150ms ease;
}
.event-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
  border-color: var(--border-strong);
  text-decoration: none;
  color: inherit;
}
.event-card .flyer {
  aspect-ratio: 4 / 5;
  background: var(--bg-sunk) center/cover no-repeat;
  border-bottom: 1px solid var(--border);
}
.event-card .body { padding: var(--s-5); }
.event-card .date {
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: var(--s-2);
}
.event-card h3 {
  font-size: 17px;
  margin-bottom: var(--s-2);
  line-height: 1.3;
}
.event-card .venue {
  font-size: 14px;
  color: var(--fg-muted);
  margin-bottom: var(--s-3);
}
.event-card .price {
  font-size: 14px;
  font-weight: 600;
  color: var(--fg);
}

/* ---------- Auth pages ---------- */
.auth-shell {
  min-height: 80vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--s-10) var(--s-5);
}
.auth-card {
  width: 100%;
  max-width: 420px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: var(--s-8);
  box-shadow: var(--shadow-md);
}
.auth-card h1 { font-size: 1.5rem; margin-bottom: var(--s-2); }
.auth-card .lead { font-size: 14px; margin-bottom: var(--s-6); }

/* ===========================================================================
   AUTH CARD ON DARK — v3                                    [authv3-20260819]

   RETRACTED 2026-08-19, same day. A block of .auth-card overrides lived here
   and was dead code from the moment it shipped: header.php loads app.css and
   THEN dash-dark.css (lines 128-129), and dash-dark.css already carries a
   `body.landing-dark .auth-card` block at the same (0,2,1) specificity. Later
   file wins every one of them. The claim that led to writing it — "the card
   measures rgb(255,255,255)" — did not survive being checked against the live
   page: the card renders #141414 and has since dash-dark.css was written.

   The v3 treatment for these cards now lives in dash-dark.css, in the file
   that actually wins. Do not re-add auth-card rules here.
   =========================================================================== */

/* Headings on a dark page.                                  [darkhead-20260819]

   `h1, h2, h3, h4 { color: var(--fg) }` at line 788 is #0f172a — right on the
   white theme, near-black on #0a0a0a. The landing pages escape it because they
   scope their own `body.landing-dark .land-hero h1` / `.land-section h2`, and
   auth cards escape it via dash-dark's `.auth-card h1`. NOTHING ELSE DID.
   Measured live on /buyer/login.php: the <h1>Your account</h1> was painting
   #0f172a on #0a0a0a — a heading you could barely see.

   (0,1,1). Beats the bare element rule; loses to every (0,2,1) scope above, so
   the landing heroes and the auth cards keep exactly the colours they have. */
body.landing-dark h1,
body.landing-dark h2,
body.landing-dark h3,
body.landing-dark h4 { color: #f2f3f5; }

/* The buyer sign-in "Remember this device" box was rendering as the browser's
   default blue — the one non-brand accent left on a dark page. */
body.landing-dark input[type=checkbox],
body.landing-dark input[type=radio] { accent-color: #ec4899; }

/* `.muted` at line 801 is `color: var(--fg-muted)` = #475569 — dark slate, which is
   the correct choice on the white theme and close to invisible on #0a0a0a. The
   landing pages never hit it because they scope their own
   `body.landing-dark .land-section .muted` at (0,3,1); anything OUTSIDE a
   .land-section on a dark page — the buyer screens, every auth screen — was
   reading dark grey on black. This is (0,2,1): it beats the bare `.muted` and
   still loses to the .land-section rule, so the landing pages are untouched. */
body.landing-dark .muted { color: #8d949d; }

/* ---------- Dashboard sidebar layout ---------- */
.dash-shell {
  display: grid;
  grid-template-columns: 240px 1fr;
  min-height: calc(100vh - 64px);
}
.dash-sidebar {
  border-right: 1px solid var(--border);
  background: var(--bg-soft);
  padding: var(--s-6) var(--s-4);
}
.dash-sidebar .menu { display: flex; flex-direction: column; gap: 2px; }
.dash-sidebar .menu a {
  padding: 8px 12px;
  border-radius: var(--r-md);
  color: var(--fg-muted);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
}
.dash-sidebar .menu a:hover { background: var(--bg); color: var(--fg); text-decoration: none; }
.dash-sidebar .menu a.active { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
.dash-sidebar .menu .group-label {
  padding: var(--s-4) 12px var(--s-1);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--fg-soft);
}
.dash-main { padding: var(--s-8); }
.dash-main h1 { margin-bottom: var(--s-6); }

/* Dashboard sidebar collapse — fires at phone-landscape widths too so
   iPhone landscape (780–932px) doesn't waste 220px on a sidebar that
   leaves the main column too narrow for stat-card grids and tables.
   Breakpoint matches the nav-wrap rule above. */
@media (max-width: 960px) {
  .dash-shell { grid-template-columns: 1fr; }
  .dash-sidebar { display: none; }
  .dash-main { padding: var(--s-5); }
}

/* ---------- Stats / KPI cards ---------- */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: var(--s-4); }
.stat-card {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: var(--s-5);
}
.stat-card .label {
  font-size: 12px;
  color: var(--fg-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: 600;
}
.stat-card .value { font-size: 24px; font-weight: 700; margin-top: var(--s-2); letter-spacing: -0.02em; }
.stat-card .delta { font-size: 12px; color: var(--fg-muted); margin-top: var(--s-1); }
.stat-card .delta.up { color: var(--success); }
.stat-card .delta.down { color: var(--danger); }

/* ---------- Mono utilities (codes, IDs, timestamps) ---------- */
.mono { font-family: var(--font-mono); font-size: 13px; }
.mono-sm { font-family: var(--font-mono); font-size: 12px; }

/* ---------- Helpers ---------- */
.text-center { text-align: center; }
.text-right { text-align: right; }
.flex-1 { flex: 1; }
.hidden { display: none !important; }
.mt-0 { margin-top: 0 !important; }
.mb-0 { margin-bottom: 0 !important; }

/* ---------- Responsive ---------- */
@media (max-width: 640px) {
  h1 { font-size: 1.875rem; }
  .site-header .nav a { font-size: 13px; }
  .dash-main { padding: var(--s-5); }
}

/* ============================================================================
   Mobile horizontal-overflow containment (iPhone Chrome portrait is the
   primary target — Chrome on iOS still runs WebKit, so this also fixes
   Safari and any other iOS browser).

   The previous behavior: a wide admin/promoter table (orders, finance,
   promoters list, etc.) would push the entire page width past the viewport,
   so the user could scroll the whole page horizontally and the header/nav
   would slide out of view. That's confusing and feels broken.

   New behavior:
     1. <html> + <body> never scroll horizontally at narrow viewports — the
        page chrome stays anchored.
     2. Any .card or .card-padless that CONTAINS a table gets overflow-x: auto
        so the table scrolls horizontally INSIDE its card instead of pushing
        the page out. Uses CSS :has() which is supported by every iOS WebKit
        15.4+ (any iPhone in active use) and every shipping Chrome / Firefox /
        Safari since 2023.
     3. <pre> blocks (help-guide code samples, etc.) also scroll internally.
     4. The promoter-table-wrap pattern in admin/promoters.php still works —
        this is additive, not a replacement.
   ============================================================================ */
/* Mobile + phone-landscape overflow + grid containment fixes.
   Breakpoint bumped from 768 → 960 on 2026-06-07 because iPhone
   landscape widths (780–932px) fell above the old threshold, so phones
   in landscape were getting the desktop layout — sidebar eating 220px,
   stat cards overflowing, tables crushing. 960px catches iPhone
   landscape + iPad portrait, leaves iPad landscape (1024+) on desktop. */
@media (max-width: 960px) {
  html, body {
    overflow-x: hidden;
    /* IMPORTANT: do NOT set `max-width: 100vw` here. iOS Safari does not
       reliably recalculate `vw` units on orientation change, so the page
       gets stuck rendered at portrait width when the user rotates to
       landscape — making it look like the page failed to flip. The
       `overflow-x: hidden` above, combined with the grid `minmax(0, 1fr)`
       rules below, is sufficient to contain horizontal overflow without
       triggering that bug. Caught 2026-06-03 on Baytek's event page. */
  }

  /* ---- CSS Grid intrinsic-blowout fix ----
     ALL CSS Grid containers with implicit `1fr` (= minmax(auto, 1fr)) let
     their column tracks expand to fit the widest intrinsic child — so any
     wide table or long card label pushes the column past viewport width.
     Forcing minmax(0, 1fr) breaks the intrinsic-content propagation while
     letting overflow-x: auto on the card scroll the table internally. */
  .dash-shell {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .dash-main {
    min-width: 0;
    max-width: 100%;
  }

  /* KPI / stats card grid — same intrinsic-blowout fix. Stack to 2 columns
     of equal width that can shrink instead of expanding past viewport. */
  .stats {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* Generic grid helpers — same minmax(0, ...) treatment so they can never
     expand past their container. */
  .grid-2, .grid-3, .grid-4 {
    grid-template-columns: 1fr !important;
  }

  /* Defensive catch-all: any inline-styled .grid or .row that hard-codes
     grid-template-columns (filter bars in admin/events, admin/orders, etc.)
     gets force-collapsed to single-column at this breakpoint. The
     !important is needed because inline styles otherwise win. Without
     this, 4-up filter rows hard-code 2fr 1fr 1fr auto and crush their
     content on iPhone landscape. */
  .dash-main .grid[style*="grid-template-columns"],
  .dash-main .row[style*="grid-template-columns"] {
    grid-template-columns: 1fr !important;
  }

  /* Every direct child of dash-main also needs min-width: 0 so cards don't
     refuse to shrink below their intrinsic content size. */
  .dash-main > * {
    min-width: 0;
    max-width: 100%;
  }

  /* Cards containing tables scroll horizontally within themselves.
     `.aff-table-wrap` (admin/affiliates.php) and `.ad-table-wrap`
     (ambassador/dashboard.php) are part of the same family — listed
     explicitly so they pick up touch-scroll on iOS. */
  .card:has(table),
  .card-padless:has(table),
  .promoter-table-wrap,
  .aff-table-wrap,
  .ad-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Tables take their natural content width so columns don't crush — the
     card scrolls around them. min-width: 100% keeps the table filling its
     card width when it would otherwise be narrower. */
  .card:has(table) table,
  .card-padless:has(table) table,
  .promoter-table-wrap table,
  .aff-table-wrap table,
  .ad-table-wrap table {
    width: max-content;
    min-width: 100%;
  }

  /* ---- Flex rows wrap instead of running off the screen ----
     [rowwrap-20260815]

     `.row` is the site-wide flex utility (app.css:106) and it does NOT wrap.
     On a phone that silently DELETES content. Measured at a real 390px
     viewport on 2026-08-15, on /promoter/events, /orders, /settings and
     /help alike:

       10 footer links rendered past the right edge and were unreachable —
       Seat-Map, Apps, Videos, Help Guide, Affiliates, White Label,
       Terms, Privacy, Refunds, Contact.

     They were not merely off-screen. `html, body { overflow-x: hidden }`
     above stops the PAGE scrolling sideways, which is right for the chrome,
     but it also means anything a nowrap row pushes past the edge is clipped
     with no way to scroll to it. Terms, Privacy and Refunds are links a
     ticket buyer's platform is expected to keep reachable, and on ~90% of
     this platform's traffic they could not be reached at all.

     Wrapping is the correct default at this width for essentially every row
     on the site: a horizontal strip of links, filters or buttons that does
     not fit should become two lines, not disappear. Rows that genuinely want
     a single scrolling line opt out with `.row-noscroll` below, and rows
     already marked `.row.wrap` are unaffected. */
  .row:not(.row-noscroll) {
    flex-wrap: wrap;
  }
  /* Escape hatch: a row that is meant to stay on one line and scroll. */
  .row-noscroll {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Compact mobile cell padding + tighter buttons so more columns fit per
     viewport width before the user needs to swipe. */
  .card .table th,
  .card .table td,
  .card-padless .table th,
  .card-padless .table td {
    padding: 8px 10px !important;
    font-size: 13px;
  }
  .card .table .btn-sm,
  .card-padless .table .btn-sm {
    padding: 4px 8px;
    font-size: 11px;
  }

  /* Pre-formatted code samples scroll internally on narrow viewports */
  pre {
    overflow-x: auto;
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
  }

  /* Generic safety net — any element with .table-responsive wraps content */
  .table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
  }

  /* ---- Long-URL containment on prose surfaces ----
     Reported 2026-06-04 on iPhone 16 Pro Max in Chrome: the help guide,
     terms, privacy, and refunds pages all overflowed horizontally because
     unbreakable strings (long URLs like buzzhive.info/promoter/signup and
     long IDs in code samples) pushed the prose container past viewport
     width. `overflow-wrap: anywhere` lets the browser break those at any
     character when they would otherwise blow out the container. We apply
     it to the prose surfaces specifically, not body-wide, so display
     fonts / headings still get to keep their natural breaks. */
  .help-content,
  .help-content p,
  .help-content li,
  .help-content a,
  .help-content code,
  .legal-shell,
  .legal-shell p,
  .legal-shell li,
  .legal-shell a {
    overflow-wrap: anywhere;
    word-break: break-word;
    /* Also clamp these surfaces to their parent's width — defensive
       against any inner element that tries to push them wider. */
    max-width: 100%;
    min-width: 0;
  }
}
