/* Swiss90 — Global Stylesheet
   Aesthetic: Swiss Precision + Human Warmth
   Fonts: DM Serif Display (headings) + DM Sans (body/UI)
   Load in <head>:
     https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&display=swap
   Icons: @phosphor-icons/web (CSS font, loaded separately)
*/

/* ─── Custom Properties ──────────────────────────────────────────────────── */
:root {
  /* Red — Swiss flag. Use on ≤2 elements per screen. */
  --red:         #D52B1E;
  --red-hover:   #B82518;
  --red-light:   #FDF1F0;
  --red-muted:   #E8756D;

  /* Neutrals — warm-tinted, never clinical */
  --ink:         #1C1917;
  --ink-2:       #5C5752;
  --ink-3:       #9C9590;
  --border:      #E8E5E1;
  --border-light:#F2F0ED;
  --surface:     #FFFFFF;
  --bg:          #F8F6F3;
  --bg-warm:     #F5F2EE;
  --bg-subtle:   #F2F0ED;

  /* Semantic */
  --green:       #1E7E4A;
  --green-light: #EDF7F1;
  --amber:       #B86E00;
  --amber-light: #FEF6E7;
  --blue:        #1A5FA8;
  --blue-light:  #EEF4FC;

  /* Spacing — 8px grid, multiples of 4px */
  --sp-1:  4px;
  --sp-2:  8px;
  --sp-3:  12px;
  --sp-4:  16px;
  --sp-5:  20px;
  --sp-6:  24px;
  --sp-8:  32px;
  --sp-10: 40px;
  --sp-12: 48px;
  --sp-16: 64px;
  --sp-20: 80px;
  --sp-24: 96px;
  --sp-32: 128px;

  /* Border radius */
  --radius-sm:   4px;
  --radius-md:   8px;
  --radius-lg:   12px;
  --radius-xl:   16px;
  --radius-2xl:  24px;
  --radius-full: 9999px;
  --radius-pill: 999px;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(28, 25, 23, 0.06);
  --shadow-md: 0 4px 12px rgba(28, 25, 23, 0.08);
  --shadow-lg: 0 8px 24px rgba(28, 25, 23, 0.10);
  --shadow-xl: 0 16px 40px rgba(28, 25, 23, 0.12);

  /* Type scale */
  --t-xs:   0.75rem;
  --t-sm:   0.875rem;
  --t-base: 1rem;
  --t-md:   1.125rem;
  --t-lg:   1.375rem;
  --t-xl:   1.75rem;
  --t-2xl:  2.25rem;
  --t-3xl:  3rem;
  --t-4xl:  4rem;

  /* Layout */
  --max-w-marketing: 1160px;
  --max-w-app:       960px;
  --max-w-article:   720px;
}

/* ─── Reset ──────────────────────────────────────────────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

/* ─── Base ───────────────────────────────────────────────────────────────── */
body {
  font-family: "DM Sans", sans-serif;
  font-size: var(--t-base);
  line-height: 1.6;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img, video, svg {
  display: block;
  max-width: 100%;
}

a {
  color: var(--blue);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* ─── Typography ─────────────────────────────────────────────────────────── */

/* DM Serif Display for H1/H2 and marketing display text */
h1, h2 {
  font-family: "DM Serif Display", serif;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -0.01em;
  color: var(--ink);
}

h3, h4, h5, h6 {
  font-family: "DM Sans", sans-serif;
  font-weight: 600;
  line-height: 1.3;
  color: var(--ink);
}

h1 { font-size: var(--t-2xl); }
h2 { font-size: var(--t-xl); }
h3 { font-size: var(--t-lg); }
h4 { font-size: var(--t-md); }
h5 { font-size: var(--t-base); }

p {
  line-height: 1.6;
  color: var(--ink-2);
}

/* Uppercase section label */
.label {
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-3);
}

.label-red {
  color: var(--red);
}

/* ─── Layout helpers ─────────────────────────────────────────────────────── */
.container {
  width: 100%;
  max-width: var(--max-w-marketing);
  margin-inline: auto;
  padding-inline: var(--sp-6);
}

.container-app {
  width: 100%;
  max-width: var(--max-w-app);
  margin-inline: auto;
  padding-inline: var(--sp-6);
}

.container-article {
  width: 100%;
  max-width: var(--max-w-article);
  margin-inline: auto;
  padding-inline: var(--sp-6);
}

@media (min-width: 768px) {
  .container,
  .container-app,
  .container-article {
    padding-inline: var(--sp-10);
  }
}

/* ─── Buttons ────────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-2);
  border: none;
  cursor: pointer;
  font-family: "DM Sans", sans-serif;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.01em;
  text-decoration: none;
  border-radius: var(--radius-pill);
  transition: background 150ms ease, color 150ms ease,
              border-color 150ms ease, transform 80ms ease;
  white-space: nowrap;
}

.btn:active {
  transform: scale(0.98);
}

/* Sizes */
.btn-sm { padding: 8px 16px;  font-size: var(--t-sm); }
.btn-md { padding: 12px 24px; font-size: var(--t-base); }
.btn-lg { padding: 14px 32px; font-size: 1.0625rem; }

/* Variants */
.btn-primary {
  background: var(--red);
  color: #fff;
}
.btn-primary:hover {
  background: var(--red-hover);
  text-decoration: none;
  color: #fff;
}

.btn-secondary {
  background: transparent;
  color: var(--ink);
  border: 1.5px solid var(--border);
}
.btn-secondary:hover {
  border-color: var(--ink-2);
  text-decoration: none;
}

.btn-ghost {
  background: transparent;
  color: var(--red);
}
.btn-ghost:hover {
  background: var(--red-light);
  text-decoration: none;
}

.btn-destructive {
  background: transparent;
  color: var(--red);
  border: 1.5px solid var(--red-muted);
}
.btn-destructive:hover {
  border-color: var(--red);
  background: var(--red-light);
}

.btn-icon {
  width: 40px;
  height: 40px;
  padding: 0;
  border-radius: var(--radius-md);
  background: var(--surface);
  border: 1.5px solid var(--border);
  color: var(--ink-2);
}
.btn-icon:hover {
  border-color: var(--ink-2);
  color: var(--ink);
}

.btn:disabled,
.btn[disabled] {
  background: var(--bg-subtle);
  color: var(--ink-3);
  border-color: var(--border);
  cursor: not-allowed;
  transform: none;
  pointer-events: none;
}

/* ─── Forms ──────────────────────────────────────────────────────────────── */
.form-group {
  margin-bottom: var(--sp-5);
}

.form-label {
  display: block;
  font-size: var(--t-sm);
  font-weight: 500;
  color: var(--ink-2);
  margin-bottom: 6px;
}

.form-label .required {
  color: var(--red);
  margin-left: 2px;
}

.form-input,
.form-select,
.form-textarea {
  display: block;
  width: 100%;
  padding: 10px 14px;
  font-family: "DM Sans", sans-serif;
  font-size: var(--t-base);
  color: var(--ink);
  background: var(--surface);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-md);
  transition: border-color 150ms, box-shadow 150ms;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

.form-input::placeholder,
.form-textarea::placeholder {
  color: var(--ink-3);
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
  border-color: var(--red);
  box-shadow: 0 0 0 3px rgba(213, 43, 30, 0.12);
}

.form-input.error,
.form-select.error,
.form-textarea.error {
  border-color: var(--red);
}

.form-select {
  padding-right: 36px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 256 256'%3E%3Cpath d='M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80A8,8,0,0,1,53.66,90.34L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z' fill='%235C5752'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  cursor: pointer;
}

.form-textarea {
  resize: vertical;
  min-height: 100px;
  line-height: 1.5;
}

.form-hint {
  font-size: var(--t-sm);
  color: var(--ink-3);
  margin-top: 5px;
}

.form-error {
  font-size: var(--t-sm);
  color: var(--red);
  margin-top: 5px;
}

/* ─── Cards ──────────────────────────────────────────────────────────────── */
.card {
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: var(--sp-6);
}

.card-interactive {
  transition: box-shadow 200ms ease, transform 200ms ease;
  cursor: pointer;
}

.card-interactive:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.card-featured {
  border-left: 4px solid var(--red);
}

/* ─── Badges ─────────────────────────────────────────────────────────────── */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.03em;
  line-height: 1.4;
  white-space: nowrap;
}

.badge-red     { background: var(--red-light);   color: var(--red); }
.badge-green   { background: var(--green-light);  color: var(--green); }
.badge-amber   { background: var(--amber-light);  color: var(--amber); }
.badge-blue    { background: var(--blue-light);   color: var(--blue); }
.badge-neutral { background: var(--bg-subtle);    color: var(--ink-2); }

/* ─── Alerts ─────────────────────────────────────────────────────────────── */
.alert {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-radius: var(--radius-lg);
  font-size: var(--t-sm);
  line-height: 1.5;
}

.alert-info    { background: var(--blue-light);   color: var(--blue);   border: 1px solid #b3cef0; }
.alert-warning { background: var(--amber-light);  color: var(--amber);  border: 1px solid #f0d48a; }
.alert-success { background: var(--green-light);  color: var(--green);  border: 1px solid #a3d9b8; }
.alert-error   { background: var(--red-light);    color: var(--red);    border: 1px solid #f0b0aa; }

.alert a {
  color: inherit;
  font-weight: 500;
  text-decoration: underline;
}

/* ─── Progress bar ───────────────────────────────────────────────────────── */
.progress {
  height: 6px;
  background: var(--border);
  border-radius: var(--radius-pill);
  overflow: hidden;
}

.progress-fill {
  height: 100%;
  background: var(--red);
  border-radius: var(--radius-pill);
  transition: width 400ms ease;
}

/* ─── Navigation ─────────────────────────────────────────────────────────── */
.nav {
  display: flex;
  align-items: center;
  height: 60px;
  background: var(--surface);
  border-bottom: 1px solid var(--border-light);
  box-shadow: var(--shadow-sm);
  padding-inline: var(--sp-6);
  gap: var(--sp-8);
  position: sticky;
  top: 0;
  z-index: 50;
}

.nav-logo {
  font-family: "DM Serif Display", serif;
  font-size: 1.375rem;
  color: var(--ink);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-shrink: 0;
}

.nav-logo:hover {
  text-decoration: none;
  color: var(--ink);
}

.nav-links {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  flex: 1;
}

.nav-link {
  font-size: 0.9375rem;
  color: var(--ink-2);
  text-decoration: none;
  transition: color 120ms;
  white-space: nowrap;
}

.nav-link:hover,
.nav-link.active {
  color: var(--ink);
  text-decoration: none;
}

.nav-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin-left: auto;
}

/* User avatar pill (logged-in state) */
.avatar-pill {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: 5px 12px 5px 5px;
  border-radius: var(--radius-pill);
  border: 1.5px solid var(--border);
  cursor: pointer;
  transition: border-color 120ms;
  background: var(--surface);
  font-size: var(--t-sm);
  color: var(--ink);
}

.avatar-pill:hover {
  border-color: var(--ink-2);
}

.avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--red);
  color: #fff;
  font-size: var(--t-xs);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  text-transform: uppercase;
}

/* Swiss cross logo mark */
.swiss-cross {
  display: inline-block;
  width: 22px;
  height: 22px;
  background: var(--red);
  border-radius: 2px;
  position: relative;
  flex-shrink: 0;
}

.swiss-cross::before,
.swiss-cross::after {
  content: '';
  position: absolute;
  background: #fff;
  border-radius: 1px;
}

.swiss-cross::before { width: 4px;  height: 14px; top: 4px;  left: 9px; }
.swiss-cross::after  { width: 14px; height: 4px;  top: 9px;  left: 4px; }

/* ─── Checklist — zone & task rows ──────────────────────────────────────── */
.zone-header {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  background: var(--bg-subtle);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  border: 1px solid var(--border-light);
  border-bottom: none;
  cursor: pointer;
  user-select: none;
}

.zone-label {
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink-2);
}

.zone-count {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  background: var(--border);
  color: var(--ink-2);
  font-size: var(--t-xs);
  font-weight: 600;
}

.task-list {
  border: 1px solid var(--border-light);
  border-radius: 0 0 var(--radius-lg) var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.task-row {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--border-light);
  background: var(--surface);
  min-height: 56px;
  cursor: pointer;
  transition: background 120ms;
  text-decoration: none;
  color: inherit;
}

.task-row:last-child {
  border-bottom: none;
}

.task-row:hover {
  background: var(--bg);
}

.task-row.done {
  opacity: 0.65;
}

.task-row.done .task-title {
  text-decoration: line-through;
  color: var(--ink-2);
}

.task-row.skipped {
  opacity: 0.5;
}

.task-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
}

.task-body {
  flex: 1;
  min-width: 0;
}

.task-title {
  font-size: var(--t-base);
  color: var(--ink);
  line-height: 1.4;
}

.task-meta {
  font-size: var(--t-xs);
  color: var(--ink-3);
  margin-top: 2px;
}

.task-right {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  flex-shrink: 0;
}


/* ─── City filter tabs ───────────────────────────────────────────────────── */
.city-tab {
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  font-size: var(--t-sm);
  font-weight: 500;
  cursor: pointer;
  transition: all 150ms;
  border: 1.5px solid var(--border);
  background: var(--surface);
  color: var(--ink-2);
}
.city-tab--active {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}

/* ─── Directory listing card ─────────────────────────────────────────────── */
.listing-card {
  background: var(--surface);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: var(--sp-5) var(--sp-6);
  display: flex;
  gap: var(--sp-4);
  align-items: flex-start;
  transition: box-shadow 200ms ease, transform 200ms ease;
}

.listing-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}

.listing-card.featured {
  border-left: 4px solid var(--red);
}

.listing-logo {
  width: 48px;
  height: 48px;
  border-radius: var(--radius-md);
  background: var(--bg-subtle);
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: var(--t-md);
  color: var(--ink-2);
  flex-shrink: 0;
  overflow: hidden;
}

.listing-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.listing-body {
  flex: 1;
  min-width: 0;
}

.listing-name {
  font-size: var(--t-md);
  font-weight: 500;
  color: var(--ink);
  margin-bottom: var(--sp-1);
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}

.listing-category {
  font-size: var(--t-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--ink-3);
  margin-bottom: var(--sp-2);
}

.listing-desc {
  font-size: var(--t-sm);
  color: var(--ink-2);
  line-height: 1.5;
}

.listing-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  margin-top: var(--sp-3);
  flex-wrap: wrap;
}

.star-rating {
  color: var(--amber);
  font-size: var(--t-sm);
}

.star-rating-count {
  color: var(--ink-3);
  font-size: var(--t-xs);
  margin-left: 4px;
}

/* ─── Sections (marketing) ───────────────────────────────────────────────── */
.section {
  padding-block: var(--sp-24);
}

.section-alt {
  background: var(--bg-subtle);
}

.section-dark {
  background: var(--ink);
  color: var(--surface);
}

/* ─── Hero ───────────────────────────────────────────────────────────────── */
.hero {
  padding-block: var(--sp-20);
  text-align: center;
}

.hero-eyebrow {
  display: inline-block;
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--red);
  margin-bottom: var(--sp-4);
}

.hero h1 {
  font-size: clamp(var(--t-2xl), 5vw, var(--t-4xl));
  letter-spacing: -0.01em;
  margin-bottom: var(--sp-5);
  margin-inline: auto;
  max-width: 760px;
}

.hero-lead {
  font-size: var(--t-md);
  color: var(--ink-2);
  max-width: 520px;
  margin-inline: auto;
  margin-bottom: var(--sp-8);
  line-height: 1.6;
}

.hero-actions {
  display: flex;
  gap: var(--sp-3);
  justify-content: center;
  flex-wrap: wrap;
  margin-bottom: var(--sp-12);
}

/* Stat block */
.stats {
  display: flex;
  gap: var(--sp-12);
  justify-content: center;
  flex-wrap: wrap;
}

.stat-value {
  font-family: "DM Serif Display", serif;
  font-size: var(--t-3xl);
  color: var(--ink);
  line-height: 1;
}

.stat-label {
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-3);
  margin-top: var(--sp-1);
}

/* ─── Guide article ──────────────────────────────────────────────────────── */
.article h2 {
  font-size: var(--t-xl);
  margin-bottom: var(--sp-4);
  margin-top: var(--sp-8);
}

.article h3 {
  font-size: var(--t-lg);
  margin-bottom: var(--sp-3);
  margin-top: var(--sp-6);
}

.article p {
  margin-bottom: var(--sp-5);
  line-height: 1.7;
}

.article ul,
.article ol {
  padding-left: var(--sp-6);
  margin-bottom: var(--sp-5);
}

.article li {
  margin-bottom: var(--sp-2);
  line-height: 1.6;
  color: var(--ink-2);
}

/* Inline guide CTA */
.guide-cta {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-4);
  background: var(--bg-subtle);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--sp-5) var(--sp-6);
  margin-block: var(--sp-6);
}

.guide-cta-icon {
  color: var(--red);
  flex-shrink: 0;
  margin-top: 4px;
}

.guide-cta-title {
  font-weight: 600;
  color: var(--ink);
  margin-bottom: var(--sp-1);
}

.guide-cta-desc {
  font-size: var(--t-sm);
  color: var(--ink-2);
  margin-bottom: var(--sp-3);
}

/* ─── Activity feed ──────────────────────────────────────────────────────── */
.feed-item {
  display: flex;
  align-items: flex-start;
  gap: var(--sp-3);
  padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--border-light);
  font-size: var(--t-sm);
  color: var(--ink-2);
}

.feed-item:last-child {
  border-bottom: none;
}

.feed-item-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  margin-top: 1px;
}

.feed-item-time {
  font-size: var(--t-xs);
  color: var(--ink-3);
  margin-top: 2px;
}

/* ─── Empty state ────────────────────────────────────────────────────────── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: var(--sp-16) var(--sp-8);
  color: var(--ink-3);
}

.empty-state-icon {
  margin-bottom: var(--sp-5);
  opacity: 0.5;
}

.empty-state h3 {
  font-size: var(--t-lg);
  color: var(--ink-2);
  margin-bottom: var(--sp-2);
}

.empty-state p {
  font-size: var(--t-sm);
  max-width: 320px;
  margin-bottom: var(--sp-5);
}

/* ─── Divider ────────────────────────────────────────────────────────────── */
.divider {
  border: none;
  border-top: 1px solid var(--border-light);
  margin-block: var(--sp-6);
}

/* ─── Accessibility ──────────────────────────────────────────────────────── */
:focus-visible {
  outline: 2px solid var(--red);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Skip to main content */
.skip-link {
  position: absolute;
  top: -40px;
  left: var(--sp-4);
  background: var(--red);
  color: #fff;
  padding: var(--sp-2) var(--sp-4);
  border-radius: var(--radius-md);
  font-weight: 600;
  z-index: 999;
  transition: top 150ms;
}

.skip-link:focus {
  top: var(--sp-4);
}

/* ─── Animations ─────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: no-preference) {
  .fade-in {
    animation: fadeIn 350ms ease both;
  }

  @keyframes fadeIn {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  /* HTMX swap animation */
  .htmx-settling {
    opacity: 0.5;
    transition: opacity 150ms ease;
  }
}

/* ─── Utility ────────────────────────────────────────────────────────────── */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.text-red     { color: var(--red); }
.text-green   { color: var(--green); }
.text-amber   { color: var(--amber); }
.text-muted   { color: var(--ink-3); }
.text-secondary { color: var(--ink-2); }

.surface { background: var(--surface); }
.bg      { background: var(--bg); }

/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 640px) {
  h1 { font-size: var(--t-xl); }
  h2 { font-size: var(--t-lg); }

  .nav-links { display: none; }

  .onboarding-main { padding: var(--sp-6) var(--sp-3) var(--sp-12); }
  .ob-card-body { padding: var(--sp-6) var(--sp-6); }

  .listing-card { flex-direction: column; }
  .listing-logo { width: 40px; height: 40px; }
}

/* ── Auth pages ──────────────────────────────────────────────────────── */
.auth-page {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: var(--sp-16) var(--sp-4);
  min-height: 60vh;
}

.auth-card {
  width: 100%;
  max-width: 400px;
  padding: var(--sp-10);
}

.auth-header {
  margin-bottom: var(--sp-8);
  text-align: center;
}

.auth-header h1 {
  font-size: var(--t-3xl);
  margin-bottom: var(--sp-2);
}

.auth-subtitle {
  color: var(--ink-2);
  font-size: var(--t-sm);
}

.auth-divider {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin: var(--sp-6) 0;
  color: var(--ink-3);
  font-size: var(--t-sm);
}

.auth-divider::before,
.auth-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--border-light);
}

.auth-form {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.auth-footer {
  text-align: center;
  margin-top: var(--sp-6);
  color: var(--ink-2);
  font-size: var(--t-sm);
}

.btn-full {
  width: 100%;
  justify-content: center;
}

/* ── Onboarding wizard ───────────────────────────────────────────────── */
.onboarding-body { background: var(--bg); min-height: 100vh; }

.onboarding-nav {
  display: flex;
  align-items: center;
  padding: var(--sp-4) var(--sp-6);
  background: var(--surface);
  border-bottom: 1px solid var(--border-light);
}

.onboarding-main {
  display: flex;
  justify-content: center;
  padding: var(--sp-12) var(--sp-4) var(--sp-20);
}

/* Card — white, elevated, centered */
.onboarding-card {
  width: 100%;
  max-width: 560px;
  background: var(--surface);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}

/* Progress bar — full-bleed thin strip at very top of card */
.ob-progress-bar {
  height: 4px;
  background: var(--border-light);
}

.ob-progress-fill {
  height: 100%;
  background: var(--red);
  transition: width 300ms ease;
}

/* Card body — padded container for all step content */
.ob-card-body {
  padding: var(--sp-8) var(--sp-10);
}

/* Step label — uppercase, small, above the question */
.ob-step-label {
  display: block;
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--ink-secondary);
  margin-bottom: var(--sp-4);
}

/* Question heading */
.ob-question {
  font-family: 'DM Serif Display', serif;
  font-size: var(--t-xl);
  line-height: 1.3;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin-bottom: var(--sp-6);
}

/* Helper / hint text */
.ob-hint {
  font-size: var(--t-sm);
  color: var(--ink-secondary);
  margin-bottom: var(--sp-4);
}

/* Answer option tiles */
.ob-tiles {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  margin-bottom: var(--sp-6);
}

.ob-tile {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  padding: var(--sp-4) var(--sp-5);
  min-height: 52px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: border-color 150ms ease, background 150ms ease;
  background: var(--surface);
  user-select: none;
}

.ob-tile:hover { border-color: var(--ink-secondary); background: var(--bg-subtle); }
.ob-tile--selected { border-color: var(--red); background: var(--red-light); }
.ob-tile--disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }

/* Phosphor icon inside a tile */
.ob-tile-icon {
  font-size: 20px;
  color: var(--ink-secondary);
  flex-shrink: 0;
  width: 24px;
  text-align: center;
  transition: color 150ms ease;
}

.ob-tile--selected .ob-tile-icon { color: var(--red); }

.ob-tile-label {
  font-size: var(--t-base);
  font-weight: 500;
  color: var(--ink);
  flex: 1;
}

.ob-tile-soon {
  font-size: var(--t-xs);
  color: var(--ink-muted);
  letter-spacing: 0.04em;
}

/* Back / Next navigation row */
.ob-actions {
  display: flex;
  gap: var(--sp-3);
  margin-top: var(--sp-8);
  align-items: center;
}

.ob-actions--first { justify-content: flex-end; }
/* Push primary to right when Back link is also present */
.ob-actions .btn-primary { margin-left: auto; }
.ob-actions--first .btn-primary { margin-left: 0; }

/* Arrival date — 3 selects in a row */
.ob-date-selects {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
  gap: var(--sp-3);
  margin-bottom: var(--sp-4);
}

.ob-children { margin-top: var(--sp-6); }
.ob-children.hidden { display: none; }
.ob-child-row { display: flex; gap: var(--sp-2); align-items: center; margin-bottom: var(--sp-2); }

/* Nationality chips */
.ob-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  min-height: 40px;
  margin-bottom: var(--sp-3);
}

.ob-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  background: var(--red);
  color: white;
  padding: var(--sp-1) var(--sp-3);
  border-radius: var(--radius-pill);
  font-size: var(--t-sm);
}

.ob-country-list {
  border: 1px solid var(--border-light);
  border-radius: var(--radius-md);
  max-height: 220px;
  overflow-y: auto;
  margin-bottom: var(--sp-4);
}

.ob-country-item {
  padding: var(--sp-2) var(--sp-4);
  cursor: pointer;
  font-size: var(--t-sm);
}

.ob-country-item:hover { background: var(--bg-subtle); }

/* Priority chips (step 7) */
.ob-priority-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-bottom: var(--sp-6);
}

.ob-priority-chip {
  padding: var(--sp-2) var(--sp-4);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-pill);
  cursor: pointer;
  font-size: var(--t-sm);
  font-weight: 500;
  color: var(--ink);
  transition: border-color 150ms ease, background 150ms ease, color 150ms ease;
  user-select: none;
}

.ob-priority-chip:hover { border-color: var(--ink-secondary); background: var(--bg-subtle); }
.ob-priority-chip--selected { border-color: var(--red); background: var(--red); color: white; }

/* Completion screen */
.ob-complete { text-align: center; padding-bottom: var(--sp-4); }

.ob-complete-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--green-light);
  color: var(--green);
  font-size: 32px;
  margin: 0 auto var(--sp-6);
}

.ob-zone-preview { margin: var(--sp-6) 0; }
.ob-zone-row { display: flex; gap: var(--sp-3); align-items: center; padding: var(--sp-2) 0; border-bottom: 1px solid var(--border-light); font-size: var(--t-sm); }
.ob-zone-badge { background: var(--red); color: white; padding: 2px 8px; border-radius: var(--radius-pill); font-size: var(--t-xs); font-weight: 700; }
.ob-invite-box { padding: var(--sp-4); margin: var(--sp-6) 0; text-align: left; }
.ob-invite-url { display: flex; gap: var(--sp-2); align-items: center; margin-top: var(--sp-2); }
.ob-invite-url code { flex: 1; font-size: var(--t-xs); word-break: break-all; }
.ob-nationalities-form .form-input { width: 100%; margin-bottom: var(--sp-2); }

/* ── Checklist page ──────────────────────────────────────────────────── */
.checklist-header {
  max-width: 960px;
  margin: 0 auto;
  padding: var(--sp-6) var(--sp-4) 0;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-4);
  flex-wrap: wrap;
}
.checklist-header-title { font-family: "DM Serif Display", serif; font-size: var(--t-2xl); font-weight: 400; color: var(--ink); margin: 0; }
.checklist-header-meta { font-size: var(--t-sm); color: var(--ink-secondary); margin-top: var(--sp-1); }
.checklist-invite-banner {
  max-width: 960px;
  margin: var(--sp-4) auto 0;
  padding: var(--sp-3) var(--sp-4);
  background: var(--blue-light);
  border: 1px solid var(--blue);
  border-radius: var(--radius-lg);
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  font-size: var(--t-sm);
  color: var(--blue);
}
.checklist-invite-banner a { color: var(--blue); font-weight: 600; text-decoration: underline; }

.checklist-layout {
  display: flex;
  gap: var(--sp-8);
  max-width: 960px;
  margin: 0 auto;
  padding: var(--sp-6) var(--sp-4);
  align-items: flex-start;
}

.checklist-main { flex: 1; min-width: 0; }

.checklist-sidebar {
  width: 320px;
  flex-shrink: 0;
  position: sticky;
  top: var(--sp-4);
  max-height: calc(100vh - 32px);
  overflow-y: auto;
}

@media (max-width: 1023px) {
  .checklist-sidebar { display: none; }
  .checklist-sidebar.tab-active { display: block; width: 100%; position: static; max-height: none; }
}

.checklist-mobile-tabs {
  display: none;
  gap: 0;
  border-bottom: 2px solid var(--border-light);
  margin-bottom: var(--sp-4);
}

@media (max-width: 1023px) {
  .checklist-mobile-tabs { display: flex; }
  .checklist-layout { flex-direction: column; }
}

.tab-btn {
  flex: 1;
  padding: var(--sp-3);
  border: none;
  background: none;
  font-weight: 500;
  color: var(--ink-2);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -2px;
}

.tab-btn--active { color: var(--red); border-bottom-color: var(--red); }

/* Progress bar */
.checklist-progress { margin-bottom: var(--sp-6); }
.progress-header { display: flex; justify-content: space-between; font-size: var(--t-sm); color: var(--ink-2); margin-bottom: var(--sp-2); }
.progress-header { display: flex; justify-content: space-between; align-items: baseline; font-size: var(--t-sm); color: var(--ink-secondary); margin-bottom: var(--sp-2); }
.progress-stats { display: flex; gap: var(--sp-4); }
.progress-stat-overdue { color: var(--amber); font-weight: 600; }
.progress-bar-track { height: 6px; background: var(--border-light); border-radius: var(--radius-pill); overflow: hidden; }
.progress-bar-fill { height: 100%; background: var(--red); border-radius: var(--radius-pill); transition: width 0.4s ease; }

/* Zone sections */
.zone-section { margin-bottom: var(--sp-4); border: 1px solid var(--border-light); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); }
.zone-summary { display: flex; align-items: center; justify-content: space-between; padding: var(--sp-3) var(--sp-4); cursor: pointer; background: var(--surface); list-style: none; user-select: none; }
.zone-summary::-webkit-details-marker { display: none; }
.zone-summary::marker { display: none; }
.zone-title { font-size: var(--t-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-secondary); display: flex; align-items: center; gap: var(--sp-2); }
.zone-summary-right { display: flex; align-items: center; gap: var(--sp-2); }
.zone-chevron { color: var(--ink-muted); font-size: 1rem; transition: transform 0.2s ease; flex-shrink: 0; }
details[open] .zone-chevron { transform: rotate(180deg); }
.zone-tasks { padding: var(--sp-2) 0; background: var(--surface); }

/* Zone accent borders */
.zone-1 .zone-summary { border-left: 3px solid var(--blue); }
.zone-2 .zone-summary { border-left: 3px solid var(--amber); }
.zone-3 .zone-summary { border-left: 3px solid var(--red-muted); }
.zone-4 .zone-summary { border-left: 3px solid var(--ink-muted); }

/* Task rows */
.task-row {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-4);
  cursor: pointer;
  transition: background 0.1s;
  border-bottom: 1px solid var(--border-light);
}

.task-row:last-child { border-bottom: none; }
.task-row:hover { background: var(--bg-subtle); }
.task-row--overdue { background: var(--amber-light); border-left: 3px solid var(--amber); }
.task-row--done { opacity: 0.7; }
.task-row--skipped { opacity: 0.5; }

.task-checkbox { color: var(--border); font-size: 1.25rem; flex-shrink: 0; }
.task-checkbox--overdue { color: var(--amber); }
.task-checkbox--done { color: var(--green); }
.task-expand-chevron { color: var(--ink-muted); font-size: 0.875rem; flex-shrink: 0; opacity: 0.6; }

.task-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: var(--sp-1); align-items: flex-start; }
.task-title { font-weight: 500; }
.task-title--done { text-decoration: line-through; color: var(--ink-secondary); }
.task-title--skipped { color: var(--ink-muted); }
.task-meta { font-size: var(--t-xs); color: var(--ink-muted); }

.task-assignee {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--red);
  color: white;
  font-size: var(--t-xs);
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.task-assignee--empty { background: transparent; }
.task-spinner { display: none; color: var(--ink-3); }
.htmx-request .task-spinner { display: inline; }

/* Task detail */
.task-detail { padding: 0; }
.task-detail-inner {
  padding: var(--sp-5) var(--sp-6);
  background: var(--bg-subtle);
  border-top: 2px solid var(--border);
  border-left: 3px solid var(--red);
}
.task-detail-title { font-family: "DM Serif Display", serif; font-size: var(--t-lg); font-weight: 400; margin-bottom: var(--sp-2); color: var(--ink); }
.task-detail-desc { color: var(--ink-secondary); font-size: var(--t-sm); margin-bottom: var(--sp-4); line-height: 1.6; }
.task-detail-deadline { display: flex; align-items: center; gap: var(--sp-2); font-size: var(--t-sm); margin-bottom: var(--sp-4); color: var(--ink-secondary); }
.task-detail-deadline--overdue { color: var(--amber); font-weight: 600; }
.task-detail-guide { margin-bottom: var(--sp-4); }
.task-detail-actions { display: flex; gap: var(--sp-3); flex-wrap: wrap; padding-top: var(--sp-4); border-top: 1px solid var(--border-light); margin-top: var(--sp-2); }

/* Collapsed secondary section (notes + assignment) */
.task-secondary-section { margin-top: var(--sp-4); border-top: 1px solid var(--border-light); padding-top: var(--sp-3); }
.task-secondary-summary { cursor: pointer; font-size: var(--t-sm); color: var(--ink-secondary); font-weight: 500; list-style: none; display: flex; align-items: center; gap: var(--sp-2); }
.task-secondary-summary::-webkit-details-marker { display: none; }
.task-secondary-summary::marker { display: none; }
.task-secondary-chevron { transition: transform 0.2s ease; color: var(--ink-muted); }
details[open] .task-secondary-chevron { transform: rotate(90deg); }
.task-secondary-body { padding-top: var(--sp-4); display: flex; flex-direction: column; gap: var(--sp-4); }
.task-detail-section { }
.task-detail-section h4 { font-size: var(--t-xs); font-weight: 700; color: var(--ink-muted); margin-bottom: var(--sp-2); text-transform: uppercase; letter-spacing: 0.06em; }

/* Note editor toggle */
.task-notes-text { font-size: var(--t-sm); white-space: pre-wrap; color: var(--ink-secondary); margin-bottom: var(--sp-2); }
.task-notes-form { display: none; margin-top: var(--sp-3); }
.task-notes-form--visible { display: block; }
.task-assignee-select { max-width: 220px; }

/* Task listing cards */
.task-detail-listings { margin-bottom: var(--sp-4); }
.task-listings-grid { display: flex; flex-direction: column; gap: var(--sp-3); }
.task-listing-card { border: 1px solid var(--border-light); border-radius: var(--radius-md); padding: var(--sp-3); background: var(--surface); }
.listing-name { font-weight: 600; margin-bottom: var(--sp-2); }
.listing-badges { display: flex; align-items: center; gap: var(--sp-2); margin-bottom: var(--sp-2); flex-wrap: wrap; }
.listing-stars { color: var(--amber); font-size: var(--t-sm); letter-spacing: -1px; }
.listing-desc { font-size: var(--t-sm); color: var(--ink-secondary); margin: 0 0 var(--sp-2); }
.listing-actions { display: flex; gap: var(--sp-2); }

/* Activity feed sidebar */
.checklist-sidebar { background: var(--surface); border: 1px solid var(--border-light); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; }
.sidebar-header { padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--border-light); }
.sidebar-header h3 { font-size: var(--t-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-secondary); margin: 0; }
.activity-feed-container { padding: var(--sp-2) 0; }
.activity-empty { font-size: var(--t-sm); color: var(--ink-muted); padding: var(--sp-4); }
.activity-event { display: flex; align-items: flex-start; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); border-bottom: 1px solid var(--border-light); }
.activity-event:last-child { border-bottom: none; }
.activity-icon { font-size: 1rem; flex-shrink: 0; margin-top: 2px; }
.activity-icon--green { color: var(--green); }
.activity-icon--blue  { color: var(--blue); }
.activity-icon--amber { color: var(--amber); }
.activity-icon--muted { color: var(--ink-muted); }
.activity-icon--red   { color: var(--red); }
.activity-body { flex: 1; min-width: 0; }
.activity-text { font-size: var(--t-sm); color: var(--ink); display: block; }
.activity-time { font-size: var(--t-xs); color: var(--ink-muted); display: block; margin-top: var(--sp-1); }

/* Badges */
.badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: var(--radius-full); font-size: var(--t-xs); font-weight: 600; }
.badge-overdue { background: var(--amber-light); color: var(--amber); border: 1px solid var(--amber); }
.badge-danger  { background: var(--red-light);   color: var(--red);   border: 1px solid var(--red-muted); }
.badge-warning { background: var(--amber-light);  color: var(--amber); border: 1px solid var(--amber); }
.badge-success { background: var(--green-light);  color: var(--green); border: 1px solid var(--green); }
.badge-neutral { background: var(--surface); color: var(--ink-secondary); border: 1px solid var(--border-light); }

/* ── Enquiry modal ────────────────────────────────────────────────────── */
.enquiry-modal { background: var(--surface); border-radius: var(--radius-lg); border: 1px solid var(--border-light); padding: var(--sp-6); max-width: 480px; margin: var(--sp-4) auto; box-shadow: var(--shadow-lg); }
.enquiry-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--sp-4); }
.enquiry-modal-header h3 { font-size: var(--t-lg); font-weight: 600; }
.enquiry-form { display: flex; flex-direction: column; gap: var(--sp-4); }
.enquiry-success { text-align: center; padding: var(--sp-8); }
.enquiry-success i { font-size: 3rem; color: var(--green); display: block; margin-bottom: var(--sp-3); }

/* ── Guide pages ──────────────────────────────────────────────────────── */
.guide-index-subtitle { color: var(--ink-2); margin-bottom: var(--sp-8); }
.guide-zone-heading { font-size: var(--t-xl); margin: var(--sp-8) 0 var(--sp-4); color: var(--ink-2); font-weight: 600; }
.guide-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--sp-4); margin-bottom: var(--sp-6); }
.guide-card { padding: var(--sp-5); text-decoration: none; color: inherit; display: block; transition: transform 0.15s, box-shadow 0.15s; }
.guide-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.guide-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--sp-2); margin-bottom: var(--sp-2); }
.guide-card-title { font-weight: 600; font-size: var(--t-base); }
.guide-card-summary { font-size: var(--t-sm); color: var(--ink-2); }
.guide-title { font-size: var(--t-3xl); margin-bottom: var(--sp-4); }
.guide-expert-box { display: flex; align-items: center; gap: var(--sp-2); background: #f0fdf4; border: 1px solid #86efac; border-radius: var(--radius-md); padding: var(--sp-3) var(--sp-4); margin-bottom: var(--sp-4); font-size: var(--t-sm); color: #16a34a; }
.guide-disclaimer { font-size: var(--t-sm); color: var(--ink-3); margin: var(--sp-4) 0; font-style: italic; }
.guide-disclaimer--prominent { background: #fefce8; border: 1px solid #fde047; border-radius: var(--radius-md); padding: var(--sp-3) var(--sp-4); font-style: normal; color: #854d0e; display: flex; gap: var(--sp-2); align-items: flex-start; }
.guide-canton-callout { background: #eff6ff; border: 1px solid #bfdbfe; border-radius: var(--radius-md); padding: var(--sp-4) var(--sp-5); margin: var(--sp-6) 0; }
.guide-next-steps { margin-top: var(--sp-12); border-top: 1px solid var(--border-light); padding-top: var(--sp-8); }
.breadcrumb { font-size: var(--t-sm); color: var(--ink-2); margin-bottom: var(--sp-4); }
.breadcrumb a { color: var(--ink-2); text-decoration: none; }
.breadcrumb a:hover { color: var(--red); }

/* ── SEO pages ────────────────────────────────────────────────────────── */
.listing-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--sp-4); margin: var(--sp-6) 0; }
.listing-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--sp-2); }
.listing-city { font-size: var(--t-xs); color: var(--ink-3); margin-top: var(--sp-1); display: block; }
.seo-cta { padding: var(--sp-8); text-align: center; margin: var(--sp-10) 0; background: linear-gradient(135deg, #fff5f5 0%, var(--bg) 100%); }
.seo-cta h2 { font-size: var(--t-2xl); margin-bottom: var(--sp-2); }
.seo-cta p { color: var(--ink-2); margin-bottom: var(--sp-4); }

/* ── Activity feed ────────────────────────────────────────────────────── */
.activity-event { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--sp-2); padding: var(--sp-3) 0; border-bottom: 1px solid var(--border-light); font-size: var(--t-sm); }
.activity-event:last-child { border-bottom: none; }
.activity-text { flex: 1; }
.activity-time { color: var(--ink-3); font-size: var(--t-xs); white-space: nowrap; }

/* ── Settings page ────────────────────────────────────────────────────── */
.settings-page { max-width: 800px; margin: 0 auto; padding: var(--sp-8) var(--sp-4); }
.settings-section { margin-bottom: var(--sp-10); padding-bottom: var(--sp-8); border-bottom: 1px solid var(--border-light); }
.settings-section h2 { font-size: var(--t-xl); margin-bottom: var(--sp-4); }
.settings-section h3 { font-size: var(--t-base); font-weight: 600; margin: var(--sp-4) 0 var(--sp-3); }
.members-list { display: flex; flex-direction: column; gap: var(--sp-3); }
.member-row { display: flex; justify-content: space-between; align-items: center; padding: var(--sp-3) var(--sp-4); background: var(--surface); border-radius: var(--radius-md); }
.member-info { display: flex; flex-direction: column; gap: 2px; }
.member-name { font-weight: 600; }
.member-you { font-size: var(--t-sm); color: var(--red); font-weight: 400; }
.member-email { font-size: var(--t-sm); color: var(--ink-2); }
.member-joined { font-size: var(--t-xs); color: var(--ink-3); }
.invite-link-box { display: flex; gap: var(--sp-3); align-items: center; margin-bottom: var(--sp-2); padding: var(--sp-3); background: var(--surface); border-radius: var(--radius-md); }
.invite-url { font-size: var(--t-xs); word-break: break-all; flex: 1; }
.account-info { margin-bottom: var(--sp-4); }
.account-info p { margin-bottom: var(--sp-2); }
.settings-danger { border-color: var(--red-light); }
.settings-danger h2 { color: var(--red); }
.danger-action { margin-bottom: var(--sp-4); }
.confirm-box { padding: var(--sp-4); background: #fff5f5; border-radius: var(--radius-md); margin-top: var(--sp-2); display: flex; flex-direction: column; gap: var(--sp-3); }
.confirm-box p { font-size: var(--t-sm); }
.text-muted { color: var(--ink-3); font-size: var(--t-sm); }
.text-warn { color: #d97706; font-size: var(--t-sm); }

/* ─── Cookie consent banner ──────────────────────────────────────────────── */

.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: var(--surface);
  border-top: 1px solid var(--border);
  box-shadow: 0 -4px 24px rgba(28, 25, 23, 0.10);
  transform: translateY(100%);
  transition: transform 280ms ease;
  will-change: transform;
}

.cookie-banner--visible {
  transform: translateY(0);
}

.cookie-banner-inner {
  max-width: var(--max-w-marketing);
  margin: 0 auto;
  padding: var(--sp-5) var(--sp-6);
  display: flex;
  align-items: center;
  gap: var(--sp-8);
}

.cookie-banner-text {
  flex: 1;
  min-width: 0;
}

.cookie-banner-title {
  font-size: var(--t-sm);
  font-weight: 600;
  color: var(--ink);
  margin-bottom: var(--sp-1);
}

.cookie-banner-body {
  font-size: var(--t-sm);
  color: var(--ink-2);
  line-height: 1.5;
}

.cookie-banner-link {
  color: var(--blue);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.cookie-banner-actions {
  display: flex;
  gap: var(--sp-3);
  flex-shrink: 0;
}

@media (max-width: 640px) {
  .cookie-banner-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--sp-4);
    padding: var(--sp-5) var(--sp-4);
  }
  .cookie-banner-actions {
    width: 100%;
  }
  .cookie-banner-actions .btn {
    flex: 1;
    justify-content: center;
  }
}

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

/* ─── Article / legal pages ──────────────────────────────────────────────── */

.article-page {
  max-width: var(--max-w-article);
  margin: 0 auto;
  padding: var(--sp-16) var(--sp-6) var(--sp-24);
}

.article-header {
  margin-bottom: var(--sp-12);
  border-bottom: 1px solid var(--border-light);
  padding-bottom: var(--sp-10);
}

.article-eyebrow {
  font-size: var(--t-xs);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--red);
  margin-bottom: var(--sp-3);
}

.article-header h1 {
  font-size: var(--t-2xl);
  margin-bottom: var(--sp-3);
}

.article-meta {
  font-size: var(--t-sm);
  color: var(--ink-3);
  margin-bottom: var(--sp-5);
}

.article-lead {
  font-size: var(--t-md);
  color: var(--ink-2);
  line-height: 1.6;
  max-width: 560px;
}

.article-body h2 {
  font-family: "DM Serif Display", serif;
  font-size: var(--t-xl);
  font-weight: 400;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin-top: var(--sp-12);
  margin-bottom: var(--sp-4);
}

.article-body h3 {
  font-size: var(--t-md);
  font-weight: 600;
  color: var(--ink);
  margin-top: var(--sp-8);
  margin-bottom: var(--sp-3);
}

.article-body p {
  color: var(--ink-2);
  line-height: 1.7;
  margin-bottom: var(--sp-5);
}

.article-body ul,
.article-body ol {
  padding-left: var(--sp-6);
  margin-bottom: var(--sp-5);
}

.article-body li {
  color: var(--ink-2);
  line-height: 1.6;
  margin-bottom: var(--sp-3);
}

.article-body code {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 0.85em;
  background: var(--bg-subtle);
  border: 1px solid var(--border-light);
  border-radius: var(--radius-sm);
  padding: 1px 6px;
  color: var(--ink);
}

.article-link {
  color: var(--blue);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.article-link:hover {
  color: var(--ink);
  text-decoration: underline;
}

@media (max-width: 640px) {
  .article-page {
    padding: var(--sp-10) var(--sp-4) var(--sp-16);
  }
}
