/* ---------- Tokens ---------- */
:root {
  --ink: #0E3B2E;
  --ink-soft: #14493A;
  --leaf: #2FA36B;
  --leaf-dark: #22824F;
  --marigold: #E8A33D;
  --paper: #FBF8F2;
  --paper-dim: #F1ECDF;
  --text: #1A1F1C;
  --text-soft: #55625B;
  --line: #E3DDCC;
  --danger: #B3432B;
  --radius: 18px;
  --radius-sm: 10px;
  --font-display: "Fraunces", Georgia, serif;
  --font-body: "Inter", system-ui, -apple-system, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, monospace;
  --shadow: 0 8px 24px rgba(14, 59, 46, 0.10);
  --shadow-lg: 0 16px 48px rgba(14, 59, 46, 0.18);
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  background: var(--paper);
  color: var(--text);
  line-height: 1.5;
  padding-bottom: env(safe-area-inset-bottom);
}
h1, h2, h3 { font-family: var(--font-display); font-weight: 650; line-height: 1.15; margin: 0 0 .5rem; color: var(--ink); }
h1 { font-size: clamp(1.7rem, 5vw, 2.4rem); }
h2 { font-size: 1.25rem; }
h3 { font-size: 1.1rem; }
p { margin: 0 0 .75rem; }
a { color: var(--ink); }
.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
code { font-family: var(--font-mono); background: var(--paper-dim); padding: .1rem .35rem; border-radius: 4px; font-size: .85em; }
:focus-visible { outline: 3px solid var(--marigold); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }

/* ---------- Top bar ---------- */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 1rem 1.25rem; background: var(--paper);
  position: sticky; top: 0; z-index: 30; border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: .5rem; text-decoration: none; }
.brand-mark { width: 26px; height: 26px; border-radius: 50%; background: var(--ink); position: relative; flex-shrink: 0; }
.brand-mark::after { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: var(--leaf); }
.brand-name { font-family: var(--font-display); font-weight: 650; font-size: 1.05rem; color: var(--ink); }
.topnav { display: flex; align-items: center; gap: 1.1rem; font-size: .92rem; }
.topnav a { text-decoration: none; color: var(--text-soft); font-weight: 500; }
.topnav a.btn-ghost { color: var(--ink); }

/* ---------- Buttons ---------- */
.btn-primary, .btn-ghost {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  font-family: var(--font-body); font-weight: 600; font-size: .95rem;
  padding: .85rem 1.3rem; border-radius: 999px; border: none; cursor: pointer;
  text-decoration: none; transition: transform .12s ease, box-shadow .12s ease, background .15s ease;
}
.btn-primary { background: var(--leaf); color: #fff; box-shadow: var(--shadow); }
.btn-primary:hover { background: var(--leaf-dark); }
.btn-primary:active { transform: scale(.98); }
.btn-primary:disabled { opacity: .6; cursor: not-allowed; }
.btn-ghost { background: transparent; color: var(--ink); border: 1.5px solid var(--line); }
.btn-ghost:hover { border-color: var(--ink); }
.full { width: 100%; }

/* ---------- Flash / alerts ---------- */
.flash-wrap { max-width: 720px; margin: .75rem auto 0; padding: 0 1.25rem; }
.flash { padding: .75rem 1rem; border-radius: var(--radius-sm); margin-bottom: .6rem; font-size: .9rem; transition: opacity .4s ease; }
.flash-error { background: #FBE7E1; color: var(--danger); }
.flash-success { background: #E4F3EA; color: var(--leaf-dark); }

/* ---------- Layout ---------- */
.main { max-width: 720px; margin: 0 auto; padding: 1.5rem 1.25rem 4rem; }

/* ---------- Hero (homepage) ---------- */
.hero { padding: 2.5rem 0 2rem; }
.eyebrow { text-transform: uppercase; letter-spacing: .08em; font-size: .78rem; font-weight: 600; color: var(--leaf-dark); margin-bottom: .5rem; }
.lede { color: var(--text-soft); font-size: 1.05rem; max-width: 46ch; }
.accent { color: var(--leaf-dark); }
.hero-actions { display: flex; gap: .75rem; margin-top: 1.25rem; flex-wrap: wrap; }

/* ---------- Campaign grid ---------- */
.campaign-grid-wrap { padding: 1rem 0 2rem; }
.campaign-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
@media (min-width: 640px) { .campaign-grid { grid-template-columns: 1fr 1fr; } }
.campaign-card { display: block; text-decoration: none; color: inherit; background: #fff; border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); transition: transform .15s ease; }
.campaign-card:hover { transform: translateY(-2px); }
.campaign-card-media { height: 150px; background: var(--paper-dim); position: relative; display: flex; align-items: flex-end; overflow: hidden; }
.campaign-card-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; object-position: center; }
.campaign-card-body { padding: 1rem; }
.campaign-card-body h3 { margin-bottom: .15rem; font-size: 1.05rem; }
.organizer { color: var(--text-soft); font-size: .85rem; margin-bottom: .5rem; }
.stat-line { font-size: .85rem; color: var(--text-soft); margin: 0; }
.empty-state { color: var(--text-soft); padding: 2rem 0; }

/* ---------- Progress ---------- */
.progress-rail { height: 6px; background: rgba(255,255,255,.55); border-radius: 999px; width: 100%; overflow: hidden; }
.progress-rail.on-hero { position: absolute; left: 0; right: 0; bottom: 0; height: 7px; background: rgba(255,255,255,.4); border-radius: 0; }
.campaign-card-media .progress-rail { position: absolute; left: 0; right: 0; bottom: 0; border-radius: 0; }
.progress-fill { height: 100%; background: linear-gradient(90deg, var(--leaf), var(--marigold)); border-radius: inherit; }

/* ---------- Campaign detail page ---------- */
.campaign-hero { height: 46vw; max-height: 320px; min-height: 190px; background: var(--ink); position: relative; margin: -1.5rem -1.25rem 0; overflow: hidden; }
.campaign-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; object-position: center; }
.campaign-body { padding-top: 1.25rem; }
.stat-row { display: flex; gap: 1.5rem; margin: 1rem 0; flex-wrap: wrap; }
.stat-row > div { display: flex; flex-direction: column; }
.big { font-size: 1.25rem; font-weight: 600; color: var(--ink); }
.stat-label { font-size: .78rem; color: var(--text-soft); }
.story { margin-top: 1.25rem; color: var(--text); }
.btn-copy.full { margin: .5rem 0 0; }

/* ---------- Donor wall ---------- */
.donor-wall { margin-top: 2rem; border-top: 1px solid var(--line); padding-top: 1.25rem; }
.donor-wall ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .9rem; }
.donor-wall li { padding-bottom: .9rem; border-bottom: 1px dashed var(--line); }
.donor-name { font-weight: 600; }
.donor-amount { float: right; color: var(--leaf-dark); }
.donor-message { color: var(--text-soft); font-size: .9rem; margin: .3rem 0 0; clear: both; }

/* ---------- Donation CTA + sheet ---------- */
.donate-cta {
  margin: 1.75rem 0 1.25rem;
  padding: 1.25rem;
  border: 1px solid rgba(47,163,107,.20);
  border-radius: 22px;
  background: linear-gradient(135deg, #0E3B2E 0%, #165741 72%, #1B6A4E 100%);
  box-shadow: 0 16px 36px rgba(14,59,46,.16);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.donate-cta-copy { min-width: 0; }
.donate-cta-kicker { display: inline-block; margin-bottom: .3rem; color: #BEE8D0; font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.donate-cta h2 { color: #fff; margin-bottom: .35rem; font-size: clamp(1.15rem, 3vw, 1.45rem); }
.donate-cta p { color: rgba(255,255,255,.78); font-size: .9rem; max-width: 52ch; margin: 0; }
.btn-donate-cta {
  flex: 0 0 auto;
  min-height: 50px;
  border: 0;
  border-radius: 999px;
  padding: .85rem 1.15rem .85rem 1.25rem;
  display: inline-flex;
  align-items: center;
  gap: .75rem;
  background: #fff;
  color: var(--ink);
  font-family: var(--font-body);
  font-size: .94rem;
  font-weight: 800;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(0,0,0,.15);
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
  position: relative;
  z-index: 1;
}
.btn-donate-cta:hover { transform: translateY(-1px); box-shadow: 0 14px 28px rgba(0,0,0,.18); background: #F7FCF9; }
.btn-donate-cta:active { transform: translateY(0); }
.btn-donate-arrow { width: 29px; height: 29px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--leaf); color: #fff; font-size: 1rem; }
.campaign-closed-note { margin: 1.5rem 0; padding: 1rem 1.1rem; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; color: var(--text-soft); display: flex; flex-wrap: wrap; gap: .35rem .65rem; }
.campaign-closed-note strong { color: var(--ink); }

.donate-sheet { position: fixed; inset: 0; z-index: 100; background: rgba(14,59,46,.35); display: flex; align-items: flex-end; opacity: 0; transition: opacity .2s ease; }
.donate-sheet.open { opacity: 1; pointer-events: auto; }
.donate-sheet:not(.open) { pointer-events: none; }
.donate-sheet-inner { background: var(--paper); width: 100%; max-width: 560px; margin: 0 auto; border-radius: 24px 24px 0 0; padding: 1.5rem 1.25rem calc(1.5rem + env(safe-area-inset-bottom)); max-height: 88vh; overflow-y: auto; transform: translateY(12px); transition: transform .2s ease; position: relative; }
.donate-sheet.open .donate-sheet-inner { transform: translateY(0); }
@media (min-width: 640px) { .donate-sheet { align-items: center; } .donate-sheet-inner { border-radius: 24px; } }
.sheet-close { position: absolute; top: 1rem; right: 1rem; background: var(--paper-dim); border: none; width: 32px; height: 32px; border-radius: 50%; font-size: 1.2rem; cursor: pointer; color: var(--text-soft); }

.amount-chips { display: flex; flex-wrap: wrap; gap: 0; margin: .75rem 0 1rem; position: relative; }
.chip {
  font-family: var(--font-mono); font-size: .85rem; font-weight: 600;
  background: #fff; border: 1.5px solid var(--line); color: var(--ink);
  padding: .55rem .9rem; border-radius: 999px; cursor: pointer; margin: 0 .4rem .4rem 0;
  position: relative;
}
.chip:not(:last-child)::after { content: ""; position: absolute; right: -0.55rem; top: 50%; width: .7rem; height: 1.5px; background: var(--line); }
.chip.active { background: var(--leaf); border-color: var(--leaf); color: #fff; }
.chip.active::after { background: var(--leaf); }
.chip-other { border-style: dashed; color: var(--text-soft); }
.chip-other.active { border-style: solid; }
.no-account-hint { margin: 0 0 .25rem; font-size: .82rem; color: var(--leaf-dark); font-weight: 600; }

.stack-form { display: flex; flex-direction: column; gap: .9rem; margin-top: 1rem; }
.stack-form label { display: flex; flex-direction: column; gap: .35rem; font-size: .88rem; font-weight: 600; color: var(--ink); }
.stack-form input, .stack-form textarea, .stack-form select {
  font-family: var(--font-body); font-size: 1rem; padding: .75rem .9rem;
  border-radius: var(--radius-sm); border: 1.5px solid var(--line); background: #fff; color: var(--text);
  font-weight: 400;
}
.stack-form input:focus, .stack-form textarea:focus, .stack-form select:focus { border-color: var(--leaf); }
.check-row { flex-direction: row !important; align-items: center; gap: .5rem !important; }
.check-row input { width: auto; }
#donate-amount { font-family: var(--font-mono); font-weight: 600; }

.waiting-anim { width: 52px; height: 52px; border-radius: 50%; border: 4px solid var(--paper-dim); border-top-color: var(--leaf); margin: 0 auto 1rem; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- Auth / forms ---------- */
.auth-wrap { padding: 2rem 0; display: flex; justify-content: center; }
.auth-card { background: #fff; border-radius: var(--radius); padding: 1.75rem; box-shadow: var(--shadow); width: 100%; max-width: 420px; }
.auth-card.wide { max-width: 560px; }
.hint { color: var(--text-soft); font-size: .88rem; }
.cover-preview { max-width: 220px; max-height: 140px; width: auto; height: auto; object-fit: contain; border-radius: 12px; margin-bottom: .5rem; background: var(--paper-dim); display: block; }

/* ---------- Dashboard ---------- */
.dash-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.stat-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; margin-bottom: 1.75rem; }
.stat-card { background: #fff; border-radius: var(--radius-sm); padding: 1rem; text-align: center; box-shadow: var(--shadow); }
.stat-num { display: block; font-size: 1.2rem; font-weight: 600; color: var(--ink); }
.dash-list { display: flex; flex-direction: column; gap: 1rem; }
.dash-row { background: #fff; border-radius: var(--radius); padding: 1.1rem; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: .85rem; }
.dash-row h3 { display: flex; align-items: center; gap: .5rem; }
.badge { font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; padding: .2rem .55rem; border-radius: 999px; font-family: var(--font-body); font-weight: 700; }
.badge-active { background: #E4F3EA; color: var(--leaf-dark); }
.badge-paused { background: #FBF1DE; color: #9A6B12; }
.badge-ended { background: #EFEAE0; color: var(--text-soft); }
.dash-row-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.dash-row-actions .btn-ghost { padding: .5rem .9rem; font-size: .82rem; }

/* ---------- Footer ---------- */
.footer { text-align: center; color: var(--text-soft); font-size: .8rem; padding: 2rem 1rem 6rem; }

/* ---------- Installer ---------- */
.install-body { background: var(--ink); }
.install-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 2rem 1rem; }
.install-card { background: var(--paper); border-radius: var(--radius); padding: 2rem; max-width: 520px; width: 100%; box-shadow: var(--shadow-lg); }
.install-form { display: flex; flex-direction: column; gap: .9rem; margin-top: .5rem; }
.install-form h2 { font-size: .95rem; margin-top: .5rem; border-top: 1px solid var(--line); padding-top: 1rem; }
.install-form label { display: flex; flex-direction: column; gap: .3rem; font-size: .88rem; font-weight: 600; color: var(--ink); }
.install-form input { font-family: var(--font-body); font-size: 1rem; padding: .7rem .85rem; border-radius: var(--radius-sm); border: 1.5px solid var(--line); }
.check-list { list-style: none; padding: 0; margin: 1rem 0; display: flex; flex-direction: column; gap: .5rem; }
.check-list li { font-size: .92rem; padding: .5rem .75rem; border-radius: var(--radius-sm); }
.check-list li.ok { background: #E4F3EA; color: var(--leaf-dark); }
.check-list li.fail { background: #FBE7E1; color: var(--danger); }

/* ---------- Premium polish / responsive fixes ---------- */
body { background: radial-gradient(circle at top left, rgba(47,163,107,.07), transparent 34rem), var(--paper); }
.topbar { backdrop-filter: blur(14px); background: rgba(251,248,242,.92); }
.main { max-width: 980px; }
.topnav { flex-wrap: wrap; justify-content: flex-end; }
.btn-primary, .btn-ghost { min-height: 44px; }
.btn-primary { box-shadow: 0 10px 24px rgba(47,163,107,.18); }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 14px 28px rgba(47,163,107,.22); }
.btn-ghost:disabled, .btn-primary:disabled { opacity: .55; pointer-events: none; }

.hero { padding: clamp(2.5rem, 8vw, 5rem) 0 3rem; max-width: 760px; }
.hero h1 { font-size: clamp(2.2rem, 7vw, 4.4rem); letter-spacing: -.035em; }
.hero .lede { font-size: 1.08rem; line-height: 1.75; }

.campaign-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.15rem; }
.campaign-card { border: 1px solid rgba(14,59,46,.08); box-shadow: 0 14px 36px rgba(14,59,46,.08); }
.campaign-card-media { height: auto; aspect-ratio: 4 / 3; min-height: 0; align-items: stretch; background: linear-gradient(135deg, #eee9de, #faf8f2); }
.campaign-card-media img { object-fit: contain; object-position: center; padding: 0; }
.campaign-card-media::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 -50px 45px -50px rgba(14,59,46,.45); }
.campaign-card-body { min-height: 138px; display: flex; flex-direction: column; justify-content: center; }

.campaign-hero { height: auto; aspect-ratio: 16 / 9; max-height: none; min-height: 0; background: linear-gradient(135deg, #eae5da, #faf8f2); border-radius: 0 0 24px 24px; box-shadow: 0 16px 40px rgba(14,59,46,.10); }
.campaign-hero-img { object-fit: contain; padding: 1rem; }
.campaign-body { max-width: 760px; margin: 0 auto; padding-top: 1.5rem; }
.campaign-body h1 { font-size: clamp(2rem, 5vw, 3rem); letter-spacing: -.025em; }
.stat-row { background: #fff; border: 1px solid var(--line); border-radius: 18px; padding: 1rem; gap: 1rem; justify-content: space-between; box-shadow: var(--shadow); }
.stat-row > div { flex: 1 1 130px; }

.auth-wrap { padding: 2.5rem 0; }
.auth-card { border: 1px solid rgba(14,59,46,.08); box-shadow: 0 18px 50px rgba(14,59,46,.09); }
.stack-form input, .stack-form textarea, .stack-form select { min-height: 46px; }
.stack-form textarea { min-height: 130px; resize: vertical; }

.dash-row { border: 1px solid rgba(14,59,46,.08); box-shadow: 0 12px 32px rgba(14,59,46,.07); }
.dash-row-actions .btn-ghost { min-height: 40px; }

/* Admin update screen */
.admin-page { padding: 1rem 0 4rem; }
.admin-page-head, .admin-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.admin-page-head h1, .admin-hero h1 { margin-bottom: .2rem; }
.admin-hero { padding: 1rem 0 1.5rem; }
.update-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, .9fr); gap: 1rem; align-items: start; }
.update-card-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.update-label { display: block; color: var(--text-soft); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; margin-bottom: .2rem; }
.update-version { display: block; font-family: var(--font-mono); font-size: 1.35rem; color: var(--ink); }
.status-dot { display: inline-flex; align-items: center; gap: .4rem; padding: .35rem .65rem; border-radius: 999px; font-size: .78rem; font-weight: 700; }
.status-dot::before { content: ""; width: .45rem; height: .45rem; border-radius: 50%; background: currentColor; }
.status-live { background: #e4f3ea; color: var(--leaf-dark); }
.upload-drop { border: 2px dashed #cfc7b6; border-radius: 18px; padding: 2rem 1rem; text-align: center; display: flex; flex-direction: column; align-items: center; gap: .35rem; cursor: pointer; background: linear-gradient(180deg, #fff, #faf7f0); transition: .15s ease; }
.upload-drop:hover, .upload-drop.dragging { border-color: var(--leaf); background: #f2faf5; transform: translateY(-1px); }
.upload-icon { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; background: var(--ink); color: #fff; font-size: 1.4rem; margin-bottom: .35rem; }
.file-name { font-family: var(--font-mono); font-size: .8rem; color: var(--leaf-dark); word-break: break-all; }
#update-zip { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
.update-confirm { margin-top: .25rem; font-size: .82rem !important; color: var(--text-soft) !important; }
.update-info h2 { margin-bottom: 1rem; }
.update-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .8rem; }
.update-list li { display: flex; gap: .7rem; align-items: flex-start; padding: .75rem; border-radius: 12px; background: var(--paper-dim); }
.update-list li > span { color: var(--leaf-dark); font-weight: 800; }
.update-list strong, .update-list small { display: block; }
.update-list small { color: var(--text-soft); margin-top: .15rem; }
.update-note { margin-top: 1rem; padding: .9rem; border-left: 3px solid var(--marigold); background: #fff9ed; border-radius: 0 12px 12px 0; }
.update-note p { margin: .25rem 0 0; font-size: .82rem; color: var(--text-soft); }

@media (max-width: 760px) {
  .topbar { align-items: flex-start; }
  .topnav { gap: .55rem .75rem; font-size: .82rem; }
  .update-grid { grid-template-columns: 1fr; }
  .campaign-hero { margin-left: -1.25rem; margin-right: -1.25rem; border-radius: 0 0 18px 18px; }
  .campaign-hero-img { padding: .5rem; }
}
@media (max-width: 480px) {
  .main { padding-left: 1rem; padding-right: 1rem; }
  .stat-cards { grid-template-columns: 1fr; }
  .hero-actions .btn-primary, .hero-actions .btn-ghost { flex: 1 1 100%; }
  .dash-row-actions > * { flex: 1 1 calc(50% - .5rem); }
  .campaign-card-media { aspect-ratio: 1 / .78; }
}

/* Donation, sharing and campaign-media refinements */
.campaign-share-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .65rem; margin: .65rem 0 1.15rem; }
.campaign-share-actions .btn-ghost { width: 100%; }

/* Keep campaign imagery visually compact and consistent. Uploaded originals are also resized server-side. */
.campaign-card-media { aspect-ratio: 4 / 3; height: 220px; max-height: 220px; }
.campaign-card-media img { max-width: 100%; max-height: 100%; object-fit: contain; }
.campaign-hero { aspect-ratio: 16 / 9; height: min(360px, 56vw); max-height: 360px; min-height: 220px; }
.campaign-hero-img { object-fit: contain; padding: 1.25rem; max-width: 100%; max-height: 100%; }
.donate-sheet { isolation: isolate; }
.donate-sheet-inner { box-shadow: 0 -12px 50px rgba(14,59,46,.18); }

.category-admin-grid { display: grid; grid-template-columns: minmax(280px,.75fr) minmax(0,1.6fr); gap: 1rem; align-items: start; }
.category-list { display: grid; gap: .8rem; }
.category-row { border: 1px solid var(--line); border-radius: 16px; padding: .9rem; background: var(--paper-dim); }
.category-fields { display: grid; grid-template-columns: 1.1fr 1.6fr .6fr .7fr; gap: .65rem; }
.category-fields label { display: flex; flex-direction: column; gap: .3rem; font-size: .76rem; font-weight: 700; color: var(--text-soft); }
.category-fields input, .category-fields select { width: 100%; min-height: 42px; }
.category-actions { display: flex; gap: .55rem; margin-top: .7rem; }
.category-actions > * { flex: 1; }
.danger-outline { border-color: rgba(160,50,40,.35); color: #9b382f; }
.danger-outline:hover { background: #fff2ef; border-color: #9b382f; }

@media (max-width: 760px) {
  .category-admin-grid { grid-template-columns: 1fr; }
  .category-fields { grid-template-columns: 1fr 1fr; }
  .campaign-card-media { height: 200px; max-height: 200px; }
  .campaign-hero { height: min(300px, 62vw); max-height: 300px; min-height: 190px; }
  .campaign-hero-img { padding: .75rem; }
}
@media (max-width: 480px) {
  .campaign-share-actions { grid-template-columns: 1fr; }
  .campaign-card-media { height: 180px; max-height: 180px; aspect-ratio: 4 / 3; }
  .campaign-hero { height: 230px; max-height: 230px; }
  .campaign-hero-img { padding: .5rem; }
  .category-fields { grid-template-columns: 1fr; }
}

.category-stat-cards { margin-bottom: 1rem; }
.category-create-card { position: sticky; top: 1rem; }
.category-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.category-row-top { display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-bottom:.75rem; }
.category-row-top strong { font-size:1.05rem; }
.category-slug { margin-left:.5rem; color:var(--text-soft); font-family:var(--mono, monospace); font-size:.78rem; }
.category-meta { display:flex; justify-content:space-between; gap:1rem; margin-top:.65rem; color:var(--text-soft); font-size:.78rem; }
.category-actions { display:flex; gap:.55rem; margin-top:.75rem; }
.category-actions > * { flex:0 0 auto; }
.category-row button:disabled { opacity:.55; cursor:not-allowed; }
@media (max-width: 900px) { .category-create-card { position:static; } }
@media (max-width: 640px) { .category-form-row { grid-template-columns:1fr; } .category-row-top, .category-meta { align-items:flex-start; flex-direction:column; } }

/* ---------- Category manager: polished admin UI ---------- */
.categories-page { max-width: 1180px; padding-top: 2.25rem; }
.category-page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:1.5rem; margin-bottom:1.25rem; }
.category-page-head h1 { font-size:clamp(2rem,4vw,3rem); letter-spacing:-.035em; margin:.25rem 0 .55rem; }
.category-page-subtitle { max-width:720px; color:var(--text-soft); font-size:.98rem; margin:0; }
.admin-kicker { display:inline-flex; align-items:center; gap:.5rem; font-size:.72rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--leaf-dark); }
.admin-kicker-dot { width:.5rem; height:.5rem; border-radius:50%; background:var(--marigold); box-shadow:0 0 0 5px rgba(232,163,61,.12); }
.category-settings-link { padding:.7rem 1rem; }
.category-flash { max-width:none; margin:.5rem 0 1rem; }
.category-overview { display:grid; grid-template-columns:repeat(3,1fr); gap:.85rem; margin-bottom:1rem; }
.category-overview-card { background:#fff; border:1px solid rgba(14,59,46,.07); border-radius:18px; padding:1rem 1.1rem; display:flex; align-items:center; gap:.8rem; box-shadow:0 10px 28px rgba(14,59,46,.06); }
.category-overview-icon { width:38px; height:38px; border-radius:12px; display:grid; place-items:center; background:var(--paper-dim); color:var(--ink); font-weight:900; font-size:1.05rem; }
.category-overview-card strong { display:block; font-size:1.25rem; line-height:1.1; color:var(--ink); }
.category-overview-card span:last-child { color:var(--text-soft); font-size:.8rem; }
.categories-layout { display:grid; grid-template-columns:minmax(280px,340px) minmax(0,1fr); gap:1rem; align-items:start; }
.category-create-panel,.category-library-panel { background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:22px; box-shadow:0 16px 42px rgba(14,59,46,.07); }
.category-create-panel { padding:1.25rem; position:sticky; top:1rem; }
.category-library-panel { overflow:hidden; }
.category-panel-head { display:flex; align-items:center; gap:.8rem; margin-bottom:.7rem; }
.category-panel-icon { width:42px; height:42px; border-radius:14px; background:var(--ink); color:#fff; display:grid; place-items:center; font-size:1.35rem; font-weight:400; }
.category-panel-eyebrow { font-size:.68rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--text-soft); }
.category-panel-head h2,.category-library-head h2 { font-size:1.3rem; margin:.1rem 0 0; }
.category-panel-copy { color:var(--text-soft); font-size:.84rem; margin-bottom:1rem; }
.category-create-form { display:flex; flex-direction:column; gap:.82rem; }
.category-create-form label { display:flex; flex-direction:column; gap:.35rem; font-size:.78rem; font-weight:800; color:var(--ink); }
.category-create-form label > span { font-size:.7rem; font-weight:500; color:var(--text-soft); margin-left:.25rem; }
.category-create-form input,.category-create-form textarea,.category-create-form select,.category-status-cell select,.category-order-cell input { font:inherit; border:1px solid var(--line); background:#fff; border-radius:12px; color:var(--text); padding:.72rem .8rem; min-height:42px; outline:none; }
.category-create-form input:focus,.category-create-form textarea:focus,.category-create-form select:focus,.category-status-cell select:focus,.category-order-cell input:focus { border-color:var(--leaf); box-shadow:0 0 0 4px rgba(47,163,107,.1); }
.category-create-form textarea { resize:vertical; min-height:105px; }
.category-create-grid { display:grid; grid-template-columns:1fr 1fr; gap:.7rem; }
.category-create-btn { min-height:46px; margin-top:.1rem; }
.category-create-btn span { font-size:1.1rem; line-height:1; }
.category-note { margin-top:1rem; background:linear-gradient(180deg,#fbfaf6,#f5f0e5); border:1px solid var(--line); border-radius:14px; padding:.8rem .9rem; }
.category-note strong { font-size:.75rem; color:var(--ink); }
.category-note p { margin:.2rem 0 0; color:var(--text-soft); font-size:.76rem; }
.category-library-head { padding:1.2rem 1.2rem 1rem; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:flex-end; gap:1rem; }
.category-library-head p { color:var(--text-soft); font-size:.8rem; margin:.3rem 0 0; }
.category-toolbar { display:flex; gap:.55rem; align-items:center; }
.category-search { display:flex; align-items:center; gap:.35rem; min-width:220px; border:1px solid var(--line); border-radius:12px; padding:0 .7rem; background:#fff; }
.category-search span { color:var(--text-soft); font-size:1.1rem; }
.category-search input { width:100%; border:0; outline:0; padding:.7rem 0; font:inherit; font-size:.84rem; background:transparent; }
.category-toolbar select { border:1px solid var(--line); border-radius:12px; background:#fff; padding:.7rem .75rem; color:var(--ink); font:inherit; font-size:.82rem; }
.category-table-head,.category-item-form { display:grid; grid-template-columns:minmax(240px,1.6fr) 120px 95px 72px 150px; gap:1rem; align-items:center; }
.category-table-head { padding:.7rem 1.2rem; background:#faf8f3; color:var(--text-soft); font-size:.67rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.category-library { display:block; }
.category-item { border-top:1px solid #eee9df; background:#fff; transition:background .15s ease; }
.category-item:hover { background:#fcfbf7; }
.category-item-form { padding:.9rem 1.2rem; }
.category-identity { display:flex; align-items:flex-start; gap:.75rem; min-width:0; }
.category-avatar { flex:0 0 40px; width:40px; height:40px; border-radius:13px; background:linear-gradient(135deg,var(--ink),var(--leaf-dark)); color:#fff; display:grid; place-items:center; font-family:var(--font-display); font-size:1.05rem; box-shadow:0 7px 16px rgba(14,59,46,.13); }
.category-identity-text { min-width:0; display:flex; flex-direction:column; gap:.25rem; }
.category-name-input { width:100%; border:0; background:transparent; color:var(--ink); font:650 1rem var(--font-display); outline:none; padding:.05rem 0; }
.category-name-input:focus { border-bottom:2px solid var(--leaf); }
.category-slug-pill { align-self:flex-start; background:var(--paper-dim); border-radius:999px; padding:.16rem .45rem; font:500 .65rem var(--font-mono); color:var(--text-soft); }
.category-description-input { width:100%; border:0; background:transparent; color:var(--text-soft); outline:none; font:500 .74rem var(--font-body); padding:.08rem 0; }
.category-description-input:focus { border-bottom:1px solid var(--line); }
.category-status-cell select { width:100%; min-height:38px; font-size:.74rem; padding:.52rem .55rem; font-weight:700; }
.category-count strong { display:block; color:var(--ink); font-size:1rem; }
.category-count span { color:var(--text-soft); font-size:.7rem; }
.category-order-cell input { width:64px; min-height:38px; font-size:.75rem; text-align:center; padding:.5rem; }
.category-actions-cell { display:flex; gap:.4rem; justify-content:flex-end; }
.category-save-btn,.category-delete-btn { border-radius:10px; padding:.56rem .7rem; font:700 .72rem var(--font-body); cursor:pointer; }
.category-save-btn { border:1px solid var(--ink); background:var(--ink); color:#fff; }
.category-save-btn:hover { background:var(--ink-soft); }
.category-delete-btn { border:1px solid #e4d3cf; background:#fff; color:#a24838; }
.category-delete-btn:hover { border-color:#b85a49; background:#fff7f5; }
.category-delete-disabled { opacity:.45; cursor:not-allowed; }
.category-empty,.category-no-results { padding:3rem 1rem; text-align:center; color:var(--text-soft); }
.category-empty-icon { width:48px; height:48px; border-radius:15px; background:var(--paper-dim); color:var(--ink); display:grid; place-items:center; margin:0 auto .7rem; font-size:1.4rem; }
.category-empty h3 { margin-bottom:.25rem; }
.category-no-results { border-top:1px solid var(--line); }

@media (max-width: 980px) {
  .categories-layout { grid-template-columns:1fr; }
  .category-create-panel { position:static; }
  .category-table-head { display:none; }
  .category-item-form { grid-template-columns:1fr 110px 80px 130px; gap:.7rem; }
  .category-identity { grid-column:1 / -1; }
  .category-status-cell { grid-column:2; grid-row:2; }
  .category-count { grid-column:3; grid-row:2; }
  .category-order-cell { grid-column:4; grid-row:2; }
  .category-actions-cell { grid-column:1 / -1; justify-content:flex-start; }
}
@media (max-width: 700px) {
  .categories-page { padding-top:1.1rem; }
  .category-page-head { align-items:flex-start; flex-direction:column; }
  .category-overview { grid-template-columns:1fr; }
  .category-library-head { align-items:flex-start; flex-direction:column; }
  .category-toolbar { width:100%; flex-direction:column; align-items:stretch; }
  .category-search { min-width:0; width:100%; }
  .category-toolbar select { width:100%; }
  .category-item-form { display:flex; flex-direction:column; align-items:stretch; }
  .category-status-cell,.category-order-cell,.category-actions-cell { width:100%; }
  .category-count { display:flex; align-items:baseline; gap:.4rem; }
  .category-order-cell input { width:100%; }
  .category-actions-cell > * { flex:1; }
}

/* ---------- Financial analytics dashboards ---------- */
.analytics-page { max-width: 1200px; margin: 0 auto; padding: 2.1rem 0 4rem; }
.analytics-head { display:flex; align-items:flex-end; justify-content:space-between; gap:1.5rem; margin-bottom:1.2rem; }
.analytics-head h1 { font-size:clamp(2rem,4vw,3rem); letter-spacing:-.04em; margin:.25rem 0 .45rem; }
.analytics-head-actions { display:flex; gap:.65rem; flex-wrap:wrap; }
.analytics-kpis { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:.85rem; margin-bottom:.85rem; }
.analytics-kpi { min-height:138px; border-radius:20px; padding:1.15rem 1.15rem 1.05rem; background:#fff; border:1px solid rgba(14,59,46,.08); box-shadow:0 14px 36px rgba(14,59,46,.07); display:flex; flex-direction:column; justify-content:space-between; }
.analytics-kpi.accent { background:linear-gradient(145deg,#0e3b2e,#155542); color:#fff; border-color:transparent; }
.analytics-kpi-label { font-size:.73rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:var(--text-soft); }
.analytics-kpi.accent .analytics-kpi-label, .analytics-kpi.accent small { color:rgba(255,255,255,.72); }
.analytics-kpi strong { display:block; font-size:clamp(1.55rem,2.6vw,2.15rem); letter-spacing:-.035em; color:var(--ink); margin:.55rem 0; }
.analytics-kpi.accent strong { color:#fff; }
.analytics-kpi small { color:var(--text-soft); font-size:.77rem; }
.analytics-grid-4 { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.85rem; margin-bottom:.85rem; }
.analytics-grid-3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.85rem; margin-bottom:1rem; }
.metric-card { background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:18px; padding:1rem 1.05rem; box-shadow:0 10px 28px rgba(14,59,46,.055); }
.metric-card > span { display:block; font-size:.74rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--text-soft); }
.metric-card strong { display:block; margin:.35rem 0 .25rem; font-size:1.35rem; letter-spacing:-.025em; color:var(--ink); }
.metric-card small { color:var(--text-soft); font-size:.77rem; }
.analytics-grid-2 { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(320px,.85fr); gap:.85rem; margin-bottom:.85rem; }
.analytics-panel { background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:20px; box-shadow:0 14px 36px rgba(14,59,46,.06); overflow:hidden; padding:1.1rem; margin-bottom:.85rem; }
.analytics-panel-head { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.analytics-panel-head h2 { margin:.2rem 0 0; font-size:1.35rem; letter-spacing:-.025em; }
.analytics-pill { display:inline-flex; padding:.45rem .7rem; border-radius:999px; background:var(--paper-dim); color:var(--leaf-dark); font-size:.72rem; font-weight:800; white-space:nowrap; }
.analytics-chart { height:255px; display:grid; grid-template-columns:repeat(7,1fr); gap:.65rem; align-items:end; padding-top:1.2rem; }
.chart-col { height:100%; display:grid; grid-template-rows:auto 1fr auto; align-items:end; text-align:center; min-width:0; }
.chart-col > span { color:var(--text-soft); font-size:.72rem; margin-top:.5rem; font-weight:700; }
.chart-value { font-size:.64rem; color:var(--text-soft); white-space:nowrap; min-height:1.1rem; }
.chart-bar-wrap { height:195px; display:flex; align-items:flex-end; justify-content:center; border-bottom:1px solid var(--line); }
.chart-bar { width:min(48px,65%); min-height:6px; background:linear-gradient(180deg,var(--leaf),var(--leaf-dark)); border-radius:10px 10px 2px 2px; box-shadow:0 8px 20px rgba(47,163,107,.16); }
.ops-list { display:grid; gap:0; }
.ops-list > div { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:.85rem 0; border-bottom:1px solid var(--line); }
.ops-list > div:last-child { border-bottom:0; }
.ops-list span { color:var(--text-soft); font-size:.82rem; }
.ops-list strong { color:var(--ink); font-size:.92rem; text-align:right; }
.analytics-table-wrap { overflow:auto; }
.analytics-table { width:100%; border-collapse:collapse; min-width:760px; }
.analytics-table th,.analytics-table td { padding:.8rem .7rem; border-bottom:1px solid var(--line); text-align:left; vertical-align:middle; }
.analytics-table th { font-size:.67rem; text-transform:uppercase; letter-spacing:.07em; color:var(--text-soft); }
.analytics-table td { font-size:.82rem; }
.analytics-table tbody tr:last-child td { border-bottom:0; }
.analytics-table td strong { color:var(--ink); }
.mini-progress { display:inline-block; width:120px; height:8px; border-radius:999px; background:#eeeae1; overflow:hidden; margin-right:.45rem; vertical-align:middle; }
.mini-progress span { display:block; height:100%; border-radius:inherit; background:var(--leaf); }
.mini-progress + small { color:var(--text-soft); }
.section-head-row { display:flex; justify-content:space-between; align-items:end; margin-bottom:.85rem; }
.section-head-row h2 { margin:.15rem 0 0; font-size:1.35rem; }
.campaign-mini-metrics { display:flex; flex-wrap:wrap; gap:.9rem; color:var(--text-soft); font-size:.76rem; margin-top:.45rem; }
.campaign-mini-metrics strong { color:var(--ink); }
.campaigner-kpis { margin-top:.2rem; }
@media (max-width: 1000px) {
  .analytics-kpis,.analytics-grid-4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .analytics-grid-2 { grid-template-columns:1fr; }
}
@media (max-width: 680px) {
  .analytics-page { padding-top:1.2rem; }
  .analytics-head { align-items:flex-start; flex-direction:column; }
  .analytics-head-actions { width:100%; }
  .analytics-head-actions > * { flex:1 1 auto; }
  .analytics-kpis,.analytics-grid-4,.analytics-grid-3 { grid-template-columns:1fr; }
  .analytics-chart { gap:.35rem; }
  .chart-value { font-size:.56rem; }
  .chart-bar-wrap { height:175px; }
  .mini-progress { width:80px; }
}

/* ---------- Modern system settings ---------- */
.settings-page { max-width: 1180px; margin: 0 auto; padding: 2rem 0 4.5rem; }
.settings-head { display:flex; align-items:flex-end; justify-content:space-between; gap:1.25rem; margin-bottom:1.25rem; }
.settings-head h1 { margin:.2rem 0 .35rem; font-size:clamp(2rem,4vw,3rem); letter-spacing:-.045em; }
.settings-lede { max-width:720px; color:var(--text-soft); margin:0; line-height:1.6; }
.settings-head-actions { display:flex; align-items:center; gap:.65rem; flex-wrap:wrap; }
.settings-status { display:inline-flex; align-items:center; gap:.5rem; padding:.58rem .8rem; border:1px solid rgba(14,59,46,.1); background:#fff; border-radius:999px; font-size:.76rem; font-weight:800; color:var(--ink); box-shadow:0 8px 20px rgba(14,59,46,.05); }
.settings-status-dot { width:.55rem; height:.55rem; border-radius:50%; background:var(--leaf); box-shadow:0 0 0 4px rgba(47,163,107,.1); }
.settings-shell { background:#fff; border:1px solid rgba(14,59,46,.09); border-radius:24px; box-shadow:0 18px 50px rgba(14,59,46,.08); overflow:hidden; }
.settings-layout { display:grid; grid-template-columns:250px minmax(0,1fr); min-height:680px; }
.settings-sidebar { padding:1rem; background:linear-gradient(180deg,#f8f5ee,#f3efe6); border-right:1px solid var(--line); display:flex; flex-direction:column; gap:.35rem; }
.settings-sidebar-title { padding:.45rem .65rem .65rem; font-size:.68rem; text-transform:uppercase; letter-spacing:.1em; font-weight:900; color:var(--text-soft); }
.settings-tab { width:100%; display:grid; grid-template-columns:34px minmax(0,1fr); grid-template-rows:auto auto; align-items:center; column-gap:.65rem; text-align:left; border:1px solid transparent; background:transparent; color:var(--text); border-radius:14px; padding:.75rem .7rem; cursor:pointer; transition:.16s ease; }
.settings-tab > span { grid-row:1 / 3; width:30px; height:30px; display:grid; place-items:center; border-radius:10px; background:rgba(255,255,255,.55); color:var(--text-soft); font:700 .68rem var(--font-mono); }
.settings-tab strong { font-size:.82rem; color:var(--ink); }
.settings-tab small { color:var(--text-soft); font-size:.68rem; margin-top:.12rem; }
.settings-tab:hover { background:rgba(255,255,255,.7); border-color:rgba(14,59,46,.08); transform:translateX(1px); }
.settings-tab.active { background:var(--ink); border-color:var(--ink); box-shadow:0 12px 26px rgba(14,59,46,.16); }
.settings-tab.active > span { background:rgba(255,255,255,.12); color:#fff; }
.settings-tab.active strong { color:#fff; }
.settings-tab.active small { color:rgba(255,255,255,.68); }
.settings-sidebar-note { margin-top:auto; padding:.85rem; border:1px solid rgba(14,59,46,.08); background:rgba(255,255,255,.55); border-radius:14px; }
.settings-sidebar-note strong { display:block; font-size:.76rem; color:var(--ink); margin-bottom:.25rem; }
.settings-sidebar-note span { display:block; font-size:.68rem; line-height:1.5; color:var(--text-soft); }
.settings-content { padding:1.2rem 1.25rem 1.25rem; background:#fff; min-width:0; }
.settings-panel { display:none; animation:settingsIn .18s ease; }
.settings-panel.active { display:block; }
@keyframes settingsIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
.settings-panel-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding:.35rem 0 1.15rem; }
.settings-panel-head h2 { margin:.18rem 0 .35rem; font-size:1.55rem; letter-spacing:-.03em; }
.settings-panel-head p:not(.eyebrow) { margin:0; color:var(--text-soft); font-size:.84rem; line-height:1.55; }
.settings-badge { flex:0 0 auto; padding:.45rem .65rem; border-radius:999px; font:800 .66rem var(--font-mono); letter-spacing:.08em; }
.settings-badge.live { color:#0c6a41; background:#e5f5eb; }
.settings-badge.sandbox { color:#8b6514; background:#fff3d8; }
.settings-table { border:1px solid var(--line); border-radius:16px; overflow:hidden; background:#fff; }
.settings-row { display:grid; grid-template-columns:minmax(220px,.85fr) minmax(300px,1.15fr); gap:1.2rem; align-items:center; padding:1rem 1.05rem; border-bottom:1px solid var(--line); }
.settings-row:last-child { border-bottom:0; }
.settings-row:hover { background:#fcfbf8; }
.settings-row-large { align-items:start; }
.settings-label strong { display:block; color:var(--ink); font-size:.82rem; margin-bottom:.2rem; }
.settings-label span { display:block; color:var(--text-soft); font-size:.72rem; line-height:1.5; max-width:430px; }
.settings-control { min-width:0; }
.settings-control input, .settings-control textarea, .settings-control select { width:100%; min-height:44px; font:500 .86rem var(--font-body); padding:.68rem .78rem; border:1.5px solid var(--line); border-radius:11px; background:#fff; color:var(--text); outline:none; box-sizing:border-box; transition:border-color .15s ease, box-shadow .15s ease; }
.settings-control textarea { min-height:130px; resize:vertical; font-family:var(--font-mono); font-size:.75rem; line-height:1.55; }
.settings-control input:focus, .settings-control textarea:focus, .settings-control select:focus { border-color:var(--leaf); box-shadow:0 0 0 4px rgba(47,163,107,.1); }
.settings-help { display:block; color:var(--text-soft); font-size:.68rem; line-height:1.5; margin-top:.45rem; }
.settings-callout { display:flex; flex-direction:column; gap:.18rem; margin:0 0 1rem; padding:.85rem .95rem; border-radius:14px; background:#f5f3ed; border:1px solid var(--line); }
.settings-callout strong { font-size:.76rem; color:var(--ink); }
.settings-callout span { font-size:.71rem; color:var(--text-soft); line-height:1.45; }
.settings-callout code { word-break:break-all; margin:.18rem 0; }
.settings-callout-info { background:#f0f7f3; border-color:#dcebe3; }
.settings-callout-warning { background:#fff8ea; border-color:#f1dfb7; }
.settings-divider { height:1px; background:var(--line); margin:1.1rem 0; }
.settings-subhead { margin-bottom:.7rem; }
.settings-subhead h3 { margin:0 0 .2rem; font-size:1rem; letter-spacing:-.015em; }
.settings-subhead p { margin:0; color:var(--text-soft); font-size:.74rem; }
.settings-endpoints { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; margin-top:1rem; }
.settings-endpoints > div { border:1px solid var(--line); border-radius:12px; padding:.75rem .8rem; background:#faf9f5; min-width:0; }
.settings-endpoints span { display:block; color:var(--text-soft); font-size:.65rem; text-transform:uppercase; letter-spacing:.08em; font-weight:800; margin-bottom:.25rem; }
.settings-endpoints code { display:block; white-space:normal; word-break:break-all; font-size:.68rem; }
.settings-actions { position:sticky; bottom:0; z-index:5; display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:1rem -1.25rem -1.25rem; padding:.8rem 1.25rem; border-top:1px solid var(--line); background:rgba(255,255,255,.94); backdrop-filter:blur(12px); }
.settings-save-note { color:var(--text-soft); font-size:.72rem; }
.settings-action-buttons { display:flex; align-items:center; gap:.55rem; }
.settings-action-buttons .btn-primary, .settings-action-buttons .btn-ghost { min-height:42px; }
@media (max-width:900px) {
  .settings-layout { grid-template-columns:1fr; }
  .settings-sidebar { border-right:0; border-bottom:1px solid var(--line); padding:.7rem; overflow-x:auto; display:block; white-space:nowrap; }
  .settings-sidebar-title, .settings-sidebar-note { display:none; }
  .settings-tab { display:inline-grid; width:auto; min-width:170px; margin-right:.35rem; vertical-align:top; }
  .settings-content { padding:1rem; }
  .settings-actions { margin:1rem -1rem -1rem; padding:.75rem 1rem; }
}
@media (max-width:680px) {
  .settings-page { padding-top:1rem; }
  .settings-head { align-items:flex-start; flex-direction:column; }
  .settings-head-actions { width:100%; justify-content:space-between; }
  .settings-row { grid-template-columns:1fr; gap:.65rem; padding:.9rem; }
  .settings-endpoints { grid-template-columns:1fr; }
  .settings-actions { align-items:flex-start; flex-direction:column; }
  .settings-action-buttons { width:100%; }
  .settings-action-buttons > * { flex:1; }
}

/* Donation CTA responsive polish */
@media (max-width: 639px) {
  .donate-cta { flex-direction: column; align-items: stretch; padding: 1.1rem; }
  .btn-donate-cta { width: 100%; justify-content: center; }
}

/* ---------- Modern public campaign + donation experience ---------- */
.campaign-detail-modern { max-width: 1180px; margin: 0 auto; padding: 1rem 0 4rem; }
.campaign-cover-modern { position: relative; width: 100%; aspect-ratio: 21 / 8; min-height: 260px; max-height: 430px; overflow: hidden; border-radius: 28px; background: linear-gradient(135deg,#dfe7df,#f7f4eb); box-shadow: 0 24px 60px rgba(14,59,46,.13); }
.campaign-cover-img-modern { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center; }
.campaign-cover-placeholder { position:absolute; inset:0; display:grid; place-items:center; background:radial-gradient(circle at 30% 30%,#2fa36b,#0e3b2e); color:white; }
.campaign-cover-placeholder span { font-family:var(--font-display); font-size:8rem; opacity:.28; }
.campaign-cover-scrim { position:absolute; inset:0; background:linear-gradient(180deg,rgba(6,29,22,.05) 30%,rgba(6,29,22,.68) 100%); }
.campaign-cover-meta { position:absolute; left:1.25rem; right:1.25rem; bottom:1.15rem; display:flex; align-items:center; justify-content:space-between; gap:.75rem; }
.campaign-category-pill,.campaign-status-pill { display:inline-flex; align-items:center; min-height:34px; padding:.4rem .8rem; border-radius:999px; font-size:.76rem; font-weight:800; letter-spacing:.02em; }
.campaign-category-pill { background:rgba(255,255,255,.92); color:var(--ink); backdrop-filter:blur(10px); }
.campaign-status-pill { color:#fff; background:rgba(20,60,46,.72); border:1px solid rgba(255,255,255,.18); backdrop-filter:blur(10px); }
.campaign-status-active { background:rgba(47,163,107,.88); }

.campaign-header-modern { display:flex; justify-content:space-between; gap:1.25rem; align-items:flex-end; padding:2rem .35rem 1.1rem; }
.campaign-title-block { min-width:0; }
.campaign-title-kicker { text-transform:uppercase; letter-spacing:.12em; font-size:.7rem; font-weight:900; color:var(--leaf-dark); margin-bottom:.45rem; }
.campaign-title-block h1 { font-size:clamp(2.4rem,5vw,4.25rem); letter-spacing:-.045em; max-width:880px; margin:0 0 .55rem; }
.campaign-organizer-modern { margin:0; color:var(--text-soft); font-size:.95rem; }
.campaign-share-modern { display:flex; gap:.55rem; flex:0 0 auto; }
.share-action { appearance:none; border:1px solid var(--line); background:#fff; color:var(--ink); min-height:42px; padding:.65rem .9rem; border-radius:999px; font-weight:750; cursor:pointer; transition:.15s ease; }
.share-action:hover { border-color:var(--ink); transform:translateY(-1px); }

.campaign-dashboard-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(300px,.72fr); gap:1.15rem; align-items:start; }
.campaign-main-column { min-width:0; }
.campaign-stats-modern { display:grid; grid-template-columns:1.45fr 1fr 1fr; gap:.8rem; margin-bottom:.8rem; }
.campaign-stat,.campaign-stat-primary { background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:20px; padding:1.05rem 1.1rem; box-shadow:0 14px 34px rgba(14,59,46,.06); }
.campaign-stat-primary { background:linear-gradient(145deg,#0e3b2e,#165842); color:white; border:0; }
.campaign-stat-label { display:block; font-size:.74rem; text-transform:uppercase; letter-spacing:.07em; font-weight:850; color:var(--text-soft); margin-bottom:.3rem; }
.campaign-stat-primary .campaign-stat-label { color:rgba(255,255,255,.65); }
.campaign-stat strong,.campaign-stat-primary strong { display:block; font-size:clamp(1.35rem,3vw,2rem); letter-spacing:-.03em; }
.campaign-stat-primary strong { color:#fff; }
.campaign-stat-secondary { display:block; color:var(--text-soft); font-size:.76rem; margin-top:.18rem; }
.campaign-stat-primary .campaign-stat-secondary { color:rgba(255,255,255,.68); }

.campaign-progress-card { background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:20px; padding:1rem 1.1rem; box-shadow:0 14px 34px rgba(14,59,46,.06); }
.campaign-progress-head,.campaign-progress-foot { display:flex; justify-content:space-between; gap:1rem; font-size:.8rem; color:var(--text-soft); }
.campaign-progress-head strong { color:var(--ink); }
.campaign-progress-track { margin:.7rem 0 .45rem; height:11px; border-radius:999px; background:#e8efe9; overflow:hidden; }
.campaign-progress-value { height:100%; background:linear-gradient(90deg,var(--leaf),#8bcf9e); border-radius:inherit; }

.campaign-story-modern,.donor-wall-modern { margin-top:1.3rem; background:#fff; border:1px solid rgba(14,59,46,.08); border-radius:22px; padding:1.35rem; box-shadow:0 14px 34px rgba(14,59,46,.05); }
.section-heading-modern { display:flex; gap:.75rem; align-items:baseline; margin-bottom:.95rem; }
.section-heading-modern > span { font-family:var(--font-mono); color:var(--marigold); font-size:.72rem; font-weight:700; }
.section-heading-modern h2 { margin:0; font-size:1.35rem; }
.story-copy-modern { color:#34413b; line-height:1.78; white-space:normal; }

.donate-card-modern { position:sticky; top:88px; background:linear-gradient(145deg,#0b3429 0%,#0e3b2e 52%,#166248 100%); color:#fff; border-radius:24px; padding:1.35rem; box-shadow:0 22px 48px rgba(14,59,46,.17); overflow:hidden; }
.donate-card-modern::after { content:""; position:absolute; width:180px; height:180px; border-radius:50%; right:-75px; top:-70px; background:rgba(255,255,255,.05); }
.donate-card-topline { position:relative; z-index:1; display:inline-flex; align-items:center; gap:.45rem; padding:.38rem .65rem; border-radius:999px; background:rgba(255,255,255,.08); font-size:.69rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:#d5f4df; }
.donate-live-dot { width:.42rem; height:.42rem; border-radius:50%; background:#73e59a; box-shadow:0 0 0 .23rem rgba(115,229,154,.13); }
.donate-card-modern h2 { position:relative; z-index:1; color:#fff; font-size:1.65rem; margin:1.1rem 0 .5rem; }
.donate-card-modern p { position:relative; z-index:1; margin:0 0 1rem; color:rgba(255,255,255,.75); line-height:1.65; font-size:.9rem; }
.btn-donate-primary { position:relative; z-index:1; width:100%; min-height:58px; border:0; border-radius:16px; background:#fff; color:var(--ink); display:flex; justify-content:space-between; align-items:center; gap:.75rem; padding:.8rem .85rem .8rem 1rem; font-size:.96rem; font-weight:850; cursor:pointer; box-shadow:0 12px 28px rgba(0,0,0,.16); transition:.15s ease; }
.btn-donate-primary:hover { transform:translateY(-1px); box-shadow:0 16px 30px rgba(0,0,0,.19); }
.donate-primary-arrow { width:38px; height:38px; border-radius:12px; background:var(--leaf); color:#fff; display:grid; place-items:center; font-size:1.15rem; }
.donate-trust-row { position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:.5rem 1rem; margin-top:.8rem; color:rgba(255,255,255,.66); font-size:.68rem; }
.donate-card-modern.closed { background:#fff; color:var(--ink); border:1px solid var(--line); box-shadow:0 14px 34px rgba(14,59,46,.06); }
.donate-card-modern.closed::after { display:none; }
.donate-closed-icon { width:40px; height:40px; border-radius:12px; display:grid; place-items:center; background:#edf1ed; color:var(--text-soft); font-weight:900; }
.donate-card-modern.closed h2 { color:var(--ink); margin-top:.9rem; }
.donate-card-modern.closed p { color:var(--text-soft); margin-bottom:0; }
.campaign-note-card { display:flex; gap:.75rem; margin-top:.8rem; padding:1rem; border:1px solid var(--line); background:#fff; border-radius:18px; }
.campaign-note-icon { width:30px; height:30px; border-radius:10px; background:#fff6e6; color:#9a6b12; display:grid; place-items:center; font-weight:900; flex:0 0 auto; }
.campaign-note-card strong { display:block; color:var(--ink); font-size:.86rem; }
.campaign-note-card p { margin:.15rem 0 0; color:var(--text-soft); font-size:.78rem; line-height:1.55; }

.donor-list-modern { display:grid; gap:.15rem; }
.donor-item-modern { display:grid; grid-template-columns:40px 1fr auto; gap:.75rem; align-items:center; padding:.8rem 0; border-bottom:1px solid #eee9de; }
.donor-item-modern:last-child { border-bottom:0; padding-bottom:0; }
.donor-avatar-modern { width:40px; height:40px; border-radius:13px; display:grid; place-items:center; background:#eaf4ee; color:var(--ink); font-weight:850; }
.donor-copy-modern strong { display:block; font-size:.88rem; color:var(--ink); }
.donor-copy-modern p { margin:.16rem 0 0; color:var(--text-soft); font-size:.77rem; line-height:1.45; }
.donor-amount-modern { color:var(--leaf-dark); font-weight:800; font-size:.82rem; }

/* Donation modal */
.donate-modal-modern { position:fixed; inset:0; z-index:200; display:grid; place-items:center; padding:1rem; }
.donate-modal-modern[hidden] { display:none; }
.donate-modal-backdrop { position:absolute; inset:0; background:rgba(5,23,18,.66); backdrop-filter:blur(7px); }
.donate-modal-panel { position:relative; z-index:1; width:min(720px,100%); max-height:min(92vh,820px); overflow:auto; background:#fffdf8; border:1px solid rgba(255,255,255,.55); border-radius:28px; box-shadow:0 34px 90px rgba(0,0,0,.28); padding:1.45rem; }
.modal-close-modern { position:absolute; top:1rem; right:1rem; width:38px; height:38px; border:1px solid #e4dece; background:#f5f0e5; color:var(--ink); border-radius:12px; font-size:1.5rem; line-height:1; cursor:pointer; }
.modal-brandline { display:flex; align-items:center; gap:.45rem; color:var(--ink); font-size:.78rem; font-weight:850; letter-spacing:.03em; margin-bottom:1.25rem; }
.modal-brand-dot { width:10px; height:10px; border-radius:50%; background:var(--leaf); box-shadow:0 0 0 6px rgba(47,163,107,.11); }
.modal-heading-modern { padding-right:3rem; }
.modal-kicker { display:block; color:var(--leaf-dark); text-transform:uppercase; letter-spacing:.1em; font-size:.68rem; font-weight:900; margin-bottom:.35rem; }
.modal-heading-modern h2 { font-size:clamp(1.55rem,4vw,2rem); margin:0 0 .35rem; letter-spacing:-.03em; }
.modal-heading-modern p { margin:0; color:var(--text-soft); font-size:.85rem; }
.amount-section-modern { margin-top:1.2rem; }
.form-section-label { color:var(--ink); font-size:.78rem; font-weight:850; margin-bottom:.55rem; }
.amount-grid-modern { display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; }
.amount-option-modern { min-height:50px; border:1px solid #dfd7c7; border-radius:15px; background:#fff; color:var(--ink); font-family:var(--font-mono); font-size:.8rem; font-weight:700; cursor:pointer; padding:.55rem; transition:.15s ease; }
.amount-option-modern:hover { border-color:var(--leaf); transform:translateY(-1px); }
.amount-option-modern.active { background:var(--ink); border-color:var(--ink); color:#fff; box-shadow:0 9px 20px rgba(14,59,46,.16); }
.amount-option-modern.other { border-style:dashed; color:var(--text-soft); }
.donation-form-grid-modern { display:grid; grid-template-columns:1fr 1fr; gap:.8rem; margin-top:1rem; }
.form-field-modern { display:flex; flex-direction:column; gap:.34rem; }
.form-field-modern.full-span { grid-column:1/-1; }
.form-field-modern > span { font-size:.76rem; font-weight:800; color:var(--ink); }
.form-field-modern em { font-style:normal; color:var(--text-soft); font-weight:500; margin-left:.2rem; }
.form-field-modern input { width:100%; min-height:48px; border:1px solid #ddd5c5; border-radius:14px; background:#fff; color:var(--text); padding:.72rem .85rem; font:500 .9rem var(--font-body); outline:none; }
.form-field-modern input:focus { border-color:var(--leaf); box-shadow:0 0 0 4px rgba(47,163,107,.11); }
.input-prefix-modern { display:flex; align-items:center; border:1px solid #ddd5c5; border-radius:14px; overflow:hidden; background:#fff; }
.input-prefix-modern b { padding:0 .85rem; color:var(--leaf-dark); font:700 .78rem var(--font-mono); }
.input-prefix-modern input { border:0; border-left:1px solid #ece6da; border-radius:0; box-shadow:none !important; }
.privacy-check-modern { display:flex; align-items:center; gap:.55rem; margin-top:.8rem; color:var(--text-soft); font-size:.82rem; cursor:pointer; }
.privacy-check-modern input { width:17px; height:17px; accent-color:var(--leaf); }
.btn-modal-donate { width:100%; min-height:56px; display:flex; align-items:center; justify-content:space-between; gap:.75rem; margin-top:1rem; padding:.85rem 1rem .85rem 1.05rem; border:0; border-radius:16px; background:linear-gradient(135deg,var(--leaf),var(--leaf-dark)); color:#fff; font:800 .92rem var(--font-body); cursor:pointer; box-shadow:0 14px 28px rgba(47,163,107,.2); }
.btn-modal-donate > span:last-child { width:36px; height:36px; display:grid; place-items:center; border-radius:11px; background:rgba(255,255,255,.16); }
.btn-modal-donate:disabled { opacity:.62; cursor:not-allowed; transform:none; }
.donation-security-note { display:flex; align-items:center; justify-content:center; gap:.35rem; margin:.7rem 0 0; color:var(--text-soft); font-size:.7rem; text-align:center; }
.donation-security-note span { color:var(--leaf-dark); font-weight:900; }
.donation-error-modern { min-height:20px; margin:.5rem 0 0; color:#a03a2f; text-align:center; font-size:.78rem; }
.donation-result-modern { text-align:center; padding:2rem .5rem .6rem; }
.status-icon-modern { width:72px; height:72px; margin:0 auto 1rem; border-radius:22px; display:grid; place-items:center; }
.status-icon-modern.success { background:#e4f3ea; color:var(--leaf-dark); font-size:2rem; font-weight:900; }
.status-icon-modern.waiting { background:#edf6ef; }
.status-icon-modern.waiting span { width:32px; height:32px; border-radius:50%; border:4px solid #cbe5d3; border-top-color:var(--leaf); animation:spin 1s linear infinite; }
.donation-result-modern h3 { font-size:1.5rem; margin-bottom:.45rem; }
.donation-result-modern p { max-width:42ch; margin:0 auto; color:var(--text-soft); line-height:1.65; }
.result-subtext { margin-top:.55rem !important; font-size:.76rem; }

@media (max-width: 900px) {
  .campaign-detail-modern { padding-top:.25rem; }
  .campaign-cover-modern { border-radius:22px; aspect-ratio:16/8; }
  .campaign-header-modern { align-items:flex-start; flex-direction:column; }
  .campaign-dashboard-grid { grid-template-columns:1fr; }
  .donate-card-modern { position:relative; top:auto; }
}
@media (max-width: 640px) {
  .campaign-detail-modern { padding-left:.1rem; padding-right:.1rem; }
  .campaign-cover-modern { min-height:210px; border-radius:18px; }
  .campaign-cover-meta { left:.8rem; right:.8rem; bottom:.8rem; }
  .campaign-header-modern { padding:1.35rem .1rem .9rem; }
  .campaign-title-block h1 { font-size:clamp(2rem,10vw,3rem); }
  .campaign-share-modern { width:100%; }
  .share-action { flex:1; }
  .campaign-stats-modern { grid-template-columns:1fr 1fr; }
  .campaign-stat-primary { grid-column:1/-1; }
  .amount-grid-modern { grid-template-columns:repeat(2,1fr); }
  .donation-form-grid-modern { grid-template-columns:1fr; }
  .form-field-modern.full-span { grid-column:auto; }
  .donate-modal-modern { padding:.45rem; align-items:end; }
  .donate-modal-panel { border-radius:22px 22px 14px 14px; padding:1.15rem; max-height:94vh; }
}

/* v1.9.3: update requirements panel */
.requirements-panel{margin:0 0 24px}.requirements-table{display:grid;border:1px solid var(--line,#dfe4dc);border-radius:14px;overflow:hidden}.requirement-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;background:var(--paper,#fff);border-bottom:1px solid var(--line,#dfe4dc)}.requirement-row:last-child{border-bottom:0}.requirement-row small{display:block;color:var(--muted,#6f7c75);margin-top:3px}.req-pill{font-size:.8rem;font-weight:700;padding:6px 10px;border-radius:999px}.req-pill.ok{background:#e9f8ef;color:#1f7145}.req-pill.fail{background:#fff0ef;color:#a2352f}.status-error{background:#fff0ef!important;color:#a2352f!important}.topnav-logout-form{margin:0}.topnav-logout-form .btn-ghost{font:inherit;cursor:pointer}
