/* ==========================================
   Timp pentru Frați — Design System (Heritage)
   Tipografie: Cormorant Garamond (display) + Inter (body)
   Paletă: ink (navy adâncit) + brass (auriu cald) + cream
   ========================================== */

/* === Fonts (self-hosted, variable, latin + latin-ext) === */

/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400 700;
  font-display: optional;
  src: url('/fonts/google/CormorantGaramond-italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400 700;
  font-display: optional;
  src: url('/fonts/google/CormorantGaramond-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400 700;
  font-display: optional;
  src: url('/fonts/google/CormorantGaramond-normal-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400 700;
  font-display: optional;
  src: url('/fonts/google/CormorantGaramond-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('/fonts/google/Inter-normal-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('/fonts/google/Inter-normal-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Bricolage Grotesque — display font (variabilă, 300-700) */
/* latin-ext */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('/fonts/google/BricolageGrotesque-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Bricolage Grotesque';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('/fonts/google/BricolageGrotesque-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Oswald — condensat, doar pentru titlul din bara mobilă (--font-title).
   `block`, nu `optional`: e un singur cuvânt pe ecran, iar un fallback la Inter
   s-ar vedea imediat ca o altă bară. */
/* latin-ext */
@font-face {
  font-family: 'Oswald';
  font-style: normal;
  font-weight: 500 600;
  font-display: block;
  src: url('/fonts/google/Oswald-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Oswald';
  font-style: normal;
  font-weight: 500 600;
  font-display: block;
  src: url('/fonts/google/Oswald-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* === Paletă „Graphite & Gold" (backdrop graphite + suprafețe slate + auriu) ===
     Numele legacy (--ink/--brass/--cream) sunt PĂSTRATE ca să nu rescriem ~340 de
     usages: --ink-* = scala de bază (backdrop graphite near-black + carduri slate),
     --brass-* = ACCENTUL (auriu #e3b341 — numele se potrivește din nou),
     --cream-* = textul (slate-white). --success (verde #4cae7a) e SEPARAT de
     accent: verdele apare doar la „confirmat/prezent", nu ca accent.
     Backdrop-ul (--ink-950/900) e mai închis DECÂT cardurile (--ink-700) ca ele să
     „plutească"; restul suprafețelor rămân slate (paleta A). Cardurile: solid
     var(--ink-700) — migrat din rgba(15,26,43,.55) heritage rămas din swap-uri. */
  --ink-950: #0f1216;     /* page backdrop (graphite, mai închis ca cardurile) */
  --ink-900: #14181d;     /* secondary backdrop */
  --ink-800: #222831;
  --ink-700: #1e242c;     /* card bg (mid — potolit, distinct fără să domine) */
  --ink-600: #2d343d;
  --ink-500: #3a424c;     /* dividers */
  --ink-400: #808a97;     /* muted text */

  --brass-300: #f2cf76;
  --brass-400: #f2cf76;   /* hover / highlight */
  --brass-500: #e3b341;   /* primary brass — main accent */
  /* alamă stinsă — căldura brass-ului, desaturată: pentru text care trebuie să
     iasă în evidență fără să pară interactiv (titlul din bara mobilă) */
  --brass-muted: #c8b48a;
  --brass-600: #c79a34;
  --brass-700: #8a6f24;

  --cream-50: #f2f5f8;
  --cream-100: #dce2e9;   /* main text on dark */
  --cream-200: #c9d1da;
  --cream-300: #b6bec8;
  --cream-400: #808a97;   /* muted text */

  --ember-500: #e5675f;   /* rare accent for danger / CTA */
  --ember-400: #eb8079;

  --success: #4cae7a;   /* verde — DOAR pentru „confirmat/prezent" (nu accent) */
  --danger: #e5675f;
  --warning: #c9a227;

  /* === Legacy aliases (existing CSS uses these) === */
  --primary-dark: var(--ink-900);
  --primary-medium: var(--ink-700);
  --primary-light: var(--ink-500);
  --accent-gold: var(--brass-500);
  --accent-gold-light: var(--brass-400);
  --accent-gold-dark: var(--brass-600);
  --text-light: var(--cream-100);
  --text-muted: var(--cream-400);
  --white: var(--cream-50);

  /* === Typography === */
  --font-display: 'Bricolage Grotesque', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  /* titlul din bara mobilă — condensat, ca să se citească drept titlu, nu drept conținut îngroșat */
  --font-title: 'Oswald', 'Bricolage Grotesque', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono: 'JetBrains Mono', 'SF Mono', 'Menlo', Consolas, monospace;

  /* === Effects === */
  --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.3);
  --shadow-2: 0 8px 24px rgba(6, 16, 31, 0.55);
  --shadow-3: 0 24px 48px rgba(6, 16, 31, 0.75);

  --rule-thin: 1px solid rgba(227, 179, 65, 0.18);
  --rule-medium: 1px solid rgba(227, 179, 65, 0.32);
  --rule-hairline: 1px solid rgba(52, 71, 102, 0.5);   /* neutral, discret */

  /* === Spacing scale (4px base) — folosire uniforma in polish nou === */
  --sp-0: 0;
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --sp-7: 32px;
  --sp-8: 48px;
  --sp-9: 64px;

  /* === Type scale — perfect fourth (1.333) === */
  --fs-xs: 0.7rem;    /* eyebrow, meta */
  --fs-sm: 0.82rem;   /* small text */
  --fs-base: 0.95rem; /* body */
  --fs-md: 1.05rem;   /* card title */
  --fs-lg: 1.25rem;   /* section title */
  --fs-xl: 1.7rem;    /* page sub */
  --fs-2xl: 2.2rem;   /* stat value */
  --fs-3xl: 3rem;     /* hero */

  /* === Radii — subtle, ferme, fara "playful" === */
  --radius-none: 0;
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 10px;
  --radius-pill: 999px;

  /* === Motion === */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --dur-fast: 150ms;
  --dur-med: 220ms;
  --dur-slow: 320ms;
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  /* Fără highlight albastru la atingere pe mobil (default Android/Chrome). Avem
     stări proprii (hover/active/pilă gold), consistent iOS/Android. Moștenit → tot. */
  -webkit-tap-highlight-color: transparent;
  /* Explicit dark bg — evita flash alb la overscroll bounce pe Android/iOS. */
  background-color: var(--ink-950);
  /* Previne bounce peste content pe iOS PWA (cauza butoanelor bottom-nav
     care „plecau in sus" la scroll). Elimină doar overscroll din shell —
     scroll intern in main ramane fluent. */
  overscroll-behavior: none;
  /* Scrollbar ascuns pe elementul document — Firefox + IE. */
  scrollbar-width: none;
  -ms-overflow-style: none;
}
/* WebKit (Safari, Chrome Android) — scrollbar invizibil dar functional. */
html::-webkit-scrollbar,
body::-webkit-scrollbar,
main.main-content::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}

body {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 15px;
  line-height: 1.6;
  letter-spacing: 0.005em;
  background-color: var(--ink-950);
  color: var(--cream-100);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  /* Scrollbar ascuns global — scroll cu deget/wheel functioneaza, dar bara
     vizuala nu ocupa spatiu (impact estetic pe mobile). */
  scrollbar-width: none;
  -ms-overflow-style: none;
  /* Subtle depth — brass tint stramutat din top (era vizibil in statusbar
     pe Android la tranzitii ca flash galben). Ramane doar tint neutru bottom. */
  background-image:
    radial-gradient(ellipse at bottom right, rgba(58, 71, 102, 0.18), transparent 70%);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Headings — Bricolage Grotesque, editorial feel */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.02em;
  color: var(--cream-50);
}

h5, h6 {
  font-family: var(--font-body);
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  font-size: 0.75rem;
  color: var(--brass-400);
}

a {
  color: var(--brass-400);
  text-decoration: none;
  transition: color 200ms ease, border-color 200ms ease;
  border-bottom: 1px solid transparent;
}

a:hover {
  color: var(--brass-300);
  border-bottom-color: var(--brass-500);
}

/* Anchor without hover-underline (utility) */
a.no-underline:hover { border-bottom-color: transparent; }

/* Anchor-ele folosite ca CONTAINER (card / rând), nu ca link de text: underline-ul
   de mai sus le-ar colora doar latura de jos. Cardurile primesc hover uniform pe
   toate laturile (ca .lodge-row); rândurile plate își păstrează separatorul neutru. */
a.card:hover { border-color: rgba(227, 179, 65, 0.4); }
a.agenda-row:hover { border-bottom-color: var(--ink-500); }

/* === Heritage utilities === */

/* Caps eyebrow label — small, tracked-out text above titles */
.eyebrow {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  color: var(--brass-500);
}

/* Decorative divider — brass line with a diamond ornament in the middle.
   Use as <div class="ornament"></div> between sections. */
.ornament {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  color: var(--brass-500);
  margin: 24px 0;
}
.ornament::before,
.ornament::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(to right, transparent, rgba(227, 179, 65, 0.5), transparent);
  max-width: 120px;
}
.ornament::after { background: linear-gradient(to left, transparent, rgba(227, 179, 65, 0.5), transparent); }
.ornament-symbol {
  font-size: 0.85rem;
  letter-spacing: 0.4em;
  padding-right: 0; /* compensates for letter-spacing on last char */
}

/* Simple brass rule (horizontal) */
.brass-rule {
  height: 1px;
  background: linear-gradient(to right,
    transparent 0%,
    rgba(227, 179, 65, 0.55) 50%,
    transparent 100%);
  border: 0;
  margin: 32px 0;
}

/* Display title — for hero moments (login, dashboard) */
.display-title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-weight: 500;
  font-style: italic;
  font-size: clamp(1.9rem, 4vw, 2.6rem);
  line-height: 1;
  letter-spacing: -0.01em;
  color: var(--cream-50);
}

.display-title em,
.display-title .ital { font-style: normal; }
.display-title strong { font-weight: 600; font-style: normal; }

/* ==========================================
   Layout
   ========================================== */

.app-container {
  display: flex;
  min-height: 100vh;
}

/* Wrapper transparent la layout (display:contents) — main-ul se comportă ca și
   cum ar fi copil direct al .app-container. Prezent în DOM ca țintă istorică
   htmx (#tab-content), păstrat inofensiv. */
.tab-content {
  display: contents;
}

/* ==========================================
   Top bar — global header with tabs
   ========================================== */
.app-topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 60px;
  background: linear-gradient(180deg, var(--ink-950) 0%, var(--ink-900) 100%);
  border-bottom: 1px solid rgba(227, 179, 65, 0.18);
  display: flex;
  align-items: center;
  padding: 0 20px;
  z-index: 200;
  gap: 20px;
}

/* htmx progress indicator — bar subtilă la vârful topbar-ului, animată la fetch */
.topbar-progress {
  position: absolute;
  top: 0;
  left: 0;
  height: 2px;
  width: 0;
  background: linear-gradient(90deg, var(--brass-500), var(--brass-300));
  transition: width 0.15s ease, opacity 0.2s ease;
  opacity: 0;
  pointer-events: none;
}
.topbar-progress.htmx-request {
  opacity: 1;
  animation: topbar-progress-anim 1.5s ease-in-out infinite;
}
@keyframes topbar-progress-anim {
  0% { width: 0; left: 0; }
  50% { width: 60%; left: 20%; }
  100% { width: 100%; left: 0; }
}

.topbar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 160px;
}
.topbar-logo {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4));
}
.topbar-title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  color: var(--cream-100);
  font-size: 1.3rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  /* Cormorant Garamond default = old-style figures (cifrele au înălțimi
     mixte față de majuscule). Forțăm lining figures ca „20" să fie la
     aceeași înălțime ca „AIC". */
  font-variant-numeric: lining-nums;
  font-feature-settings: "lnum" 1;
}

.topbar-tabs {
  display: flex;
  gap: 6px;
  flex: 1;
  justify-content: center;
}

/* Titlu dinamic (AIC20/TPF) vizibil doar pe mobile (topbar simplu WhatsApp-like) */
.topbar-title-dynamic {
  display: none;
}

/* Icon 3-puncte pentru dropdown-ul din topbar — vizibil doar pe mobile.
   Pe desktop se afișează iconul user-circle + caret cu numele profilului. */
.topbar-user-icon-mobile {
  display: none;
}
.topbar-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 20px;
  color: var(--cream-400);
  text-decoration: none;
  border-radius: 6px;
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 500;
  transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease;
  border: 1px solid transparent;
  white-space: nowrap;
}
.topbar-tab:hover {
  color: var(--cream-100);
  background: rgba(227, 179, 65, 0.06);
}
.topbar-tab.active {
  color: var(--brass-300);
  background: rgba(227, 179, 65, 0.12);
  border-color: rgba(227, 179, 65, 0.35);
}
.tab-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  background: rgba(227, 179, 65, 0.18);
  color: var(--cream-100);
  font-size: 0.75rem;
  font-weight: 400;
  margin-left: 4px;
}

.topbar-user {
  position: relative;
  min-width: 160px;
  display: flex;
  justify-content: flex-end;
}
.topbar-user-toggle {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: transparent;
  border: 1px solid rgba(227, 179, 65, 0.18);
  color: var(--cream-100);
  padding: 7px 14px;
  border-radius: 6px;
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 0.9rem;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.topbar-user-toggle:hover {
  background: rgba(227, 179, 65, 0.08);
  border-color: rgba(227, 179, 65, 0.35);
}
.topbar-user-name {
  max-width: 120px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  min-width: 180px;
  background: var(--ink-900);
  border: 1px solid rgba(227, 179, 65, 0.25);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
  padding: 6px;
  display: none;
  z-index: 201;
}
.topbar-dropdown.open {
  display: block;
}
.topbar-dropdown .dropdown-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  color: var(--cream-100);
  text-decoration: none;
  border-radius: 4px;
  font-family: var(--font-body);
  font-size: 0.9rem;
}
.topbar-dropdown .dropdown-item:hover {
  background: rgba(227, 179, 65, 0.08);
  color: var(--brass-300);
}
.topbar-dropdown .dropdown-divider {
  height: 1px;
  background: rgba(227, 179, 65, 0.15);
  margin: 4px 0;
}

/* Main content */
.main-content {
  flex: 1;
  /* Fără sidebar (Stage 2): conținut centrat, lățime plafonată pentru lizibilitate. */
  max-width: 1200px;
  width: 100%;
  margin: 60px auto 0;
  padding: 30px;
  min-height: calc(100vh - 60px);
}

/* Page header — heritage editorial */
.page-header {
  margin: 8px 0 36px;
  padding-bottom: 24px;
  position: relative;
}

.page-header::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 1px;
  background: linear-gradient(to right,
    rgba(227, 179, 65, 0.45) 0%,
    rgba(227, 179, 65, 0.45) 80px,
    transparent 240px);
}

.page-title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-weight: 500;
  font-size: clamp(1.6rem, 3vw, 2rem);
  line-height: 1.1;
  letter-spacing: 0.005em;
  color: var(--cream-50);
  margin: 0;
}

/* Font Awesome icons in page titles look out of place in heritage type — hide them */
.page-title i { display: none; }

.page-subtitle {
  color: var(--cream-300);
  font-family: var(--font-body);
  font-size: 0.92rem;
  line-height: 1.55;
  max-width: 60ch;
  margin-top: 8px;
}

/* Descrierea ediției ca text de intro sub antet (landing excursie), deasupra
   cardurilor. Păstrează rândurile introduse de admin (pre-line). */
.excursie-intro {
  white-space: pre-line;
  max-width: 64ch;
  margin: 4px 0 20px;
  color: var(--cream-100);
  font-family: var(--font-body);
  font-size: 1.02rem;
  line-height: 1.6;
}

/* ==========================================
   Components
   ========================================== */

/* Cards — refined paper-like surfaces with brass detailing.
   .card e sursa unica pentru decor; .stat-card + .section-card sunt
   variante care mostenesc TOT si suprascriu doar layout intern. */
.card,
.stat-card {
  background-color: var(--ink-700);
  border: var(--rule-hairline);
  border-radius: var(--radius-xs);
  padding: var(--sp-7) var(--sp-7) var(--sp-6);
  margin-bottom: var(--sp-6);
  box-shadow: var(--shadow-1);
  position: relative;
}

.card::before,
.stat-card::before {
  content: '';
  position: absolute;
  top: -1px;
  left: 22px;
  width: 28px;
  height: 1px;
  background: var(--brass-500);
}

/* Card „flush": card folosit ca listă, cu padding orizontal redus la 4px ca
   textul să se alinieze cu rândurile agendei din Home (.agenda-row = 14px 4px).
   Look-ul de card (bg, border, tick, ritm vertical) rămâne. */
.card--flush { padding-left: var(--sp-1); padding-right: var(--sp-1); }

/* Section card — variantă cu tint subtle de brass + titlu tip eyebrow. */
.section-card {
  background:
    linear-gradient(180deg, rgba(227, 179, 65, 0.07) 0%, rgba(227, 179, 65, 0.015) 100%),
    var(--ink-700);
  border-color: rgba(227, 179, 65, 0.22);
  margin-top: 32px;
}
.section-card::before { width: 56px; background: var(--brass-400); }
.section-card .card-title {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  color: var(--brass-400);
}
.section-card .card-title i {
  color: var(--brass-500);
  font-size: 0.85em;
  margin-right: 12px;
  transform: none;
}

.card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-4);
  margin-bottom: var(--sp-5);
  padding-bottom: var(--sp-3);
  border-bottom: var(--rule-hairline);
  flex-wrap: wrap;
}

.card-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.1rem;
  line-height: 1.2;
  letter-spacing: 0.005em;
  color: var(--cream-50);
  margin: 0;
}

/* Card title icons — replaced with brass dot prefix */
.card-title i {
  display: inline-block;
  color: var(--brass-500);
  font-size: 0.7em;
  margin-right: 10px;
  transform: translateY(-2px);
}

/* Stats grid — sober, typography-led numbers */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
  margin-bottom: 36px;
}

/* .stat-card — variant pentru grid-uri numerice: mosteneste decorul .card
   si suprascrie DOAR layout intern (padding mai stramt + text center). */
.stat-card {
  padding: var(--sp-7) var(--sp-6) var(--sp-6);
  text-align: center;
  display: block;
  color: var(--cream-100);
}

.stat-card-link {
  cursor: pointer;
  transition: border-color var(--dur-fast) var(--ease-out),
              transform var(--dur-fast) var(--ease-out);
}

.stat-card-link:hover {
  border-color: var(--brass-500);
  transform: translateY(-2px);
}

.stat-icon {
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  font-weight: 500;
  color: var(--brass-400);
  margin-bottom: var(--sp-3);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  display: block;
  text-align: center;
}
/* Hide Font Awesome icons if any remain in stat cards */
.stat-icon i { display: none; }

.stat-value {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: var(--fs-2xl);
  line-height: 1;
  color: var(--brass-300);
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.stat-label {
  color: var(--cream-400);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  font-weight: 400;
  letter-spacing: 0.06em;
  text-transform: none;
  margin-top: var(--sp-3);
  line-height: 1.4;
}

/* Toate cardurile au același look — fără ierarhie vizuală pe background. */

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 24px;
  border-radius: 2px;
  border: 1px solid transparent;
  cursor: pointer;
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: none;
  transition: background 200ms ease, color 200ms ease, border-color 200ms ease, transform 80ms ease;
  text-align: center;
  position: relative;
}

.btn:active { transform: translateY(1px); }

.btn-primary {
  background-color: var(--brass-500);
  color: var(--ink-950);
  border-color: var(--brass-500);
}
.btn-primary:hover {
  background-color: var(--brass-400);
  border-color: var(--brass-400);
  color: var(--ink-950);
  border-bottom-color: var(--brass-400);
}

.btn-secondary {
  background-color: transparent;
  color: var(--cream-100);
  border-color: rgba(227, 179, 65, 0.4);
}
.btn-secondary:hover {
  background-color: rgba(227, 179, 65, 0.08);
  color: var(--brass-300);
  border-color: var(--brass-500);
}

.btn-danger {
  background-color: var(--danger);
  color: var(--cream-50);
  border-color: var(--danger);
}
.btn-danger:hover { background-color: var(--ember-500); border-color: var(--ember-500); }

.btn-success {
  background-color: var(--success);
  color: var(--cream-50);
  border-color: var(--success);
}
.btn-success:hover { background-color: #5cbe88; border-color: #5cbe88; }

.btn-sm {
  padding: 7px 14px;
  font-size: 0.8rem;
  letter-spacing: 0.04em;
}

.btn-block {
  display: flex;
  width: 100%;
}

/* Forms — line-style refined inputs */
.form-group {
  margin-bottom: 22px;
}

/* Acțiunile dintr-un rând de formular inline (grid cu `align-items: end`): fiecare
   .form-group poartă margin-bottom 22px, pe care butonul nu-l are — fără asta baza
   lui ar sta cu 22px mai jos decât a inputurilor de lângă el. */
.form-row-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 22px;
}

.form-label {
  display: block;
  margin-bottom: 8px;
  font-family: var(--font-body);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--brass-400);
}

.form-control {
  width: 100%;
  padding: 10px 4px;
  border: 0;
  border-bottom: 1px solid rgba(227, 179, 65, 0.35);
  border-radius: 0;
  background-color: transparent;
  color: var(--cream-50);
  font-family: var(--font-body);
  font-size: 1rem;
  letter-spacing: 0.005em;
  transition: border-color 220ms ease, background 220ms ease;
}

.form-control:hover {
  border-bottom-color: rgba(227, 179, 65, 0.6);
}

.form-control:focus {
  outline: none;
  border-bottom-color: var(--brass-500);
  background-color: rgba(227, 179, 65, 0.04);
}

.form-control::placeholder {
  color: var(--ink-400);
  font-style: normal;
}

/* Textarea / select still benefit from a fuller box */
textarea.form-control,
select.form-control {
  padding: 12px 14px;
  border: 1px solid rgba(227, 179, 65, 0.25);
  border-radius: 2px;
  background-color: rgba(10, 21, 37, 0.55);
}
textarea.form-control:focus,
select.form-control:focus {
  border-color: var(--brass-500);
  background-color: rgba(15, 26, 43, 0.85);
}

.form-check {
  display: flex;
  align-items: center;
  gap: 10px;
}

.form-check input[type='checkbox'] {
  width: 18px;
  height: 18px;
  accent-color: var(--accent-gold);
}

/* Alerts — refined banners with a colored left rule */
.alert {
  /* Poziționat absolut peste layout — dispariția lui nu mai afectează
     scroll-ul altor elemente. Sub topbar (60px). */
  position: fixed;
  top: 76px;
  right: 20px;
  max-width: 400px;
  z-index: 150;
  padding: 14px 20px 14px 18px;
  border-radius: 2px;
  border: 1px solid rgba(227, 179, 65, 0.18);
  border-left-width: 3px;
  background: rgba(15, 26, 43, 0.95);
  backdrop-filter: blur(6px);
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--cream-100);
  display: flex;
  align-items: center;
  gap: 12px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}
.alert i { font-size: 0.95rem; flex-shrink: 0; }

.alert-success {
  border-left-color: var(--success);
  color: #b9d6a8;
}
.alert-success i { color: var(--success); }

.alert-error {
  border-left-color: var(--ember-500);
  color: #e8b4a4;
}
.alert-error i { color: var(--ember-500); }

.alert-warning {
  border-left-color: var(--brass-500);
  color: var(--brass-300);
}
.alert-warning i { color: var(--brass-500); }

/* Tables — heritage eyebrow headers, hairline dashed rules */
.table-container {
  overflow-x: auto;
}

.table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
}

.table th,
.table td {
  padding: 12px 14px;
  text-align: left;
  vertical-align: middle;
}

.table th {
  background-color: transparent;
  color: var(--cream-400);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border-bottom: 1px solid rgba(227, 179, 65, 0.35);
  padding-bottom: 10px;
}

.table td {
  border-bottom: 1px dashed rgba(52, 71, 102, 0.6);
  color: var(--cream-100);
}

.table tbody tr:last-child td {
  border-bottom: none;
}

.table tbody tr:hover {
  background-color: rgba(227, 179, 65, 0.04);
}

/* Badges — subtle, typographic */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 2px;
  font-family: var(--font-body);
  font-size: 0.66rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  border: 1px solid transparent;
  line-height: 1.4;
  vertical-align: middle;
}

.badge-success {
  background-color: transparent;
  color: var(--success);
  border-color: var(--success);
}

.badge-warning {
  background-color: transparent;
  color: var(--brass-500);
  border-color: var(--brass-500);
}

.badge-danger {
  background-color: transparent;
  color: var(--ember-500);
  border-color: var(--ember-500);
}

.badge-primary {
  background-color: transparent;
  color: var(--brass-400);
  border-color: var(--brass-500);
}

.badge-gold {
  background: transparent;
  color: var(--brass-400);
  border: 0;
  padding: 0;
  margin-left: 4px;
  letter-spacing: 0;
  text-transform: none;
  font-size: 0.85rem;
}
.badge-gold i {
  font-size: 0.9rem;
}

/* Schedule — timeline ceremonial */
.schedule-day {
  margin-bottom: 48px;
}

.schedule-day-title {
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 500;
  font-size: 1.05rem;
  line-height: 1.1;
  color: var(--cream-50);
  margin: 0 0 22px;
  padding-bottom: 16px;
  border-bottom: 0;
  position: relative;
}
/* Ornament under day title */
.schedule-day-title::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 120px;
  height: 1px;
  background: linear-gradient(to right,
    var(--brass-500) 0%, var(--brass-500) 40px,
    transparent 100%);
}

.schedule-item {
  display: flex;
  gap: 24px;
  padding: 20px 0;
  background: transparent;
  border-radius: 0;
  border-top: 1px solid rgba(227, 179, 65, 0.12);
  margin-bottom: 0;
  position: relative;
  transition: background 200ms ease;
}
.schedule-item:first-of-type { border-top: 0; }
.schedule-item:hover {
  background: rgba(227, 179, 65, 0.03);
}

.schedule-time {
  width: 64px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 500;
  font-size: 1.05rem;
  line-height: 1.15;
  color: var(--brass-400);
  letter-spacing: 0.005em;
  padding-top: 2px;
}
/* Ora de sfârșit pe rând separat, sub start — coloana rămâne îngustă și fixă,
   deci linia verticală a conținutului se aliniază pe toate rândurile. */
.schedule-time-end {
  font-size: 0.8rem;
  font-weight: 400;
  color: var(--cream-400);
  margin-top: 1px;
}

.schedule-content {
  flex: 1;
  padding-left: 24px;
  border-left: 1px solid rgba(227, 179, 65, 0.18);
}

.schedule-content h4 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.1rem;
  line-height: 1.25;
  color: var(--cream-50);
  margin-bottom: 6px;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
}

.schedule-content p {
  color: var(--cream-300);
  font-size: 0.92rem;
  line-height: 1.55;
  margin-top: 4px;
}
.schedule-content p i {
  color: var(--brass-500);
  font-size: 0.78rem;
  margin-right: 6px;
}

/* Featured item — gold accent on the timeline tick */
.schedule-item.featured .schedule-content {
  border-left-color: var(--brass-500);
}
.schedule-item.featured .schedule-content h4 i.fa-star {
  color: var(--brass-400);
  font-size: 0.8em;
}

/* Tournaments */
.tournament-card {
  background: transparent;
  border: 0;
  border-top: 1px solid rgba(227, 179, 65, 0.12);
  border-radius: 0;
  padding: 18px 0;
  margin-bottom: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: background 200ms ease;
}
.tournament-card:first-child { border-top: 0; padding-top: 8px; }

.tournament-card:hover {
  background: rgba(227, 179, 65, 0.04);
  transform: none;
}

.tournament-info {
  display: flex;
  align-items: center;
  gap: 16px;
}

.tournament-icon {
  font-size: 1.05rem;
  color: var(--brass-500);
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(227, 179, 65, 0.4);
  border-radius: 50%;
  flex-shrink: 0;
}

.tournament-name {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.05rem;
  color: var(--cream-50);
  line-height: 1.25;
}

.tournament-meta {
  color: var(--cream-400);
  font-size: 0.82rem;
  font-family: var(--font-body);
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 4px;
}
.tournament-meta i {
  color: var(--brass-500);
  margin-right: 4px;
  font-size: 0.8em;
}

/* Participants list */
.participants-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 15px;
}

.participant-card {
  background-color: var(--primary-dark);
  border-radius: 8px;
  padding: 15px;
  display: flex;
  align-items: center;
  gap: 15px;
}

.participant-avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: var(--brass-500);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-950);
  font-weight: bold;
  font-size: 1.05rem;
  position: relative;
}

.participant-name {
  color: var(--white);
  font-weight: 500;
}

.participant-partner {
  color: var(--text-muted);
  font-size: 0.85rem;
}

/* ==========================================
   Contact Card
   ========================================== */

.contact-info {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.contact-item {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--cream-100);
  text-decoration: none;
  padding: 10px 16px;
  background: transparent;
  border: 1px solid rgba(227, 179, 65, 0.25);
  border-radius: 2px;
  transition: background 200ms ease, border-color 200ms ease, color 200ms ease;
  font-family: var(--font-body);
  font-size: 0.88rem;
  letter-spacing: 0.01em;
}

.contact-item:hover {
  background: rgba(227, 179, 65, 0.08);
  border-color: var(--brass-500);
  color: var(--brass-300);
  border-bottom-color: var(--brass-500);
}

.contact-item i {
  font-size: 0.85rem;
  color: var(--brass-500);
}

.contact-item:hover i {
  color: var(--brass-300);
}

.organizer-row {
  padding: 18px 0;
  border-bottom: 1px solid rgba(227, 179, 65, 0.1);
}

.organizer-row:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.organizer-row:first-child {
  padding-top: 0;
}

.organizer-name {
  font-family: var(--font-display);
  font-weight: 500;
  color: var(--cream-50);
  font-size: 1rem;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.organizer-row.primary .organizer-name {
  font-style: normal;
}
.organizer-name i { color: var(--brass-500); font-size: 0.85rem; }

.organizer-name i {
  margin-right: 8px;
}

/* ==========================================
   Payment Card
   ========================================== */

.payment-card {
  border: 2px solid var(--accent-gold);
  background: linear-gradient(135deg, var(--primary-medium) 0%, rgba(201, 162, 39, 0.1) 100%);
}

.payment-amount {
  text-align: center;
  padding: 20px 0;
  margin-bottom: 15px;
  border-bottom: 1px solid var(--primary-light);
}

.payment-amount .amount {
  font-size: 2.4rem;
  font-weight: 700;
  color: var(--accent-gold);
}

.payment-amount .currency {
  font-size: 1.05rem;
  color: var(--text-muted);
  margin-left: 8px;
}

.payment-description {
  text-align: center;
  color: var(--text-light);
  margin-bottom: 15px;
}

.payment-deadline {
  text-align: center;
  color: var(--warning);
  margin-bottom: 20px;
  font-size: 0.95rem;
}

.payment-deadline i {
  margin-right: 5px;
}

.payment-methods {
  display: flex;
  flex-direction: column;
  gap: 15px;
  margin-bottom: 20px;
}

.payment-method {
  background: var(--primary-dark);
  border-radius: 10px;
  padding: 15px;
}

.method-header {
  font-weight: 600;
  margin-bottom: 10px;
  color: var(--text-light);
}

.method-header i {
  color: var(--accent-gold);
  margin-right: 8px;
}

.method-header .bank-name {
  font-weight: normal;
  color: var(--text-muted);
  font-size: 0.9rem;
}

.revolut-content {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

.btn-revolut {
  background: linear-gradient(135deg, #0075eb 0%, #00d4ff 100%);
  color: white;
  border: none;
  padding: 12px 20px;
  border-radius: 8px;
  font-weight: 600;
  display: inline-block;
  text-align: center;
  flex: 1;
  min-width: 180px;
}

.btn-revolut:hover {
  opacity: 0.9;
  color: white;
}

.revolut-qr {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: white;
  padding: 10px;
  border-radius: 8px;
}

.revolut-qr img {
  width: 120px;
  height: 120px;
}

.revolut-qr .qr-hint {
  font-size: 0.75rem;
  color: #666;
  margin-top: 5px;
}

.iban-details {
  background: var(--primary-medium);
  border-radius: 8px;
  padding: 12px;
}

.iban-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 5px 0;
}

.iban-row:not(:last-child) {
  border-bottom: 1px solid var(--primary-light);
  padding-bottom: 8px;
  margin-bottom: 8px;
}

.iban-label {
  color: var(--text-muted);
  font-size: 0.85rem;
}

.iban-value {
  color: var(--text-light);
  font-family: 'Courier New', monospace;
  font-size: 0.9rem;
  cursor: pointer;
  transition: color 0.2s;
}

.iban-value:hover {
  color: var(--accent-gold);
}

.iban-value i {
  margin-left: 8px;
  font-size: 0.8rem;
  color: var(--text-muted);
}

.payment-note {
  text-align: center;
  font-size: 0.85rem;
  color: var(--text-muted);
  background: var(--primary-dark);
  padding: 10px 15px;
  border-radius: 8px;
}

.payment-note i {
  color: var(--accent-gold);
  margin-right: 5px;
}

/* Payment tracking */
.stat-card-payment {
  border: 1px solid var(--accent-gold);
}

.paid-badge {
  position: absolute;
  bottom: -3px;
  right: -3px;
  background: var(--success);
  color: white;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.65rem;
  border: 2px solid var(--primary-medium);
}

.payment-status-personal {
  text-align: center;
  padding: 15px;
  border-radius: 8px;
  margin-bottom: 15px;
}

.payment-status-personal.paid {
  background: rgba(40, 167, 69, 0.2);
  border: 1px solid var(--success);
  color: var(--success);
}

.payment-status-personal.unpaid {
  background: rgba(255, 193, 7, 0.2);
  border: 1px solid var(--warning);
  color: var(--warning);
}

.payment-status-personal i {
  margin-right: 8px;
}

/* ==========================================
   Login Page
   ========================================== */

/* === Login — ceremonial entry === */

.login-container {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 24px;
  position: relative;
  background:
    radial-gradient(ellipse at 30% 20%, rgba(227, 179, 65, 0.10), transparent 55%),
    radial-gradient(ellipse at 70% 80%, rgba(31, 47, 72, 0.45), transparent 60%),
    linear-gradient(180deg, var(--ink-950) 0%, var(--ink-900) 100%);
  overflow: hidden;
}

/* (No outer page brackets — the only frame is on the card itself.) */

.login-card {
  background: rgba(15, 26, 43, 0.65);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(227, 179, 65, 0.18);
  border-radius: 2px;
  padding: 56px 48px 40px;
  width: 100%;
  max-width: 440px;
  box-shadow:
    0 0 0 1px rgba(227, 179, 65, 0.04) inset,
    0 24px 64px rgba(0, 0, 0, 0.55);
  position: relative;
  /* small inner brass corner ticks */
}

.login-card::before,
.login-card::after {
  content: '';
  position: absolute;
  width: 14px;
  height: 14px;
  border: 1px solid var(--brass-500);
  pointer-events: none;
}
.login-card::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
.login-card::after { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }

.login-header {
  text-align: center;
  margin-bottom: 36px;
}

.login-brand {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}

/* Old <span class="brand-icon"> with Font Awesome — replaced visually with logo image inserted via EJS,
   keep these rules for safety if it stays in markup */
.brand-icon {
  display: none;
}

.login-logo {
  width: 92px;
  height: auto;
  margin: 0 auto 22px;
  display: block;
  filter: drop-shadow(0 4px 16px rgba(0, 0, 0, 0.5));
}

/* Typographic divider (line + glyph + line) between title and tagline */
.brand-mark {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin: 18px auto 14px;
  color: var(--brass-500);
}
.brand-mark-line {
  flex: 0 0 56px;
  height: 1px;
  background: linear-gradient(to right,
    transparent 0%, rgba(227, 179, 65, 0.55) 50%, rgba(227, 179, 65, 0.55) 100%);
}
.brand-mark-line:last-child {
  background: linear-gradient(to right,
    rgba(227, 179, 65, 0.55) 0%, rgba(227, 179, 65, 0.55) 50%, transparent 100%);
}
.brand-mark-glyph {
  font-family: var(--font-display);
  font-size: 0.95rem;
  letter-spacing: 0.4em;
  line-height: 1;
}

.login-title {
  font-family: 'Cormorant Garamond', Georgia, serif;
  font-style: italic;
  font-weight: 500;
  font-size: clamp(1.8rem, 3.5vw, 2.4rem);
  line-height: 1.05;
  letter-spacing: 0.005em;
  color: var(--cream-50);
  margin: 0 0 4px;
}

.brand-divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: 22px auto 18px;
  color: var(--brass-500);
  font-size: 0.7rem;
  letter-spacing: 0.3em;
}
.brand-divider::before,
.brand-divider::after {
  content: '';
  flex: 0 0 48px;
  height: 1px;
  background: linear-gradient(to right,
    transparent, rgba(227, 179, 65, 0.5), transparent);
}
.brand-divider::after {
  background: linear-gradient(to left,
    transparent, rgba(227, 179, 65, 0.5), transparent);
}

.brand-date {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 0.78rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--brass-400);
  margin-bottom: 6px;
}

.brand-tagline {
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 500;
  font-size: 1rem;
  color: var(--cream-300);
  letter-spacing: 0.01em;
  margin-top: 6px;
}

.login-version {
  text-align: center;
  margin-top: 28px;
  color: var(--ink-400);
  font-size: 0.7rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

/* ==========================================
   Responsive
   ========================================== */

/* ==========================================
   Mobile bottom nav bar — pattern iOS/Android
   Ascuns pe desktop; vizibil pe mobile.
   ========================================== */
.mobile-bottom-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  /* Height creste cu safe-area (iPhone home indicator ~34px) — pe PWA
     standalone safe-area consuma padding-ul, deci daca height ramane 78px
     fix, content-ul e trunchiat. Cu height = 78 + safe-area, content area
     ramane consistent 66px indiferent de device. */
  height: calc(78px + env(safe-area-inset-bottom, 0px));
  background: var(--ink-950);
  border-top: none;
  z-index: 150;
  padding: 6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.35);
}
.bottom-nav-tab {
  flex: 1;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  color: var(--cream-400);
  text-decoration: none;
  border-radius: 18px;
  padding: 0 10px;
  margin: 0 4px;
  font-family: var(--font-body);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1.2;
  transition: color 0.18s var(--ease-out),
              background 0.18s var(--ease-out);
  min-width: 0;
  background: transparent;
  box-sizing: border-box;
}
/* Icon in bottom-nav tab — glyph FA are bounding-box mai mare decat
   font-size pe iOS Safari (WKWebView). Setam containerul <i> ca inline-flex
   cu align-items center, deci glyph-ul se ancoreaza vertical la mijloc
   indiferent de bounding-box. Pastilei ii dam height 100% din container
   ca sa nu depinda de content-height (izolam de font metrics complete). */
.bottom-nav-tab i {
  font-size: 1.35rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.bottom-nav-tab:hover {
  color: var(--cream-100);
}
/* Pill brass — capsula subtila in jurul icon+label cand tab-ul e activ. */
.bottom-nav-tab.active {
  color: var(--brass-300);
  background: rgba(227, 179, 65, 0.13);
}
/* Anuleaza border-bottom de la regula globala `a` (era vizibila ca linie
   brass sub tab activ dupa tap — hover-ul persista pe touch devices). */
.bottom-nav-tab,
.bottom-nav-tab:hover,
.bottom-nav-tab.active {
  border-bottom: none;
}
.bottom-nav-tab span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.bottom-nav-badge {
  font-size: 0.6rem;
  color: var(--cream-400);
  font-weight: 400;
}

/* ==========================================
   Mobile layout — telefoane portrait și landscape.
   Trigger pe: (a) lățime <=768px (portrait cel mai des), sau
   (b) înălțime <=500px cu orientation landscape (telefon rotit —
   width e mare dar height e mic, deci UI desktop nu încape).
   iPad-urile au height >600px → rămân pe desktop layout.
   ========================================== */
@media (max-width: 768px), (max-height: 500px) and (orientation: landscape) {
  /* Topbar clean, culoarea page background — WhatsApp-like impresie de
     workspace continuu. 3-dots menu stânga, titlu dinamic centru, profil
     dreapta. Brand (logo + AIC20 text) ascuns, tab-urile mutate în bottom-nav. */
  /* Topbar WhatsApp-like: continuu cu background-ul, fără border galben.
     Layout: gol stânga, titlu dinamic centru, 3 puncte dropdown DREAPTA.
     Navigarea pe mobile e strict prin bottom-nav. */
  /* Topbar respecta safe-area-inset-top pe iOS PWA standalone —
     content-ul curge sub notch/dynamic-island, dar controalele
     (titlu + 3 puncte) sunt push-uite sub sistemul iOS. */
  .app-topbar {
    height: calc(52px + env(safe-area-inset-top, 0px));
    padding: env(safe-area-inset-top, 0px) 10px 0;
    gap: 0;
    background: var(--ink-950);
    border-bottom: none;
    box-shadow: none;
  }
  .topbar-brand,
  .topbar-tabs {
    display: none !important;
  }
  /* Pe landing-ul unui tab (marcat .is-tab-landing în layouts/app.ejs), topbar-ul
     de mobil arată deja titlul contextual (ex. „Evenimente") — nu-l mai repetăm ca
     page-header în conținut. Paginile de detaliu (fără .is-tab-landing) își
     păstrează header-ul (h1 = numele item-ului). Pe desktop rămâne mereu. */
  .main-content.is-tab-landing .page-header {
    display: none;
  }
  .topbar-user {
    display: flex;
    min-width: 0;
    margin-left: auto;
  }
  .topbar-user-name,
  .topbar-user-icon-desktop {
    display: none;
  }
  .topbar-user-icon-mobile {
    display: inline-flex !important;
    font-size: 1.2rem;
  }
  .topbar-user-toggle {
    background: transparent;
    border: none;
    color: var(--cream-100);
    padding: 8px 10px;
    min-width: 44px;
    min-height: 44px;
    justify-content: center;
  }
  .topbar-user-toggle:hover {
    background: rgba(255, 255, 255, 0.04);
    border-color: transparent;
  }
  .topbar-title-dynamic {
    display: block;
    flex: 1;
    text-align: left;
    padding-left: 4px;
    font-family: var(--font-title);
    font-size: 1.5rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--brass-muted);
    font-variant-numeric: lining-nums;
  }
  /* Main content — full width, sub topbar (52px + safe-area-top), deasupra
     bottom-nav (62px + safe-area-bottom). Foloseste 100dvh (dynamic vp) ca
     sa raspunda la address bar iOS Safari + PWA standalone. */
  .main-content {
    margin-left: 0 !important;
    margin-top: calc(52px + env(safe-area-inset-top, 0px));
    padding: 20px 16px calc(94px + env(safe-area-inset-bottom, 0px));
    min-height: calc(100dvh - 52px - env(safe-area-inset-top, 0px));
  }

  /* Bottom nav vizibil */
  .mobile-bottom-nav {
    display: flex;
  }

  /* Grid stats mai puțin dens */
  .stats-grid {
    grid-template-columns: 1fr;
  }
  .schedule-item {
    flex-direction: column;
    gap: 6px;
  }
  /* Ora devine inline, aliniată la stânga; conținutul fără bordura/indentul
     vertical (care rămânea orfan pe layout-ul stacked). */
  .schedule-time {
    width: auto;
    flex-direction: row;
    align-items: baseline;
    gap: 8px;
    padding-top: 0;
  }
  .schedule-time-end {
    margin-top: 0;
  }
  .schedule-content {
    padding-left: 0;
    border-left: 0;
  }
}

/* ==========================================
   Utilities
   ========================================== */

.text-center {
  text-align: center;
}
.text-right {
  text-align: right;
}
.text-muted {
  color: var(--text-muted);
}
.text-gold {
  color: var(--accent-gold);
}
.text-success {
  color: var(--success);
}
.text-danger {
  color: var(--danger);
}

.mt-1 {
  margin-top: 10px;
}
.mt-2 {
  margin-top: 20px;
}
.mt-3 {
  margin-top: 30px;
}
.mb-1 {
  margin-bottom: 10px;
}
.mb-2 {
  margin-bottom: 20px;
}
.mb-3 {
  margin-bottom: 30px;
}
.m-0 { margin: 0; }
.p-0 { padding: 0; }

.flex {
  display: flex;
}
.flex-between {
  justify-content: space-between;
}
.flex-center {
  align-items: center;
}
.gap-1 {
  gap: 10px;
}
.gap-2 {
  gap: 20px;
}

.hidden {
  display: none;
}

/* Featured Events */
.featured-card {
  border: 1px solid rgba(227, 179, 65, 0.35);
}

.featured-event {
  display: flex;
  gap: 18px;
  padding: 18px 4px;
  background: transparent;
  border-radius: 0;
  margin-bottom: 0;
  border-left: 0;
  border-top: 1px solid rgba(227, 179, 65, 0.12);
}
.featured-event:first-child { border-top: 0; padding-top: 4px; }

.featured-event-badge {
  width: 36px;
  height: 36px;
  background: transparent;
  border: 1px solid var(--brass-500);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.featured-event-badge i {
  color: var(--brass-500);
  font-size: 0.75rem;
}

.featured-event-content {
  flex: 1;
}

.featured-event-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.05rem;
  color: var(--cream-50);
  margin-bottom: 6px;
  line-height: 1.3;
}

.featured-event-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  font-size: 0.85rem;
  color: var(--text-muted);
  margin-bottom: 8px;
}

.featured-event-meta i {
  color: var(--accent-gold);
  margin-right: 5px;
}

.featured-event-description {
  font-size: 0.9rem;
  color: var(--text-light);
}

/* ==========================================
   Checkbox Group (pentru preferințe)
   ========================================== */

.checkbox-group {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}

.checkbox-label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background-color: var(--primary-medium);
  border: 1px solid var(--primary-light);
  border-radius: 6px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.checkbox-label:hover {
  border-color: var(--accent-gold);
}

.checkbox-label input[type='checkbox'] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--accent-gold);
}

.checkbox-label input[type='checkbox']:checked + span {
  color: var(--accent-gold);
}

.checkbox-label span {
  font-size: 0.9rem;
  color: var(--text-light);
}

/* ==========================================
   Proposals / Voting
   ========================================== */

.proposals-list {
  display: flex;
  flex-direction: column;
  gap: 15px;
}

.proposal-item {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 20px;
  background: transparent;
  border-radius: 2px;
  border: 1px solid rgba(227, 179, 65, 0.18);
  transition: border-color 200ms ease, background 200ms ease;
}

.proposal-item:hover {
  border-color: var(--brass-500);
  background: rgba(227, 179, 65, 0.04);
}

.proposal-item.leading {
  border-color: var(--brass-500);
  background: linear-gradient(135deg, rgba(15, 26, 43, 0.6) 0%, rgba(227, 179, 65, 0.10) 100%);
  box-shadow: inset 0 0 0 1px rgba(227, 179, 65, 0.2);
}

.proposal-rank {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: transparent;
  border: 1px solid rgba(227, 179, 65, 0.4);
  border-radius: 50%;
  font-family: var(--font-display);
  font-style: normal;
  font-weight: 500;
  font-size: 1.1rem;
  color: var(--brass-400);
}

.proposal-item.leading .proposal-rank {
  background-color: var(--brass-500);
  color: var(--ink-950);
  border-color: var(--brass-500);
}

.proposal-content {
  flex: 1;
  min-width: 0;
}

.proposal-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 1.1rem;
  color: var(--cream-50);
  margin-bottom: 6px;
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  line-height: 1.25;
}

.proposal-link {
  font-size: 0.85rem;
  color: var(--brass-400);
}

.proposal-description {
  font-size: 0.92rem;
  color: var(--cream-300);
  margin-bottom: 10px;
  line-height: 1.6;
}

.proposal-meta {
  font-size: 0.78rem;
  color: var(--cream-400);
  font-family: var(--font-body);
}

.proposal-meta i {
  margin-right: 5px;
  color: var(--brass-500);
}

.proposal-actions {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
  flex-shrink: 0;
}

.vote-count {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 12px 18px;
  background: transparent;
  border: 1px solid rgba(227, 179, 65, 0.25);
  border-radius: 2px;
  min-width: 72px;
}

.vote-count i {
  color: var(--brass-500);
  font-size: 0.95rem;
  margin-bottom: 4px;
}

.vote-count .count {
  font-family: var(--font-display);
  font-style: normal;
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--cream-50);
  line-height: 1;
}

.vote-count .label {
  font-family: var(--font-body);
  font-size: 0.62rem;
  letter-spacing: 0.22em;
  color: var(--brass-400);
  text-transform: uppercase;
  margin-top: 4px;
}

.btn-outline {
  background-color: transparent;
  border: 1px solid var(--brass-500);
  color: var(--brass-400);
}

.btn-outline:hover {
  background-color: var(--brass-500);
  color: var(--ink-950);
  border-color: var(--brass-500);
}

.btn-warning {
  background-color: transparent;
  color: var(--brass-400);
  border-color: var(--brass-500);
}

.btn-warning:hover {
  background-color: rgba(227, 179, 65, 0.1);
  color: var(--brass-300);
  border-color: var(--brass-400);
}

/* Disqualified proposals */
.proposal-item.disqualified {
  opacity: 0.6;
  border-color: var(--danger);
  background: linear-gradient(135deg, var(--primary-dark) 0%, rgba(220, 53, 69, 0.1) 100%);
}

.proposal-item.disqualified .proposal-rank {
  background-color: var(--danger);
  color: var(--white);
}

.proposal-item.disqualified .proposal-title {
  text-decoration: line-through;
  color: var(--text-muted);
}

.badge-disqualified {
  font-size: 0.7rem;
  background-color: var(--danger);
  color: var(--white);
  padding: 2px 8px;
  border-radius: 10px;
  text-decoration: none !important;
  font-weight: normal;
}

/* ==========================================
   Stats Row (Participants page)
   ========================================== */

.stats-row {
  display: flex;
  gap: 15px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

/* (Cardurile non-countdown moștenesc acum direct stilul base .stat-card.) */

.participant-children {
  font-size: 0.85rem;
  color: var(--accent-gold);
  margin-top: 2px;
}

.participant-children i {
  margin-right: 5px;
}

/* Toggle label styling */
.toggle-label {
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.toggle-label input[type='checkbox'] {
  width: 20px;
  height: 20px;
  cursor: pointer;
}

.toggle-text {
  font-weight: 500;
}

/* Responsive adjustments */
@media (max-width: 600px) {
  .proposal-item {
    flex-direction: column;
    text-align: center;
  }

  .proposal-rank {
    align-self: center;
  }

  .proposal-actions {
    width: 100%;
    flex-direction: row;
    justify-content: center;
    align-items: center;
  }

  .proposal-title {
    justify-content: center;
    flex-wrap: wrap;
  }
}

/* ==========================================
   Announcements
   ========================================== */

.unread-announcements {
  margin-bottom: 25px;
}

.announcement-alert {
  display: flex;
  align-items: flex-start;
  gap: 15px;
  padding: 15px;
  background: linear-gradient(135deg, var(--primary-medium) 0%, rgba(201, 162, 39, 0.15) 100%);
  border: 1px solid var(--accent-gold);
  border-radius: 10px;
  margin-bottom: 10px;
  animation: slideIn 0.3s ease-out;
}

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.announcement-alert-icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  background: var(--accent-gold);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.announcement-alert-icon i {
  color: var(--primary-dark);
  font-size: 1.1rem;
}

.announcement-alert-content {
  flex: 1;
  min-width: 0;
}

.announcement-alert-title {
  font-weight: 600;
  color: var(--accent-gold);
  font-size: 1.05rem;
  margin-bottom: 5px;
}

.announcement-alert-text {
  color: var(--text-light);
  font-size: 0.95rem;
  line-height: 1.4;
  margin-bottom: 8px;
}

.announcement-alert-meta {
  display: flex;
  gap: 15px;
  font-size: 0.8rem;
  color: var(--text-muted);
}

.announcement-alert-meta i {
  margin-right: 4px;
  color: var(--accent-gold);
}

.announcement-dismiss {
  flex-shrink: 0;
  background: transparent;
  border: none;
  color: var(--text-muted);
  cursor: pointer;
  padding: 5px;
  font-size: 1.1rem;
  transition: color 0.2s;
}

.announcement-dismiss:hover {
  color: var(--accent-gold);
}

/* ── Pagina /costuri — hero + breakdown + detalii ─────────────────── */

/* HERO: card mare cu total proeminent */
.cost-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  flex-wrap: wrap;
  padding: 2rem 2.25rem;
  margin-bottom: 1.5rem;
  background:
    radial-gradient(circle at top right, rgba(227, 179, 65, 0.12), transparent 60%),
    linear-gradient(135deg, var(--ink-700, #242a32) 0%, var(--ink-800, #222831) 100%);
  border: 1px solid var(--ink-500, #3a424c);
  border-radius: 14px;
  position: relative;
  overflow: hidden;
}
.cost-hero::before {
  content: '';
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 4px;
  background: linear-gradient(180deg, var(--brass-400, #f2cf76), var(--brass-500, #e3b341));
}
.cost-hero-main { flex: 1 1 300px; }
.cost-hero-eyebrow {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .12em;
  color: var(--cream-400, #808a97);
  margin-bottom: .4rem;
}
.cost-hero-amount {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 3.2rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--brass-300, #f2cf76);
  line-height: 1;
}
.cost-hero-status {
  margin-top: .9rem;
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
}
.cost-pill {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .3rem .7rem;
  border-radius: 999px;
  font-size: .8rem;
  background: rgba(196, 80, 43, 0.12);
  color: #e88c64;
  border: 1px solid rgba(196, 80, 43, 0.3);
}
.cost-pill-muted {
  background: rgba(157, 147, 124, 0.12);
  color: var(--cream-400, #808a97);
  border-color: rgba(157, 147, 124, 0.25);
}
.cost-hero-actions { flex-shrink: 0; }

/* BREAKDOWN: două tile-uri (cazare + mese) */
.cost-breakdown {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.cost-tile {
  padding: 1.25rem 1.5rem;
  background: var(--ink-700, #242a32);
  border: 1px solid var(--ink-500, #3a424c);
  border-radius: 12px;
  position: relative;
}
.cost-tile-icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: rgba(227, 179, 65, 0.15);
  color: var(--brass-300, #f2cf76);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.1rem;
  margin-bottom: .8rem;
}
.cost-tile-label {
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--cream-400, #808a97);
  margin-bottom: .3rem;
}
.cost-tile-suffix {
  text-transform: none;
  letter-spacing: 0;
  font-weight: 400;
  opacity: .7;
}
.cost-tile-amount {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 1.7rem;
  font-weight: 600;
  color: var(--cream-100, #dce2e9);
  letter-spacing: -0.01em;
}
.cost-tile-hint {
  margin-top: .35rem;
  font-size: .82rem;
  color: var(--cream-400, #808a97);
}

/* DETALII: markdown rendered, stil de factură */
.cost-detail-card { padding: 0; overflow: hidden; }
.cost-detail-card .card-header { padding: 1rem 1.5rem; margin: 0; }
.cost-sheet-rendered {
  padding: 0 1.5rem 1.5rem;
  color: var(--cream-100, #dce2e9);
  line-height: 1.55;
}
.cost-sheet-rendered h1,
.cost-sheet-rendered > h2:first-of-type,        /* numele persoanei — deja afișat în header */
.cost-sheet-rendered > h3:first-of-type {       /* subtitlul "Weekend ..." */
  display: none;
}
.cost-sheet-rendered h2 {
  margin: 1.75rem 0 .9rem;
  color: var(--brass-300, #f2cf76);
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  padding-bottom: .45rem;
  border-bottom: 1px solid var(--ink-500, #3a424c);
}
.cost-sheet-rendered h2:first-child { margin-top: .5rem; }

.cost-sheet-rendered table {
  width: 100%;
  border-collapse: collapse;
  margin: .25rem 0 .5rem;
  font-size: .95rem;
}
.cost-sheet-rendered th,
.cost-sheet-rendered td {
  padding: .7rem .85rem;
  text-align: left;
  vertical-align: top;
  border: none;
}
.cost-sheet-rendered thead th {
  background: transparent;
  color: var(--cream-400, #808a97);
  font-weight: 500;
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  border-bottom: 1px solid var(--ink-500, #3a424c);
}
.cost-sheet-rendered tbody tr {
  border-bottom: 1px dashed rgba(52, 71, 102, 0.6);
}
.cost-sheet-rendered tbody tr:last-child { border-bottom: none; }

/* Coloana sumă (ultima) — aliniată la dreapta, monospaced subtle */
.cost-sheet-rendered td:last-child,
.cost-sheet-rendered th:last-child {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* Rândul cu Total / TOTAL — evidențiat */
.cost-sheet-rendered tbody tr:has(strong) {
  background: linear-gradient(90deg, rgba(227, 179, 65, 0.08), rgba(227, 179, 65, 0.02));
  border-radius: 6px;
}
.cost-sheet-rendered strong {
  color: var(--brass-300, #f2cf76);
  font-weight: 600;
}

/* Notele de jos: listă verticală cu bullet brass */
.cost-sheet-rendered ul { list-style: none; padding-left: 0; margin: .5rem 0; }
.cost-sheet-rendered li {
  position: relative;
  padding: .35rem 0 .35rem 1.4rem;
  color: var(--cream-100, #dce2e9);
}
.cost-sheet-rendered li::before {
  content: '';
  position: absolute;
  left: .25rem; top: .85rem;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--brass-400, #f2cf76);
}
.cost-sheet-rendered em { color: var(--cream-400, #808a97); font-style: italic; }
.cost-sheet-rendered hr {
  border: none;
  border-top: 1px solid var(--ink-500, #3a424c);
  margin: 1.5rem 0;
}

/* Tabelul de versiuni la final — discret, footer-style */
.cost-sheet-rendered table:last-of-type {
  font-size: .82rem;
  margin-top: 1rem;
  opacity: .65;
}

@media (max-width: 600px) {
  .cost-hero { padding: 1.4rem; }
  .cost-hero-amount { font-size: 2.4rem; }
  .cost-tile-amount { font-size: 1.4rem; }
  .cost-sheet-rendered { padding: 0 1rem 1rem; }
  .cost-sheet-rendered table { font-size: .85rem; }
  .cost-sheet-rendered th, .cost-sheet-rendered td { padding: .5rem .55rem; }
}

/* Admin: tabelul de fișe individuale */
.cost-admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .92rem;
}
.cost-admin-table thead th {
  text-align: left;
  padding: .65rem .85rem;
  color: var(--cream-400, #808a97);
  font-weight: 500;
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  border-bottom: 1px solid var(--ink-500, #3a424c);
}
.cost-admin-table tbody td {
  padding: .9rem .85rem;
  border-bottom: 1px dashed rgba(52, 71, 102, 0.6);
  vertical-align: middle;
}
.cost-admin-table tbody tr:last-child td { border-bottom: none; }
.cost-admin-table tbody tr:hover { background: rgba(227, 179, 65, 0.04); }
.btn-sm { padding: .3rem .65rem; font-size: .82rem; }
@media (max-width: 700px) {
  .cost-admin-table { font-size: .82rem; }
  .cost-admin-table thead th,
  .cost-admin-table tbody td { padding: .55rem .45rem; }
  .cost-admin-table thead th:nth-child(2),
  .cost-admin-table thead th:nth-child(3),
  .cost-admin-table tbody td:nth-child(2),
  .cost-admin-table tbody td:nth-child(3) { display: none; }
}

/* ── Catalog copii (profil utilizator + admin) ──────────────────── */
.child-row {
  margin: 0;
  padding: 0;
}
.child-row-grid {
  display: grid;
  grid-template-columns: minmax(110px, 1.3fr) minmax(120px, 1fr) minmax(70px, 0.55fr) minmax(50px, 0.5fr) minmax(105px, 0.85fr) auto;
  gap: .5rem;
  align-items: center;
  padding: .55rem 0;
  border-bottom: 1px dashed rgba(52, 71, 102, 0.55);
  transition: background-color 0.2s ease, padding 0.2s ease, opacity 0.2s ease;
}
.child-row-add .child-row-grid {
  padding-left: .5rem;
}
/* Rânduri cu modificări nesalvate — vizual + warning la unload (vezi main.js) */
.child-row.is-dirty .child-row-grid {
  background: linear-gradient(90deg, rgba(212, 168, 95, 0.12), rgba(212, 168, 95, 0.02));
  padding: .55rem .5rem;
  border-left: 3px solid var(--brass-400, #f2cf76);
  border-radius: 4px;
  position: relative;
}
.child-row.is-dirty .child-row-grid::after {
  content: '● nesalvat';
  position: absolute;
  top: -8px;
  right: 8px;
  font-size: .65rem;
  font-weight: 600;
  color: var(--brass-300, #f2cf76);
  background: var(--ink-800, #222831);
  padding: 1px 8px;
  border-radius: 8px;
  letter-spacing: .05em;
}
.child-row:last-of-type .child-row-grid { border-bottom: none; }
.child-row-grid .form-control {
  padding: .4rem .55rem;
  font-size: .9rem;
}
.child-row-age {
  font-size: .85rem;
  color: var(--brass-300, #f2cf76);
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.child-row-delete {
  margin: -.3rem 0 .5rem;
  padding-left: .2rem;
}
.btn-icon-danger {
  background: none;
  border: none;
  color: var(--ember-500, #e5675f);
  cursor: pointer;
  font-size: .8rem;
  padding: .2rem .4rem;
}
.btn-icon-danger:hover { color: var(--ember-400, #eb8079); text-decoration: underline; }
@media (max-width: 700px) {
  .child-row-grid {
    grid-template-columns: 76px 1fr 1fr;
    gap: .45rem;
  }
  .child-row-grid > input[type="date"],
  .child-row-grid > input[type="number"],
  .child-row-grid > select,
  .child-row-grid > .child-row-age { grid-column: 2 / -1; }
  .child-row-age { grid-column: 2 / -1; text-align: left; }
}

/* === Sumar pentru gazdă (admin) =============================== */
.host-brief-toolbar {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: 1.5rem;
}
.pending-host-card {
  background: linear-gradient(135deg, rgba(196, 80, 43, 0.08), rgba(227, 179, 65, 0.05));
  border: 1px solid rgba(196, 80, 43, 0.3);
}
.pending-host-card .card-title { color: var(--ember-400, #eb8079); }
.pending-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.pending-list li {
  position: relative;
  padding: .35rem 0 .35rem 1.5rem;
  color: var(--cream-100);
}
.pending-list li::before {
  content: '▸';
  position: absolute;
  left: .25rem;
  color: var(--ember-400, #eb8079);
}
.quick-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 1rem;
}
.stat-block {
  text-align: center;
  padding: 1rem;
  background: var(--ink-800, #222831);
  border: 1px solid var(--ink-500, #3a424c);
  border-radius: 8px;
}
.stat-block.highlight {
  border-color: var(--brass-400, #f2cf76);
  background: linear-gradient(135deg, rgba(227, 179, 65, 0.1), rgba(227, 179, 65, 0.02));
}
.stat-block .stat-value {
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 2.2rem;
  font-weight: 600;
  color: var(--brass-300, #f2cf76);
  line-height: 1;
}
.stat-block .stat-label {
  margin-top: .35rem;
  font-size: .8rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--cream-400);
}
.building-title {
  margin: 1rem 0 .5rem;
  font-family: 'Bricolage Grotesque', system-ui, sans-serif;
  font-size: 1.05rem;
  color: var(--brass-300);
  border-bottom: 1px solid var(--ink-500);
  padding-bottom: .25rem;
}
.room-block {
  margin: .5rem 0;
  padding: .65rem .8rem;
  background: rgba(15, 26, 43, 0.5);
  border-left: 3px solid var(--brass-500);
  border-radius: 3px;
}
.room-block-header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .55rem;
  margin-bottom: .3rem;
}
.room-meta { font-size: .85rem; color: var(--cream-400); }
.room-occ {
  margin-left: auto;
  padding: 2px 8px;
  font-size: .8rem;
  background: rgba(227, 179, 65, 0.1);
  color: var(--brass-300);
  border-radius: 2px;
}
.room-occ.over { color: var(--ember-500); background: rgba(196, 80, 43, 0.12); }
.bed-tag {
  padding: 2px 8px;
  font-size: .75rem;
  background: rgba(227, 179, 65, 0.14);
  color: var(--brass-300);
  border: 1px solid rgba(227, 179, 65, 0.3);
  border-radius: 2px;
}
.occupant-line {
  margin: .25rem 0;
  font-size: .9rem;
  color: var(--cream-100);
}
.children-inline { color: var(--cream-400); font-size: .88rem; }
.bed-mark { margin-left: 2px; font-size: .9em; vertical-align: baseline; }
.bed-summary {
  margin-left: .65rem;
  padding: 2px 8px;
  font-size: .78rem;
  font-weight: 500;
  background: rgba(227, 179, 65, 0.16);
  color: var(--brass-300);
  border-radius: 3px;
  border: 1px solid rgba(227, 179, 65, 0.35);
  white-space: nowrap;
}
.unknown-tag, .warning-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  font-size: .72rem;
  background: rgba(196, 80, 43, 0.12);
  color: var(--ember-400);
  border-radius: 2px;
}
.diet-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: .85rem;
}
.diet-block {
  padding: .65rem .85rem;
  background: var(--ink-800);
  border: 1px solid var(--ink-500);
  border-radius: 4px;
}
.diet-label {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--brass-300);
  margin-bottom: .35rem;
}
.diet-people {
  font-size: .92rem;
  color: var(--cream-100);
}
.diet-notes {
  margin: .25rem 0 0;
  padding-left: 1.25rem;
  font-size: .9rem;
}
.age-row {
  display: flex;
  gap: 1rem;
  padding: .55rem 0;
  border-bottom: 1px dashed rgba(52, 71, 102, 0.55);
}
.age-row:last-child { border-bottom: none; }
.age-row.warning-row .age-row-label { color: var(--ember-400); }
.age-row-label {
  flex: 0 0 130px;
  font-size: .9rem;
  font-weight: 500;
  color: var(--brass-300);
}
.age-row-count { font-weight: 400; color: var(--cream-400); font-size: .85em; }
.age-row-list { flex: 1; font-size: .92rem; color: var(--cream-100); }

/* === Host-brief: Cazare + Mese ============================== */
.cazare-pricing {
  width: 100%;
  border-collapse: collapse;
  font-size: .92rem;
}
.cazare-pricing th {
  text-align: left;
  padding: .5rem .75rem;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--cream-400);
  border-bottom: 1px solid var(--ink-500);
  font-weight: 500;
}
.cazare-pricing td {
  padding: .55rem .75rem;
  border-bottom: 1px dashed rgba(52, 71, 102, 0.5);
}
.cazare-pricing tr:last-child td { border-bottom: none; }

.meal-block {
  padding: .85rem 1rem;
  margin: .65rem 0;
  background: var(--ink-800, #222831);
  border: 1px solid var(--ink-500, #3a424c);
  border-radius: 6px;
  border-left: 3px solid var(--brass-500);
}
.meal-block.meal-incomplete {
  border-left-color: var(--ember-500, #e5675f);
  background: linear-gradient(135deg, rgba(196, 80, 43, 0.06), rgba(227, 179, 65, 0.02));
}
.meal-header {
  display: flex;
  gap: .65rem;
  align-items: baseline;
  flex-wrap: wrap;
  margin-bottom: .5rem;
}
.meal-header strong { color: var(--brass-300); }
.meal-name { color: var(--cream-100); font-size: .95rem; }
.meal-prices {
  display: flex;
  gap: .5rem;
  margin-bottom: .5rem;
  flex-wrap: wrap;
}
.meal-price-tag {
  padding: 2px 10px;
  font-size: .82rem;
  font-weight: 500;
  border-radius: 3px;
  border: 1px solid transparent;
}
.meal-price-tag.confirmed {
  background: rgba(227, 179, 65, 0.14);
  color: var(--brass-300);
  border-color: rgba(227, 179, 65, 0.35);
}
.meal-price-tag.pending {
  background: rgba(196, 80, 43, 0.12);
  color: var(--ember-400);
  border-color: rgba(196, 80, 43, 0.3);
}
.meal-content {
  margin: .25rem 0;
  font-size: .88rem;
  color: var(--cream-200, #c9d1da);
}
.meal-pending {
  list-style: none;
  margin: .35rem 0 0;
  padding: 0;
}
.meal-pending li {
  font-size: .82rem;
  color: var(--ember-400);
  padding: 1px 0;
}

/* Catalog copii: toggle „vine la ediția curentă" */
.child-attendance-form {
  display: flex;
  align-items: center;
  gap: .65rem;
  margin: -.2rem 0 .35rem .2rem;
  padding: .4rem .7rem;
  background: rgba(227, 179, 65, 0.06);
  border-left: 2px solid rgba(227, 179, 65, 0.3);
  border-radius: 0 4px 4px 0;
  font-size: .88rem;
}
.child-attendance-toggle {
  display: flex;
  align-items: center;
  gap: .45rem;
  color: var(--cream-200, #c9d1da);
  cursor: pointer;
  user-select: none;
  flex: 1;
}
.child-attendance-toggle input[type="checkbox"] {
  margin: 0;
}

/* === User-form: navigare prev/next între utilizatori === */
.user-nav-row {
  display: grid;
  grid-template-columns: minmax(120px, auto) 1fr minmax(120px, auto);
  align-items: center;
  gap: 1rem;
  margin-top: .25rem;
}
.user-nav-title {
  margin: 0;
  text-align: center;
}
.user-nav-btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .55rem .9rem;
  font-size: .92rem;
  color: var(--brass-300);
  background: var(--ink-800, #222831);
  border: 1px solid var(--ink-500, #3a424c);
  border-radius: 4px;
  text-decoration: none;
  border-bottom: 1px solid var(--ink-500, #3a424c);
  transition: background-color 0.15s ease, border-color 0.15s ease;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.user-nav-btn:hover:not(.disabled) {
  background: rgba(227, 179, 65, 0.12);
  border-color: var(--brass-500);
  color: var(--brass-200, #f2cf76);
}
.user-nav-btn.disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.user-nav-btn-right {
  justify-content: flex-end;
  justify-self: end;
}
.user-nav-name {
  font-size: .85em;
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 700px) {
  .user-nav-row {
    grid-template-columns: 1fr;
    gap: .5rem;
  }
  .user-nav-btn { justify-content: center; }
  .user-nav-btn-right { justify-self: stretch; }
  .user-nav-name { max-width: none; }
}

/* ==========================================
   Accessibility & polish enterprise (v2.7)
   ========================================== */

/* Selection — brass la evidențierea textului */
::selection {
  background: rgba(227, 179, 65, 0.35);
  color: var(--cream-50);
}

/* Focus keyboard-only — outline vizibil, respectă paletă */
:focus-visible {
  outline: 2px solid var(--brass-400);
  outline-offset: 2px;
  border-radius: 2px;
}
/* Butoane și inputs — outline mai aproape ca să nu iasă din containere */
.btn:focus-visible,
.form-control:focus-visible,
.topbar-tab:focus-visible,
.bottom-nav-tab:focus-visible,
.topbar-user-toggle:focus-visible {
  outline-offset: 3px;
}
/* Input line-style — outline pe border-bottom, nu box */
input.form-control:focus-visible,
input[type="text"]:focus-visible,
input[type="password"]:focus-visible,
input[type="email"]:focus-visible,
input[type="tel"]:focus-visible {
  outline: none;
  border-bottom-color: var(--brass-500);
  box-shadow: 0 1px 0 0 var(--brass-500);
}

/* Reduced motion — respectă preferința sistemului. Transitions rămân
   scurte (150ms) pentru feedback minim; animații lungi (progress bar,
   slideIn) sunt oprite. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 150ms !important;
    scroll-behavior: auto !important;
  }
  .topbar-progress.htmx-request { animation: none; opacity: 0.6; }
}

/* ==========================================
   View helpers (v2.7 — dashboard + participanti)
   ========================================== */

/* Icon status inline (participa/avans in tabele) */
.icon-status {
  font-size: 1.2rem;
  line-height: 1;
}
.icon-status--ok    { color: var(--success); }
.icon-status--warn  { color: var(--brass-500); }
.icon-status--bad   { color: var(--ember-500); }
.icon-brass         { color: var(--brass-400); }

/* Table centrata pe coloanele status */
.table--fixed { table-layout: fixed; width: 100%; }
.th--center, .td--center { text-align: center; }

/* Type-badge inline (frate/profan) */
.type-badge {
  margin-right: var(--sp-2);
  font-size: 1em;
  vertical-align: baseline;
}

/* Form utilities pentru pagini de editare */
.form-group--tight { margin: 0; }
.form-group--sm    { margin-bottom: var(--sp-2); }
.form-label--plain {
  text-transform: none;
  letter-spacing: 0.005em;
  font-size: var(--fs-base);
  color: var(--cream-100);
  font-weight: 500;
}
.form-hint {
  display: block;
  margin-top: var(--sp-1);
  font-size: var(--fs-sm);
  color: var(--cream-400);
}
.child-inline-note {
  font-weight: 400;
  font-size: 0.85em;
  color: var(--cream-400);
  margin-left: var(--sp-1);
}

/* Warning inline (dashboard event cards) */
.inline-warning {
  margin-top: var(--sp-3);
  padding: var(--sp-2) var(--sp-3);
  background: rgba(196, 80, 43, 0.08);
  border-left: 3px solid var(--ember-500);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  color: var(--cream-100);
}
.inline-warning i { color: var(--ember-500); margin-right: var(--sp-1); }

/* Dashboard event card patterns (Urmatoarea tinuta / Urmatoarea excursie) */
.event-mini-title {
  font-size: var(--fs-md);
  font-weight: 500;
  color: var(--brass-300);
  margin-bottom: var(--sp-1);
}
.event-mini-date {
  font-size: 0.9em;
  color: var(--cream-400);
  margin-bottom: var(--sp-2);
}
.event-mini-meta {
  font-size: var(--fs-base);
  color: var(--cream-100);
}
.event-mini-actions {
  margin-top: var(--sp-4);
}

/* Stats grid wide (dashboard: 280px min, gap larger) */
.stats-grid--wide {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--sp-5);
}

/* Grid stats normal cu spacing consistent (participanti/host-brief) */
.stats-grid--tight {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--sp-4);
  margin-bottom: var(--sp-6);
}

/* Cursor pointer (announcement alert cu data-href) */
.clickable { cursor: pointer; }

/* Table cols pentru pagini de gestionare (participanti/lodge-schedule) */
.col-status { width: 160px; }
.col-action { width: 150px; }

/* ===== Program lojă — listă schelet + ordinea de zi =====
   Stil funcțional/minimal; rafinarea vizuală (WhatsApp-like) vine separat. */
.lodge-list { display: flex; flex-direction: column; gap: 10px; }
.lodge-row {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  color: var(--cream-100);
  /* peste .card--flush (4px) — cercul dată nu trebuie lipit de marginea cardului */
  padding-left: var(--sp-2);
}
/* Data ca badge circular subțire: ziua (alb) + luna (brass) centrate. */
.lodge-row-date {
  flex: 0 0 auto;
  width: 53px;
  height: 53px;
  border-radius: 50%;
  border: 1.5px solid rgba(227, 179, 65, 0.5);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
.lodge-row-date .d {
  font-family: var(--font-display);
  font-size: 1.2rem;
  font-weight: 600;
  color: var(--cream-50);
  font-variant-numeric: tabular-nums;
}
.lodge-row-date .m {
  margin-top: 2px;
  font-size: 0.64rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  /* compensează spațiul de după ultima literă → text centrat real în cerc */
  text-indent: 0.05em;
  color: var(--brass-400);
}
/* Varianta „Altele": în locul badge-ului de dată, emoji-ul tipului de activitate
   (grătar, teatru, natură). Aceleași dimensiuni ca badge-ul de dată, ca rândurile
   din cele două taburi să aibă același ritm. */
.lodge-row-emoji {
  flex: 0 0 auto;
  width: 53px;
  height: 53px;
  border-radius: 50%;
  background: rgba(227, 179, 65, 0.13);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  line-height: 1;
}
.lodge-row-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.lodge-row-type {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--brass-400);
  font-weight: 600;
}
.lodge-row-title { font-family: var(--font-display); font-weight: 600; color: var(--cream-100); }
.lodge-row-meta { font-size: 0.8rem; color: var(--cream-400); }
.lodge-row-chev { color: var(--brass-500); flex: 0 0 auto; }
.lodge-row:hover { border-color: rgba(227, 179, 65, 0.4); }

/* Titlu de secțiune între două liste de carduri (ex. „Trecute"). E un separator,
   NU un card: nu împachetează rândurile, doar le precede — altfel lista capătă
   un chenar cu antet și subsol în jurul evenimentelor. */
.list-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: var(--sp-7) 0 var(--sp-4);
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--cream-400);
}

.odz-grade {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--brass-400);
  font-weight: 600;
  margin: 18px 0 8px;
  padding-bottom: 4px;
  border-bottom: var(--rule-hairline);
}
.odz-grade:first-child { margin-top: 0; }
.odz-point { padding: 8px 0; border-bottom: 1px solid rgba(52, 71, 102, 0.25); }
.odz-point:last-child { border-bottom: none; }
.odz-point-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.odz-time { font-variant-numeric: tabular-nums; color: var(--cream-400); font-size: 0.85rem; }
.odz-point-title { font-weight: 500; }
.odz-by { font-size: 0.85rem; color: var(--cream-400); margin-top: 3px; padding-left: 2px; }
.odz-desc { font-size: 0.85rem; color: var(--cream-400); margin-top: 4px; }
.odz-point--geometric .odz-point-title { color: var(--brass-300); font-weight: 600; }

/* Selectorul „cine vine din familia ta" — partials/family-picker.ejs.
   Același bloc la excursie și la activități, pe ecranul fratelui și pe cel al
   organizatorului (varianta `compact`, în rândurile de tabel). */
.family-picker {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 12px 0;
}
.family-picker-title {
  font-size: 0.8rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--cream-400);
  margin-bottom: 2px;
}
.family-picker-item {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
  color: var(--cream-100);
  cursor: pointer;
}
.family-picker-item input[type='checkbox'] {
  width: 18px;
  height: 18px;
  accent-color: var(--brass-500);
  flex: 0 0 auto;
}
.family-picker-extra {
  gap: 10px;
  color: var(--cream-400);
}
.family-picker-extra .form-control {
  max-width: 72px;
  padding: 4px 6px;
}
.family-picker-empty {
  margin: 0;
  font-size: 0.85rem;
}

/* RSVP — confirmarea prezenței (Vin / Nu vin / Scuzat) */
.rsvp-card .rsvp-q { font-size: 0.9rem; color: var(--cream-100); margin-bottom: 12px; }
.rsvp-opts { display: flex; gap: 10px; flex-wrap: wrap; }
.rsvp-opts form { margin: 0; flex: 1; min-width: 90px; }
.rsvp-pill {
  width: 100%;
  padding: 10px 8px;
  border-radius: 10px;
  border: 1px solid var(--ink-500);
  background: transparent;
  color: var(--cream-400);
  font-size: 0.85rem;
  font-family: var(--font-body);
  cursor: pointer;
  transition: color 0.15s var(--ease-out), background 0.15s var(--ease-out),
    border-color 0.15s var(--ease-out);
}
.rsvp-pill:hover { border-color: var(--ink-400); color: var(--cream-100); }
.rsvp-pill.sel {
  border-color: var(--brass-500);
  background: rgba(227, 179, 65, 0.16);
  color: var(--brass-300);
  font-weight: 600;
}

/* Culori semantice per status: verde = Vin, roșu = Nu vin, auriu = Scuzat.
   TOATE „frame" (contur), la ACELAȘI nivel — selectat = contur plin + tentă
   subtilă + bold, NU umplut solid (butonul ales nu domină). Ținute
   (present/absent/excused) + grătare (coming/not_coming). */
.rsvp-pill--present,
.rsvp-pill--coming { color: var(--success); border-color: rgba(76, 174, 122, 0.5); }
.rsvp-pill--absent,
.rsvp-pill--not_coming { color: var(--danger); border-color: rgba(229, 103, 95, 0.5); }
.rsvp-pill--excused { color: var(--warning); border-color: rgba(201, 162, 39, 0.5); }

.rsvp-pill--present:hover,
.rsvp-pill--coming:hover { background: rgba(76, 174, 122, 0.08); border-color: var(--success); }
.rsvp-pill--absent:hover,
.rsvp-pill--not_coming:hover { background: rgba(229, 103, 95, 0.08); border-color: var(--danger); }
.rsvp-pill--excused:hover { background: rgba(201, 162, 39, 0.08); border-color: var(--warning); }

.rsvp-pill--present.sel,
.rsvp-pill--coming.sel {
  border-color: var(--success); background: rgba(76, 174, 122, 0.16); color: var(--success); font-weight: 600;
}
.rsvp-pill--absent.sel,
.rsvp-pill--not_coming.sel {
  border-color: var(--danger); background: rgba(229, 103, 95, 0.16); color: var(--danger); font-weight: 600;
}
.rsvp-pill--excused.sel {
  border-color: var(--warning); background: rgba(201, 162, 39, 0.16); color: var(--warning); font-weight: 600;
}

/* Home — agenda unificată „Evenimente" (listă stil WhatsApp + selector) */
.agenda-filter {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.agenda-chip {
  padding: 6px 14px;
  border-radius: 999px;
  border: 1px solid var(--ink-500);
  background: transparent;
  color: var(--cream-400);
  font-size: 0.85rem;
  font-family: var(--font-body);
  cursor: pointer;
  transition: color 0.15s var(--ease-out), background 0.15s var(--ease-out),
    border-color 0.15s var(--ease-out);
}
.agenda-chip:hover {
  color: var(--cream-100);
  border-color: rgba(227, 179, 65, 0.4);
}
.agenda-chip.active {
  background: rgba(227, 179, 65, 0.14);
  border-color: var(--brass-500);
  color: var(--brass-300);
  font-weight: 600;
}
.agenda-list {
  display: flex;
  flex-direction: column;
}
.agenda-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 4px;
  border-bottom: 1px solid var(--ink-500);
  text-decoration: none;
  color: inherit;
}
.agenda-row:last-child {
  border-bottom: none;
}
.agenda-icon {
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(227, 179, 65, 0.13);
  font-size: 24px;
  line-height: 1;
}
/* Emoji color în titlul de detaliu (kind) — puțin mai mic decât textul. */
.title-emoji {
  font-size: 0.9em;
}
.agenda-body {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.agenda-title {
  font-weight: 600;
  color: var(--cream-100);
}
.agenda-sub {
  font-size: 0.85rem;
  color: var(--cream-400);
}
.agenda-chevron {
  flex: 0 0 auto;
  color: var(--cream-400);
}

/* Notificări lojă — banner de stare scheduler */
.scheduler-banner {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 16px;
  margin-bottom: 18px;
  border-radius: 8px;
  border: 1px solid;
  font-size: 0.9rem;
  line-height: 1.45;
}
.scheduler-banner i { margin-top: 2px; flex-shrink: 0; }
.scheduler-banner a { color: inherit; text-decoration: underline; }
.scheduler-banner--paused {
  background: rgba(227, 179, 65, 0.08);
  border-color: rgba(227, 179, 65, 0.35);
  color: var(--brass-300);
}
.scheduler-banner--stale {
  background: rgba(196, 80, 43, 0.1);
  border-color: rgba(196, 80, 43, 0.45);
  color: #e08d74;
}

/* Starea + controlul scheduler-ului */
.sched-state {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.sched-state-main { display: flex; align-items: flex-start; gap: 14px; flex-wrap: wrap; }
.sched-state-detail { font-size: 0.9rem; color: var(--cream-100); max-width: 54ch; }
.sched-control { margin: 0; }
.sched-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid;
  font-size: 0.85rem;
  font-weight: 600;
  white-space: nowrap;
}
.sched-pill--active { color: #7fc98a; border-color: rgba(76, 175, 80, 0.5); background: rgba(76, 175, 80, 0.12); }
.sched-pill--paused { color: var(--brass-300); border-color: rgba(227, 179, 65, 0.5); background: rgba(227, 179, 65, 0.12); }
.sched-pill--stale { color: #e08d74; border-color: rgba(196, 80, 43, 0.5); background: rgba(196, 80, 43, 0.14); }

/* Overview: ce s-a trimis / ce urmează */
.notif-list { display: flex; flex-direction: column; }
.notif-event { padding: 12px 0; border-top: 1px solid rgba(52, 71, 102, 0.4); }
.notif-event:first-child { border-top: 0; padding-top: 0; }
.notif-event-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.notif-event-title { font-weight: 600; color: var(--cream-50); }
.notif-event-date { color: var(--cream-400); font-size: 0.85rem; margin-left: auto; }
.notif-item {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 4px 0;
  font-size: 0.88rem;
}
.notif-item i { width: 16px; text-align: center; flex-shrink: 0; }
.notif-item-label { font-weight: 500; min-width: 110px; }
.notif-item-when { color: var(--cream-400); }
.notif-item--sent i { color: #7fc98a; }
.notif-item--upcoming i { color: var(--brass-400); }
.notif-item--missed { color: var(--cream-400); }
.notif-item--missed i { color: var(--cream-400); }
