/* ─── "lewte" wordmark font ──────────────────────────────────── */
@font-face {
  font-family: 'Lewte Wordmark';
  src: url('fonts/typo-round.bold-demo.otf') format('opentype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ─── Tokens (mirrors lib/theme.ts) ─────────────────────────── */
:root {
  --primary: #7C3AED;
  --primary-light: #A855F7;
  --primary-dark: #5B21B6;
  --primary-darker: #3B0764;
  --primary-magenta: #D946EF;
  --primary-gradient: linear-gradient(135deg, #7C3AED 0%, #D946EF 100%);
  --primary-gradient-hover: linear-gradient(135deg, #5B21B6 0%, #A21CAF 100%);
  --bg: #F8F7FF;
  --card: #FFFFFF;
  --text: #1A1A2E;
  --text-secondary: #6B7280;
  --text-light: #9CA3AF;
  --border: #E5E7EB;
  --success: #10B981;
  --warning: #F59E0B;
  --error: #EF4444;
  --info: #3B82F6;

  /* The "lewte" wordmark font. Defaults to the body font until the custom
     logo font is dropped in (see the @font-face block near the top of this
     file, added once the font file is provided). */
  --lewte-font: 'Lewte Wordmark', -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif;

  --r-sm: 8px;  --r-md: 12px;  --r-lg: 16px;  --r-xl: 24px;  --r-full: 9999px;
  --sp-xs: 4px; --sp-sm: 8px;  --sp-md: 16px; --sp-lg: 24px; --sp-xl: 32px; --sp-xxl: 48px;
  --shadow-sm: 0 1px 4px rgba(0,0,0,0.05);
  --shadow-md: 0 4px 12px rgba(124, 58, 237, 0.10);
  --shadow-lg: 0 8px 28px rgba(124, 58, 237, 0.18);
}

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: clip;
  overscroll-behavior-x: none;
}
/* Installed (standalone) PWA: html must carry the page background and body must
   use dvh, otherwise iOS leaves a blank strip under the content in the safe
   area at the bottom of the screen. */
html {
  background: var(--bg);
  min-height: 100%;
  min-height: -webkit-fill-available;
}
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.5;
  min-height: 100vh;
  min-height: 100dvh;
  min-height: -webkit-fill-available;
  /* Fill the home-indicator strip with the page background instead of leaving a
     blank box at the bottom of the installed app. */
  padding-bottom: env(safe-area-inset-bottom, 0px);
  display: flex;
  flex-direction: column;
  position: relative;
}

button { font-family: inherit; cursor: pointer; border: none; background: none; }

/* ─── Icons ─────────────────────────────────────────────────── */
.icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--icon-size, 1.2em);
  height: var(--icon-size, 1.2em);
  flex-shrink: 0;
  line-height: 0;
  vertical-align: -0.18em;
  color: inherit;
}
.icon svg { width: 100%; height: 100%; display: block; }
.icon-xl { --icon-size: 56px; color: var(--primary); margin-bottom: 16px; }
.stat-rating { display: inline-flex; align-items: center; gap: 4px; }
.stat-rating .icon { --icon-size: 18px; color: var(--warning); }
input, textarea, select { font-family: inherit; font-size: 15px; color: var(--text); }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }

/* ─── Buttons ────────────────────────────────────────────────── */
.btn-primary, .btn-ghost, .btn-skip, .btn-save, .btn-info, .btn-danger {
  font-weight: 700;
  border-radius: var(--r-full);
  padding: 12px 22px;
  font-size: 15px;
  transition: transform .12s ease, box-shadow .15s ease, background .15s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}
.btn-primary { background: var(--primary-gradient); color: #fff; box-shadow: var(--shadow-md); }
.btn-primary:hover { background: var(--primary-gradient-hover); transform: translateY(-1px); }
.btn-ghost { background: transparent; color: var(--primary); border: 1.5px solid var(--primary); }
.btn-ghost:hover { background: var(--primary-gradient); color: #fff; }
.btn-lg { padding: 16px 30px; font-size: 16px; }
.btn-block { width: 100%; }
.btn-danger { background: transparent; border: 1.5px solid var(--error); color: var(--error); width: 100%; }
.btn-danger:hover { background: var(--error); color: #fff; }

/* ─── Top Nav ───────────────────────────────────────────────── */
.nav {
  position: sticky; top: 0; z-index: 50;
  padding-top: 0;
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
}
.nav-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 14px 24px;
  /* viewport-fit=cover puts the page under the iOS status bar; push the logo and
     burger below it in the installed app. */
  padding-top: calc(14px + env(safe-area-inset-top, 0px));
  display: flex;
  align-items: center;
  gap: 24px;
}
.brand {
  display: flex; align-items: center; gap: 8px;
  font-weight: 800; font-size: 18px; color: var(--primary);
  letter-spacing: -0.3px;
  text-decoration: none;
}
.brand-icon { --icon-size: 22px; color: var(--primary); }
/* Stacked wordmark: "lewte" primary, "swipescholar" underneath. */
.brand-wordmark { display: flex; flex-direction: column; line-height: 1; gap: 2px; }
.brand-name.lewte-logo { font-size: 26px; font-weight: 800; }
.brand-sub {
  font-size: 11px; font-weight: 600; letter-spacing: 0.16em; text-transform: lowercase;
  color: var(--text-light); font-style: normal;
}
.nav-links {
  display: flex; gap: 4px; flex: 1;
  margin-left: 12px;
}
.nav-links a {
  display: inline-flex; align-items: center;
  padding: 8px 12px;
  border-radius: var(--r-md);
  color: var(--text-secondary);
  font-size: 14px;
  line-height: 1.2;
  font-weight: 500;
  transition: background .15s, color .15s;
}
.nav-links a:hover { background: var(--bg); color: var(--primary); }
.nav-links a.active { background: rgba(124,58,237,0.1); color: var(--primary); font-weight: 600; }

/* nav dropdowns */
.nav-group { position: relative; }
.nav-trigger {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 8px 12px;
  background: transparent; border: 0; cursor: pointer;
  font-family: inherit; font-size: 14px; line-height: 1.2; font-weight: 500;
  color: var(--text-secondary);
  border-radius: var(--r-md);
  transition: background .15s, color .15s;
}
.nav-trigger:hover { background: var(--bg); color: var(--primary); }
.nav-trigger.active { background: rgba(124,58,237,0.1); color: var(--primary); font-weight: 600; }
.nav-chevron { font-size: 9px; line-height: 1; transition: transform 0.18s ease; }
.nav-group.open .nav-chevron { transform: rotate(180deg); }
.nav-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 220px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
  padding: 6px;
  display: flex; flex-direction: column;
  z-index: 50;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  transition: opacity 0.15s ease, transform 0.15s ease;
}
.nav-group.open .nav-dropdown {
  opacity: 1; pointer-events: auto; transform: translateY(0);
}
.nav-dropdown a {
  padding: 9px 12px;
  border-radius: var(--r-sm);
  color: var(--text);
  font-size: 14px; font-weight: 500;
  white-space: nowrap;
}
.nav-dropdown a:hover { background: var(--bg); color: var(--primary); }
.nav-dropdown a.active { background: rgba(124,58,237,0.10); color: var(--primary); font-weight: 700; }

.nav-actions { display: flex; gap: 8px; align-items: center; position: relative; }

/* Bell */
.bell-btn {
  position: relative;
  width: 38px; height: 38px;
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--bg);
  color: var(--primary);
  transition: background .15s;
}
.bell-btn:hover { background: var(--border); }
.bell-btn .icon { --icon-size: 18px; }
.bell-count {
  position: absolute; top: 2px; right: 2px;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: var(--r-full);
  background: var(--error);
  color: #fff;
  font-size: 10px; font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
}

/* Notification dropdown */
.notif-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 360px;
  max-height: 480px;
  background: #fff;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-lg);
  z-index: 80;
  display: flex; flex-direction: column;
  overflow: hidden;
}
.notif-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
}
.notif-head h4 { margin: 0; font-size: 14px; font-weight: 700; }
.notif-clear {
  font-size: 12px; color: var(--primary); font-weight: 600;
  padding: 4px 8px; border-radius: var(--r-sm);
}
.notif-clear:hover { background: var(--bg); }
.notif-list { overflow-y: auto; flex: 1; }
.notif-empty { padding: 32px 16px; text-align: center; color: var(--text-light); font-size: 13px; }
.notif-item {
  display: flex; gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background .15s;
}
.notif-item:hover { background: var(--bg); }
.notif-item.unread { background: rgba(124,58,237,0.04); }
.notif-item.unread::before {
  content: ''; width: 6px; height: 6px;
  background: var(--primary-gradient); border-radius: 50%;
  margin: 7px 0 0 -8px; align-self: flex-start;
  flex-shrink: 0;
}
.notif-item:last-child { border-bottom: none; }
.notif-icon {
  --icon-size: 18px;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.notif-icon svg { width: 18px; height: 18px; }
.notif-body { flex: 1; min-width: 0; }
.notif-title { font-size: 13px; font-weight: 700; margin-bottom: 2px; }
.notif-text { font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
.notif-time { font-size: 11px; color: var(--text-light); margin-top: 4px; }
.nav-actions .btn-ghost,
.nav-actions .btn-primary { padding: 8px 16px; font-size: 14px; }
.nav-burger { display: none; margin-left: auto; font-size: 22px; padding: 8px; color: var(--primary); }

/* ─── Routes ────────────────────────────────────────────────── */
main { flex: 1; max-width: 1200px; margin: 0 auto; padding: 0 24px; width: 100%; overflow-x: clip; }
.route { display: none; padding: 32px 0 64px; }
.route.active { display: block; }

.page-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 28px;
  flex-wrap: wrap; gap: 16px;
}
.page-head h1 { margin: 0; font-size: 32px; font-weight: 800; letter-spacing: -0.5px; }
.page-head p { margin: 4px 0 0; color: var(--text-secondary); font-size: 15px; }

/* ─── Hero / Home ───────────────────────────────────────────── */
.hero {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 48px;
  align-items: center;
  padding: 56px 0 40px;
}
.hero-eyebrow {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 14px;
  background: rgba(124,58,237,0.1);
  color: var(--primary);
  border-radius: var(--r-full);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.3px;
  margin-bottom: 20px;
}
.hero-eyebrow .icon { --icon-size: 14px; }
.hero h1 {
  /* Fluid: scales smoothly from 36px (narrow) up to 64px (wide). */
  font-size: clamp(36px, 5.6vw, 64px);
  font-weight: 800;
  letter-spacing: -2px;
  line-height: 1.05;
  margin: 0 0 20px;
  background: var(--primary-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.hero-sub {
  font-size: clamp(15px, 1.6vw, 18px);
  color: var(--text-secondary);
  margin: 0 0 28px;
  max-width: 520px;
}
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 36px; }
.hero-stats { display: flex; gap: 32px; flex-wrap: wrap; }
.hero-stats div { display: flex; flex-direction: column; }
.hero-stats strong { font-size: 22px; font-weight: 800; color: var(--primary-dark); }
.hero-stats span { font-size: 12px; color: var(--text-secondary); }

.hero-art { position: relative; height: 460px; }
.hero-card {
  position: absolute;
  background: #fff;
  border-radius: var(--r-xl);
  padding: 20px;
  width: 280px;
  box-shadow: var(--shadow-lg);
  transition: transform .3s ease;
}
.hero-card h4 { margin: 12px 0 6px; font-size: 16px; }
.hero-card p { margin: 0 0 14px; font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
.hero-card-foot { font-size: 12px; font-weight: 600; color: var(--warning); }
.hero-card-1 { top: 0; right: 60px; transform: rotate(-4deg); }
.hero-card-2 { top: 130px; right: 0; transform: rotate(3deg); z-index: 2; }
.hero-card-3 { top: 260px; right: 80px; transform: rotate(-2deg); }
.hero-card:hover { transform: translateY(-6px) rotate(0); z-index: 3; }
.badge {
  display: inline-block;
  background: var(--primary-gradient);
  color: #fff;
  padding: 4px 12px;
  border-radius: var(--r-full);
  font-size: 13px;
  font-weight: 800;
}
.badge-warm { background: var(--warning); }
.badge-success { background: var(--success); }

.section { padding: 56px 0 24px; }
.section-title { font-size: 36px; font-weight: 800; letter-spacing: -1px; margin: 0 0 8px; text-align: center; }
.section-sub { color: var(--text-secondary); text-align: center; margin: 0 0 36px; font-size: 16px; }
.section-quote {
  background: var(--primary-gradient);
  border-radius: var(--r-xl);
  padding: 56px 40px;
  color: #fff;
  text-align: center;
  margin: 24px 0;
}
.section-quote blockquote { margin: 0; }
.section-quote p { font-size: 22px; font-weight: 600; line-height: 1.5; max-width: 700px; margin: 0 auto 20px; }
.section-quote footer { font-size: 14px; opacity: 0.85; }

/* ─── Landing strips (deals + jobs marquees) ───────────────── */
.section-strip { padding: 40px 0 24px; }
.strip-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 16px; margin-bottom: 22px; flex-wrap: wrap;
}
.strip-head h2 { margin: 0; font-size: 26px; font-weight: 800; letter-spacing: -0.5px; }
.strip-head p { margin: 4px 0 0; color: var(--text-secondary); font-size: 14px; }
.btn-sm { padding: 8px 16px; font-size: 13px; }

.marquee {
  position: relative;
  overflow: hidden;
  margin: 0 -24px; padding: 8px 24px;
  /* Edge fade */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
}
.marquee-track {
  display: flex; gap: 16px;
  width: max-content;
  animation: marquee 50s linear infinite;
}
.marquee:hover .marquee-track { animation-play-state: paused; }
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

.deal-card {
  flex: 0 0 280px;
  background: #fff;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
}
.deal-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.deal-card .deal-tag {
  position: absolute; top: 0; left: 0;
  padding: 5px 12px;
  font-size: 11px; font-weight: 800;
  color: #fff; border-bottom-right-radius: 8px;
  z-index: 2;
}
.deal-card .deal-tag.free { background: #065F46; }
.deal-card .deal-tag.discount { background: #DC2626; }
.deal-card .deal-ad { height: 110px; }
.deal-card .deal-body { padding: 14px 16px 16px; }
.deal-card .deal-brand {
  display: inline-block;
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  padding: 3px 10px; border-radius: 4px;
  font-size: 11px; font-weight: 600;
  margin-bottom: 8px;
}
.deal-card h4 { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.35; }

.job-card {
  flex: 0 0 320px;
  background: #fff;
  border-radius: var(--r-lg);
  padding: 18px;
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  border-left: 4px solid var(--primary);
  display: flex; flex-direction: column; gap: 8px;
}
.job-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.job-card .job-head {
  display: flex; align-items: center; gap: 10px;
}
.job-card .job-logo,
.job-row .job-logo,
.admin-row-head .job-logo {
  width: 44px; height: 44px;
  border-radius: 10px;
  background: var(--logo-bg, var(--primary));
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  overflow: hidden;
  color: #fff;
  font-size: 16px; font-weight: 800;
  letter-spacing: -0.5px;
}
.job-card .job-logo img,
.job-row .job-logo img,
.admin-row-head .job-logo img {
  width: 100%; height: 100%; object-fit: cover;
}
.job-card .job-title { font-size: 15px; font-weight: 700; line-height: 1.3; margin: 0; }
.job-card .job-company { font-size: 12px; color: var(--text-secondary); }
.job-card .job-meta {
  display: flex; gap: 6px; flex-wrap: wrap;
  font-size: 12px;
}
.job-card .job-pill {
  background: var(--bg);
  color: var(--text-secondary);
  padding: 4px 10px;
  border-radius: var(--r-full);
  font-weight: 500;
}
.job-card .job-pill.pay {
  background: rgba(16,185,129,0.12);
  color: var(--success);
  font-weight: 700;
}

/* ─── Feature list (compact) ───────────────────────────────── */
.section-features { padding: 56px 0 24px; }
.section-title-sm { font-size: 22px; font-weight: 800; letter-spacing: -0.4px; margin: 0 0 24px; }
.feature-list {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 8px 32px;
}
.feature-list li {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: padding .15s, color .15s;
}
.feature-list li:hover { padding-left: 6px; }
.feature-list li:hover .fl-name { color: var(--primary); }
.feature-list .fl-icon { --icon-size: 22px; flex-shrink: 0; width: 28px; color: var(--primary); }
.feature-list .fl-body { flex: 1; }
.feature-list .fl-name { font-size: 15px; font-weight: 700; transition: color .15s; }
.feature-list .fl-desc { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }
.feature-list .fl-arrow { --icon-size: 18px; color: var(--text-light); }

/* ─── CTA banner ───────────────────────────────────────────── */
.cta-banner {
  background: var(--primary-gradient);
  border-radius: var(--r-xl);
  padding: 56px 32px;
  text-align: center;
  color: #fff;
  margin: 32px 0 8px;
}
.cta-banner h2 { margin: 0 0 8px; font-size: 32px; letter-spacing: -0.5px; }
.cta-banner p { margin: 0 0 24px; opacity: 0.9; font-size: 16px; }
.cta-banner .btn-primary {
  background: #fff; color: var(--primary);
}
.cta-banner .btn-primary:hover { background: rgba(255,255,255,0.92); transform: translateY(-1px); }

/* ─── Scholarships swipe deck ───────────────────────────────── */
.saved-pill {
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  padding: 8px 16px;
  border-radius: var(--r-full);
  font-weight: 700; font-size: 13px;
  display: inline-flex; align-items: center; gap: 6px;
}
.saved-pill .icon { --icon-size: 14px; }
.swipe-stage {
  position: relative;
  height: 540px;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto;
  max-width: 480px;
}
.swipe-deck {
  position: relative;
  width: 100%;
  height: 100%;
}
.swipe-card {
  position: absolute;
  inset: 0;
  background: #fff;
  border-radius: var(--r-xl);
  padding: 28px;
  box-shadow: var(--shadow-lg);
  user-select: none;
  display: flex; flex-direction: column;
  cursor: grab;
  overflow: hidden;            /* keep ALL content inside the card */
  transition: transform .3s ease, box-shadow .3s ease;
}
.swipe-card.dragging { cursor: grabbing; transition: none; }

/* Middle content scrolls inside the card so nothing spills past its edges. */
.card-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
.card-scroll::-webkit-scrollbar { width: 6px; }
.card-scroll::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 999px; }

/* Compact match % pill in the top corner (replaces the old match bar). */
.card-header-tags { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.match-pill {
  font-size: 12px; font-weight: 800; color: var(--primary);
  background: #F5F3FF; border: 1px solid #DDD6FE;
  padding: 3px 10px; border-radius: 999px; white-space: nowrap;
}

.match-score {
  display: grid; grid-template-columns: auto 1fr; column-gap: 8px; row-gap: 4px;
  align-items: center; margin: 12px 0 8px;
  background: #F5F3FF; border: 1px solid #DDD6FE;
  border-radius: 10px; padding: 8px 12px;
}
.match-score-label { font-size: 11px; font-weight: 700; color: var(--primary); text-transform: uppercase; letter-spacing: 0.4px; }
.match-score-value { font-size: 18px; font-weight: 800; color: var(--primary); justify-self: end; }
.match-score-bar {
  grid-column: 1 / -1; height: 6px; background: #E5E7EB;
  border-radius: 999px; overflow: hidden;
}
.match-score-fill {
  height: 100%;
  background: linear-gradient(90deg, #A78BFA, #7C3AED);
  border-radius: 999px;
  transition: width 0.3s ease;
}
.match-rationale {
  margin: 8px 0 0; padding: 8px 10px;
  background: #F9FAFB; border-radius: 8px;
  font-size: 12px; line-height: 1.45; color: #1F2937;
}

/* ─── Questionnaire — new components ─────────────────────────── */
.toggle-sub { display: block; font-size: 12px; color: var(--text-secondary); font-weight: 400; margin-top: 2px; }

.radio-group { display: flex; flex-direction: row; gap: 8px; flex-wrap: wrap; }
.radio-pill {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 8px 18px; border: 1px solid var(--border); background: #fff;
  border-radius: 999px; cursor: pointer; font-size: 13px; font-weight: 600;
  min-width: 80px;
  transition: all 0.15s;
}
.radio-pill:hover { border-color: var(--primary); color: var(--primary); }
.radio-pill input { display: none; }
.radio-pill:has(input:checked) {
  background: var(--primary); color: #fff; border-color: var(--primary);
}

.multi-add { display: flex; flex-direction: column; gap: 8px; }
.multi-add-list { display: flex; flex-direction: column; gap: 8px; }
.multi-add-row {
  display: flex; gap: 8px; align-items: stretch;
}
.multi-add-input {
  flex: 1; padding: 10px 12px; font: inherit; font-size: 14px;
  border: 1px solid var(--border); border-radius: 10px; background: #fff;
}
.multi-add-input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15); }
.multi-add-remove {
  width: 40px; flex-shrink: 0;
  border: 1px solid var(--border); border-radius: 10px;
  background: #fff; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
}
.multi-add-remove:hover { border-color: #EF4444; color: #EF4444; }
.multi-add-remove .icon { --icon-size: 16px; }
.multi-add-btn {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  background: #F5F3FF; color: var(--primary);
  border: 1px dashed var(--primary); border-radius: 10px;
  padding: 12px; font: inherit; font-weight: 600; font-size: 14px;
  cursor: pointer; transition: background 0.15s;
}
.multi-add-btn:hover { background: #EDE9FE; }
.multi-add-btn .icon { --icon-size: 16px; }

.keyword-grid {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.keyword-chip {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 8px 14px; border: 1px solid var(--border); background: #fff;
  border-radius: 999px; cursor: pointer;
  font-size: 13px; font-weight: 600; color: #1F2937;
  transition: all 0.15s;
  user-select: none;
}
.keyword-chip:hover { border-color: var(--primary); color: var(--primary); }
.keyword-chip input { display: none; }
.keyword-chip:has(input:checked) {
  background: var(--primary); color: #fff;
  border-color: var(--primary);
}

.biz-form-section select {
  width: 100%; padding: 10px 12px; font: inherit; font-size: 14px;
  border: 1px solid var(--border); border-radius: 10px; background: #fff;
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat: no-repeat; background-position: right 12px center;
  padding-right: 36px;
}
.biz-form-section select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15); }
.biz-form-section input[type="date"] {
  width: 100%; padding: 10px 12px; font: inherit; font-size: 14px;
  border: 1px solid var(--border); border-radius: 10px; background: #fff;
}
.swipe-card .card-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.swipe-card .category {
  background: rgba(124,58,237,0.12); color: var(--primary);
  padding: 4px 12px; border-radius: var(--r-full);
  font-size: 11px; font-weight: 700; letter-spacing: 0.3px;
}
.swipe-card .amount { font-size: 26px; font-weight: 800; color: var(--primary); }
.swipe-card h2 { margin: 0 0 10px; font-size: 22px; line-height: 1.3; }
.swipe-card .desc { color: var(--text-secondary); font-size: 14px; line-height: 1.55; flex: 1; }
.swipe-card .deadline {
  display: inline-flex; align-items: center; gap: 6px; margin: 14px 0;
  font-size: 13px;
}
.swipe-card .deadline .icon { --icon-size: 14px; color: var(--warning); }
.swipe-card .deadline strong { color: var(--warning); }
.swipe-card .eligibility {
  background: var(--bg); border-radius: var(--r-md);
  padding: 12px 14px; margin-bottom: 12px;
}
.swipe-card .eligibility-label {
  font-size: 11px; font-weight: 700; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px;
}
.swipe-card .eligibility-text { font-size: 13px; color: var(--text); }
.swipe-card .hint-row {
  display: flex; justify-content: space-between; margin-top: auto;
  font-size: 12px; padding-top: 10px;
}
.swipe-card .hint-skip { color: rgba(239,68,68,0.7); font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.swipe-card .hint-save { color: rgba(16,185,129,0.7); font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.swipe-card .hint-row .icon { --icon-size: 12px; }
.swipe-card .label-save,
.swipe-card .label-skip {
  position: absolute; top: 28px;
  padding: 6px 14px; border: 3px solid; border-radius: 8px;
  font-weight: 800; font-size: 18px;
  opacity: 0;
  transform: rotate(-15deg);
}
.swipe-card .label-save { right: 24px; border-color: var(--success); color: var(--success); transform: rotate(15deg); }
.swipe-card .label-skip { left: 24px; border-color: var(--error); color: var(--error); }
.swipe-card.behind { transform: translateY(8px) scale(0.96); opacity: 0.6; pointer-events: none; }
.swipe-empty {
  text-align: center; padding: 48px 24px;
}
.swipe-empty-icon { --icon-size: 56px; color: var(--primary); margin-bottom: 12px; }
.swipe-empty h3 { font-size: 22px; margin: 0 0 8px; }
.swipe-empty p { color: var(--text-secondary); margin: 0 0 24px; }
.swipe-empty-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

.swipe-loading {
  text-align: center; padding: 64px 24px;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.swipe-loading p { margin: 0; font-size: 14px; font-weight: 700; }
.swipe-loading-sub { font-weight: 400 !important; color: var(--text-secondary); font-size: 12px; }
.swipe-loading .schools-spinner { width: 22px; height: 22px; border-width: 3px; margin-bottom: 8px; }

.card-apply-link {
  display: inline-flex; align-items: center; gap: 6px;
  margin: 12px 0 0; padding: 8px 12px;
  background: #F5F3FF; color: var(--primary);
  border-radius: 8px; font-size: 13px; font-weight: 700;
  text-decoration: none; width: fit-content;
  transition: background 0.15s;
}
.card-apply-link:hover { background: #EDE9FE; }
.card-apply-link .icon { --icon-size: 14px; }

.swipe-actions {
  display: flex; justify-content: center; gap: 16px;
  margin-top: 24px; max-width: 480px; margin-left: auto; margin-right: auto;
}
.btn-skip { flex: 1; border: 2px solid var(--error); color: var(--error); background: #fff; }
.btn-skip:hover { background: var(--error); color: #fff; }
.btn-save { flex: 1; background: var(--success); color: #fff; }
.btn-save:hover { background: #059669; }
.btn-info { flex: 0.8; border: 2px solid var(--primary); color: var(--primary); background: #fff; }
.btn-info:hover { background: var(--primary-gradient); color: #fff; }

/* ─── Wallet ────────────────────────────────────────────────── */
.wallet-summary {
  display: flex; align-items: center;
  background: var(--primary-gradient);
  border-radius: var(--r-xl);
  padding: 24px 32px;
  color: #fff;
  margin-bottom: 24px;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: space-around;
}
.wallet-summary > div { text-align: center; display: flex; flex-direction: column; }
.wallet-summary strong { font-size: 30px; font-weight: 800; }
.wallet-summary span { font-size: 12px; opacity: 0.85; }
.wallet-summary .divider { width: 1px; height: 40px; background: rgba(255,255,255,0.3); flex: 0 0 auto; }
.filter-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.chip {
  padding: 8px 16px;
  border-radius: var(--r-full);
  background: #fff;
  border: 1px solid var(--border);
  font-weight: 600;
  font-size: 13px;
  color: var(--text-secondary);
}
.chip:hover { color: var(--primary); border-color: var(--primary); }
.chip.chip-active { background: var(--primary-gradient); border-color: var(--primary); color: #fff; }
.wallet-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
}
.wallet-item {
  position: relative;
  background: #fff; border-radius: var(--r-lg);
  padding: 18px; box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column; gap: 10px;
}
.wallet-item-remove {
  position: absolute; top: 10px; right: 10px;
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 50%;
  border: none; background: transparent; color: var(--text-light);
  cursor: pointer; transition: background .15s, color .15s;
}
.wallet-item-remove:hover { background: rgba(220,38,38,0.10); color: var(--error, #DC2626); }
.wallet-item-remove .icon { --icon-size: 16px; }
.wallet-item .top {
  display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700;
  letter-spacing: 0.5px; padding-right: 28px; /* clear of the X */
}
.wallet-item .dot { width: 8px; height: 8px; border-radius: 50%; }
.wallet-item .name { font-size: 16px; font-weight: 700; line-height: 1.4; margin: 0; }
.wallet-item .meta { font-size: 12px; color: var(--text-secondary); display: inline-flex; align-items: center; gap: 6px; }
.wallet-item .meta .icon { --icon-size: 14px; color: var(--warning); }
.wallet-item .actions { display: flex; gap: 8px; margin-top: auto; padding-top: 8px; }
.wallet-item .actions button { flex: 1; font-size: 13px; padding: 10px; }
.wallet-empty { text-align: center; padding: 64px 24px; }
.wallet-empty .empty-icon { --icon-size: 56px; color: var(--primary); margin-bottom: 12px; }
.wallet-empty h3 { margin: 0 0 6px; }
.wallet-empty p { color: var(--text-secondary); margin: 0 0 20px; }

/* ─── Lewte ─────────────────────────────────────────────────── */
.lewte-logo {
  font-family: var(--lewte-font, inherit);
  font-style: normal;
  background: var(--primary-gradient);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.points-card {
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-xl);
  padding: 32px;
  margin-bottom: 24px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 18px;
}
.points-numbers {
  font-size: 72px; font-weight: 800; line-height: 1;
  display: flex; align-items: center; gap: 14px;
}
.points-numbers .slash { font-weight: 800; opacity: 0.85; font-style: italic; }
.points-sub { font-size: 15px; opacity: 0.9; max-width: 36ch; }
.points-divider { width: 100%; height: 1px; background: rgba(255,255,255,0.25); }
.points-row { width: 100%; display: flex; gap: 16px; }
.points-box {
  flex: 1; background: rgba(255,255,255,0.16);
  border-radius: var(--r-lg); padding: 18px;
  text-align: center;
}
.points-box strong { display: block; font-size: 34px; font-weight: 800; line-height: 1; }
.points-box span { display: block; margin-top: 6px; font-size: 13px; opacity: 0.9; }
.btn-points-history {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; padding: 15px 16px;
  background: #fff; color: var(--primary);
  border: 0; border-radius: var(--r-md);
  font-family: inherit; font-weight: 700; font-size: 15px; cursor: pointer;
  box-shadow: var(--shadow-sm);
}
.btn-points-history:hover { transform: translateY(-1px); }
.btn-points-history .icon { --icon-size: 18px; }

/* ─── Lewte rewards dashboard (2×2 grid) ─────────────────────────── */
.lewte-dash {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 18px;
  align-items: stretch;
}
.ld-card {
  border-radius: var(--r-xl);
  padding: 28px;
  display: flex;
  flex-direction: column;
}
/* White cards */
.ld-loot, .ld-welcome {
  background: var(--card);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-md);
  color: var(--text);
}
/* Gradient cards */
.ld-earn, .ld-points {
  background: var(--primary-gradient);
  color: #fff;
}
.ld-eyebrow {
  display: inline-block;
  font-size: 12px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--primary);
  background: rgba(124,58,237,0.10);
  padding: 5px 12px; border-radius: var(--r-full);
  align-self: flex-start;
}

/* Daily Loot */
.ld-loot-head { display: flex; align-items: center; gap: 14px; }
.ld-loot-icon {
  width: 52px; height: 52px; flex: none; border-radius: 50%;
  background: var(--primary-gradient); color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.ld-loot-icon .icon { --icon-size: 26px; }
.ld-loot-headtext { display: flex; flex-direction: column; gap: 6px; }
.ld-loot-title { font-size: 26px; font-weight: 800; line-height: 1; }
.ld-loot-plus { margin-left: auto; font-size: 34px; font-weight: 800; color: var(--primary); }
.ld-loot-desc { margin-top: 16px; color: var(--primary); font-size: 15px; line-height: 1.5; flex: 1; }
.ld-loot-foot {
  margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.ld-loot-foot-label { color: var(--text-secondary); font-size: 15px; }
.ld-loot-chip {
  background: rgba(124,58,237,0.10); color: var(--primary);
  font-weight: 700; padding: 10px 18px; border-radius: var(--r-full);
}

/* Ways to earn */
.ld-earn-heading { font-size: 16px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.95; }
.ld-earn-feature { margin-top: 18px; }
.ld-earn-feature-head { display: flex; align-items: center; gap: 10px; font-size: 20px; }
.ld-earn-feature-head .icon { --icon-size: 24px; }
.ld-earn-feature > p { margin-top: 12px; font-size: 15px; line-height: 1.5; opacity: 0.92; }
/* Pagination dashes — one per WAYS_TO_EARN card; active one is solid white. */
.ld-earn-dots { margin-top: 20px; display: flex; gap: 7px; }
.ld-earn-dot {
  flex: 1; min-width: 0; height: 4px; padding: 0; border: 0;
  border-radius: 2px; background: rgba(255,255,255,0.35);
  cursor: pointer; transition: background .25s;
}
.ld-earn-dot.active { background: #fff; }
.ld-fade { animation: ldFade .35s ease; }
@keyframes ldFade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
.ld-earn-more {
  margin-top: auto; align-self: flex-start;
  display: inline-flex; align-items: center; gap: 8px;
  background: rgba(255,255,255,0.18); color: #fff; border: 0;
  padding: 11px 18px; border-radius: var(--r-full);
  font-family: inherit; font-weight: 700; font-size: 14px; cursor: pointer;
}
.ld-earn-more:hover { background: rgba(255,255,255,0.28); }
.ld-earn-more .icon { --icon-size: 16px; }

/* Welcome back */
.ld-welcome-row { display: flex; align-items: center; gap: 16px; margin-top: 14px; }
.ld-avatar {
  width: 64px; height: 64px; flex: none; border-radius: 50%;
  background: var(--primary-gradient); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 26px; font-weight: 800; overflow: hidden;
  border: 3px solid rgba(124,58,237,0.20);
}
.ld-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ld-welcome-name { font-size: 32px; font-weight: 800; line-height: 1.05; }
.ld-welcome-copy { margin-top: 18px; color: var(--text-secondary); font-size: 15px; line-height: 1.55; flex: 1; }

/* Points card inside the grid: tighter than the old full-width banner */
.ld-points { align-items: center; text-align: center; gap: 16px; }
.ld-points .points-numbers { font-size: 60px; }
.ld-points .points-sub { font-size: 14px; opacity: 0.92; max-width: 32ch; }
.ld-points .points-divider { width: 100%; height: 1px; background: rgba(255,255,255,0.25); }
.ld-points .points-row { width: 100%; display: flex; gap: 14px; }
.ld-points .btn-points-history { margin-top: 4px; }

/* Full-width scan bar under the dashboard. Overrides .btn-scan's translucent-
   white styling (meant for inside the purple card) so it reads on the light
   page background. */
/* Two short actions side by side under the dashboard. */
.lewte-action-row {
  display: flex; gap: 12px; margin-bottom: 22px;
}
.lewte-action-row .btn-scan { flex: 1 1 0; min-width: 0; margin: 0; }
.btn-scan.lewte-scan-bar {
  background: var(--primary-gradient);
  color: #fff;
  box-shadow: var(--shadow-md);
}
.btn-scan.lewte-scan-bar:hover { background: var(--primary-gradient-hover); transform: translateY(-1px); }
/* Secondary "Redeem a promo code" — outlined so the QR scan bar stays the
   primary call to action. */
.btn-scan.lewte-promo-bar {
  background: #fff;
  color: var(--primary);
  border: 1.5px solid var(--primary);
  box-shadow: var(--shadow-sm);
}
.btn-scan.lewte-promo-bar:hover { background: var(--bg); transform: translateY(-1px); }
/* Stack again on narrow screens so the labels don't get cramped. */
@media (max-width: 520px) { .lewte-action-row { flex-direction: column; } }

@media (max-width: 760px) {
  .lewte-dash { grid-template-columns: 1fr; gap: 16px; }
  .ld-card { padding: 22px; }
  .ld-welcome-name { font-size: 26px; }
  .ld-points .points-numbers { font-size: 52px; }
}

.tabs { display: flex; gap: 8px; margin-bottom: 18px; }
.tab {
  flex: 1; padding: 10px 18px;
  border-radius: var(--r-full);
  background: #fff;
  border: 1px solid var(--border);
  font-weight: 600;
  color: var(--text-secondary);
  font-size: 13px;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
}
.tab .icon { --icon-size: 14px; }
.tab:hover { color: var(--primary); }
.tab.tab-active { background: var(--primary-gradient); border-color: var(--primary); color: #fff; }

.search-box {
  display: flex; align-items: center; gap: 10px;
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 12px 16px; margin-bottom: 18px;
}
.search-box .icon { --icon-size: 18px; color: var(--text-light); }
.search-box input { flex: 1; border: none; outline: none; background: transparent; font-size: 14px; }

.coupon-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
}
@media (max-width: 1100px) { .coupon-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 820px)  { .coupon-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px)  { .coupon-grid { grid-template-columns: 1fr; } }
.coupon-card {
  background: #fff; border-radius: var(--r-lg);
  overflow: hidden; box-shadow: var(--shadow-sm);
  cursor: pointer;
  display: flex; flex-direction: column;
  transition: transform .15s, box-shadow .15s;
}
.coupon-card .coupon-body { flex: 1; }
.coupon-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }

/* Ad image area (hero) */
.coupon-ad, .deal-ad {
  position: relative;
  height: 210px;
  background: var(--ad-bg, var(--primary-gradient));
  overflow: hidden;
  display: flex; align-items: center; justify-content: center;
}
.coupon-ad img, .deal-ad img {
  width: 100%; height: 100%; object-fit: cover;
}
.coupon-ad .ad-placeholder, .deal-ad .ad-placeholder {
  font-size: 32px;
  font-weight: 800;
  color: rgba(255,255,255,0.95);
  letter-spacing: -0.5px;
  text-align: center;
  padding: 0 16px;
  line-height: 1.1;
  text-shadow: 0 2px 12px rgba(0,0,0,0.15);
}
.coupon-tag {
  position: absolute; top: 0; left: 0;
  padding: 6px 14px;
  font-size: 11px; font-weight: 800;
  color: #fff; border-bottom-right-radius: 8px;
  z-index: 2;
}
.coupon-tag.free { background: #065F46; }
.coupon-tag.discount { background: #DC2626; }
.coupon-body { padding: 14px 16px 18px; display: flex; flex-direction: column; min-height: 150px; }
.coupon-brand {
  display: inline-block;
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  padding: 3px 10px; border-radius: 4px;
  font-size: 11px; font-weight: 600;
  margin-bottom: 8px;
}
.coupon-title { font-size: 16px; font-weight: 700; margin: 0 0 10px; line-height: 1.35; }
.coupon-desc {
  font-size: 13px; color: var(--text-secondary);
  margin: 0 0 10px; line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.coupon-meta-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.coupon-meta-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 600;
  color: var(--text-secondary);
  background: var(--surface-2, #F4F4F8);
  padding: 4px 8px; border-radius: var(--r-full);
}
.coupon-meta-pill .icon { --icon-size: 12px; }
.coupon-rewards { font-size: 13px; color: var(--text-secondary); margin-bottom: 10px; display: inline-flex; align-items: center; gap: 6px; }
.coupon-rewards .icon { --icon-size: 14px; color: var(--primary); }
.coupon-rewards strong { color: var(--primary); }
.coupon-rewards .free-tag { color: var(--success); }
/* Cosmetic display URL on the card (text only, not clickable). */
.coupon-url {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--primary);
  margin-bottom: 14px; word-break: break-all;
}
.coupon-url .icon { --icon-size: 14px; flex-shrink: 0; }
/* Full-width "More details" CTA — the card's only button now; redeeming
   happens inside the details modal it opens. */
.coupon-card .btn-details {
  display: flex; width: 100%;
  align-items: center; justify-content: center; gap: 6px;
  margin-top: auto;
  border: 1.5px solid var(--primary);
  color: var(--primary);
  background: #fff;
  padding: 11px 14px;
  border-radius: var(--r-full);
  font-size: 12px; font-weight: 800;
  letter-spacing: 0.5px; text-transform: uppercase;
  cursor: pointer;
  transition: background .15s;
}
.coupon-card .btn-details:hover { background: rgba(124,58,237,0.07); }
.coupon-card .btn-details .icon { --icon-size: 14px; }
/* Make the whole deal card read as tappable (opens the details modal). */
.coupon-card { cursor: pointer; }

/* Fully-claimed (lifetime cap reached) deals. */
.coupon-card.coupon-sold-out .coupon-ad { filter: grayscale(0.7) opacity(0.7); }
.coupon-soldout-flag {
  position: absolute; top: 0; right: 0; z-index: 2;
  background: #6B7280; color: #fff;
  font-size: 11px; font-weight: 800; letter-spacing: 0.3px;
  padding: 5px 12px; border-bottom-left-radius: 8px;
}
.coupon-redeem[disabled], .coupon-detail-redeem[disabled] {
  background: var(--border, #E5E7EB); color: var(--text-secondary);
  cursor: not-allowed; box-shadow: none;
}

/* Empty state when there are no deals (or no search matches). */
.coupon-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 48px 24px;
  color: var(--text-secondary);
}
.coupon-empty .icon { --icon-size: 30px; color: var(--primary); opacity: 0.5; margin-bottom: 6px; }
.coupon-empty h3 { font-size: 17px; font-weight: 700; margin: 4px 0 6px; color: var(--text); }
.coupon-empty p { font-size: 13px; margin: 0; }

/* ─── Deal details modal ─────────────────────────────────────── */
.coupon-detail-card { max-width: 440px; width: 100%; padding: 0; overflow: hidden; }
.coupon-detail-hero { position: relative; }
.coupon-detail-hero .coupon-ad { width: 100%; height: 150px; border-radius: 0; }
.coupon-detail-hero .coupon-ad img { width: 100%; height: 100%; object-fit: cover; }
.coupon-detail-main { padding: 18px 22px 22px; }
.coupon-detail-main .coupon-brand { margin-bottom: 10px; }
.coupon-detail-title { font-size: 20px; font-weight: 800; line-height: 1.3; margin: 0 0 10px; }
.coupon-detail-desc { font-size: 14px; color: var(--text-secondary); line-height: 1.5; margin: 0 0 14px; }
.coupon-detail-rewards { font-size: 14px; color: var(--text-secondary); display: inline-flex; align-items: center; gap: 6px; margin-bottom: 14px; }
.coupon-detail-rewards .icon { --icon-size: 15px; color: var(--primary); }
.coupon-detail-rewards strong { color: var(--primary); }
.coupon-detail-rewards .free-tag { color: var(--success); }
.coupon-detail-facts { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.coupon-detail-fact { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-secondary); }
.coupon-detail-fact .icon { --icon-size: 14px; color: var(--text-secondary); flex: none; }
.coupon-detail-fact span { word-break: break-word; }
.coupon-detail-fine {
  background: var(--surface-2, #F4F4F8);
  border-radius: var(--r-md, 10px);
  padding: 12px 14px; margin-bottom: 18px;
}
.coupon-detail-fine h4 { font-size: 11px; font-weight: 800; letter-spacing: 0.5px; text-transform: uppercase; color: var(--text-secondary); margin: 0 0 6px; }
.coupon-detail-fine p { font-size: 12px; color: var(--text-secondary); line-height: 1.5; margin: 0; }
.coupon-detail-redeem.redeemed { background: var(--success); }

.panel-title { font-size: 14px; font-weight: 800; margin: 0 0 16px; letter-spacing: 0.5px; text-transform: uppercase; color: var(--text-secondary); }
.earn-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.earn-card { cursor: pointer; transition: transform .15s, box-shadow .15s; }
.earn-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }

/* Surveys list (under Earn tab) */
.surveys-head {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 4px;
}
.btn-back {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 12px;
  border-radius: var(--r-full);
  background: var(--bg);
  color: var(--text-secondary);
  font-size: 12px; font-weight: 600;
}
.btn-back:hover { background: var(--border); color: var(--primary); }
.detail-topbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.detail-topbar .btn-back { margin: 0; }
.surveys-sub { color: var(--text-secondary); font-size: 13px; margin: 6px 0 18px; }
.survey-list { display: flex; flex-direction: column; gap: 10px; }
.survey-item {
  background: #fff; border-radius: var(--r-lg);
  padding: 16px 18px;
  display: flex; align-items: center; gap: 16px;
  box-shadow: var(--shadow-sm);
  border-left: 4px solid var(--primary);
  transition: transform .15s, box-shadow .15s;
}
.survey-item:not(.done) { cursor: pointer; }
.survey-item:not(.done):hover { transform: translateX(2px); box-shadow: var(--shadow-md); }
.survey-item.done { opacity: 0.7; border-left-color: var(--success); }
.survey-info { flex: 1; min-width: 0; }
.survey-row-sponsor {
  display: inline-block;
  font-size: 11px; font-weight: 600; letter-spacing: 0.3px;
  color: var(--primary);
  background: rgba(124,58,237,0.12);
  padding: 2px 10px; border-radius: var(--r-full);
  margin-bottom: 6px;
}
.survey-info h4 { margin: 0 0 6px; font-size: 15px; font-weight: 700; line-height: 1.35; }
.survey-row-meta {
  display: flex; gap: 14px; font-size: 12px; color: var(--text-secondary);
}
.survey-row-meta span { display: inline-flex; align-items: center; gap: 4px; }
.survey-row-meta .icon { --icon-size: 13px; }
.survey-action { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.survey-pts { font-size: 13px; font-weight: 800; color: var(--primary); }
.survey-done-pill {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(16,185,129,0.12); color: var(--success);
  padding: 6px 12px; border-radius: var(--r-full);
  font-size: 12px; font-weight: 700;
}
.survey-done-pill .icon { --icon-size: 12px; }

/* Survey modal */
.survey-card {
  max-width: 520px;
  padding: 28px 28px 22px;
}
.survey-head { margin-bottom: 18px; }
.survey-sponsor {
  display: inline-block;
  font-size: 11px; font-weight: 700; letter-spacing: 0.5px;
  color: var(--primary);
  background: rgba(124,58,237,0.12);
  padding: 3px 10px; border-radius: var(--r-full);
  text-transform: uppercase;
}
.survey-head h2 { margin: 8px 0 10px; font-size: 20px; line-height: 1.3; }
.survey-meta {
  display: flex; gap: 14px; font-size: 12px; color: var(--text-secondary);
  margin-bottom: 14px;
}
.survey-meta span { display: inline-flex; align-items: center; gap: 4px; }
.survey-meta .icon { --icon-size: 13px; color: var(--primary); }
.survey-progress {
  height: 6px; background: var(--border); border-radius: var(--r-full);
  overflow: hidden;
}
.survey-progress span {
  display: block; height: 100%;
  background: linear-gradient(90deg, var(--primary), var(--primary-magenta));
  border-radius: var(--r-full);
  transition: width .25s ease;
}
.survey-progress-text {
  font-size: 11px; color: var(--text-light);
  margin-top: 6px; font-weight: 600; letter-spacing: 0.3px; text-transform: uppercase;
}
.survey-body { padding: 8px 0 18px; }
.survey-question {
  font-size: 16px; font-weight: 700;
  margin-bottom: 14px; line-height: 1.45;
}
.survey-options { display: flex; flex-direction: column; gap: 8px; }
.survey-option {
  text-align: left;
  padding: 12px 16px;
  border-radius: var(--r-md);
  background: var(--bg);
  border: 1.5px solid var(--border);
  font-size: 14px; font-weight: 500;
  color: var(--text);
  transition: background .15s, border-color .15s;
}
.survey-option:hover { border-color: var(--primary); }
.survey-option.selected {
  background: rgba(124,58,237,0.1);
  border-color: var(--primary);
  color: var(--primary);
  font-weight: 700;
}
.survey-textarea {
  width: 100%;
  padding: 14px;
  border: 1.5px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg);
  font-size: 14px; line-height: 1.5;
  resize: vertical; min-height: 90px;
  outline: none;
}
.survey-textarea:focus { border-color: var(--primary); background: #fff; }
.survey-actions {
  display: flex; justify-content: space-between; gap: 8px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}
.survey-actions .btn-ghost { padding: 10px 18px; font-size: 14px; }
.survey-actions .btn-ghost:disabled { opacity: 0.4; pointer-events: none; }
.survey-actions .btn-primary { padding: 10px 18px; font-size: 14px; }
.earn-card {
  border-radius: var(--r-lg);
  padding: 24px;
  color: #fff;
}
.earn-card .card-icon { --icon-size: 32px; margin-bottom: 10px; opacity: 0.95; }
.earn-card h4 { margin: 0 0 6px; font-size: 17px; }
.earn-card p { margin: 0; font-size: 13px; opacity: 0.9; line-height: 1.5; }

.badge-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 14px;
}
.badge-card {
  background: #fff; border-radius: var(--r-lg);
  padding: 24px 16px; text-align: center;
  box-shadow: var(--shadow-sm);
  position: relative;
}
.badge-card.locked { opacity: 0.65; }
/* "Quest" classification tag on quest-reward badges. */
.badge-class-tag {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 10.5px; font-weight: 800; letter-spacing: 0.3px;
  padding: 3px 8px; border-radius: var(--r-full);
}
.badge-class-tag .icon { --icon-size: 11px; }
.badge-class-quest { background: rgba(124,58,237,0.12); color: var(--primary); }
.badge-card .badge-class-tag { position: absolute; top: 10px; left: 10px; }
.badge-card .badge-icon { --icon-size: 38px; color: var(--primary); margin-bottom: 10px; }
.badge-card.locked .badge-icon { color: var(--text-light); }
.badge-card h4 { margin: 0 0 4px; font-size: 14px; }
.badge-card p { margin: 0 0 8px; font-size: 11px; color: var(--text-secondary); }
.badge-card .pts { font-size: 13px; font-weight: 700; color: var(--primary); }
.badge-card .progress { height: 6px; background: var(--border); border-radius: 3px; margin-top: 10px; overflow: hidden; }
.badge-card .progress span { display: block; height: 100%; background: var(--primary-gradient); }
.badge-card .earned { font-size: 12px; font-weight: 600; color: var(--success); margin-top: 6px; display: inline-flex; align-items: center; gap: 4px; }
.badge-card .earned .icon { --icon-size: 12px; }

/* ─── Quests ────────────────────────────────────────────────── */
.quests-loading { padding: 40px; text-align: center; color: var(--text-secondary); }
.quests-empty { padding: 44px 24px; text-align: center; color: var(--text-secondary); }
.quests-empty .icon { --icon-size: 40px; color: var(--primary-light); margin-bottom: 12px; }
.quests-empty h3 { margin: 0 0 6px; font-size: 17px; color: var(--text); }
.quests-empty p { margin: 0 auto 16px; font-size: 13px; max-width: 340px; line-height: 1.55; }
.quests-intro { margin-bottom: 14px; }
.quests-sub { margin: -8px 0 0; font-size: 13px; color: var(--text-secondary); }
.quests-list { display: grid; gap: 16px; }

.quest-card {
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: 18px 18px 16px; box-shadow: var(--shadow-sm);
  border-top: 3px solid var(--qc, var(--primary));
}
.quest-card-done { opacity: 0.82; }
.quest-card-head { display: flex; gap: 13px; align-items: flex-start; }
.quest-icon {
  flex: 0 0 auto; width: 42px; height: 42px; border-radius: 12px;
  display: grid; place-items: center; color: #fff;
  background: var(--qc, var(--primary));
}
.quest-icon .icon { --icon-size: 22px; }
.quest-head-text { flex: 1; min-width: 0; }
.quest-head-text h4 { margin: 0 0 3px; font-size: 16px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.quest-head-text p { margin: 4px 0 0; font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
.quest-complete-pill {
  display: inline-flex; align-items: center; gap: 3px; font-size: 11px; font-weight: 700;
  color: var(--success); background: rgba(16,185,129,0.12); padding: 2px 8px; border-radius: var(--r-full);
}
.quest-complete-pill .icon { --icon-size: 12px; }
.quest-partner { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-secondary); font-weight: 600; }
.quest-partner img { width: 18px; height: 18px; border-radius: 5px; object-fit: cover; }

.quest-rewards { display: flex; flex-wrap: wrap; gap: 8px; margin: 13px 0 12px; }
.quest-reward {
  display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700;
  color: var(--warning); background: rgba(245,158,11,0.12); padding: 4px 10px; border-radius: var(--r-full);
}
.quest-reward .icon { --icon-size: 14px; }
.quest-badge-chip {
  display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700;
  color: var(--c, var(--primary)); background: color-mix(in srgb, var(--c, #7C3AED) 12%, transparent);
  padding: 4px 10px; border-radius: var(--r-full);
}
.quest-badge-chip .icon { --icon-size: 13px; }
.quest-prize-chip {
  display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700;
  color: var(--success); background: rgba(16,185,129,0.12);
  padding: 4px 10px; border-radius: var(--r-full);
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.quest-prize-chip .icon { --icon-size: 13px; flex: none; }

/* Exclusive prize block in the quest detail modal. */
.quest-prize {
  display: flex; align-items: center; gap: 14px;
  background: linear-gradient(135deg, rgba(16,185,129,0.10), rgba(124,58,237,0.08));
  border: 1px solid rgba(16,185,129,0.25);
  border-radius: var(--r-lg, 14px); padding: 14px 16px; margin: 0 0 16px;
}
.quest-prize-img { width: 56px; height: 56px; border-radius: 10px; object-fit: cover; flex: none; }
.quest-prize-icon { width: 48px; height: 48px; border-radius: 10px; flex: none; display: flex; align-items: center; justify-content: center; background: rgba(16,185,129,0.15); color: var(--success); }
.quest-prize-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.quest-prize-label { font-size: 10.5px; font-weight: 800; letter-spacing: 0.5px; text-transform: uppercase; color: var(--success); }
.quest-prize-text strong { font-size: 15px; color: var(--text); }
.quest-prize-desc { font-size: 13px; color: var(--text-secondary); line-height: 1.4; }

/* Prize section in the quest editor. */
.quest-prize-editor { border: 1px solid var(--border); border-radius: var(--r-lg, 14px); padding: 14px 16px; margin: 4px 0 6px; }
.quest-prize-editor h4 { margin: 0 0 10px; font-size: 14px; font-weight: 800; }

/* ─── School picker (searchable multi-select for targeting) ──────── */
.school-picker { position: relative; }
.sp-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.sp-chips:empty { display: none; }
.sp-chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(124,58,237,0.12); color: var(--primary);
  font-size: 12.5px; font-weight: 600; padding: 4px 6px 4px 10px; border-radius: var(--r-full);
}
.sp-chip button { display: inline-flex; border: none; background: rgba(124,58,237,0.18); color: var(--primary); border-radius: 50%; width: 18px; height: 18px; align-items: center; justify-content: center; cursor: pointer; }
.sp-chip button .icon { --icon-size: 12px; }
.sp-search { width: 100%; }
.sp-results {
  position: absolute; left: 0; right: 0; z-index: 20;
  margin-top: 4px; max-height: 280px; overflow-y: auto;
  background: var(--surface, #fff); border: 1px solid var(--border);
  border-radius: var(--r-md, 10px); box-shadow: var(--shadow-md);
}
.sp-result {
  display: flex; flex-direction: column; gap: 2px; width: 100%; text-align: left;
  padding: 9px 12px; border: none; background: none; cursor: pointer; font-size: 13.5px; color: var(--text);
}
.sp-result:hover { background: rgba(124,58,237,0.08); }
.sp-result-dom { font-size: 11.5px; color: var(--text-secondary); }
.sp-empty { padding: 12px; font-size: 13px; color: var(--text-secondary); }

/* Single-select school dropdown (signup) */
.school-select { position: relative; }
.school-select .ss-search { width: 100%; }
.school-select .ss-results {
  position: absolute; left: 0; right: 0; z-index: 20;
  margin-top: 4px; max-height: 260px; overflow-y: auto;
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--r-md, 10px); box-shadow: var(--shadow-md);
}
.school-select .ss-result {
  display: block; width: 100%; text-align: left;
  padding: 9px 12px; border: none; background: none; cursor: pointer;
  font-size: 13.5px; color: var(--text);
}
.school-select .ss-result:hover { background: rgba(124,58,237,0.08); }
.school-select .ss-empty { padding: 12px; font-size: 13px; color: var(--text-secondary); }

/* Signup email-verification step */
#authVerifyStep { text-align: left; }
.auth-verify-sub { font-size: 14px; color: var(--text-secondary); margin: 4px 0 18px; }
.auth-verify-sub strong { color: var(--text); }
#authVerifyCode {
  width: 100%; text-align: center; letter-spacing: 8px;
  font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums;
  padding: 12px;
}
.auth-verify-status { font-size: 13px; font-weight: 600; margin: 4px 0 12px; text-align: center; }
.auth-verify-status.is-error { color: #B91C1C; }
.auth-verify-resend {
  display: block; margin: 12px auto 0; background: none; border: none;
  color: var(--primary); font-weight: 700; font-size: 13px; cursor: pointer;
}
.auth-verify-resend:hover { text-decoration: underline; }

.quest-progress-bar { height: 7px; background: var(--border); border-radius: 4px; overflow: hidden; }
.quest-progress-bar span { display: block; height: 100%; background: var(--qc, var(--primary-gradient)); transition: width 0.3s ease; }
.quest-progress-label { font-size: 11.5px; color: var(--text-secondary); font-weight: 600; margin: 6px 0 4px; }

.quest-tasks { list-style: none; padding: 0; margin: 10px 0 0; display: grid; gap: 2px; }
.quest-task { display: flex; align-items: center; gap: 11px; padding: 9px 4px; border-top: 1px solid var(--border); }
.quest-task-check { flex: 0 0 auto; display: grid; place-items: center; width: 18px; height: 18px; color: var(--success); }
.quest-task-check .icon { --icon-size: 18px; }
.quest-task-dot { width: 12px; height: 12px; border: 2px solid var(--border); border-radius: 50%; }
.quest-task-title { flex: 1; font-size: 13.5px; color: var(--text); }
.quest-task-complete .quest-task-title { color: var(--text-secondary); }
.quest-task-action { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 8px; }
.quest-task-count { font-size: 12.5px; font-weight: 700; color: var(--text-secondary); }
.quest-task-badge-done { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--success); }
.quest-task-badge-done .icon { --icon-size: 13px; }
.quest-task-action .btn-sm { padding: 5px 12px; font-size: 12.5px; }

/* Admin quest editor */
.quest-editor { margin-top: 8px; }
.quest-active-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 600; margin: 4px 0 8px; cursor: pointer; }
.quest-tasks-editor { border-top: 1px solid var(--border); margin-top: 16px; padding-top: 16px; }
.quest-tasks-editor-head { display: flex; align-items: center; justify-content: space-between; }
.quest-tasks-editor-head h4 { margin: 0; font-size: 15px; }
.quest-tasks-editor-hint { margin: 4px 0 12px; font-size: 12.5px; color: var(--text-secondary); }
.quest-task-row { padding: 12px; border: 1px solid var(--border); border-radius: var(--r-md); margin-bottom: 10px; background: var(--bg); }
.quest-task-row-main { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.qtr-field { display: flex; flex-direction: column; gap: 4px; }
.qtr-field > span { font-size: 11px; font-weight: 700; color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.03em; }
.qtr-field > span em { text-transform: none; font-weight: 500; font-style: normal; color: var(--text-light); }
.qtr-field select, .qtr-field input { padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r-sm); font-size: 13px; background: #fff; }
.qtr-type select { min-width: 150px; }
.qtr-num input { width: 130px; }
.qtr-survey, .qtr-qr { flex: 1 1 160px; }
.qtr-survey select, .qtr-qr select { width: 100%; }
.qtr-url { flex: 1 1 200px; }
.qtr-url input { width: 100%; }
.qtr-platform input { width: 130px; }
.qtr-title { flex: 1 1 170px; }
.qtr-title input { width: 100%; }
.qtr-remove { margin-left: auto; align-self: center; }
.quest-task-preview { margin-top: 10px; font-size: 12.5px; color: var(--text-secondary); display: flex; align-items: center; gap: 6px; }
.quest-task-preview .icon { --icon-size: 13px; color: var(--primary-light); }
.quest-task-preview strong { color: var(--text); font-weight: 700; }

/* Color swatch field */
.color-field { display: flex; align-items: center; gap: 10px; }
.color-field input[type="color"] { width: 46px; height: 42px; padding: 0; border: 1px solid var(--border); border-radius: var(--r-sm); background: none; cursor: pointer; flex: 0 0 auto; }
.color-field input[type="color"]::-webkit-color-swatch-wrapper { padding: 3px; }
.color-field input[type="color"]::-webkit-color-swatch { border: none; border-radius: 5px; }
.color-hex { flex: 1; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--r-sm); font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 13px; text-transform: uppercase; }

/* Icon picker */
.icon-picker { display: flex; flex-wrap: wrap; gap: 8px; }
.icon-choice { width: 44px; height: 44px; display: grid; place-items: center; border: 1.5px solid var(--border); border-radius: var(--r-md); background: #fff; color: var(--text-secondary); cursor: pointer; transition: border-color .15s, background .15s, color .15s, box-shadow .15s; }
.icon-choice .icon { --icon-size: 20px; }
.icon-choice:hover { border-color: var(--primary-light); color: var(--primary); }
.icon-choice.selected { border-color: var(--primary); background: color-mix(in srgb, var(--primary) 10%, transparent); color: var(--primary); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 12%, transparent); }

/* Toggle switch */
.switch-row { display: inline-flex; align-items: center; gap: 12px; margin: 6px 0 10px; cursor: pointer; }
.switch { position: relative; display: inline-block; width: 44px; height: 26px; flex: 0 0 auto; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch-slider { position: absolute; inset: 0; background: var(--border); border-radius: var(--r-full); transition: background 0.2s; }
.switch-slider::before { content: ""; position: absolute; height: 20px; width: 20px; left: 3px; top: 3px; background: #fff; border-radius: 50%; transition: transform 0.2s; box-shadow: var(--shadow-sm); }
.switch input:checked + .switch-slider { background: var(--primary); }
.switch input:checked + .switch-slider::before { transform: translateX(18px); }
.switch input:focus-visible + .switch-slider { box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 25%, transparent); }
.switch-text { font-size: 14px; font-weight: 600; }

/* Legal / policy document pages */
.legal-doc { max-width: 760px; margin: 0 auto; padding: 8px 4px 60px; }
.legal-doc .back-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 18px; }
.legal-doc .back-link .icon { --icon-size: 16px; }
.legal-doc h1 { font-size: 30px; margin: 0 0 6px; }
.legal-doc .legal-eff { font-size: 14px; color: var(--text-secondary); margin: 0 0 24px; }
.legal-doc h2 { font-size: 19px; margin: 30px 0 10px; padding-top: 18px; border-top: 1px solid var(--border); }
.legal-doc h3 { font-size: 15px; margin: 20px 0 6px; color: var(--text); }
.legal-doc p { font-size: 14.5px; line-height: 1.7; color: var(--text-secondary); margin: 0 0 12px; }
.legal-doc p strong { color: var(--text); }
.legal-doc ul { margin: 0 0 14px; padding-left: 22px; }
.legal-doc li { font-size: 14.5px; line-height: 1.6; color: var(--text-secondary); margin-bottom: 5px; }
.legal-doc a { color: var(--primary); text-decoration: underline; }

/* ─── About page ──────────────────────────────────────────────── */
.about-body { max-width: 820px; margin: 0 auto; padding: 4px 4px 60px; }
.about-block { margin: 28px 0; }
.about-block h2 { font-size: 22px; font-weight: 800; margin: 0 0 10px; letter-spacing: -0.3px; }
.about-block > p { font-size: 15.5px; line-height: 1.7; color: var(--text-secondary); margin: 0 0 14px; }
.about-values {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 18px;
}
@media (max-width: 640px) { .about-values { grid-template-columns: 1fr; } }
.about-value {
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: 20px 18px; box-shadow: var(--shadow-sm);
}
.about-value .icon { --icon-size: 26px; color: var(--primary); margin-bottom: 10px; display: block; }
.about-value h3 { font-size: 16px; font-weight: 800; margin: 0 0 6px; }
.about-value p { font-size: 13.5px; line-height: 1.55; color: var(--text-secondary); margin: 0; }
.about-mission { margin: 34px 0; }
.about-cta-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.about-cta-row .btn-primary,
.about-cta-row .btn-ghost {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 12px 22px; border-radius: var(--r-full); font-weight: 700; font-size: 14px;
  text-decoration: none;
}
.about-cta-row .btn-ghost { border: 1.5px solid var(--primary); color: var(--primary); }
.about-cta-row .btn-primary .icon { --icon-size: 16px; }

/* Reward redemption confirm modal */
.redeem-modal-card { max-width: 380px; text-align: center; padding: 30px 26px 24px; }
.redeem-modal-icon {
  width: 60px; height: 60px; margin: 0 auto 14px; border-radius: 50%;
  display: grid; place-items: center; color: #fff; background: var(--primary-gradient);
}
.redeem-modal-icon .icon { --icon-size: 28px; }
.redeem-modal-card h2 { margin: 0 0 6px; font-size: 20px; }
.redeem-modal-desc { margin: 0 0 18px; font-size: 14px; color: var(--text-secondary); line-height: 1.5; }
.redeem-cost { display: flex; flex-direction: column; align-items: center; gap: 4px; margin-bottom: 14px; }
.redeem-cost-badge {
  display: inline-flex; align-items: center; gap: 8px; font-size: 22px; font-weight: 800;
  color: var(--primary-dark); background: color-mix(in srgb, var(--primary) 12%, transparent);
  padding: 10px 20px; border-radius: var(--r-full);
}
.redeem-cost-badge .icon { --icon-size: 20px; color: var(--primary); }
.redeem-cost-sub { font-size: 12.5px; color: var(--text-light); font-weight: 600; }
.redeem-balance { margin: 0 0 20px; font-size: 13px; color: var(--text-secondary); font-weight: 600; }
.redeem-balance-low { color: var(--error); }
.redeem-actions { display: flex; gap: 10px; }
.redeem-actions .btn-ghost, .redeem-actions .btn-primary { flex: 1; padding: 12px; font-size: 14px; }
.redeem-actions .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }

/* Generic confirm dialog — mirrors the redeem modal's centered layout. */
.confirm-modal-card { max-width: 380px; text-align: center; padding: 30px 26px 24px; }
.confirm-modal-icon {
  width: 60px; height: 60px; margin: 0 auto 14px; border-radius: 50%;
  display: grid; place-items: center; color: #fff; background: var(--primary-gradient);
}
.confirm-modal-icon.danger { background: var(--error, #DC2626); }
.confirm-modal-icon .icon { --icon-size: 26px; }
.confirm-modal-card h2 { margin: 0 0 6px; font-size: 20px; }
.confirm-modal-desc { margin: 0 0 20px; font-size: 14px; color: var(--text-secondary); line-height: 1.5; }
.confirm-actions { display: flex; gap: 10px; }
.confirm-actions .btn-ghost, .confirm-actions .btn-primary, .confirm-actions .btn-danger { flex: 1; padding: 12px; font-size: 14px; }

/* Exclusive badge indicator in the admin badge list */
.badge-exclusive-pill { display: inline-block; font-size: 10.5px; font-weight: 800; letter-spacing: 0.03em; text-transform: uppercase; color: #B45309; background: rgba(245,158,11,0.16); padding: 1px 7px; border-radius: var(--r-full); }

/* Inline photo uploader (quests + badges) */
.img-upload { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.img-upload-preview { width: 96px; height: 96px; border-radius: var(--r-md); border: 1px dashed var(--border); background: var(--bg); display: grid; place-items: center; overflow: hidden; flex: 0 0 auto; }
.img-upload-preview img { width: 100%; height: 100%; object-fit: cover; }
.img-upload-empty { font-size: 11px; color: var(--text-light); text-align: center; padding: 0 6px; }
.img-upload-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.qtr-points input { width: 84px; }
.qtr-points input.is-locked { background: var(--bg); color: var(--text-secondary); cursor: not-allowed; }
.badge-art { border-radius: 7px; object-fit: cover; vertical-align: middle; }
.badge-icon-art { display: block; width: 46px; height: 46px; border-radius: 10px; object-fit: cover; margin: 0 auto 10px; }

/* Coupon-style quest cards */
.quests-list { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.quest-card2 { background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-sm); cursor: pointer; transition: box-shadow .15s, transform .15s; display: flex; flex-direction: column; }
.quest-card2:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.quest-card2.is-done { opacity: 0.85; }
.quest-card2-media { position: relative; height: 130px; }
.quest-card2-media .coupon-ad { width: 100%; height: 100%; border-radius: 0; }
.quest-card2-media .coupon-ad img { width: 100%; height: 100%; object-fit: cover; }
.quest-card-flag { position: absolute; top: 10px; left: 10px; display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; color: #fff; background: rgba(0,0,0,0.55); backdrop-filter: blur(2px); padding: 4px 9px; border-radius: var(--r-full); }
.quest-card-flag.done { background: var(--success); }
.quest-card-flag .icon { --icon-size: 12px; }
.quest-card2-body { padding: 14px 15px 15px; display: flex; flex-direction: column; flex: 1; }
.quest-card2-body h4 { margin: 4px 0 4px; font-size: 16px; }
.quest-card2-desc { margin: 0 0 10px; font-size: 13px; color: var(--text-secondary); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.quest-card2-body .quest-rewards { margin: 2px 0 12px; }
.quest-card2-body .quest-progress-bar { margin-top: auto; }
.quest-enter-btn { margin-top: 12px; align-self: flex-start; display: inline-flex; align-items: center; gap: 6px; }

/* Quest detail modal */
.quest-modal-card { max-width: 520px; padding: 0; overflow: hidden; }
.quest-detail-media { height: 190px; }
.quest-detail-media .coupon-ad { width: 100%; height: 100%; border-radius: 0; }
.quest-detail-media .coupon-ad img { width: 100%; height: 100%; object-fit: cover; }
.quest-detail-body { padding: 20px 22px 24px; }
.quest-detail-body h2 { margin: 6px 0 8px; font-size: 21px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.quest-detail-desc { margin: 0 0 14px; font-size: 14px; color: var(--text-secondary); line-height: 1.6; }
.quest-detail-body .quest-rewards { margin-bottom: 14px; }
.quest-deadline-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700; color: var(--text-secondary); background: var(--bg); border: 1px solid var(--border); padding: 4px 10px; border-radius: var(--r-full); }
.quest-deadline-chip .icon { --icon-size: 13px; }
.quest-task-pts { font-size: 11px; font-weight: 800; color: var(--warning); background: rgba(245,158,11,0.14); padding: 1px 6px; border-radius: var(--r-full); margin-left: 4px; }

/* ─── Essay ─────────────────────────────────────────────────── */
.essay-card {
  background: #fff; border-radius: var(--r-lg);
  padding: 24px; box-shadow: var(--shadow-sm);
  margin-bottom: 16px;
}
.essay-card label { display: block; font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.essay-card textarea {
  width: 100%; padding: 14px;
  border: 1px solid var(--border); border-radius: var(--r-md);
  background: var(--bg); resize: vertical;
  font-size: 14px; line-height: 1.55;
  outline: none;
}
.essay-card textarea:focus { border-color: var(--primary); }
.essay-card .btn-primary { margin-top: 14px; }
.essay-response {
  background: #fff; border-radius: var(--r-lg);
  padding: 22px; border-left: 4px solid var(--primary);
}
.essay-response .response-label {
  display: block; font-size: 12px; font-weight: 700; color: var(--primary);
  letter-spacing: 0.5px; text-transform: uppercase; margin-bottom: 10px;
}
.essay-response p { margin: 0; font-size: 14px; line-height: 1.65; white-space: pre-line; }

/* ─── Jobs list page ───────────────────────────────────────── */
.job-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 14px;
}
.job-row {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 18px;
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column; gap: 12px;
  transition: transform .15s, box-shadow .15s;
}
.job-row:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.job-row .job-top { display: flex; align-items: center; gap: 14px; }
.job-row .job-title { margin: 0; font-size: 16px; font-weight: 700; line-height: 1.3; }
.job-row .job-company { font-size: 13px; color: var(--text-secondary); margin-top: 2px; }
.job-row .job-desc { font-size: 13px; color: var(--text-secondary); margin: 0; line-height: 1.5; }
.job-row .job-meta {
  display: flex; gap: 6px; flex-wrap: wrap; font-size: 12px;
}
.job-row .job-pill {
  background: var(--bg); color: var(--text-secondary);
  padding: 4px 10px; border-radius: var(--r-full); font-weight: 500;
}
.job-row .job-pill.pay {
  background: rgba(16,185,129,0.12); color: var(--success); font-weight: 700;
}
.job-row .job-actions { display: flex; gap: 8px; margin-top: 4px; }
.job-row .btn-primary, .job-row .btn-ghost { flex: 1; font-size: 13px; padding: 10px; }
.job-empty { text-align: center; padding: 64px 24px; color: var(--text-secondary); }

/* My-jobs card: pin the remove (X) to the top-right corner instead of leaving
   it stranded at the bottom-left when there's no "Open application" button. */
.job-mine { position: relative; }
.job-mine [data-mine-remove] { position: absolute; top: 14px; right: 14px; z-index: 1; }
.job-actions-mine:not(:has(a)) { display: none; }

/* Jobs view tabs (Browse / My jobs) */
.jobs-view-tabs { max-width: 480px; margin-bottom: 18px; }
.tab-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px;
  padding: 0 5px;
  border-radius: var(--r-full);
  background: var(--primary-gradient);
  color: #fff;
  font-size: 10px; font-weight: 800;
  margin-left: 6px;
  line-height: 1;
}
.tab.tab-active .tab-badge { background: #fff; color: var(--primary); }

/* Status pill on job cards */
.job-status-pill {
  align-self: flex-start;
  padding: 4px 10px;
  border-radius: var(--r-full);
  border: 1px solid;
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.5px;
}

/* My-jobs summary */
.job-summary {
  display: flex; align-items: center;
  background: var(--primary-gradient);
  border-radius: var(--r-xl);
  padding: 22px 28px;
  color: #fff;
  margin-bottom: 18px;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: space-around;
}
.job-summary > div { text-align: center; display: flex; flex-direction: column; }
.job-summary strong { font-size: 26px; font-weight: 800; }
.job-summary span { font-size: 12px; opacity: 0.85; }
.job-summary .divider { width: 1px; height: 36px; background: rgba(255,255,255,0.3); flex: 0 0 auto; }

/* My-jobs row tweaks */
.job-mine .job-actions-mine {
  display: flex; gap: 8px; align-items: center;
}
.job-actions-mine .btn-primary { padding: 8px 14px; font-size: 13px; flex: 0 0 auto; }
.status-select {
  flex: 1;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: #fff;
  font-size: 13px; font-weight: 600; color: var(--text);
  cursor: pointer;
  outline: none;
}
.status-select:focus { border-color: var(--primary); }
.btn-icon {
  width: 36px; height: 36px;
  border-radius: var(--r-md);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--bg);
  color: var(--text-secondary);
  flex: 0 0 auto;
}
.btn-icon:hover { background: rgba(239,68,68,0.1); color: var(--error); }
.btn-icon .icon { --icon-size: 16px; }

.jobs-my-empty {
  text-align: center;
  padding: 64px 24px;
  background: #fff;
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-sm);
}
.jobs-my-empty .empty-icon { --icon-size: 48px; color: var(--primary); margin-bottom: 14px; }
.jobs-my-empty h3 { margin: 0 0 6px; font-size: 18px; }
.jobs-my-empty p { color: var(--text-secondary); margin: 0 0 20px; font-size: 14px; }

/* ─── Topic grids (Test Prep / Finance / FirstGen / Schools) ── */
.topic-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}
.topic-card {
  border-radius: var(--r-lg);
  padding: 22px;
  color: #fff;
  min-height: 140px;
  display: flex; flex-direction: column; justify-content: flex-end;
  cursor: pointer;
  transition: transform .15s;
}
.topic-card:hover { transform: translateY(-3px); }
.topic-card .card-icon { --icon-size: 30px; margin-bottom: 10px; opacity: 0.95; }
.topic-card h3 { margin: 0 0 4px; font-size: 16px; font-weight: 700; }
.topic-card p { margin: 0; font-size: 12px; opacity: 0.85; }
.topic-card-clickable {
  border: none; text-align: left; font: inherit;
  width: 100%; appearance: none;
}
.topic-card-meta {
  margin-top: 10px; font-size: 11px; font-weight: 600;
  opacity: 0.85; letter-spacing: 0.3px;
}

/* ─── School Matchmaker ────────────────────────────────────────── */
.schools-form {
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  padding: 22px 24px; margin: 0 0 18px;
  display: flex; flex-direction: column; gap: 14px;
}
.schools-form-row {
  display: grid; gap: 14px; grid-template-columns: 1fr;
}
@media (min-width: 640px) { .schools-form-row { grid-template-columns: 1fr 1fr; } }
.schools-form .field { display: flex; flex-direction: column; gap: 6px; }
.schools-form label { font-size: 13px; font-weight: 700; color: #1F2937; }
.schools-form .form-hint { font-weight: 400; color: var(--text-secondary); font-size: 11px; margin-left: 6px; }
.schools-form input[type="text"],
.schools-form input[type="number"],
.schools-form select {
  width: 100%; padding: 10px 12px; font: inherit; font-size: 14px;
  border: 1px solid var(--border); border-radius: 10px; background: #fff;
  appearance: none;
}
.schools-form input:focus, .schools-form select:focus {
  outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.15);
}

.schools-degree-grid {
  display: grid; gap: 8px; grid-template-columns: 1fr 1fr;
}
@media (min-width: 640px) { .schools-degree-grid { grid-template-columns: repeat(4, 1fr); } }
.schools-degree-card {
  display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; cursor: pointer; background: #fff;
  transition: border-color 0.15s, background 0.15s;
}
.schools-degree-card:hover { border-color: var(--primary); }
.schools-degree-card:has(input:checked) { border-color: var(--primary); background: #F5F3FF; }
.schools-degree-card input[type="radio"] { accent-color: var(--primary); flex-shrink: 0; }
.schools-degree-card > span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.schools-degree-card strong { font-size: 13px; font-weight: 700; }
.schools-degree-card span span { font-size: 11px; color: var(--text-secondary); }

.schools-status {
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  padding: 16px 18px; margin: 0 0 16px;
  font-size: 14px; display: flex; align-items: center; gap: 10px;
}
.schools-status-loading { color: var(--primary); }
.schools-status-error { color: #B91C1C; background: #FEF2F2; }
.schools-spinner {
  width: 14px; height: 14px; flex-shrink: 0;
  border: 2px solid #E0E7FF; border-top-color: var(--primary);
  border-radius: 50%; animation: schools-spin 0.8s linear infinite;
}
@keyframes schools-spin { to { transform: rotate(360deg); } }

.schools-results { display: flex; flex-direction: column; gap: 12px; }
.schools-results-head h3 { margin: 0; font-size: 18px; font-weight: 800; }
.schools-results-head p { margin: 4px 0 0; font-size: 12px; color: var(--text-secondary); }
.schools-card-list { display: grid; gap: 12px; grid-template-columns: 1fr; }
@media (min-width: 720px) { .schools-card-list { grid-template-columns: 1fr 1fr; } }
.schools-card {
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  padding: 16px 18px;
  display: flex; flex-direction: column; gap: 10px;
}
.schools-card-head { display: flex; flex-direction: column; gap: 6px; }
.schools-card-head h4 { margin: 0; font-size: 15px; font-weight: 800; }
.schools-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.schools-pill {
  display: inline-flex; align-items: center; gap: 4px;
  background: #F3F4F6; color: #1F2937;
  font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 999px;
}
.schools-pill .icon { --icon-size: 12px; color: var(--primary); }
.schools-pill-type { background: #F5F3FF; color: #5B21B6; }
.schools-card-grid {
  display: grid; gap: 8px; grid-template-columns: 1fr 1fr;
  background: #F9FAFB; border-radius: 8px; padding: 8px 12px;
}
.schools-stat { display: flex; flex-direction: column; gap: 2px; }
.schools-stat-label { font-size: 10px; font-weight: 700; letter-spacing: 0.4px; text-transform: uppercase; color: var(--text-secondary); }
.schools-stat strong { font-size: 13px; font-weight: 700; color: #1F2937; }
.schools-why { margin: 0; font-size: 13px; line-height: 1.5; }
.schools-notes {
  margin: 0; font-size: 12px; color: #6B3F00;
  background: #FFF4E5; padding: 8px 10px; border-radius: 8px;
  display: flex; align-items: flex-start; gap: 6px;
}
.schools-notes .icon { --icon-size: 12px; color: #B45309; margin-top: 2px; flex-shrink: 0; }
.schools-empty {
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  padding: 24px; text-align: center; color: var(--text-secondary); font-size: 14px;
}

/* Test prep quiz modal */
.quiz-card {
  max-width: 720px;
  display: flex; flex-direction: column;
  max-height: 90vh;
}
.quiz-body { overflow-y: auto; padding: 28px 32px; }
.quiz-head { margin-bottom: 16px; }
.quiz-subject {
  display: inline-block; font-size: 11px; font-weight: 700;
  letter-spacing: 0.6px; text-transform: uppercase;
  background: #F5F3FF; color: var(--primary);
  padding: 4px 10px; border-radius: 999px;
}
.quiz-head h2 { margin: 10px 0 6px; font-size: 22px; font-weight: 800; }
.quiz-progress { margin: 0; font-size: 12px; color: var(--text-secondary); }

.quiz-list { list-style: none; padding: 0; margin: 18px 0 0; counter-reset: quizq; }
.quiz-q {
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: 18px 20px; margin-bottom: 14px;
}
.quiz-q h4 {
  margin: 0 0 10px; font-size: 12px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.5px;
  color: var(--text-secondary);
}
.quiz-q-right h4 { color: #047857; }
.quiz-q-wrong h4 { color: #B91C1C; }
.quiz-passage {
  background: #F9FAFB; border-left: 3px solid var(--primary);
  margin: 0 0 12px; padding: 10px 14px;
  font-size: 13px; color: #1F2937; line-height: 1.5;
  border-radius: 0 8px 8px 0;
}
.quiz-prompt { margin: 0 0 12px; font-size: 14px; font-weight: 600; line-height: 1.5; }
.quiz-choices { display: flex; flex-direction: column; gap: 6px; }
.quiz-choice {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px;
  cursor: pointer; font-size: 13px; line-height: 1.4;
  transition: border-color 0.15s, background 0.15s;
}
.quiz-choice:hover { border-color: var(--primary); }
.quiz-choice:has(input:checked) { border-color: var(--primary); background: #F5F3FF; }
.quiz-choice input[type="radio"] { display: none; }
.quiz-choice-letter { font-weight: 800; color: var(--primary); flex-shrink: 0; min-width: 18px; }
.quiz-choice-text { flex: 1; }
.quiz-choice-tag {
  font-size: 10px; font-weight: 700; letter-spacing: 0.4px;
  text-transform: uppercase; padding: 2px 8px; border-radius: 999px;
  background: #F3F4F6; color: var(--text-secondary);
  margin-left: 6px;
}

.quiz-choices-locked .quiz-choice { cursor: default; }
.quiz-choices-locked .quiz-choice:hover { border-color: var(--border); }
.quiz-choice-correct {
  border-color: #10B981; background: #ECFDF5;
}
.quiz-choice-correct .quiz-choice-letter { color: #047857; }
.quiz-choice-wrong {
  border-color: #EF4444; background: #FEF2F2;
}
.quiz-choice-wrong .quiz-choice-letter { color: #B91C1C; }

.quiz-explain {
  margin: 12px 0 0; padding: 10px 12px;
  background: #F9FAFB; border-radius: 8px;
  font-size: 12px; color: #1F2937; line-height: 1.5;
}

.quiz-actions { margin-top: 18px; }
.quiz-actions-results { display: flex; flex-direction: column; gap: 8px; }
.quiz-actions-results .btn-primary,
.quiz-actions-results .btn-ghost { width: 100%; }

.topic-list { display: flex; flex-direction: column; gap: 10px; }
.topic-row {
  background: #fff; border-radius: var(--r-lg);
  padding: 18px 20px;
  display: flex; align-items: center; gap: 16px;
  border-left: 4px solid var(--primary);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform .15s;
}
.topic-row:hover { transform: translateX(4px); }
.topic-row .row-icon { --icon-size: 24px; color: var(--primary); }
.topic-row .body { flex: 1; }
.topic-row h4 { margin: 0 0 2px; font-size: 16px; font-weight: 700; }
.topic-row p { margin: 0; font-size: 13px; color: var(--text-secondary); }
.topic-row .row-arrow { --icon-size: 18px; color: var(--primary); }

/* ─── Financial Education content cards ───────────────────── */
#financeList, #firstgenList { display: flex; flex-direction: column; gap: 18px; }
.fin-groups { display: flex; flex-direction: column; gap: 16px; }
.fin-group { border-left: 4px solid var(--primary); padding-left: 14px; }
.fin-group h4 { margin: 0 0 6px; font-size: 15px; font-weight: 700; }
.fin-group ul { margin: 0; padding-left: 18px; font-size: 13px; color: var(--text-secondary); line-height: 1.7; }
.fin-card { background: #fff; border-radius: var(--r-lg); padding: 22px; box-shadow: var(--shadow-sm); }
.fin-card-head { margin-bottom: 16px; }
.fin-card-head h3 { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; font-size: 18px; font-weight: 700; }
.fin-card-head h3 .icon { color: var(--primary); }
.fin-card-head p { margin: 0; font-size: 13px; color: var(--text-secondary); }
.fin-resources { display: flex; flex-direction: column; gap: 10px; }
.fin-resource {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--r-md);
  color: var(--text); transition: border-color .15s, background .15s;
}
.fin-resource:hover { border-color: var(--primary); background: rgba(124,58,237,0.04); }
.fin-resource strong { display: block; font-size: 14px; }
.fin-resource span { font-size: 12px; color: var(--text-secondary); }
.fin-resource .icon { color: var(--primary); flex-shrink: 0; }
.fin-tips { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.fin-tip { background: var(--bg); border-radius: var(--r-md); padding: 14px 16px; }
.fin-tip-wide { grid-column: 1 / -1; }
.fin-tip h4 { display: flex; align-items: center; gap: 6px; margin: 0 0 6px; font-size: 14px; font-weight: 700; }
.fin-tip h4 .icon { color: var(--primary); }
.fin-tip p { margin: 0; font-size: 13px; color: var(--text-secondary); line-height: 1.6; }
.fin-tip ul { margin: 0; padding-left: 18px; font-size: 13px; color: var(--text-secondary); line-height: 1.8; }
.fin-cta { background: linear-gradient(135deg, rgba(124,58,237,0.06), rgba(217,70,239,0.06)); border: 1px solid rgba(124,58,237,0.15); }
.fin-cta h3 { margin: 0 0 8px; font-size: 18px; font-weight: 700; }
.fin-cta p { margin: 0 0 10px; font-size: 14px; color: var(--text-secondary); line-height: 1.6; }
.fin-cta .btn-primary { margin-top: 6px; }
@media (max-width: 640px) { .fin-tips { grid-template-columns: 1fr; } }

.hero-banner-purple {
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-xl);
  padding: 28px;
  margin-bottom: 18px;
}
.hero-banner-purple h2 { margin: 0 0 6px; font-size: 22px; display: inline-flex; align-items: center; gap: 8px; }
.hero-banner-purple h2 .icon { --icon-size: 22px; }
.hero-banner-purple p { margin: 0; opacity: 0.9; }

/* Schools page hero card */
.hero-card-large {
  background: #fff; border-radius: var(--r-xl);
  padding: 48px 32px; text-align: center;
  box-shadow: var(--shadow-md);
  margin-bottom: 24px;
}
.emoji-xl { font-size: 64px; margin-bottom: 16px; }
.hero-card-large h2 { margin: 0 0 10px; font-size: 26px; }
.hero-card-large p { margin: 0 auto 24px; max-width: 500px; color: var(--text-secondary); }
.quiz-preview {
  background: #fff; border-radius: var(--r-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
}
.quiz-preview h3 { margin: 0 0 14px; }
.quiz-preview ul { list-style: none; padding: 0; margin: 0; }
.quiz-preview li {
  padding: 10px 0; border-bottom: 1px solid var(--border);
  font-size: 14px; color: var(--text-secondary);
  display: flex; align-items: center; gap: 12px;
}
.quiz-preview li .icon { --icon-size: 18px; color: var(--primary); }
.quiz-preview li:last-child { border: none; }

/* ─── Profile ───────────────────────────────────────────────── */
.profile-head { text-align: center; padding: 32px 0 20px; }
.avatar-wrap {
  position: relative;
  display: inline-block;
  margin: 0 auto 14px;
}
.avatar {
  width: 96px; height: 96px;
  border-radius: 50%;
  background: var(--primary-gradient);
  color: #fff;
  font-size: 38px; font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-md);
  overflow: hidden;
}
.avatar img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.avatar-edit {
  position: absolute;
  bottom: 2px; right: 2px;
  width: 30px; height: 30px;
  border-radius: 50%;
  background: var(--primary-gradient);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  border: 3px solid var(--bg);
  cursor: pointer;
  box-shadow: var(--shadow-sm);
  transition: background .15s, transform .12s;
}
.avatar-edit:hover { background: var(--primary-gradient-hover); transform: scale(1.05); }
.avatar-edit .icon { --icon-size: 13px; }
.avatar-remove {
  display: block;
  margin: 0 auto 12px;
  font-size: 12px; font-weight: 600;
  color: var(--text-secondary);
  padding: 4px 10px;
  border-radius: var(--r-full);
}
.avatar-remove:hover { color: var(--error); background: rgba(239,68,68,0.08); }
.profile-head h2 { margin: 0; font-size: 24px; }
.profile-head p { margin: 4px 0 0; color: var(--text-secondary); }
.profile-stats {
  display: flex; justify-content: space-around;
  background: #fff; border-radius: var(--r-lg);
  padding: 18px; box-shadow: var(--shadow-sm);
  margin-bottom: 20px;
}
.profile-stats > div { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.profile-stats .stat-icon { --icon-size: 26px; color: var(--primary); }
.profile-stats strong { font-size: 18px; }
.profile-stats span { font-size: 11px; color: var(--text-secondary); }
.profile-menu { display: flex; flex-direction: column; gap: 4px; margin-bottom: 20px; }
.menu-row {
  background: #fff; border-radius: var(--r-md);
  padding: 16px; display: flex; align-items: center; gap: 14px;
  cursor: pointer;
  transition: background .15s;
}
.menu-row:hover { background: var(--bg); }
.menu-row .row-icon { --icon-size: 22px; width: 32px; color: var(--primary); }
.menu-row .body { flex: 1; }
.menu-row h4 { margin: 0; font-size: 15px; font-weight: 600; }
.menu-row p { margin: 2px 0 0; font-size: 12px; color: var(--text-secondary); }
.menu-row .row-arrow { --icon-size: 18px; color: var(--text-light); }
.version { text-align: center; font-size: 11px; color: var(--text-light); margin-top: 14px; }

/* ─── Footer ────────────────────────────────────────────────── */
.footer {
  background: #fff;
  border-top: 1px solid var(--border);
  margin-top: auto;
  padding: 56px 24px calc(24px + env(safe-area-inset-bottom, 0px));
}
.footer-inner {
  max-width: 1200px; margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr repeat(3, 1fr);
  gap: 36px;
}
.footer-inner h5 { margin: 0 0 12px; font-size: 13px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; color: var(--text-secondary); }
.footer-inner > div:first-child strong { font-size: 18px; color: var(--primary); margin-left: 6px; vertical-align: middle; }
.footer-inner .brand-icon { --icon-size: 22px; color: var(--primary); }
.footer-inner > div:first-child p { margin: 8px 0 0; font-size: 13px; color: var(--text-secondary); }
.footer-inner a { display: block; padding: 4px 0; font-size: 14px; color: var(--text-secondary); }
.footer-inner a:hover { color: var(--primary); }
.footer-inner a.admin-link {
  color: var(--text-light);
  font-size: 12px;
  margin-top: 12px;
  border-top: 1px dashed var(--border);
  padding-top: 10px;
  display: block;              /* always visible — brands/employers sign in here */
}
.footer-inner a.admin-link:hover { color: var(--primary); }

/* ─── Admin Console ─────────────────────────────────────────── */
.admin-role-picker {
  display: inline-flex; align-items: center; gap: 10px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-full);
  padding: 6px 14px 6px 16px;
  box-shadow: var(--shadow-sm);
}
.admin-role-picker label {
  font-size: 12px; color: var(--text-secondary); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.4px;
}
.admin-role-picker select {
  border: none; outline: none; background: transparent;
  font-weight: 700; color: var(--primary); font-size: 14px;
  cursor: pointer; padding-right: 4px;
}
.admin-tabs { max-width: 680px; margin-bottom: 18px; }

/* ─── Admin console shell (sidebar + topbar + content) ───────── */
.admin-route.route { padding: 24px 0 48px; }
.admin-console {
  display: flex;
  align-items: stretch;
  min-height: 640px;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
  border: 1px solid #EDD8FF;
  background: #F5EEFF;
}
.admin-sidebar {
  width: 232px; flex-shrink: 0;
  background: linear-gradient(180deg, #9C27C8 0%, #5B0FA8 100%);
  display: flex; flex-direction: column;
  position: sticky; top: 16px; align-self: flex-start;
  min-height: 640px;
}
.admin-sidebar-logo { padding: 22px 20px 18px; border-bottom: 1px solid rgba(255,255,255,0.15); }
.admin-logo-text { font-size: 19px; font-weight: 900; font-style: italic; color: #fff; letter-spacing: -0.5px; }
.admin-logo-sub { font-size: 10px; color: rgba(255,255,255,0.6); font-weight: 800; margin-top: 3px; text-transform: uppercase; letter-spacing: 1.2px; }
.admin-sidebar-nav { flex: 1; padding: 14px 12px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.admin-nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 12px; width: 100%; text-align: left;
  color: rgba(255,255,255,0.78); font-size: 13px; font-weight: 700;
  transition: background 0.15s, color 0.15s;
}
.admin-nav-item:hover { background: rgba(255,255,255,0.12); color: #fff; }
.admin-nav-item.active { background: rgba(255,255,255,0.22); color: #fff; }
.admin-nav-item .icon { --icon-size: 18px; }
.admin-nav-badge {
  margin-left: auto; flex: 0 0 auto;
  min-width: 20px; height: 20px; padding: 0 6px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--error); color: #fff;
  font-size: 11px; font-weight: 800; line-height: 1; border-radius: var(--r-full);
  box-shadow: 0 0 0 2px rgba(255,255,255,0.12);
}
.admin-sidebar-footer { padding: 14px; border-top: 1px solid rgba(255,255,255,0.15); display: flex; flex-direction: column; gap: 12px; }
.admin-sidebar-footer .admin-role-picker {
  display: flex; flex-direction: column; gap: 4px;
  background: rgba(255,255,255,0.12); border-radius: 12px; padding: 8px 12px;
}
.admin-sidebar-footer .admin-role-picker label { color: rgba(255,255,255,0.6); }
.admin-sidebar-footer .admin-role-picker select { color: #fff; font-weight: 800; }
.admin-sidebar-footer .admin-role-picker select option,
.admin-sidebar-footer .admin-role-picker select optgroup { color: #1a1a2e; }
/* The site enhances <select> into a custom .sw-select-trigger button; keep its
   text white on the purple sidebar. Specificity must beat .admin-role-picker
   .sw-select-trigger defined later in this file. The dropdown menu keeps its
   own (white-background) styling. */
.admin-sidebar-footer .admin-role-picker .sw-select-trigger { color: #fff; }
.admin-sidebar-footer .admin-role-picker .sw-select-trigger:hover,
.admin-sidebar-footer .admin-role-picker .sw-select-wrap.open .sw-select-trigger { background: rgba(255,255,255,0.16); }
.admin-sidebar-footer .admin-role-picker .sw-select-trigger svg { stroke: rgba(255,255,255,0.8); }
/* The enhanced select sets min-width:220px which overflows the 232px sidebar —
   make it fill the footer instead so "Acting as" lines up cleanly. */
.admin-sidebar-footer .admin-role-picker { gap: 6px; }
.admin-sidebar-footer .admin-role-picker .sw-select-wrap { min-width: 0; width: 100%; }
.admin-sidebar-footer .admin-role-picker .sw-select-trigger { width: 100%; padding-left: 0; }
.admin-sidebar-footer .admin-role-picker label { padding-left: 2px; }
/* The picker sits at the bottom of the sidebar, so its menu must open UPWARD —
   opening downward (the default) runs the lower roles off the bottom of the
   screen where they can't be reached. */
.admin-sidebar-footer .admin-role-picker .sw-select-menu {
  top: auto;
  bottom: calc(100% + 4px);
  border-top: 1px solid var(--primary);
  border-bottom: 0;
  border-radius: var(--r-md) var(--r-md) 0 0;
  transform: translateY(4px);
}
.admin-sidebar-footer .admin-role-picker .sw-select-wrap.open .sw-select-menu {
  transform: translateY(0);
}
/* "Acting as" is a super-admin-only preview tool. */
.admin-sidebar-footer .admin-role-picker { display: none; }
body.role-super .admin-sidebar-footer .admin-role-picker { display: flex; }
.admin-pill { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: rgba(255,255,255,0.12); border-radius: 12px; }
.admin-av { width: 32px; height: 32px; border-radius: 16px; background: rgba(255,255,255,0.25); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 900; flex-shrink: 0; }
.admin-pill-name { font-size: 13px; font-weight: 800; color: #fff; }
.admin-pill-role { font-size: 11px; font-weight: 700; color: rgba(255,255,255,0.65); }
.admin-main { flex: 1; min-width: 0; display: flex; flex-direction: column; background: #F8F7FF; }
.admin-topbar {
  background: #fff; height: 60px; padding: 0 24px;
  display: flex; align-items: center; justify-content: space-between;
  border-bottom: 1px solid #EDD8FF; position: sticky; top: 0; z-index: 5;
}
.admin-topbar-title { font-size: 18px; font-weight: 900; color: #1a1a2e; }
.admin-content { padding: 24px; flex: 1; }

@media (max-width: 820px) {
  .admin-console { flex-direction: column; min-height: 0; }
  .admin-sidebar { width: 100%; position: static; min-height: 0; }
  .admin-sidebar-nav { flex-direction: row; flex-wrap: wrap; }
  .admin-nav-item { width: auto; }
}

/* ─── Jobs plan / billing panel ──────────────────────────────── */
.admin-billing .admin-plan-status { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.admin-plan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.admin-plan-card { border: 1.5px solid #EDD8FF; border-radius: var(--r-lg); padding: 16px; background: #fff; }
.admin-plan-card.featured { border-color: var(--primary); background: #F9F5FF; }
.admin-plan-card h4 { margin: 0 0 4px; font-size: 14px; font-weight: 800; color: var(--text); }
.admin-plan-price { font-size: 24px; font-weight: 900; color: #8B15C0; margin-bottom: 10px; }
.admin-plan-price span { font-size: 13px; font-weight: 600; color: var(--text-light); }
.admin-plan-card ul { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.admin-plan-card li { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.admin-plan-card li .icon { color: var(--success); }
.admin-billing-foot { margin-top: 12px; text-align: right; }
.admin-billing-note { margin: 10px 0 0; font-size: 11px; color: var(--text-light); }
@media (max-width: 560px) { .admin-plan-grid { grid-template-columns: 1fr; } }

/* ─── Student gig board ──────────────────────────────────────── */
.gig-layout { display: grid; grid-template-columns: 232px 1fr; gap: 24px; align-items: start; }
.gig-filters { position: sticky; top: 16px; display: flex; flex-direction: column; gap: 18px; background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); padding: 16px; }
.gig-filter-group h4 { margin: 0 0 8px; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-light); }
.gig-filter-opts { display: flex; flex-wrap: wrap; gap: 6px; }
.gig-filter, .gig-loc { padding: 6px 10px; border-radius: var(--r-full); font-size: 12px; font-weight: 700; color: var(--text-secondary); background: #F3F4F6; border: 1.5px solid transparent; }
.gig-filter.active, .gig-loc.active { background: #F5EEFF; color: var(--primary-dark); border-color: #E5D5FF; }
.gig-loc-toggle { display: flex; gap: 6px; background: #F3F4F6; border-radius: var(--r-full); padding: 3px; }
.gig-loc { flex: 1; background: transparent; text-align: center; }
.gig-loc.active { background: #fff; box-shadow: var(--shadow-sm); }

.gig-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; margin-top: 16px; }
.gig-card { background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg); overflow: hidden; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; transition: box-shadow .15s, transform .15s; }
.gig-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.gig-cover { height: 96px; background-size: cover; background-position: center; position: relative; }
.gig-industry { position: absolute; left: 10px; top: 10px; background: rgba(255,255,255,0.92); color: var(--text); font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: var(--r-full); }
.gig-applied-pill { position: absolute; right: 10px; top: 10px; background: var(--success); color: #fff; font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: var(--r-full); }
.gig-body { padding: 14px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.gig-head { display: flex; gap: 10px; align-items: center; }
.gig-logo-img { width: 40px; height: 40px; border-radius: 10px; object-fit: cover; flex-shrink: 0; border: 1px solid var(--border); }
.gig-logo-img.lg, .gig-logo-fallback.lg { width: 52px; height: 52px; }
.gig-logo-fallback { width: 40px; height: 40px; border-radius: 10px; background: linear-gradient(135deg,#7C3AED,#D946EF); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 14px; flex-shrink: 0; }
.gig-title { margin: 0; font-size: 15px; font-weight: 800; color: var(--text); line-height: 1.25; }
.gig-company { font-size: 13px; color: var(--text-secondary); font-weight: 600; }
.gig-facts { display: flex; flex-wrap: wrap; gap: 6px; }
.gig-fact { font-size: 12px; font-weight: 700; color: var(--text-secondary); background: #F3F4F6; padding: 3px 9px; border-radius: var(--r-full); }
.gig-fact.pay { background: #ECFDF5; color: #065F46; }
.gig-skills { display: flex; flex-wrap: wrap; gap: 6px; }
.gig-skill { font-size: 11px; font-weight: 700; color: var(--primary-dark); background: #F5EEFF; padding: 3px 9px; border-radius: var(--r-full); }
.gig-view-btn { margin-top: auto; justify-content: center; }

/* Gig detail / apply modal */
.gig-modal-card { max-width: 560px; }
.gig-detail-head { display: flex; gap: 12px; align-items: center; margin-bottom: 16px; }
.gig-detail-head h2 { margin: 0 0 2px; font-size: 20px; }
.gig-detail-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 14px; }
.gig-detail-facts > div { display: flex; flex-direction: column; background: #F8F7FF; border-radius: var(--r-md); padding: 8px 12px; }
.gig-detail-facts span { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-light); }
.gig-detail-facts strong { font-size: 14px; color: var(--text); }
.gig-detail-desc { color: var(--text-secondary); line-height: 1.6; margin: 12px 0; }
.gig-reqs { margin: 6px 0 14px; padding-left: 18px; color: var(--text-secondary); line-height: 1.7; }
.gig-applied-banner { display: flex; align-items: center; gap: 8px; background: #ECFDF5; color: #065F46; font-weight: 700; padding: 12px 14px; border-radius: var(--r-md); }
.gig-orig-link { display: inline-block; margin-top: 10px; font-size: 13px; color: var(--text-secondary); }

@media (max-width: 760px) {
  .gig-layout { grid-template-columns: 1fr; }
  .gig-filters { position: static; flex-direction: row; flex-wrap: wrap; }
}

.admin-stats {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
  margin-bottom: 22px;
}
.admin-stat {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 20px;
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column; gap: 4px;
}
.admin-stat .card-icon { color: var(--primary); margin-bottom: 4px; }
.admin-stat strong { font-size: 28px; font-weight: 800; }
.admin-stat span { font-size: 13px; color: var(--text-secondary); }

.admin-banner {
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-lg);
  padding: 22px 26px;
}
.admin-banner strong { font-size: 16px; }
.admin-banner p { margin: 6px 0 0; font-size: 13px; opacity: 0.9; line-height: 1.6; }

.admin-toolbar {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px; flex-wrap: wrap; gap: 12px;
}
.admin-toolbar h3 { margin: 0; font-size: 18px; font-weight: 700; }
.admin-toolbar .admin-meta { font-size: 13px; color: var(--text-secondary); }
.admin-toolbar-actions { display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.admin-toolbar-actions [data-remove-dupe-coupons] { color: var(--danger, #DC2626); }
.admin-toolbar-actions [data-remove-dupe-coupons] .icon { --icon-size: 14px; }

.admin-table {
  background: #fff;
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.admin-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
}
.admin-row:last-child { border-bottom: none; }
.admin-row-head { display: flex; align-items: center; gap: 14px; min-width: 0; }
.admin-row-head strong { display: block; font-size: 14px; font-weight: 700; }
.admin-row-head .admin-meta { font-size: 12px; color: var(--text-secondary); }
.admin-row-head .admin-row-icon { color: var(--primary); }
.admin-row-actions { display: flex; gap: 6px; flex-shrink: 0; }
.admin-color-dot { width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0; }

.admin-empty {
  background: #fff; border-radius: var(--r-lg);
  padding: 48px 24px; text-align: center;
  color: var(--text-secondary); box-shadow: var(--shadow-sm);
}

/* Ads-admin tier UI (1-ad cap banner + featured-ad picker) */
.ads-tier-banner {
  display: flex; align-items: center; gap: 14px;
  background: #F5F3FF; border: 1px solid #D6CCFD; color: #2B1A66;
  border-radius: var(--r-lg); padding: 14px 18px; margin: 0 0 16px;
}
.ads-tier-banner-warn    { background: #FFF4E5; border-color: #F2C97A; color: #6B3F00; }
.ads-tier-banner-premium { background: linear-gradient(135deg, #F5F3FF, #EDE9FE); border-color: #C4B5FD; color: #2B1A66; }
.ads-tier-banner > .icon { color: var(--primary); flex-shrink: 0; }
.ads-tier-banner-warn > .icon { color: #B45309; }
.ads-tier-banner strong { display: block; font-size: 14px; }
.ads-tier-banner p { margin: 4px 0 0; font-size: 13px; line-height: 1.5; opacity: 0.9; }
.ads-tier-banner .btn-ghost { margin-left: auto; flex-shrink: 0; }

.ads-featured-picker {
  background: #fff; border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: 16px 18px; margin: 0 0 16px; box-shadow: var(--shadow-sm);
}
.ads-featured-picker-head {
  display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px;
}
.ads-featured-picker-head .icon { color: var(--primary); flex-shrink: 0; margin-top: 2px; }
.ads-featured-picker-head h4 { margin: 0; font-size: 15px; font-weight: 800; }
.ads-featured-picker-head p { margin: 4px 0 0; font-size: 12px; color: var(--text-secondary); line-height: 1.5; }
.ads-featured-picker-options { display: grid; grid-template-columns: 1fr; gap: 8px; }
@media (min-width: 720px) {
  .ads-featured-picker-options { grid-template-columns: 1fr 1fr; }
}
.ads-featured-option {
  display: flex; align-items: center; gap: 12px;
  border: 1px solid var(--border); border-radius: 10px;
  padding: 10px 12px; cursor: pointer; background: #fff;
  transition: border-color 0.15s, background 0.15s;
}
.ads-featured-option:hover { border-color: var(--primary); }
.ads-featured-option.is-selected { border-color: var(--primary); background: #F5F3FF; }
.ads-featured-option input[type="radio"] { accent-color: var(--primary); flex-shrink: 0; }
.ads-featured-color { width: 22px; height: 22px; border-radius: 6px; flex-shrink: 0; }
.ads-featured-text { display: flex; flex-direction: column; min-width: 0; }
.ads-featured-text strong { font-size: 13px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ads-featured-meta { font-size: 11px; color: var(--text-secondary); margin-top: 2px; }
.ads-featured-warn { margin: 10px 0 0; font-size: 12px; color: #6B3F00; display: flex; align-items: center; gap: 6px; }

.btn-primary[disabled], .btn-primary[aria-disabled="true"] {
  opacity: 0.5; cursor: not-allowed; filter: grayscale(0.3);
}
.admin-row-featured { background: #FAF8FF; }

.detail-hero-actions { display: flex; gap: 8px; align-items: flex-start; }
.detail-hero-actions .btn-ghost { background: rgba(255, 255, 255, 0.18); color: #fff; border-color: rgba(255, 255, 255, 0.35); }
.detail-hero-actions .btn-ghost:hover { background: rgba(255, 255, 255, 0.3); }

.irb-banner {
  display: flex; align-items: flex-start; gap: 12px;
  background: #ECFDF5; border: 1px solid #A7F3D0; color: #064E3B;
  border-radius: var(--r-lg); padding: 14px 18px; margin: 0 0 18px;
}
.irb-banner > .icon { color: #047857; flex-shrink: 0; margin-top: 2px; }
.irb-banner strong { display: block; font-size: 14px; }
.irb-banner p { margin: 4px 0 0; font-size: 13px; line-height: 1.5; opacity: 0.9; }

/* Survey audience targeting (admin form + display pills) */
.targeting-fields { border: none; padding: 0; margin: 18px 0 0; }
.targeting-fields legend { padding: 0; }
/* Read-only "your school" chip shown to survey (school) admins in place of the
   audience picker. */
.assigned-school-chip {
  display: inline-flex; align-items: center; gap: 8px;
  margin-top: 10px; padding: 10px 16px;
  background: #F5F3FF; border: 1px solid var(--primary); border-radius: var(--r-full);
  font-weight: 700; font-size: 14px; color: var(--primary);
}
.assigned-school-chip .icon { --icon-size: 16px; }
.targeting-modes {
  display: grid; gap: 8px; grid-template-columns: 1fr;
  margin: 10px 0 14px;
}
@media (min-width: 600px) { .targeting-modes { grid-template-columns: 1fr 1fr 1fr; } }
.targeting-mode-card {
  display: flex; align-items: flex-start; gap: 10px;
  border: 1px solid var(--border); border-radius: 10px;
  padding: 12px; cursor: pointer; background: #fff;
  transition: border-color 0.15s, background 0.15s;
}
.targeting-mode-card:hover { border-color: var(--primary); }
.targeting-mode-card:has(input:checked) { border-color: var(--primary); background: #F5F3FF; }
.targeting-mode-card input[type="radio"] { accent-color: var(--primary); margin-top: 2px; flex-shrink: 0; }
.targeting-mode-body { display: flex; flex-direction: column; gap: 2px; }
.targeting-mode-body strong { font-size: 13px; font-weight: 700; }
.targeting-mode-body span { font-size: 11px; color: var(--text-secondary); line-height: 1.4; }

.targeting-section { margin: 8px 0 0; }
.targeting-section .field-label {
  display: block; font-size: 12px; font-weight: 700;
  color: var(--text-secondary); margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.4px;
}
.checkbox-grid {
  display: grid; gap: 6px; grid-template-columns: 1fr 1fr;
  max-height: 220px; overflow: auto; padding: 4px;
  border: 1px solid var(--border); border-radius: 10px;
}
@media (min-width: 600px) { .checkbox-grid { grid-template-columns: 1fr 1fr 1fr; } }
.checkbox-chip {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 8px; border-radius: 8px; font-size: 12px;
  cursor: pointer;
}
.checkbox-chip:hover { background: #F5F3FF; }
.checkbox-chip input { accent-color: var(--primary); }

.targeting-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px;
  margin-top: 4px; line-height: 1.4;
}
.targeting-pill .icon { --icon-size: 11px; }
.targeting-pill-platform { background: #EFF6FF; color: #1E40AF; }
.targeting-pill-schools  { background: #F5F3FF; color: #5B21B6; }
.targeting-pill-geo      { background: #ECFDF5; color: #065F46; }
.survey-live-pill    { background: #ECFDF5; color: #047857; margin-left: 6px; }
.survey-expired-pill { background: #FEF2F2; color: #B91C1C; margin-left: 6px; }
.targeting-pill-hero {
  background: rgba(255, 255, 255, 0.18); color: #fff;
  margin-top: 8px; padding: 4px 10px; font-size: 12px;
}

.surveys-empty {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  padding: 32px 16px; text-align: center;
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
}
.surveys-empty .icon { color: var(--primary); }
.surveys-empty p { margin: 0; font-size: 14px; font-weight: 700; }
.surveys-empty-hint { font-size: 12px; color: var(--text-secondary); }
.featured-pill {
  display: inline-block; margin-left: 6px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.4px; text-transform: uppercase;
  background: var(--primary); color: #fff; padding: 2px 8px; border-radius: 999px;
  vertical-align: middle;
}

.edit-profile-card { max-width: 420px; }
.edit-profile-card h2 { margin: 0 0 18px; font-size: 22px; font-weight: 800; }

.admin-modal-card {
  max-width: 520px;
  /* Lay children in a column so the close button can stick to the top while
     the form scrolls underneath it. */
  display: flex;
  flex-direction: column;
}
.admin-modal-card .modal-close {
  /* Pin to the top-right of the visible card even when the form is scrolled.
     Negative margins keep the h2 + form at their original visual positions
     (otherwise the flex layout would push them down by the close button's height). */
  position: sticky;
  top: 8px;
  align-self: flex-end;
  margin: -8px -10px -32px 0;
}
/* Inline create-form (surveys) — fills the admin content section instead of a
   modal. Reuses .admin-form field styling; just a roomier container. */
.admin-inline-form {
  max-width: 720px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-sm);
  padding: 28px 32px 32px;
}
.admin-inline-head { margin-bottom: 22px; }
.admin-inline-head .btn-back { margin-bottom: 14px; }
.admin-inline-head h2 { margin: 0; font-size: 24px; font-weight: 800; }
.admin-inline-sub { margin: 6px 0 0; color: var(--text-secondary); font-size: 14px; }

/* Survey question builder */
.survey-builder { margin: 6px 0 16px; }
.sqb-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 10px; }
.sqb-head label { font-weight: 700; font-size: 14px; }
.sqb-meta { font-size: 12px; color: var(--text-secondary); font-weight: 600; }
.sqb-list { display: flex; flex-direction: column; gap: 12px; }
.sqb-card {
  border: 1px solid var(--border); border-radius: var(--r-lg);
  background: var(--bg); padding: 14px;
}
.sqb-card-top { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.sqb-num {
  flex: none; width: 24px; height: 24px; border-radius: 50%;
  background: var(--primary-gradient); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800;
}
.sqb-type { flex: 1; max-width: 200px; }
.sqb-reorder { margin-left: auto; display: flex; align-items: center; gap: 4px; }
.sqb-icon {
  width: 28px; height: 28px; border: 1px solid var(--border); border-radius: var(--r-sm);
  background: var(--card); color: var(--text-secondary);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; line-height: 1; cursor: pointer;
}
.sqb-icon:hover:not(:disabled) { border-color: var(--primary); color: var(--primary); }
.sqb-icon:disabled { opacity: 0.35; cursor: default; }
.sqb-icon.sqb-del:hover { border-color: var(--error); color: var(--error); }
.sqb-text { width: 100%; }
.sqb-options { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.sqb-opt { display: flex; align-items: center; gap: 8px; }
.sqb-opt input { flex: 1; }
.sqb-add-opt { align-self: flex-start; }
.sqb-hint { margin-top: 10px; font-size: 13px; color: var(--text-secondary); }
.sqb-add { margin-top: 12px; width: 100%; border: 1px dashed var(--border); }
.sqb-add:hover { border-color: var(--primary); color: var(--primary); }

/* Admin survey detail — read-only questions list */
.survey-q-list { margin: 0; padding: 0; list-style: none; counter-reset: sq; }
.survey-q-list > li { counter-increment: sq; padding: 14px 0; border-bottom: 1px solid var(--border); }
.survey-q-list > li:last-child { border-bottom: 0; padding-bottom: 0; }
.sq-row { display: flex; align-items: baseline; gap: 10px; }
.sq-row::before { content: counter(sq) "."; font-weight: 800; color: var(--primary); flex: none; }
.sq-type-pill {
  flex: none; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em;
  color: var(--primary); background: rgba(124,58,237,0.10); padding: 3px 9px; border-radius: var(--r-full);
}
.sq-text { font-weight: 600; }
.sq-opts { margin: 8px 0 0 30px; padding-left: 16px; color: var(--text-secondary); font-size: 14px; }
.sq-opts li { padding: 2px 0; }

.admin-form .field { margin-bottom: 12px; }
.admin-form select,
.admin-form textarea,
.admin-form input[type="text"],
.admin-form input[type="number"],
.admin-form input[type="email"] {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg);
  font-size: 14px; outline: none;
  font-family: inherit;
}
.admin-form input[type="color"] {
  width: 60px; height: 40px;
  padding: 0; border: 1px solid var(--border);
  border-radius: var(--r-md); background: none; cursor: pointer;
}
.admin-form textarea { min-height: 90px; resize: vertical; }
.admin-form input:focus, .admin-form select:focus, .admin-form textarea:focus { border-color: var(--primary); background: #fff; }

/* ─── For Business ──────────────────────────────────────────── */
.business-hero {
  text-align: center;
  padding: 56px 24px 40px;
}
.business-hero .hero-eyebrow { margin-bottom: 18px; }
.business-hero h1 {
  font-size: 56px; font-weight: 800; letter-spacing: -1.5px; line-height: 1.05;
  margin: 0 0 16px;
  background: var(--primary-gradient);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.business-hero p {
  font-size: 17px; color: var(--text-secondary);
  max-width: 580px; margin: 0 auto;
}

.section-sub-left { color: var(--text-secondary); font-size: 14px; margin: 4px 0 24px; }

.biz-cat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
  margin-bottom: 56px;
}
.biz-cat-card {
  background: #fff;
  border-radius: var(--r-xl);
  padding: 32px 28px;
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  display: flex; flex-direction: column; align-items: flex-start;
  position: relative;
}
.biz-cat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.biz-cat-card .biz-cat-icon {
  --icon-size: 40px;
  color: var(--primary);
  background: rgba(124,58,237,0.12);
  width: 64px; height: 64px;
  border-radius: var(--r-lg);
  margin-bottom: 16px;
  padding: 12px;
}
.biz-cat-card h3 { margin: 0 0 8px; font-size: 20px; font-weight: 800; }
.biz-cat-card p { margin: 0 0 16px; font-size: 14px; color: var(--text-secondary); line-height: 1.55; }
.biz-cat-card .biz-cat-cta {
  margin-top: auto;
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 700; font-size: 14px; color: var(--primary);
}
.biz-cat-card .biz-cat-cta .icon { --icon-size: 14px; }
.biz-school-pill {
  display: inline-block;
  background: rgba(16,185,129,0.12); color: var(--success);
  font-size: 11px; font-weight: 700;
  padding: 3px 10px; border-radius: var(--r-full);
  margin-bottom: 10px;
  letter-spacing: 0.3px;
}
.biz-school-pill.biz-school-only {
  background: rgba(124,58,237,0.10);
  color: var(--primary);
}

/* Audience pill — shows who can sign up for each category. */
.biz-audience-pill {
  display: inline-block;
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.3px;
  padding: 4px 11px;
  border-radius: var(--r-full);
  margin-bottom: 10px;
}
.biz-audience-company {
  background: rgba(124,58,237,0.12);
  color: var(--primary);
}
.biz-audience-mixed {
  background: rgba(59,130,246,0.12);
  color: #1D4ED8;
}
.biz-audience-school {
  background: rgba(16,185,129,0.12);
  color: var(--success);
}

/* In the pricing-block head we put the title eyebrow and audience pill on
   the same line so they read together. */
.biz-pricing-pills {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.biz-pricing-pills .biz-audience-pill { margin-bottom: 0; }
.biz-pricing-pills .biz-pricing-eyebrow { margin-bottom: 0; }

/* Banner shown above the survey tier grid for non-school visitors */
.biz-schools-banner {
  display: flex; gap: 14px; align-items: flex-start;
  margin: 0 0 22px;
  padding: 16px 20px;
  background: rgba(124,58,237,0.08);
  border: 1px solid rgba(124,58,237,0.22);
  border-radius: var(--r-lg);
  color: var(--text);
}
.biz-schools-banner .icon {
  --icon-size: 22px;
  color: var(--primary);
  flex-shrink: 0;
  margin-top: 1px;
}
.biz-schools-banner strong { display: block; font-size: 14px; font-weight: 800; margin-bottom: 4px; }
.biz-schools-banner p { margin: 0; font-size: 13px; color: var(--text-secondary); line-height: 1.5; }
.biz-schools-banner a { color: var(--primary); font-weight: 700; text-decoration: underline; }

/* Free-tier offer for small local businesses (donate a prize → free ad). */
.biz-freelocal {
  margin: 40px 0 8px;
  border-radius: var(--r-xl);
  background: var(--primary-gradient);
  box-shadow: var(--shadow-lg);
  padding: 2px; /* gradient frame */
}
.biz-freelocal-inner {
  border-radius: calc(var(--r-xl) - 2px);
  background: radial-gradient(120% 140% at 0% 0%, rgba(255,255,255,0.14), rgba(255,255,255,0) 60%), #2a0f52;
  color: #fff;
  padding: 36px 32px;
}
.biz-freelocal-badge {
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(255,255,255,0.16);
  color: #fff; font-weight: 800; font-size: 12.5px; letter-spacing: 0.02em;
  padding: 7px 13px; border-radius: var(--r-full); margin-bottom: 16px;
}
.biz-freelocal-badge .icon { width: 15px; height: 15px; }
.biz-freelocal h2 { font-size: 30px; line-height: 1.15; margin: 0 0 12px; color: #fff; }
.biz-freelocal h2 em { font-style: normal; background: linear-gradient(135deg,#FDE68A,#FBCFE8); -webkit-background-clip: text; background-clip: text; color: transparent; }
.biz-freelocal-lead { font-size: 15px; line-height: 1.65; color: rgba(255,255,255,0.9); max-width: 640px; margin: 0 0 20px; }
.biz-freelocal-points { list-style: none; padding: 0; margin: 0 0 26px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 22px; }
.biz-freelocal-points li { display: flex; align-items: flex-start; gap: 9px; font-size: 14px; font-weight: 600; color: #fff; }
.biz-freelocal-points li .icon { width: 17px; height: 17px; flex: 0 0 auto; margin-top: 1px; color: #FDE68A; }
.biz-freelocal-tip {
  display: flex; align-items: flex-start; gap: 11px;
  background: rgba(253,230,138,0.12);
  border: 1px solid rgba(253,230,138,0.35);
  border-radius: var(--r-md);
  padding: 14px 16px; margin: 0 0 24px;
}
.biz-freelocal-tip .icon { width: 19px; height: 19px; flex: 0 0 auto; margin-top: 1px; color: #FDE68A; }
.biz-freelocal-tip p { margin: 0; font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,0.92); }
.biz-freelocal-tip strong { color: #FDE68A; font-weight: 800; }
.biz-freelocal .btn-lg { background: #fff; color: var(--primary-dark); box-shadow: 0 6px 20px rgba(0,0,0,0.25); }
.biz-freelocal .btn-lg:hover { background: #F5F3FF; }
.biz-freelocal-foot { margin: 14px 0 0; font-size: 12.5px; color: rgba(255,255,255,0.72); max-width: 560px; }
@media (max-width: 640px) {
  .biz-freelocal-inner { padding: 28px 22px; }
  .biz-freelocal h2 { font-size: 24px; }
  .biz-freelocal-points { grid-template-columns: 1fr; }
}

/* Honeypot: kept in the DOM for bots, invisible + unreachable for humans. */
.hp-field {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  opacity: 0; pointer-events: none;
}

/* Admin inquiries (advertising leads) detail lines. */
.admin-inq-body { margin: 10px 0 4px; display: grid; gap: 7px; }
.admin-inq-line { display: flex; gap: 10px; font-size: 13.5px; line-height: 1.4; }
.admin-inq-line > span { flex: 0 0 92px; color: var(--text-secondary); font-weight: 600; }
.admin-inq-line > strong { font-weight: 700; color: var(--text); word-break: break-word; }
.admin-inq-line a { color: var(--primary); text-decoration: underline; }

/* Premium bundles */
.biz-bundles-section {
  background: linear-gradient(180deg, rgba(124,58,237,0.04) 0%, transparent 100%);
  border-radius: var(--r-xl);
  padding: 40px 36px 36px;
  margin-bottom: 56px;
  border: 1px solid rgba(124,58,237,0.16);
}
.biz-bundles-head { text-align: center; margin-bottom: 28px; }
.biz-bundles-head .section-title-sm { margin: 6px 0 6px; }
.biz-bundles-head .section-sub-left { margin: 0 auto 0; max-width: 540px; text-align: center; }
.biz-bundles-eyebrow {
  display: inline-block;
  padding: 5px 14px;
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-full);
  font-size: 11px; font-weight: 800; letter-spacing: 0.6px;
  text-transform: uppercase;
}

.biz-bundle-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 18px;
}
.biz-bundle {
  background: #fff;
  border-radius: var(--r-xl);
  padding: 26px 24px;
  border: 2px solid var(--border);
  display: flex; flex-direction: column;
  position: relative;
  transition: transform .15s, box-shadow .15s;
}
.biz-bundle:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.biz-bundle.featured {
  background: linear-gradient(160deg, #1A0533 0%, var(--primary-darker) 100%);
  border-color: var(--primary);
  color: #fff;
}
.biz-bundle.featured .biz-tier-flag { background: #fff; color: var(--primary); }
.biz-bundle.featured h4 { color: #fff; }
.biz-bundle.featured .bundle-tagline { color: rgba(255,255,255,0.78); }
.biz-bundle.featured .bundle-amount { color: #fff; }
.biz-bundle.featured .bundle-cadence { color: rgba(255,255,255,0.7); }
.biz-bundle.featured .bundle-list-price { color: rgba(255,255,255,0.5); }
.biz-bundle.featured .bundle-discount { background: rgba(16,185,129,0.18); color: #6EE7B7; }
.biz-bundle.featured ul li { color: rgba(255,255,255,0.92); }
.biz-bundle.featured ul li .icon { color: #6EE7B7; }
.biz-bundle.featured .bundle-service {
  background: rgba(255,255,255,0.14);
  color: #fff;
}
.biz-bundle.featured .btn-primary {
  background: #fff; color: var(--primary);
}
.biz-bundle.featured .btn-primary:hover { background: rgba(255,255,255,0.92); }

.bundle-services {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 14px;
}
.bundle-service {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  font-size: 11px; font-weight: 700;
  padding: 4px 10px; border-radius: var(--r-full);
  letter-spacing: 0.3px;
}
.bundle-service .icon { --icon-size: 12px; }

.biz-bundle h4 {
  margin: 0 0 6px; font-size: 19px; font-weight: 800;
  letter-spacing: -0.3px;
}
.bundle-tagline {
  font-size: 13px; color: var(--text-secondary);
  margin: 0 0 18px; line-height: 1.5;
}
.bundle-price { margin-bottom: 18px; }
.bundle-price-row { display: flex; align-items: baseline; gap: 4px; }
.bundle-amount { font-size: 36px; font-weight: 800; letter-spacing: -1px; }
.bundle-cadence { font-size: 14px; color: var(--text-secondary); }
.bundle-savings { display: flex; align-items: center; gap: 8px; margin-top: 4px; }
.bundle-list-price {
  font-size: 13px; color: var(--text-light);
  text-decoration: line-through;
}
.bundle-discount {
  font-size: 11px; font-weight: 800; letter-spacing: 0.3px;
  background: rgba(16,185,129,0.12); color: var(--success);
  padding: 3px 10px; border-radius: var(--r-full);
}

.biz-bundle ul { list-style: none; padding: 0; margin: 0 0 20px; flex: 1; }
.biz-bundle li {
  display: flex; gap: 8px; align-items: flex-start;
  font-size: 13px; margin-bottom: 9px; line-height: 1.5;
}
.biz-bundle li .icon { --icon-size: 14px; color: var(--success); margin-top: 4px; }

/* Pricing stack: all categories visible at once, separated by sub-section. */
.biz-pricing-stack {
  margin: 8px 0 40px;
  display: flex; flex-direction: column;
  gap: 32px;
}
.biz-pricing-block {
  scroll-margin-top: 80px;   /* offset so anchor scroll lands below the sticky nav */
}
.biz-pricing-eyebrow {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 14px;
  background: rgba(124,58,237,0.10);
  color: var(--primary);
  border-radius: var(--r-full);
  font-size: 12px; font-weight: 800;
  letter-spacing: 0.4px;
  margin-bottom: 8px;
}
.biz-pricing-eyebrow .icon { --icon-size: 14px; }
.biz-pricing-block .section-sub-left { margin: 0 0 18px; }

.biz-pricing-head { margin-bottom: 16px; }
.biz-tier-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
  margin-bottom: 28px;
}
.biz-tier {
  background: #fff;
  border-radius: var(--r-xl);
  padding: 28px 24px;
  box-shadow: var(--shadow-sm);
  border: 2px solid var(--border);
  display: flex; flex-direction: column;
  position: relative;
}
.biz-tier.featured {
  border-color: var(--primary);
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}
.biz-tier.has-badge { border-color: var(--success); }
.biz-tier-flag {
  position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
  background: var(--primary-gradient); color: #fff;
  font-size: 11px; font-weight: 800; letter-spacing: 0.5px;
  padding: 5px 14px; border-radius: var(--r-full);
}
.biz-tier-badge {
  position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
  background: var(--success); color: #fff;
  font-size: 11px; font-weight: 800; letter-spacing: 0.5px;
  padding: 5px 14px; border-radius: var(--r-full);
}
.biz-tier h4 { margin: 0 0 10px; font-size: 18px; font-weight: 800; }
.biz-tier-price { margin-bottom: 16px; }
.biz-tier-price .amount { font-size: 36px; font-weight: 800; color: var(--text); letter-spacing: -1px; }
.biz-tier-price .cadence { font-size: 14px; color: var(--text-secondary); margin-left: 4px; }
.biz-tier-price .custom { font-size: 26px; font-weight: 800; color: var(--primary); }
.biz-tier ul { list-style: none; padding: 0; margin: 0 0 20px; flex: 1; }
.biz-tier li {
  display: flex; gap: 8px; align-items: flex-start;
  font-size: 13px; color: var(--text); margin-bottom: 10px;
  line-height: 1.5;
}
.biz-tier li .icon { --icon-size: 14px; color: var(--success); margin-top: 4px; }

.biz-bundle-callout {
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-xl);
  padding: 22px 28px;
  margin-bottom: 32px;
  font-size: 15px; line-height: 1.6;
}

/* Self-service signup popup. Uses the shared .modal-card scroll behavior
   so a long form fits in any viewport. Sized generously so the two-column
   field rows don't feel cramped. Selector is .modal-card.biz-signup-modal-card
   to outrank the generic .modal-card rule defined later in the cascade. */
.modal-card.biz-signup-modal-card {
  max-width: 720px;
  width: 100%;
  padding: 32px 36px 28px;
  display: flex; flex-direction: column;
}
.biz-signup-modal-card .modal-close {
  position: sticky; top: 8px;
  align-self: flex-end;
  margin: -8px -14px -36px 0;
}
.biz-signup-modal-head { margin-bottom: 22px; }
.biz-signup-modal-eyebrow {
  display: inline-block;
  padding: 5px 14px;
  background: rgba(124,58,237,0.10);
  color: var(--primary);
  border-radius: var(--r-full);
  font-size: 12px; font-weight: 800;
  letter-spacing: 0.4px;
  margin-bottom: 12px;
}
.biz-signup-modal-card h3 { margin: 0 0 8px; font-size: 24px; font-weight: 800; }
.biz-signup-modal-head p {
  margin: 0;
  color: var(--text-secondary);
  font-size: 14px; line-height: 1.55;
  max-width: 560px;
}

/* Inside the signup modal, give the form sections more breathing room. */
.biz-signup-modal-card .biz-form-section {
  padding: 22px 22px 10px;
  margin-bottom: 20px;
}
.biz-signup-modal-card .biz-form-section-title {
  font-size: 13px;
  margin-bottom: 6px;
}
.biz-signup-modal-card .biz-form-section-sub {
  margin-bottom: 18px;
  font-size: 13px;
}
.biz-signup-modal-card .biz-form-row { gap: 16px; }
.biz-signup-modal-card .biz-form .field { margin-bottom: 16px; }
.biz-signup-modal-card .biz-form input,
.biz-signup-modal-card .biz-form select {
  padding: 12px 14px;
  font-size: 14px;
}
.biz-signup-modal-card .btn-primary { padding: 14px 20px; font-size: 15px; }

@media (max-width: 640px) {
  .biz-signup-modal-card { padding: 22px 18px 18px; }
  .biz-signup-modal-card .biz-form-section { padding: 16px 14px 6px; }
}
.biz-form-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
}
.biz-form .field { margin-bottom: 14px; }
.biz-form input, .biz-form select, .biz-form textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg);
  font-size: 14px; outline: none;
  font-family: inherit;
}
.biz-form textarea { min-height: 80px; resize: vertical; }
.biz-form input:focus, .biz-form select:focus, .biz-form textarea:focus {
  border-color: var(--primary); background: #fff;
}

/* Section grouping inside the self-service signup form */
.biz-form-section {
  padding: 18px 18px 8px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  margin-bottom: 18px;
}
.biz-form-section-title {
  margin: 0 0 4px;
  font-size: 12px; font-weight: 800; letter-spacing: 0.8px;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.biz-form-section-sub {
  margin: 0 0 14px;
  font-size: 13px; color: var(--text-secondary); line-height: 1.5;
}
.biz-form-section .biz-form-row {
  /* the card group section already has gutter; keep field gaps tight */
  gap: 12px;
}
.biz-form-section .field:last-child { margin-bottom: 6px; }

.biz-form-secure-note {
  display: flex; align-items: center; gap: 6px;
  margin: 6px 0 0;
  font-size: 11px;
  color: var(--text-secondary);
}

.form-hint {
  font-size: 11px;
  color: var(--text-secondary);
  margin: 4px 0 0;
}

/* ─── Lewte Scan button ───────────────────────────────────────── */
.btn-scan {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%;
  padding: 14px 16px;
  background: rgba(255,255,255,0.16);
  color: #fff;
  border: 0; border-radius: var(--r-md);
  font-family: inherit; font-weight: 700; font-size: 15px;
  cursor: pointer;
}
.btn-scan:hover { background: rgba(255,255,255,0.26); transform: translateY(-1px); }
.btn-scan .icon { --icon-size: 18px; }

/* ─── QR scanner overlay ──────────────────────────────────────── */
.qr-scanner-overlay {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.85);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000;
  padding: 20px;
}
.qr-scanner-card {
  background: #fff;
  border-radius: var(--r-xl);
  padding: 24px;
  width: 100%; max-width: 420px;
  position: relative;
  box-shadow: var(--shadow-lg);
}
.qr-scanner-card h3 { margin: 0 0 6px; font-size: 22px; font-weight: 800; }
.qr-scanner-sub { margin: 0 0 14px; font-size: 13px; color: var(--text-secondary); }
.qr-scanner-close {
  position: absolute; top: 14px; right: 14px;
  width: 32px; height: 32px;
  background: var(--bg);
  border: 0; border-radius: 50%;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: var(--text);
}
.qr-scanner-video-wrap {
  position: relative;
  background: #000;
  border-radius: var(--r-md);
  overflow: hidden;
  aspect-ratio: 1 / 1;
}
.qr-scanner-video-wrap video {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.qr-scanner-reticle {
  position: absolute;
  inset: 18% 18%;
  border: 3px solid rgba(255,255,255,0.85);
  border-radius: 12px;
  box-shadow: 0 0 0 100vmax rgba(0,0,0,0.3);
  pointer-events: none;
}
.qr-scanner-hint {
  margin: 12px 0 0;
  font-size: 11px;
  color: var(--text-secondary);
  text-align: center;
}

/* ─── Admin · QR codes tab ────────────────────────────────────── */
.admin-qr-head h1 { font-size: 28px; font-weight: 800; margin: 16px 0 6px; }
.admin-qr-head p { color: var(--text-secondary); margin: 0 0 24px; }
.admin-qr-msg {
  max-width: 480px; margin: 80px auto; text-align: center;
  background: #fff; padding: 32px; border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}
.admin-qr-msg code { background: var(--bg); padding: 2px 6px; border-radius: 4px; font-size: 12px; }
.admin-qr-form-card {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 22px;
  margin-bottom: 28px;
  box-shadow: var(--shadow-sm);
}
.admin-qr-form-card h3 { margin: 0 0 16px; font-size: 16px; font-weight: 800; }
.admin-qr-advanced { margin: 4px 0 4px; }
.admin-qr-advanced > summary {
  cursor: pointer; font-size: 12px; font-weight: 700; color: var(--text-secondary);
  list-style: none; padding: 6px 0; user-select: none;
}
.admin-qr-advanced > summary::-webkit-details-marker { display: none; }
.admin-qr-advanced > summary::before { content: '▸ '; color: var(--text-secondary); }
.admin-qr-advanced[open] > summary::before { content: '▾ '; }
.admin-qr-advanced .field { margin-top: 8px; }
.admin-qr-list-title { font-size: 14px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.6px; color: var(--text-secondary); margin: 8px 0 14px; }
.admin-qr-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}
.admin-qr-empty {
  grid-column: 1 / -1;
  background: var(--bg);
  border: 1.5px dashed var(--border);
  border-radius: var(--r-md);
  padding: 32px;
  text-align: center;
  color: var(--text-secondary);
}
.admin-qr-card {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 16px;
  box-shadow: var(--shadow-sm);
}
.admin-qr-card.admin-qr-inactive { opacity: 0.55; }
.admin-qr-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.admin-qr-pts { font-weight: 900; color: var(--primary); font-size: 16px; }
.admin-qr-card h4 { margin: 0 0 12px; font-size: 15px; font-weight: 800; }
.admin-qr-image {
  background: #fff;
  border: 1.5px solid var(--border);
  border-radius: var(--r-md);
  padding: 8px;
  display: flex; justify-content: center;
  margin-bottom: 10px;
}
.admin-qr-image img { display: block; max-width: 100%; height: auto; }
.admin-qr-meta {
  display: flex; flex-direction: column; gap: 4px;
  font-size: 11px; color: var(--text-secondary); margin-bottom: 10px;
}
.admin-qr-code-str {
  font-family: monospace; background: var(--bg); padding: 4px 8px; border-radius: 6px;
  word-break: break-all;
}
.admin-qr-badge { font-weight: 600; color: var(--primary); }
.admin-qr-msg-chip { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; color: var(--success); }
.admin-qr-msg-chip .icon { --icon-size: 13px; }
.admin-qr-form-actions { display: flex; align-items: center; gap: 12px; }
.admin-qr-stats { display: flex; gap: 12px; align-items: center; font-size: 12px; color: var(--text-secondary); margin-bottom: 8px; }
.admin-qr-inactive-pill {
  background: #FEF3C7; color: #92400E;
  padding: 2px 8px; border-radius: 999px; font-weight: 700; font-size: 11px;
}
.admin-qr-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.admin-qr-actions button { font-size: 12px; padding: 6px 10px; white-space: nowrap; }
/* Download spans the full card; Edit + Deactivate split the row below it so
   nothing ever overflows a narrow (260px) card. */
.admin-qr-actions [data-download-qr] { flex: 1 1 100%; justify-content: center; }
.admin-qr-actions [data-edit-qr],
.admin-qr-actions [data-toggle-qr] { flex: 1 1 0; min-width: 0; }
.admin-qr-limits {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px;
}
.admin-qr-limit-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 700; color: var(--text-secondary);
  background: var(--bg); padding: 3px 8px; border-radius: 999px;
}
.admin-qr-limit-pill.is-expired { background: #FEF3C7; color: #92400E; }
/* Promo code big monospace display on admin cards. */
.promo-code-display {
  font-family: 'SF Mono', ui-monospace, Menlo, monospace;
  font-weight: 800; font-size: 20px; letter-spacing: 1px;
  color: var(--primary);
  background: linear-gradient(135deg, rgba(124,58,237,0.10), rgba(236,72,153,0.10));
  border: 1.5px dashed var(--primary);
  border-radius: var(--r-md);
  padding: 12px; text-align: center; margin-bottom: 10px;
  word-break: break-all;
}
/* "Premium · N days free" pill on a promo-code admin card. */
.promo-premium-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 800; color: #fff;
  background: linear-gradient(135deg, #7C3AED, #D946EF);
  padding: 5px 12px; border-radius: var(--r-full); margin-bottom: 10px;
}
.promo-premium-pill .icon { --icon-size: 13px; }
/* Promo code student entry modal. */
.promo-modal-sub { margin: 4px 0 18px; color: var(--text-secondary); font-size: 14px; }
#promoCodeInput {
  width: 100%; text-align: center;
  font-family: 'SF Mono', ui-monospace, Menlo, monospace;
  font-weight: 800; font-size: 20px; letter-spacing: 2px;
  padding: 14px; margin-bottom: 12px;
  border: 1.5px solid var(--border); border-radius: var(--r-md);
}
#promoCodeInput:focus { outline: none; border-color: var(--primary); }
.promo-modal-submit { width: 100%; }
.promo-modal-status {
  font-size: 13px; font-weight: 600; margin-bottom: 12px; text-align: center;
  padding: 8px; border-radius: var(--r-sm);
}
.promo-modal-status.is-error { background: #FEE2E2; color: #B91C1C; }

/* ─── QR reward popup ─────────────────────────────────────────── */
.qr-reward-overlay {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex; align-items: center; justify-content: center;
  z-index: 1100;
  padding: 20px;
}
.qr-reward-card {
  background: #fff;
  border-radius: var(--r-xl);
  padding: 32px;
  width: 100%; max-width: 380px;
  text-align: center;
  box-shadow: var(--shadow-lg);
  animation: qr-reward-pop 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes qr-reward-pop {
  0% { transform: scale(0.85); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
.qr-reward-emoji { font-size: 64px; line-height: 1; margin-bottom: 8px; }
.qr-reward-card h2 {
  margin: 0 0 6px;
  font-size: 28px; font-weight: 900; color: var(--primary);
}
.qr-reward-card p { margin: 0 0 18px; font-size: 14px; color: var(--text-secondary); }
.qr-reward-message {
  background: rgba(124,58,237,0.08);
  border: 1px solid rgba(124,58,237,0.2);
  border-radius: var(--r-md, 12px);
  padding: 14px 16px; margin: 0 0 18px;
  font-size: 15px; font-weight: 600; line-height: 1.45;
  color: var(--text); white-space: pre-wrap;
}
.qr-reward-badge {
  display: flex; align-items: center; gap: 12px;
  background: linear-gradient(135deg, #F9F5FF, #fff);
  border: 1.5px solid var(--primary);
  border-radius: var(--r-md);
  padding: 12px 14px;
  margin: 0 0 18px;
  text-align: left;
}
.qr-reward-badge-emoji { font-size: 32px; line-height: 1; }
.qr-reward-badge strong {
  display: block;
  font-size: 11px; color: var(--primary); text-transform: uppercase; letter-spacing: 0.6px;
}
.qr-reward-badge span { font-size: 14px; font-weight: 700; color: var(--text); }
.qr-reward-card .btn-primary { width: 100%; padding: 12px; }

/* ─── Essay Assistant wizard ─────────────────────────────── */
.essay-steps {
  list-style: none;
  display: flex; gap: 12px; padding: 0; margin: 0 0 24px;
  flex-wrap: wrap;
}
.essay-step {
  display: flex; align-items: center;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--bg);
  border: 1px solid var(--border);
  font-size: 12px; font-weight: 600;
  color: var(--text-secondary);
}
.essay-step.is-active {
  background: var(--primary);
  color: #fff;
  border-color: var(--primary);
}
.essay-step.is-done {
  background: rgba(124,58,237,0.1);
  color: var(--primary);
  border-color: var(--primary);
}
.essay-stage h2 {
  font-size: 22px; font-weight: 800; margin: 0 0 6px;
}
.essay-stage .essay-sub {
  font-size: 13px; color: var(--text-secondary); line-height: 1.5;
  margin: 0 0 18px;
}
.essay-stage textarea {
  width: 100%;
  padding: 14px;
  font-size: 14px; line-height: 1.5;
  font-family: inherit;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  background: var(--bg);
  resize: vertical;
  min-height: 100px;
}
.essay-stage textarea:focus { outline: none; border-color: var(--primary); background: #fff; }
.essay-actions {
  display: flex; justify-content: space-between; gap: 12px;
  margin-top: 18px;
}
.essay-actions .btn-ghost { background: transparent; }

/* ─── Essay review (Step 5) ──────────────────────────────────── */
.essay-review-prompt-bubble {
  background: #F5F3FF; border-left: 3px solid var(--primary);
  padding: 10px 14px; border-radius: 0 8px 8px 0;
  font-size: 13px; color: #1F2937; margin: 0 0 14px;
}
.essay-review-results {
  margin-top: 24px;
  background: #fff; border-radius: var(--r-lg); box-shadow: var(--shadow-sm);
  padding: 20px 22px;
}
.review-header {
  display: flex; gap: 18px; align-items: flex-start;
  padding-bottom: 16px; margin-bottom: 16px;
  border-bottom: 1px solid var(--border);
}
.review-grade {
  flex-shrink: 0;
  width: 60px; height: 60px;
  display: flex; align-items: center; justify-content: center;
  background: var(--primary-gradient); color: #fff;
  border-radius: 14px;
  font-size: 22px; font-weight: 800;
}
.review-header h3 { margin: 0; font-size: 17px; font-weight: 800; }
.review-summary { margin: 4px 0 0; font-size: 13px; color: #1F2937; line-height: 1.5; }
.review-next-steps {
  background: #FFF4E5; border-left: 3px solid #F2C97A; color: #6B3F00;
  padding: 12px 14px; border-radius: 0 8px 8px 0;
  font-size: 13px; line-height: 1.5; margin: 0 0 18px;
}
.review-section { margin: 0 0 18px; }
.review-section h4 {
  margin: 0 0 10px; font-size: 12px; font-weight: 800;
  letter-spacing: 0.5px; text-transform: uppercase;
  color: var(--text-secondary);
}
.review-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.review-item {
  padding: 12px 14px; border-radius: 10px; border-left: 3px solid var(--border);
  background: #F9FAFB;
}
.review-strength { border-left-color: #10B981; background: #ECFDF5; }
.review-concern { border-left-color: #EF4444; background: #FEF2F2; }
.review-suggestion { border-left-color: var(--primary); background: #F5F3FF; }
.review-point { margin: 0; font-size: 13px; font-weight: 700; line-height: 1.5; }
.review-quote {
  margin: 6px 0 0; padding: 6px 10px;
  background: rgba(255, 255, 255, 0.7);
  border-radius: 6px;
  font-size: 12px; font-style: italic; color: #4B5563; line-height: 1.5;
}
.review-why { margin: 6px 0 0; font-size: 12px; color: #4B5563; line-height: 1.5; }
.essay-teacher-bubble {
  background: linear-gradient(135deg, #F9F5FF, #fff);
  border-left: 3px solid var(--primary);
  border-radius: var(--r-md);
  padding: 16px 18px;
  margin: 0 0 14px;
  font-size: 15px; line-height: 1.55; color: var(--text);
  font-weight: 500;
}
.essay-approaches {
  display: flex; flex-direction: column; gap: 14px;
}
.essay-approach-card {
  display: flex; gap: 14px;
  text-align: left;
  width: 100%;
  background: #fff;
  border: 1.5px solid var(--border);
  border-radius: var(--r-lg);
  padding: 18px;
  cursor: pointer;
  font-family: inherit;
  transition: border-color 0.15s, transform 0.1s, box-shadow 0.15s;
}
.essay-approach-card:hover {
  border-color: var(--primary);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}
.essay-approach-card .approach-num {
  width: 32px; height: 32px; flex-shrink: 0;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 14px;
}
.essay-approach-card h4 {
  margin: 0 0 6px;
  font-size: 16px; font-weight: 700; color: var(--text);
}
.essay-approach-card .approach-angle {
  margin: 0 0 8px;
  font-size: 14px; color: var(--text); line-height: 1.5;
}
.essay-approach-card .approach-why {
  margin: 0;
  font-size: 12px; color: var(--text-secondary); line-height: 1.5;
}
.essay-outline {
  display: flex; flex-direction: column; gap: 14px;
}
.outline-section {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 16px;
}
.outline-section h4 {
  margin: 0 0 6px;
  font-size: 14px; font-weight: 800; color: var(--primary);
  text-transform: uppercase;
  letter-spacing: 0.6px;
}
.outline-section p {
  margin: 0 0 6px;
  font-size: 14px; line-height: 1.55; color: var(--text);
}
.outline-section .outline-goal { color: var(--text); }
.outline-section .outline-details {
  margin-top: 8px;
  font-size: 13px; color: var(--text-secondary);
  background: var(--bg); padding: 10px 12px; border-radius: var(--r-sm);
}
.outline-avoid h4 { color: var(--warning); }
.outline-avoid { border-left: 3px solid var(--warning); }

.essay-loading {
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  padding: 32px;
  text-align: center;
}
.essay-loading .spinner {
  width: 32px; height: 32px;
  border: 3px solid var(--border);
  border-top-color: var(--primary);
  border-radius: 50%;
  animation: essay-spin 0.8s linear infinite;
}
@keyframes essay-spin { to { transform: rotate(360deg); } }
.essay-loading p { color: var(--text-secondary); font-size: 14px; margin: 0; }

/* ─── Logged-in only visibility ────────────────────────────── */
body.logged-out .logged-in-only { display: none !important; }
.strip-meta { font-size: 11px; color: var(--text-secondary); margin-left: 8px; }

/* ─── Staff role scoping ───────────────────────────────────────
   Non-super admins (ads / surveys) shouldn't see student-facing routes
   in the nav or be able to navigate to them. Super admins see all. */
body.role-staff a[data-route="scholarships"],
body.role-staff a[data-route="wallet"],
body.role-staff a[data-route="lewte"],
body.role-staff a[data-route="jobs"],
body.role-staff a[data-route="essay"],
body.role-staff a[data-route="testprep"],
body.role-staff a[data-route="schools"],
body.role-staff a[data-route="finance"],
body.role-staff a[data-route="firstgen"],
body.role-staff [data-nav-toggle] {
  display: none !important;
}

/* ─── Premium gating ──────────────────────────────────────────
   Wrap a route's main content in .premium-content and the
   paywall card in .premium-gate. CSS hides whichever is wrong
   for the current premium state. */
.premium-gate { display: none; }
.premium-content { display: block; }
body:not(.is-premium) .premium-gate    { display: flex; }
body:not(.is-premium) .premium-content { display: none; }

.premium-gate {
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 48px 24px;
  background: linear-gradient(135deg, #F9F5FF, #EDE0FF);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  margin: 24px auto;
  max-width: 540px;
  gap: 14px;
}
.premium-gate-icon {
  width: 64px; height: 64px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), #5B0FA8);
  display: flex; align-items: center; justify-content: center;
  color: #fff;
}
.premium-gate-icon .icon { --icon-size: 32px; }
.premium-gate h2 { margin: 0; font-size: 24px; font-weight: 800; color: var(--text); }
.premium-gate p { margin: 0; max-width: 420px; color: var(--text-secondary); line-height: 1.5; }
.premium-gate .btn-primary { margin-top: 8px; padding: 12px 28px; }

/* Swipe counter (scholarships route) */
.swipe-counter-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 8px 14px;
  margin: 0 0 14px;
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: var(--r-full);
}
body.is-premium .swipe-counter-row { background: linear-gradient(135deg, #F9F5FF, #fff); border-color: var(--primary); }
.swipe-counter { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.swipe-counter.is-premium { color: var(--primary); font-weight: 800; }
.swipe-counter-cta {
  background: transparent; border: 0; cursor: pointer;
  font-family: inherit; font-size: 12px; font-weight: 800;
  color: var(--primary);
}
body.is-premium .swipe-counter-cta { display: none; }

/* Premium route */
[data-route="premium"] { max-width: 720px; margin: 0 auto; padding: 0 4px; }
.premium-page-head { margin: 0 0 24px; }
.premium-page-head h1 { font-size: 32px; font-weight: 800; margin: 16px 0 8px; }
.premium-page-head p { color: var(--text-secondary); margin: 0; line-height: 1.5; }
.premium-eyebrow {
  display: inline-block;
  font-size: 11px; font-weight: 800; letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--primary);
  margin-top: 12px;
}
.premium-price-row {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 20px;
  margin-bottom: 18px;
  box-shadow: var(--shadow-sm);
  display: flex; align-items: baseline; gap: 6px;
}
.premium-price-amount { font-size: 44px; font-weight: 800; color: var(--primary); }
.premium-price-cadence { font-size: 15px; color: var(--text-secondary); }
.premium-perks {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 16px;
  margin-bottom: 18px;
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column; gap: 16px;
}
.premium-perk { display: flex; align-items: flex-start; gap: 14px; }
.premium-perk .perk-mark {
  width: 32px; flex-shrink: 0;
  text-align: center;
  font-size: 20px; font-weight: 800;
  color: var(--primary);
}
.premium-perk h4 { margin: 0; font-size: 15px; font-weight: 700; color: var(--text); }
.premium-perk p { margin: 2px 0 0; font-size: 13px; color: var(--text-secondary); }
.premium-footnote { text-align: center; font-size: 11px; color: var(--text-light); margin-top: 10px; }
.premium-status-card {
  background: #fff;
  border-radius: var(--r-lg);
  padding: 22px;
  box-shadow: var(--shadow-sm);
  display: flex; flex-direction: column; gap: 12px;
}
.premium-status-card .status-row {
  display: flex; justify-content: space-between;
  font-size: 14px; color: var(--text-secondary);
}
.premium-status-card .status-row strong { color: var(--text); }

/* ─── Featured jobs (grouped by field) ─────────────────────── */
.job-field-block { margin-bottom: 28px; }
.job-field-heading {
  font-size: 16px; font-weight: 800; color: var(--text);
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 1.5px solid var(--border);
}
.job-field-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.featured-job .job-logo {
  width: 40px; height: 40px;
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  color: white; font-weight: 800; font-size: 12px;
  flex-shrink: 0;
}
#jobFilters {
  flex-wrap: wrap;
  overflow-x: auto;
  scrollbar-width: thin;
}

/* ─── Questionnaire route ─────────────────────────────────── */
.questionnaire-head { max-width: 720px; margin: 0 auto 24px; padding: 0 4px; }
.questionnaire-head h1 { font-size: 28px; font-weight: 800; margin: 16px 0 6px; }
.questionnaire-head p { color: var(--text-secondary); font-size: 14px; line-height: 1.5; margin: 0; }
.questionnaire-form { max-width: 720px; margin: 0 auto; }
.questionnaire-form .biz-form-section { background: #fff; }
.questionnaire-form .field label { display: block; font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 6px; }

.back-link {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent; border: 0; padding: 4px 0; cursor: pointer;
  font-family: inherit; font-size: 13px; font-weight: 600;
  color: var(--primary);
}
.back-link:hover { color: var(--primary-dark, #5B21B6); }
.back-link .icon { --icon-size: 14px; }

/* Pill picker — radio-style buttons for short enum fields */
.pill-picker { display: flex; flex-wrap: wrap; gap: 8px; }
.pill-picker .pill {
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text-secondary);
  font-size: 13px; font-weight: 500;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.pill-picker .pill:hover { border-color: var(--primary); color: var(--primary); }
.pill-picker .pill.active {
  background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 700;
}

/* Toggle row — label + native checkbox styled as a switch */
.toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 0;
  font-size: 14px; color: var(--text);
  cursor: pointer;
  border-top: 1px solid var(--border);
}
.toggle-row:first-of-type { border-top: 0; }
.toggle-row > span:first-child { flex: 1; margin-right: 12px; }
.toggle-input { position: absolute; opacity: 0; pointer-events: none; }
.toggle-switch {
  position: relative;
  width: 40px; height: 22px;
  background: var(--border); border-radius: 999px;
  transition: background 0.15s;
  flex-shrink: 0;
}
.toggle-switch::after {
  content: ''; position: absolute;
  top: 2px; left: 2px;
  width: 18px; height: 18px;
  background: #fff; border-radius: 50%;
  transition: transform 0.15s;
  box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.toggle-input:checked + .toggle-switch { background: var(--primary); }
.toggle-input:checked + .toggle-switch::after { transform: translateX(18px); }
.toggle-input:focus-visible + .toggle-switch { box-shadow: 0 0 0 2px rgba(124,58,237,0.3); }
.biz-form-secure-note .icon {
  --icon-size: 14px;
  color: var(--success);
}

@media (max-width: 720px) {
  .business-hero h1 { font-size: 38px; }
  .biz-form-row { grid-template-columns: 1fr; }
  .biz-form-section { padding: 14px; }
}
.footer-bottom {
  max-width: 1200px;
  margin: 36px auto 0;
  padding-top: 18px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-light);
  text-align: center;
}

/* ─── Modal & Drawer ────────────────────────────────────────── */
.modal {
  position: fixed; inset: 0; z-index: 100;
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.modal[hidden], .drawer[hidden], .toast[hidden],
[hidden] { display: none !important; }
.modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(15, 4, 30, 0.55);
  backdrop-filter: blur(8px);
}
.modal-card {
  position: relative;
  background: #fff;
  border-radius: var(--r-xl);
  padding: 32px 28px;
  width: 100%;
  max-width: 420px;
  /* Never grow past the viewport — scroll the card itself when content overflows.
     20px accounts for the modal wrapper's vertical padding. */
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  overscroll-behavior: contain;
  box-shadow: var(--shadow-lg);
  animation: pop .2s ease;
}
.modal-close {
  position: absolute; top: 12px; right: 14px;
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-secondary);
  z-index: 1;
}
.modal-close .icon { --icon-size: 18px; }
.modal-close:hover { background: var(--border); }
.logo-section { text-align: center; margin-bottom: 20px; }
.logo-icon { --icon-size: 40px; color: var(--primary); margin-bottom: 6px; }
.logo-section h2 { margin: 0; font-size: 26px; color: var(--primary); }
.logo-section p { margin: 2px 0 0; font-size: 13px; color: var(--text-secondary); }
.auth-tabs { background: var(--bg); padding: 4px; border-radius: var(--r-md); margin-bottom: 20px; }
.auth-tabs .tab { background: transparent; border: none; }
.auth-tabs .tab.tab-active { background: #fff; color: var(--primary); box-shadow: var(--shadow-sm); }
.field { margin-bottom: 14px; }
.field label { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.field input {
  width: 100%; padding: 12px 14px;
  border: 1px solid var(--border); border-radius: var(--r-md);
  background: var(--bg); font-size: 15px; outline: none;
}
.field input:focus { border-color: var(--primary); background: #fff; }
.form-foot { font-size: 11px; color: var(--text-light); text-align: center; margin: 10px 0 0; }

.drawer { position: fixed; inset: 0; z-index: 90; display: flex; justify-content: flex-end; }
.drawer-backdrop { position: absolute; inset: 0; background: rgba(15,4,30,0.45); }
.drawer-card {
  position: relative; background: #fff;
  width: min(440px, 100%);
  height: 100%;
  padding: 28px;
  overflow-y: auto;
  box-shadow: -10px 0 40px rgba(0,0,0,0.15);
  animation: slideIn .25s ease;
}
.drawer-card h2 { margin: 0 0 8px; font-size: 22px; }
.drawer-card .meta-row {
  display: flex; gap: 10px; flex-wrap: wrap; margin: 12px 0 18px;
}
.drawer-card .pill {
  background: var(--bg); padding: 6px 12px; border-radius: var(--r-full);
  font-size: 12px; font-weight: 600; color: var(--text-secondary);
}
.drawer-card .pill.amount { background: rgba(124,58,237,0.12); color: var(--primary); font-weight: 800; }
.drawer-card section { margin-bottom: 20px; }
.drawer-card h4 { margin: 0 0 6px; font-size: 13px; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-secondary); }
.drawer-card p { margin: 0; line-height: 1.6; font-size: 14px; color: var(--text); }

.toast {
  position: fixed; bottom: 24px; left: 50%;
  transform: translateX(-50%);
  background: var(--text);
  color: #fff;
  padding: 12px 20px;
  border-radius: var(--r-full);
  font-size: 14px; font-weight: 600;
  box-shadow: var(--shadow-lg);
  z-index: 200;
  animation: pop .2s ease;
}

@keyframes pop { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes slideIn { from { transform: translateX(100%); } to { transform: translateX(0); } }

/* ─── Responsive ────────────────────────────────────────────── */

/* Below 920px: nav switches to the right-anchored burger menu AND the hero
   collapses to a single stacked column. Above 920px: full desktop. */
@media (max-width: 760px) {
  .nav-inner {
    width: 100%;
    padding-right: max(24px, env(safe-area-inset-right, 0px));
    padding-left: max(24px, env(safe-area-inset-left, 0px));
  }
  .nav-links { display: none; }
  .nav-burger { display: block; margin-left: auto; }
  .nav-actions { display: none; }

  /* Open menu: a right-anchored dropdown that flows below the top row.
     The links + actions panels share the same width and right margin so they
     read as one unified popover; round corners on outside edges only. */
  .nav.open .nav-inner {
    flex-wrap: wrap;
    row-gap: 0;
  }
  .nav.open .nav-links {
    display: flex; flex-direction: column;
    flex: 0 0 auto;        /* reset base .nav-links flex:1 so width sticks */
    box-sizing: border-box;
    width: min(280px, calc(100vw - 28px));
    margin-left: auto;     /* push the wrapped panel to the right */
    order: 10;
    background: #fff;
    border-radius: var(--r-md) var(--r-md) 0 0;
    box-shadow: var(--shadow-lg);
    padding: 12px 14px 8px;
    gap: 2px;
    margin-top: 6px;
  }
  .nav.open .nav-links a { padding: 12px 14px; }
  /* Flatten dropdowns on mobile — show as inline grouped sections */
  .nav.open .nav-group { display: contents; }
  .nav.open .nav-trigger {
    padding: 14px 14px 4px; font-size: 11px; letter-spacing: 1px;
    text-transform: uppercase; color: var(--text-light); cursor: default;
    pointer-events: none;
  }
  .nav.open .nav-chevron { display: none; }
  .nav.open .nav-dropdown {
    position: static; opacity: 1; pointer-events: auto; transform: none;
    background: transparent; border: 0; box-shadow: none; padding: 0;
    flex-direction: column; min-width: 0;
    visibility: visible;
  }
  .nav.open .nav-dropdown a { padding: 10px 14px; }
  .nav.open .nav-actions {
    display: flex; padding: 8px 14px 14px;
    box-sizing: border-box;
    width: min(280px, calc(100vw - 28px));
    margin-left: auto;
    order: 11;
    gap: 10px;
    background: #fff;
    border-radius: 0 0 var(--r-md) var(--r-md);
    box-shadow: var(--shadow-lg);
    border-top: 1px solid var(--border);
  }
  .nav.open .nav-actions .btn-ghost,
  .nav.open .nav-actions .btn-primary {
    flex: 1; justify-content: center;
  }
}

@media (max-width: 760px) {
  /* At this breakpoint the burger nav already kicked in (rule above) and now
     the hero collapses to a single column with the stacked cards below. */
  .hero { grid-template-columns: 1fr; gap: 32px; padding: 36px 0 16px; }
  .hero h1 { /* fluid clamp handles this — leave it */ }
  .hero-art {
    height: 460px;
    width: 100%;            /* explicit width so absolute children can use 100% */
    max-width: 360px;
    margin: 0 auto;
  }
  /* Stack the cards centered along the vertical axis so they don't get
     clipped by the narrower viewport. Each card centers via left:50% + a
     translateX nudge, plus a small rotation for the playful tilt. */
  .hero-card {
    width: min(280px, calc(100% - 24px));
    left: 50%;
    right: auto;
    margin-left: 0;
    /* Force a consistent transform origin so the rotation looks right */
    transform-origin: center;
  }
  .hero-card-1 { top: 8px;   transform: translateX(calc(-50% - 18px)) rotate(-4deg); }
  .hero-card-2 { top: 130px; transform: translateX(calc(-50% + 14px)) rotate(3deg);  z-index: 2; }
  .hero-card-3 { top: 252px; transform: translateX(calc(-50% - 10px)) rotate(-2deg); }
  .hero-card:hover { transform: translateX(-50%) translateY(-6px) rotate(0); z-index: 3; }
  .footer-inner { grid-template-columns: 1fr 1fr; }
  .points-card { grid-template-columns: 1fr; }
  .points-numbers { font-size: 44px; }
  .swipe-stage { height: 480px; }
}
@media (max-width: 520px) {
  .footer-inner { grid-template-columns: 1fr; }
  .page-head h1 { font-size: 26px; }
  /* .hero h1 is now sized via clamp() at the base rule — no override here */
  .swipe-actions { flex-wrap: wrap; }
  .btn-info { order: 3; flex: 1 1 100%; }
}

/* ─── Admin dashboards ─────────────────────────────────── */
.dash-hero {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 26px 28px;
  background: linear-gradient(135deg, #7C3AED 0%, #A855F7 50%, #EC4899 100%);
  color: #fff;
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lg);
  margin-bottom: 22px;
}
.dash-hero h2 { margin: 4px 0 6px; font-size: 28px; font-weight: 800; }
.dash-hero p { margin: 0; font-size: 14px; opacity: 0.92; max-width: 520px; line-height: 1.5; }
.dash-eyebrow { display: inline-block; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; font-weight: 700; padding: 5px 10px; border-radius: var(--r-full); background: rgba(255,255,255,0.2); }
.dash-hero-art { font-size: 56px; opacity: 0.9; }
.dash-hero-art .icon { color: #fff; --icon-size: 56px; }

.kpi-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;
  margin-bottom: 22px;
}
.kpi-tile {
  --accent: #7C3AED;
  position: relative;
  background: var(--card);
  border-radius: var(--r-lg);
  padding: 18px 20px 16px;
  box-shadow: var(--shadow-sm);
  border: 1px solid var(--border);
  overflow: hidden;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.kpi-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.kpi-tile::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: var(--accent);
}
.kpi-tile .kpi-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 10px;
  background: color-mix(in srgb, var(--accent) 12%, white);
  color: var(--accent);
  margin-bottom: 10px;
}
.kpi-tile .kpi-icon .icon { color: var(--accent); }
.kpi-value { display: block; font-size: 26px; font-weight: 800; color: var(--text); line-height: 1.1; }
.kpi-label { display: block; margin-top: 4px; font-size: 13px; font-weight: 600; color: var(--text-secondary); }
.kpi-sub { display: block; margin-top: 2px; font-size: 12px; color: var(--text-light); }
.kpi-link { color: var(--primary); font-weight: 700; text-decoration: none; }

.dash-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 22px; }
.dash-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-bottom: 22px; }

.dash-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 18px 20px;
  margin-bottom: 18px;
  box-shadow: var(--shadow-sm);
}
.dash-card-head {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  margin-bottom: 14px;
}
.dash-card-head h3 { margin: 0; font-size: 16px; font-weight: 700; }
.dash-meta { font-size: 12px; color: var(--text-secondary); }
/* Donut charts stack the ring on top and the legend full-width below, so the
   legend labels (e.g. "22-25", "Non-binary", "Undisclosed") have room and never
   truncate to "1..." in the narrow 3-up analytics cards. */
.chart-card .chart-flex { display: flex; flex-direction: column; align-items: center; gap: 14px; }

.donut-svg { flex-shrink: 0; }
.donut-svg .donut-center { font-size: 18px; font-weight: 800; fill: var(--text); }
.donut-svg .donut-sub { font-size: 10px; fill: var(--text-secondary); }

.chart-legend { list-style: none; margin: 0; padding: 0; width: 100%; max-width: 260px; }
.chart-legend li {
  display: grid; grid-template-columns: 14px 1fr auto; align-items: center;
  gap: 10px; padding: 5px 0; font-size: 13px;
}
.legend-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.legend-label { color: var(--text); font-weight: 500; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.legend-value { font-weight: 700; color: var(--text-secondary); font-variant-numeric: tabular-nums; }

.hbar-list { list-style: none; margin: 0; padding: 0; }
.hbar-row {
  display: grid; grid-template-columns: minmax(140px, 1.5fr) 2fr auto;
  align-items: center; gap: 14px; padding: 8px 0;
  border-bottom: 1px dashed #EEF0F8;
}
.hbar-row:last-child { border-bottom: none; }
.hbar-label { font-size: 13px; font-weight: 600; color: var(--text); display: flex; align-items: center; gap: 8px; min-width: 0; }
.hbar-track { background: #F4F2FB; height: 10px; border-radius: var(--r-full); overflow: hidden; }
.hbar-fill { display: block; height: 100%; border-radius: var(--r-full); transition: width 0.4s ease; }
.hbar-value { font-size: 13px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
.rank-pill {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: var(--r-full);
  background: var(--primary-gradient); color: #fff;
  font-size: 11px; font-weight: 800; flex-shrink: 0;
}
.kw-chip {
  background: rgba(124,58,237,0.08);
  color: var(--primary);
  padding: 4px 10px;
  border-radius: var(--r-full);
  font-size: 12px; font-weight: 600;
}

.line-svg { display: block; }
.line-svg .line-xlab { font-size: 10px; fill: var(--text-light); font-weight: 600; }

.heat-map {
  width: 100%;
  height: 460px;
  border-radius: var(--r-md);
  margin: 6px 0;
  overflow: hidden;
  border: 1px solid var(--border);
  background: #F8F7FF;
}
.heat-bubble-label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  background: transparent !important;
  border: none !important;
}
.heat-bubble-label span {
  font-size: 12px;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.35);
  font-variant-numeric: tabular-nums;
}
.leaflet-tooltip {
  font-family: inherit;
  font-size: 12px;
  border-radius: 8px;
  border: 1px solid var(--border);
  box-shadow: var(--shadow-md);
  padding: 6px 10px;
}
/* Contain Leaflet's internal panes (z-index up to 700) in their own stacking
   context so a map never bleeds above modals/overlays sitting at z-index 100. */
.leaflet-container { font-family: inherit; position: relative; z-index: 0; }

.sub-section-title {
  margin: 18px 0 10px;
  font-size: 12px; font-weight: 800; letter-spacing: 1px;
  color: var(--text-secondary); text-transform: uppercase;
}
.state-tag {
  display: inline-block; margin-left: 6px; padding: 1px 7px;
  border-radius: var(--r-full);
  font-size: 10px; font-weight: 800; letter-spacing: 0.4px;
  background: rgba(124,58,237,0.10); color: var(--primary);
}
.heat-legend {
  display: flex; align-items: center; gap: 10px;
  margin-top: 8px; font-size: 11px; color: var(--text-secondary); justify-content: flex-end;
}
.heat-gradient {
  display: inline-block; width: 130px; height: 8px; border-radius: var(--r-full);
  background: linear-gradient(90deg, hsla(280,80%,72%,0.78), hsla(220,80%,52%,0.78));
}

.empty-chart { padding: 30px; text-align: center; color: var(--text-light); font-size: 13px; }

/* clickable rows + details */
.admin-row-clickable { cursor: pointer; transition: background 0.15s ease; }
.admin-row-clickable:hover { background: rgba(124,58,237,0.04); }
.row-cta {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px; font-weight: 700; color: var(--primary);
  margin-right: 6px; padding: 6px 10px; border-radius: var(--r-full);
  background: rgba(124,58,237,0.08);
}
.applicant-count { color: var(--info); font-weight: 700; }

.btn-back {
  display: inline-flex; align-items: center; gap: 6px;
  background: transparent; border: 0; cursor: pointer;
  color: var(--primary); font-weight: 600; font-size: 14px;
  margin-bottom: 14px; padding: 6px 0;
}
.btn-back:hover { text-decoration: underline; }

.detail-hero {
  position: relative;
  padding: 28px 32px;
  border-radius: var(--r-xl);
  color: #fff;
  margin-bottom: 22px;
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.detail-hero::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(circle at 100% 0%, rgba(255,255,255,0.18), transparent 50%);
  pointer-events: none;
}
.detail-hero-survey { background: linear-gradient(135deg, #10B981 0%, #3B82F6 100%); }
.detail-hero-meta { position: relative; z-index: 1; }
.detail-hero h2 { margin: 8px 0 6px; font-size: 26px; font-weight: 800; line-height: 1.2; }
.detail-hero p { margin: 0; font-size: 13px; opacity: 0.92; }
.detail-hero p a { color: #fff; text-decoration: underline; }
.brand-pill {
  display: inline-block; padding: 5px 12px; border-radius: var(--r-full);
  background: rgba(0,0,0,0.25); color: #fff; font-size: 11px; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
}

/* anonymous banner for surveys */
.anonymous-banner {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; margin-bottom: 18px;
  background: linear-gradient(135deg, rgba(16,185,129,0.10), rgba(59,130,246,0.10));
  border: 1px solid rgba(16,185,129,0.25);
  border-radius: var(--r-md);
  font-size: 13px; color: var(--text);
}
.anonymous-banner .icon { color: var(--success); }

/* survey responses */
.response-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.response-card {
  background: linear-gradient(180deg, #FBFAFF, #F4F2FB);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 14px 16px;
}
.response-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 1px dashed #DCD7EE;
}
.resp-id {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(124,58,237,0.10); color: var(--primary);
  padding: 4px 10px; border-radius: var(--r-full);
  font-size: 12px; font-weight: 700;
}
.resp-meta { font-size: 11px; color: var(--text-secondary); }
.resp-answers { list-style: none; margin: 0; padding: 0; }
.resp-answers li { padding: 6px 0; border-bottom: 1px dotted #E5E7EB; }
.resp-answers li:last-child { border-bottom: none; }
.resp-q { display: block; font-size: 11px; color: var(--text-secondary); margin-bottom: 2px; }
.resp-a { display: block; font-size: 13px; font-weight: 600; color: var(--text); }

/* applicants table */
.applicants-table { display: flex; flex-direction: column; }
.applicants-head, .applicant-row {
  display: grid; grid-template-columns: 1.6fr 1.6fr 1.4fr 0.9fr 1.1fr;
  gap: 12px; align-items: center;
  padding: 12px 8px;
  border-bottom: 1px solid var(--border);
}
.applicants-head {
  font-size: 11px; font-weight: 700; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: 0.6px;
  background: var(--bg);
  border-radius: var(--r-sm);
}
.applicant-row { font-size: 13px; }
.applicant-row:last-child { border-bottom: none; }
.applicant-cell { display: flex; align-items: center; gap: 10px; min-width: 0; word-break: break-word; }
.applicant-cell.stack { flex-direction: column; align-items: flex-start; gap: 4px; }
.applicant-cell.stack span { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; }
.applicant-cell.stack a { color: var(--text); text-decoration: none; }
.applicant-cell.stack a:hover { color: var(--primary); text-decoration: underline; }
.applicant-cell strong { display: block; font-weight: 700; }
.applicant-meta { display: block; font-size: 11px; color: var(--text-secondary); margin-top: 2px; }
.applicant-avatar {
  width: 36px; height: 36px; border-radius: var(--r-full);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 800; color: #fff;
  flex-shrink: 0;
}

/* ─── Org profiles ──────────────────────────────────── */
.org-link {
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: inherit;
  text-decoration: underline dotted rgba(124,58,237,0.45);
  text-underline-offset: 3px;
  transition: color .12s ease;
}
.org-link:hover { color: var(--primary); text-decoration-color: var(--primary); }

.org-logo {
  border-radius: 10px;
  overflow: hidden;
  flex-shrink: 0;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.org-logo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.org-logo-placeholder {
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 800; flex-shrink: 0;
  letter-spacing: 0.5px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}

.org-list { display: flex; flex-direction: column; }
.org-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px;
  padding: 14px 12px;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  border-radius: var(--r-sm);
  transition: background 0.15s ease;
}
.org-row:hover { background: rgba(124,58,237,0.04); }
.org-row:last-child { border-bottom: none; }
.org-row-left { display: flex; align-items: center; gap: 14px; min-width: 0; flex: 1; }
.org-row-text { min-width: 0; }
.org-row-text strong { display: block; font-size: 14px; font-weight: 700; }
.org-row-meta {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12px; color: var(--text-secondary); margin-top: 4px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%;
}

.org-type-pill {
  display: inline-block;
  padding: 2px 9px;
  border-radius: var(--r-full);
  font-size: 10px; font-weight: 800; letter-spacing: 0.6px;
  text-transform: uppercase;
  flex-shrink: 0;
}
.org-type-pill.org-type-brand    { background: rgba(217,70,239,0.15);  color: #A21CAF; }
.org-type-pill.org-type-employer { background: rgba(59,130,246,0.15);  color: #1D4ED8; }
.org-type-pill.org-type-school   { background: rgba(16,185,129,0.15);  color: #047857; }
.org-type-pill.org-type-research { background: rgba(245,158,11,0.15);  color: #B45309; }

.listing-scope { margin-bottom: 16px; }
.field-help {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  color: var(--text-secondary);
  font-style: italic;
}
.admin-form input[readonly] {
  background: rgba(124,58,237,0.06);
  color: var(--text-secondary);
  cursor: not-allowed;
}

/* ─── Custom select component ───────────────────────────── */
/* The native <select> is hidden but stays in the DOM as the source of
   truth. The trigger + menu visually connect to the form design. */
.sw-select-wrap {
  position: relative;
  display: inline-flex;
  width: 100%;
  font-family: inherit;
}
.sw-select-native {
  /* Hide visually but keep accessible to assistive tech */
  position: absolute !important;
  width: 1px !important; height: 1px !important;
  margin: -1px !important; padding: 0 !important;
  border: 0 !important; overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
}
.sw-select-trigger {
  display: inline-flex; align-items: center; justify-content: space-between;
  gap: 10px;
  width: 100%;
  padding: 10px 14px;
  background: var(--surface, #fff);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  font-family: inherit; font-size: 14px; font-weight: 500;
  color: var(--text);
  cursor: pointer;
  text-align: left;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.sw-select-trigger:hover { border-color: rgba(124,58,237,0.45); }
.sw-select-trigger:focus,
.sw-select-wrap.open .sw-select-trigger {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(124,58,237,0.18);
}
/* When the menu is open, square off the trigger's bottom edge and lift the
   menu's top edge against it — that's what makes it look "connected". */
.sw-select-wrap.open .sw-select-trigger {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom-color: transparent;
}
.sw-select-label {
  flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sw-select-caret {
  color: var(--text-secondary);
  transition: transform 0.2s ease;
  flex-shrink: 0;
}
.sw-select-caret .icon { --icon-size: 14px; }
.sw-select-wrap.open .sw-select-caret { transform: rotate(180deg); color: var(--primary); }

.sw-select-menu {
  position: absolute;
  top: 100%;   /* sits flush against the trigger — no floating gap */
  left: 0; right: 0;
  background: var(--surface, #fff);
  border: 1px solid var(--primary);
  border-top: 0;
  border-radius: 0 0 var(--r-md) var(--r-md);
  box-shadow: 0 12px 28px -8px rgba(15, 23, 42, 0.18);
  max-height: 320px;
  overflow-y: auto;
  z-index: 100;
  padding: 4px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity 0.12s ease, transform 0.12s ease, visibility 0s linear 0.12s;
}
.sw-select-wrap.open .sw-select-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 0.12s ease, transform 0.12s ease;
}
.sw-select-group-label {
  padding: 8px 12px 4px;
  font-size: 10px; font-weight: 800; letter-spacing: 0.8px;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.sw-select-option {
  display: block; width: 100%;
  padding: 9px 12px;
  background: transparent;
  border: 0;
  border-radius: var(--r-sm);
  font-family: inherit; font-size: 14px; font-weight: 500;
  color: var(--text);
  text-align: left;
  cursor: pointer;
  transition: background 0.1s ease;
}
.sw-select-option:hover:not([disabled]) {
  background: rgba(124,58,237,0.08);
  color: var(--primary);
}
.sw-select-option.is-selected {
  background: rgba(124,58,237,0.12);
  color: var(--primary);
  font-weight: 700;
}
.sw-select-option[disabled] {
  opacity: 0.45; cursor: not-allowed;
}
.sw-select-wrap.disabled .sw-select-trigger {
  opacity: 0.55; cursor: not-allowed; background: var(--bg);
}

/* When the role picker uses the custom select, keep its compact "Acting as" look */
.admin-role-picker .sw-select-wrap { width: auto; min-width: 220px; }
.admin-role-picker .sw-select-trigger {
  border: 0;
  background: transparent;
  padding: 6px 8px;
  font-weight: 700;
  color: var(--primary);
}
.admin-role-picker .sw-select-trigger:hover { background: rgba(124,58,237,0.08); }
.admin-role-picker .sw-select-trigger:focus,
.admin-role-picker .sw-select-wrap.open .sw-select-trigger {
  box-shadow: none;
  background: rgba(124,58,237,0.10);
  border-bottom-color: transparent;
}
.admin-role-picker .sw-select-menu { border: 1px solid var(--border); border-radius: var(--r-md); top: calc(100% + 4px); }

/* QR Codes super-admin tab */
.qr-form-card { margin-bottom: 18px; }
.qr-form { display: grid; gap: 14px; }
.qr-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (max-width: 720px) {
  .qr-form-row { grid-template-columns: 1fr; }
}

.qr-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
  margin-top: 4px;
}
.qr-card {
  background: var(--surface, #fff);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: var(--shadow-sm);
}
.qr-image-wrap {
  background: #fff;
  border-radius: var(--r-md);
  padding: 10px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border);
}
.qr-image-wrap img { width: 100%; max-width: 220px; height: auto; image-rendering: pixelated; }
.qr-card-body { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.qr-code-string {
  font-family: ui-monospace, Menlo, monospace;
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: 0.5px;
}
.qr-card-label {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.4;
}
.qr-card-meta {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.qr-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 700;
  padding: 4px 9px;
  border-radius: var(--r-full);
  letter-spacing: 0.3px;
}
.qr-pill .icon { --icon-size: 12px; }
.qr-pill-points {
  background: rgba(245,158,11,0.12);
  color: #B45309;
}
.qr-pill-badge {
  background: rgba(124,58,237,0.12);
  color: var(--primary);
}
.qr-limit-row {
  display: flex; flex-direction: column; gap: 4px;
  padding: 8px 10px;
  background: var(--bg);
  border-radius: var(--r-sm);
  margin-top: 2px;
}
.qr-limit-row-line {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px;
  color: var(--text-secondary);
  font-weight: 600;
}
.qr-limit-row-line .icon { --icon-size: 12px; color: var(--primary); }

.qr-card-actions {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  margin-top: 4px;
}
.qr-card-actions .btn-ghost {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px;
  padding: 6px 10px;
  text-decoration: none;
}
.qr-card-actions .btn-icon { margin-left: auto; }

/* Premium-locked analytics card (base-tier admins see blurred + CTA) */
.locked-analytics {
  position: relative;
  margin-bottom: 16px;
  border-radius: var(--r-xl);
  overflow: hidden;
  isolation: isolate;
}
.locked-analytics-content {
  filter: blur(7px) saturate(0.7);
  pointer-events: none;
  user-select: none;
  /* clip the blur halo so it doesn't leak past the rounded corners */
  -webkit-mask-image: -webkit-radial-gradient(white, black);
}
.locked-analytics-content > .dash-card { margin-bottom: 0; }
.locked-analytics-overlay {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background:
    radial-gradient(circle at 30% 20%, rgba(124,58,237,0.18), transparent 60%),
    radial-gradient(circle at 80% 80%, rgba(236,72,153,0.18), transparent 60%),
    rgba(255,255,255,0.55);
  backdrop-filter: blur(2px);
}
.locked-analytics-cta {
  max-width: 360px;
  text-align: center;
  background: var(--surface, #fff);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 22px 24px;
  box-shadow: var(--shadow-md);
}
.locked-analytics-cta .icon {
  --icon-size: 22px;
  color: var(--primary);
  background: rgba(124,58,237,0.10);
  padding: 10px;
  border-radius: var(--r-full);
  margin-bottom: 10px;
  box-sizing: content-box;
}
.locked-analytics-cta h4 {
  margin: 0 0 8px;
  font-size: 15px; font-weight: 800;
  color: var(--text);
}
.locked-analytics-cta p {
  margin: 0 0 14px;
  font-size: 13px; line-height: 1.5;
  color: var(--text-secondary);
}
.locked-analytics-cta .btn-primary {
  padding: 9px 18px;
  font-size: 13px;
}

/* Product section in a sub-admin Overview that bundles multiple products */
.role-overview-section + .role-overview-section { margin-top: 32px; }
.role-overview-heading {
  margin: 0 0 14px;
  font-size: 14px; font-weight: 800;
  letter-spacing: 0.8px; text-transform: uppercase;
  color: var(--text-secondary);
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}

/* Image uploader inside the admin form */
.form-image-uploader {
  display: flex; align-items: center; gap: 14px;
  padding: 12px;
  background: var(--bg);
  border: 1px dashed var(--border);
  border-radius: var(--r-md);
}
.form-image-preview {
  width: 96px; height: 96px;
  flex-shrink: 0;
  border-radius: var(--r-sm);
  background: rgba(124,58,237,0.06);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.form-image-preview img { width: 100%; height: 100%; object-fit: cover; }
.form-image-empty { font-size: 11px; color: var(--text-secondary); text-align: center; padding: 0 6px; }
.form-image-actions { display: flex; flex-direction: column; gap: 6px; }
.form-image-actions button { padding: 7px 14px; font-size: 13px; cursor: pointer; }

/* Offer details card on the admin coupon detail page */
.offer-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 22px;
  margin: 0;
}
.offer-detail-grid > div { min-width: 0; }
.offer-detail-grid .span-2 { grid-column: 1 / -1; }
.offer-detail-grid dt {
  font-size: 11px; font-weight: 800; letter-spacing: 0.6px;
  color: var(--text-secondary); text-transform: uppercase;
  margin-bottom: 4px;
}
.offer-detail-grid dd {
  margin: 0; font-size: 14px; color: var(--text); line-height: 1.5;
  word-break: break-word;
}
.offer-detail-grid dd .dim { color: var(--text-secondary); }
@media (max-width: 720px) {
  .offer-detail-grid { grid-template-columns: 1fr; }
  .offer-detail-grid .span-2 { grid-column: 1; }
}

/* Hero image preview on the admin coupon detail page */
.detail-hero { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.detail-hero-art {
  position: relative; z-index: 1;
  flex-shrink: 0;
  width: 140px; height: 100px;
  border-radius: var(--r-md);
  overflow: hidden;
  background: rgba(255,255,255,0.18);
}
.detail-hero-img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* sub-admin "your profile" view */
.org-self-hero {
  display: flex; align-items: center; gap: 18px;
  padding: 24px 28px; color: #fff;
  border-radius: var(--r-xl);
  margin-bottom: 18px; box-shadow: var(--shadow-lg);
  position: relative; overflow: hidden;
}
.org-self-hero::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(circle at 100% 0%, rgba(255,255,255,0.18), transparent 50%);
  pointer-events: none;
}
.org-self-logo-wrap, .org-self-meta { position: relative; z-index: 1; }
.org-self-logo-wrap > * {
  width: 88px !important; height: 88px !important; font-size: 30px !important;
  border: 3px solid rgba(255,255,255,0.6);
}
.org-self-meta h2 { margin: 6px 0 4px; font-size: 24px; font-weight: 800; }
.org-self-meta p { margin: 0; font-size: 13px; opacity: 0.92; max-width: 540px; line-height: 1.5; }
.org-self-edit-row {
  display: flex; align-items: center; gap: 16px;
  padding: 14px;
  background: var(--bg);
  border-radius: var(--r-md);
  margin-bottom: 16px;
}
.org-self-edit-preview > * { width: 80px !important; height: 80px !important; font-size: 28px !important; }
.org-self-edit-actions { display: flex; flex-direction: column; gap: 6px; }
.org-self-edit-actions label, .org-self-edit-actions button { padding: 7px 14px; font-size: 13px; cursor: pointer; }

/* org editor modal */
.org-editor-card { max-width: 540px; }
.org-logo-edit {
  display: flex; align-items: center; gap: 16px;
  padding: 14px;
  background: var(--bg);
  border-radius: var(--r-md);
  margin-bottom: 16px;
}
.org-logo-edit-preview > * { width: 80px !important; height: 80px !important; font-size: 28px !important; }
.org-logo-edit-actions { display: flex; flex-direction: column; gap: 6px; }
.org-logo-edit-actions label, .org-logo-edit-actions button { padding: 7px 14px; font-size: 13px; cursor: pointer; }

/* org profile viewer modal */
.org-profile-card {
  max-width: 600px;
  padding: 0;
  overflow: hidden;
}
.org-profile-close-btn {
  background: rgba(255,255,255,0.85);
  z-index: 2;
}
.org-profile-head {
  position: relative;
  padding: 28px 28px 22px;
  color: #fff;
  display: flex; align-items: center; gap: 18px;
}
.org-profile-head::after {
  content: ""; position: absolute; inset: 0;
  background: radial-gradient(circle at 100% 0%, rgba(255,255,255,0.18), transparent 50%);
  pointer-events: none;
}
.org-profile-logo-wrap { position: relative; z-index: 1; }
.org-profile-logo-wrap > * {
  width: 96px !important; height: 96px !important; font-size: 32px !important;
  border: 3px solid rgba(255,255,255,0.6);
}
.org-profile-meta { position: relative; z-index: 1; min-width: 0; }
.org-profile-meta h2 { margin: 6px 0 4px; font-size: 24px; font-weight: 800; }
.org-profile-meta p {
  margin: 4px 0 0; font-size: 13px; opacity: 0.95;
  display: inline-flex; align-items: center; gap: 6px;
}
.org-profile-body {
  padding: 22px 28px 28px;
  max-height: 60vh;
  overflow-y: auto;
}
.org-profile-body h3 {
  margin: 18px 0 8px;
  font-size: 13px; font-weight: 800; letter-spacing: 1px;
  color: var(--text-secondary); text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 6px;
}
.org-profile-body h3:first-child { margin-top: 0; }
.org-profile-bio { font-size: 14px; line-height: 1.55; color: var(--text); margin: 0; }
.org-profile-link {
  display: inline-flex; align-items: center; gap: 6px;
  color: var(--primary); font-weight: 700; text-decoration: none;
  background: rgba(124,58,237,0.10);
  padding: 7px 12px;
  border-radius: var(--r-full);
  font-size: 13px;
}
.org-profile-link:hover { background: rgba(124,58,237,0.18); }
.org-listings { display: flex; flex-direction: column; gap: 6px; }
.org-listing {
  padding: 10px 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
}
.org-listing strong { display: block; font-size: 13px; font-weight: 700; }
.org-listing span { display: block; font-size: 11px; color: var(--text-secondary); margin-top: 2px; }

@media (max-width: 980px) {
  .kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .dash-grid-3 { grid-template-columns: 1fr; }
  .dash-grid-2 { grid-template-columns: 1fr; }
  .applicants-head, .applicant-row { grid-template-columns: 1fr; gap: 6px; }
  .applicants-head { display: none; }
  .applicant-row { padding: 14px 8px; border: 1px solid var(--border); border-radius: var(--r-md); margin-bottom: 8px; }
}
/* ─── Job creation wizard ─────────────────────────────────── */
.jobwiz-card { max-width: 640px; padding-top: 26px; }
.jobwiz-title { margin: 0 0 4px; font-size: 22px; }
.jobwiz-sub { margin: 0 0 14px; font-size: 13px; color: var(--text-secondary); }
.jobwiz-progress { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 20px; }
.jobwiz-pip {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 600; color: var(--text-light);
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--r-full); padding: 5px 12px; cursor: pointer;
}
.jobwiz-pip span {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%; font-size: 11px;
  background: var(--border); color: var(--text-secondary);
}
.jobwiz-pip.active { color: #fff; background: var(--primary-gradient); border-color: transparent; }
.jobwiz-pip.active span { background: rgba(255,255,255,0.3); color: #fff; }
.jobwiz-pip.done { color: var(--primary); border-color: var(--primary-light); }
.jobwiz-pip.done span { background: var(--primary); color: #fff; }
.jobwiz-body { margin-bottom: 18px; }
.jobwiz-foot { display: flex; justify-content: space-between; gap: 12px; }
.jobwiz-foot .btn-primary { margin-left: auto; }
.wiz-note { font-size: 13px; color: var(--text-secondary); background: var(--bg); border-radius: var(--r-md); padding: 10px 12px; margin: 0 0 16px; }
.wiz-image { display: flex; align-items: center; gap: 14px; }
.wiz-image-preview {
  width: 84px; height: 84px; flex-shrink: 0; border-radius: var(--r-md);
  background: var(--bg); border: 1px dashed var(--border);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  font-size: 11px; color: var(--text-light); text-align: center; padding: 4px;
}
.wiz-image-preview img { width: 100%; height: 100%; object-fit: cover; }
.wiz-image-actions { display: flex; flex-direction: column; gap: 6px; }
.wiz-questions { display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px; }
.wiz-q-empty { font-size: 13px; color: var(--text-light); background: var(--bg); border-radius: var(--r-md); padding: 16px; text-align: center; }
.wiz-q-row { border: 1px solid var(--border); border-radius: var(--r-md); padding: 12px; }
.wiz-q-top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.wiz-q-num { width: 22px; height: 22px; flex-shrink: 0; border-radius: 50%; background: var(--primary-gradient); color: #fff; font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.wiz-q-top .sw-select-wrap, .wiz-q-top select { flex: 1; min-width: 0; }
.wiz-q-req { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-secondary); white-space: nowrap; }
.wiz-q-row .btn-icon { margin-left: auto; }
.wiz-q-label, .wiz-q-opts { width: 100%; box-sizing: border-box; }
.wiz-q-label { margin-bottom: 8px; }
.wiz-q-yesno-note { font-size: 12px; color: var(--text-secondary); display: flex; align-items: center; gap: 6px; }
.wiz-q-chip { background: var(--primary-gradient); color: #fff; font-weight: 700; font-size: 11px; padding: 2px 10px; border-radius: var(--r-full); }
.wiz-addq { width: 100%; }
.wiz-review { display: flex; flex-direction: column; gap: 2px; }
.wiz-review-row { display: flex; justify-content: space-between; gap: 16px; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.wiz-review-row span { color: var(--text-secondary); }
.wiz-review-row strong { text-align: right; }

/* ─── Brand profile card (Jobs admin) ─────────────────────── */
.brand-profile-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.brand-profile-main { display: flex; align-items: center; gap: 14px; min-width: 0; }
.brand-profile-logo { width: 52px; height: 52px; border-radius: var(--r-md); object-fit: cover; flex-shrink: 0; }
.brand-profile-logo.placeholder { display: flex; align-items: center; justify-content: center; background: var(--primary-gradient); color: #fff; font-weight: 700; }
.brand-profile-main h3 { margin: 0 0 2px; font-size: 16px; }
.brand-profile-card .admin-meta { display: block; max-width: 460px; }

/* ─── Gig detail: banner + about + socials + apply questions ── */
.gig-detail-banner { height: 130px; border-radius: var(--r-lg); background-size: cover; background-position: center; margin-bottom: 14px; }
.gig-about { background: var(--bg); border-radius: var(--r-md); padding: 14px 16px; margin: 8px 0 16px; }
.gig-about h4 { margin: 0 0 6px; font-size: 15px; }
.gig-about p { margin: 0 0 10px; color: var(--text-secondary); line-height: 1.6; font-size: 14px; }
.gig-about-links { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gig-website { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 600; color: var(--primary); }
.gig-social { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: #fff; color: var(--primary); border: 1px solid var(--border); }
.gig-social:hover { background: var(--primary-gradient); color: #fff; border-color: transparent; }
.gig-apply-questions { border-top: 1px solid var(--border); margin-top: 6px; padding-top: 12px; }
.gig-apply-questions h5 { margin: 0 0 10px; font-size: 14px; }
.gig-yesno { display: flex; gap: 18px; }
.gig-yesno label { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; }
.req-star { color: var(--error); }

/* ─── Applicant review cards ──────────────────────────────── */
.applicants-list { display: flex; flex-direction: column; gap: 12px; }
.applicant-card { border: 1px solid var(--border); border-left: 4px solid var(--border); border-radius: var(--r-md); padding: 14px 16px; }
.applicant-card.status-reviewed { border-left-color: var(--info); }
.applicant-card.status-shortlisted { border-left-color: var(--success); }
.applicant-card.status-rejected { border-left-color: var(--error); opacity: 0.8; }
.applicant-card-head { display: flex; align-items: center; gap: 12px; }
.applicant-card-id { min-width: 0; }
.applicant-card-id strong { display: block; }
.applicant-status { margin-left: auto; flex-shrink: 0; max-width: 150px; }
.applicant-contact { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: 10px; font-size: 13px; color: var(--text-secondary); }
.applicant-contact .icon { vertical-align: -2px; }
.applicant-note { margin: 10px 0 0; font-size: 14px; color: var(--text-secondary); line-height: 1.6; }
.applicant-answers { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.applicant-answer { display: flex; flex-direction: column; gap: 2px; }
.applicant-answer span { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px; color: var(--text-light); }
.applicant-answer strong { font-size: 14px; font-weight: 600; color: var(--text); }

@media (max-width: 640px) {
  .kpi-grid { grid-template-columns: 1fr; }
  .dash-hero { flex-direction: column; align-items: flex-start; }
  .chart-card .chart-flex { flex-direction: column; align-items: stretch; }
  .hbar-row { grid-template-columns: 1fr; gap: 4px; }
  .wiz-image { flex-direction: column; align-items: flex-start; }
}

/* ─── Badges & rewards (admin Badges tab, invite card, coupon redeem) ───── */

/* Invite-a-friend card on the Lewte → Earn panel */
.invite-card {
  background: var(--primary-gradient);
  color: #fff;
  border-radius: var(--r-lg);
  padding: var(--sp-lg);
  margin-bottom: var(--sp-lg);
  box-shadow: var(--shadow-md);
}
.invite-card-head { display: flex; gap: var(--sp-md); align-items: flex-start; }
.invite-card-ic { color: #fff; flex-shrink: 0; }
.invite-card h3 { margin: 0 0 4px; font-size: 1.05rem; }
.invite-card p { margin: 0; font-size: 0.85rem; opacity: 0.92; line-height: 1.4; }
.invite-card p strong { font-weight: 700; }
.invite-link-row { display: flex; gap: var(--sp-sm); margin-top: var(--sp-md); }
.invite-link-row input {
  flex: 1; min-width: 0; padding: 10px 12px; border: none; border-radius: var(--r-sm);
  background: rgba(255,255,255,0.92); color: var(--text); font-size: 0.82rem;
}
.invite-link-row .btn-primary {
  background: #fff; color: var(--primary); white-space: nowrap; box-shadow: none;
}
.invite-link-row .btn-primary:hover { background: #fff; color: var(--primary-dark); transform: none; }
.invite-count { display: block; margin-top: var(--sp-sm); font-size: 0.8rem; opacity: 0.9; }

/* Coupon "Redeem to wallet" button */
.coupon-redeem { width: 100%; justify-content: center; margin: 6px 0 4px; }
.coupon-redeem.redeemed {
  background: #fff; color: var(--success);
  border: 1px solid var(--success); box-shadow: none;
}
.coupon-redeem.redeemed:hover { background: #fff; color: var(--success); transform: none; }

/* Admin Badges tab — icon picker */
.badge-icon-picker {
  display: flex; flex-wrap: wrap; gap: 6px;
  max-height: 168px; overflow-y: auto;
  padding: 10px; border: 1px solid var(--border); border-radius: var(--r-md); background: #fff;
}
.badge-icon-opt {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; padding: 0;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  background: #fff; color: var(--text-secondary); cursor: pointer; transition: all 0.12s;
}
.badge-icon-opt:hover { border-color: var(--primary-light); color: var(--primary); }
.badge-icon-opt.selected { border-color: var(--primary); color: #fff; background: var(--primary-gradient); }

/* Admin Badges tab — list */
.admin-badge-grid { display: flex; flex-direction: column; gap: var(--sp-sm); }
.admin-badge-card {
  display: flex; align-items: center; gap: var(--sp-md);
  padding: var(--sp-md); border: 1px solid var(--border); border-radius: var(--r-md); background: #fff;
}
.admin-badge-card.admin-qr-inactive { opacity: 0.55; }
.admin-badge-ic { flex-shrink: 0; }
.admin-badge-info { flex: 1; min-width: 0; }
.admin-badge-info h4 { margin: 0 0 2px; font-size: 0.95rem; display: flex; align-items: center; gap: 8px; }
.admin-badge-info p { margin: 0 0 4px; font-size: 0.82rem; color: var(--text-secondary); }
.admin-badge-rule { font-size: 0.75rem; color: var(--text-light); }
.admin-badge-actions { display: flex; gap: 6px; flex-shrink: 0; }

/* Coupon admin: read-only auto-computed reward cost */
.rewards-readout-box {
  padding: 10px 12px; border: 1px dashed var(--border); border-radius: var(--r-sm);
  background: var(--bg); font-weight: 700; color: var(--primary);
}

/* ─── Wallet hub (balance, coupons, activity log) ───────────────────────── */
.wallet-balance-card {
  display: flex; align-items: center; justify-content: space-between;
  background: var(--primary-gradient); color: #fff;
  border-radius: var(--r-lg); padding: var(--sp-lg); margin-bottom: var(--sp-md);
  box-shadow: var(--shadow-md);
}
.wallet-balance-text { display: flex; flex-direction: column; }
.wallet-balance-label { font-size: 0.8rem; opacity: 0.9; }
.wallet-balance-value { font-size: 2rem; font-weight: 800; line-height: 1.1; }
.wallet-balance-icon { color: #fff; opacity: 0.85; --icon-size: 34px; }
.wallet-tabs, #walletTabs { margin-bottom: var(--sp-md); }
.wallet-loading { padding: var(--sp-xl); text-align: center; color: var(--text-secondary); }

/* Redeemed coupons list */
.wallet-coupon-list { display: flex; flex-direction: column; gap: var(--sp-sm); }
.wallet-coupon-item {
  display: flex; align-items: center; gap: var(--sp-md);
  padding: var(--sp-md); border: 1px solid var(--border); border-radius: var(--r-md); background: #fff;
}
.wallet-coupon-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.wallet-coupon-info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.wallet-coupon-info strong { font-size: 0.95rem; }
.wallet-coupon-info span { font-size: 0.82rem; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wallet-coupon-meta { display: flex; align-items: center; gap: var(--sp-sm); flex-shrink: 0; }
.wallet-coupon-date { font-size: 0.78rem; color: var(--text-light); }

/* Points activity log (bank statement) */
.wallet-ledger {
  border: 1px solid var(--border); border-radius: var(--r-md); background: #fff; overflow: hidden;
}
.ledger-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-md);
  padding: 12px var(--sp-md); border-bottom: 1px solid var(--border);
}
.ledger-row:last-child { border-bottom: none; }
.ledger-info { display: flex; flex-direction: column; min-width: 0; }
.ledger-info strong { font-size: 0.9rem; font-weight: 600; }
.ledger-info span { font-size: 0.76rem; color: var(--text-light); }
.ledger-amt { font-size: 1rem; font-weight: 800; flex-shrink: 0; }
.ledger-amt.pos { color: var(--success); }
.ledger-amt.neg { color: var(--error); }
/* "Show more" pager under the activity ledger */
.ledger-more {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; margin-top: 10px;
  border: 1px solid var(--border); border-radius: var(--r-full);
  padding: 11px 16px; font-size: 13px; font-weight: 700;
  color: var(--primary); background: #fff; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.ledger-more:hover { background: rgba(124,58,237,0.06); border-color: var(--primary); }
.ledger-more-count {
  font-size: 11.5px; font-weight: 600; color: var(--text-light);
  background: var(--surface-2, #F4F4F8); padding: 2px 8px; border-radius: var(--r-full);
}

/* Wallet balance: rewards + leftover points readout */
.wallet-balance-value { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.wallet-balance-unit { font-size: 1rem; font-weight: 600; opacity: 0.9; }
.wallet-balance-points { font-size: 0.78rem; opacity: 0.85; margin-top: 4px; }

/* ─── Physical fulfillment: ship modal, admin orders, wallet pill ───────── */
.ship-modal-cost { margin: -6px 0 14px; font-size: 0.85rem; color: var(--primary); font-weight: 600; }
.ship-form .field { margin-bottom: 12px; }
.ship-form .field label { display: block; font-size: 0.82rem; font-weight: 600; margin-bottom: 4px; color: var(--text-secondary); }
.ship-form .field input {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: var(--r-sm); font-size: 0.9rem;
}
.ship-form-row { display: flex; gap: 12px; }
.ship-form-row .field { flex: 1; }

/* Admin order fulfillment cards */
.admin-order-grid { display: flex; flex-direction: column; gap: var(--sp-md); }
.admin-order-card {
  border: 1px solid var(--border); border-radius: var(--r-md); background: #fff;
  padding: var(--sp-md); border-left: 4px solid var(--text-light);
}
.admin-order-card.status-shipped { border-left-color: var(--info); }
.admin-order-card.status-delivered { border-left-color: var(--success); }
.admin-order-card.status-canceled { border-left-color: var(--error); }
.admin-order-card.status-pending { border-left-color: var(--warning); }
.admin-order-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.admin-order-head h4 { margin: 0 0 2px; font-size: 0.98rem; }
.admin-order-sub { font-size: 0.78rem; color: var(--text-light); }
.admin-order-pill { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; padding: 3px 8px; border-radius: var(--r-full); background: var(--bg); }
.admin-order-pill.order-shipped { background: #DBEAFE; color: #1D4ED8; }
.admin-order-pill.order-delivered { background: #D1FAE5; color: #047857; }
.admin-order-pill.order-pending { background: #FEF3C7; color: #B45309; }
.admin-order-pill.order-canceled { background: #FEE2E2; color: #B91C1C; }
.admin-order-ship { margin: 12px 0; font-size: 0.85rem; line-height: 1.5; color: var(--text); }
.admin-order-controls { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; }
.admin-order-controls label { display: flex; flex-direction: column; font-size: 0.72rem; font-weight: 600; color: var(--text-secondary); gap: 4px; }
.admin-order-controls select, .admin-order-controls input {
  padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--r-sm); font-size: 0.85rem;
}
.admin-order-controls input { min-width: 150px; }

/* Wallet redeemed-coupon order status pill */
.wallet-order-pill {
  display: inline-flex; align-items: center; gap: 4px; margin-top: 4px;
  font-size: 0.72rem; font-weight: 600; padding: 2px 8px; border-radius: var(--r-full);
  background: var(--bg); color: var(--text-secondary); width: fit-content;
}
.wallet-order-pill.order-shipped { background: #DBEAFE; color: #1D4ED8; }
.wallet-order-pill.order-delivered { background: #D1FAE5; color: #047857; }
.wallet-order-pill.order-pending { background: #FEF3C7; color: #B45309; }

/* ─── Business locations + "Near me" search ─────────────────────── */
/* Location toggle inside the deal search bar */
.near-btn {
  display: inline-flex; align-items: center; gap: 5px;
  flex-shrink: 0;
  border: 1.5px solid var(--border);
  background: var(--surface-2, #F4F4F8);
  color: var(--text-secondary);
  padding: 6px 12px; border-radius: var(--r-full);
  font-size: 12px; font-weight: 700;
  cursor: pointer; transition: all .15s;
}
.near-btn .icon { --icon-size: 14px; }
.near-btn:hover { border-color: var(--primary); color: var(--primary); }
.near-btn.active {
  background: var(--primary); border-color: var(--primary); color: #fff;
}
.near-btn.loading { opacity: 0.6; pointer-events: none; }

/* Location line on the deal card */
.coupon-loc {
  display: flex; align-items: center; gap: 6px;
  font-size: 12.5px; font-weight: 600; color: var(--text-secondary);
  margin-bottom: 10px;
}
.coupon-loc .icon { --icon-size: 13px; flex-shrink: 0; color: var(--primary); }
.coupon-loc strong { color: var(--primary); }
.coupon-loc.on-campus, .coupon-loc.on-campus .icon, .coupon-loc.on-campus strong { color: var(--success, #059669); }

/* "LOCAL" / "YOUR CAMPUS" ribbon on the deal card + detail hero */
.coupon-local-flag {
  position: absolute; top: 0; right: 0; z-index: 2;
  background: #059669; color: #fff;
  font-size: 11px; font-weight: 800; letter-spacing: 0.3px;
  padding: 5px 12px; border-bottom-left-radius: 8px;
}
/* Sold-out ribbon wins the corner if both are present */
.coupon-soldout-flag ~ .coupon-local-flag, .coupon-sold-out .coupon-local-flag { display: none; }

/* Locations block in the deal details modal */
.coupon-detail-locs { margin-top: 14px; }
.coupon-detail-locs h4 {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 800; margin: 0 0 8px;
}
.coupon-detail-locs h4 .icon { --icon-size: 14px; color: var(--primary); }
.coupon-detail-loc {
  font-size: 13px; color: var(--text-secondary);
  padding: 7px 10px; border: 1px solid var(--border); border-radius: var(--r-sm);
  margin-bottom: 6px; line-height: 1.4;
}
.coupon-detail-loc .loc-mi {
  float: right; font-weight: 800; color: var(--primary); font-size: 12px;
}

/* Admin locations editor */
.loc-editor { display: flex; flex-direction: column; gap: 10px; }
.loc-row {
  border: 1px solid var(--border); border-radius: var(--r-sm);
  padding: 10px 12px; display: flex; flex-direction: column; gap: 8px;
  background: var(--surface-2, #FAFAFC);
}
.loc-row-head { display: flex; align-items: center; justify-content: space-between; }
.loc-num {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; font-weight: 800; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: 0.3px;
}
.loc-num .icon { --icon-size: 14px; color: var(--primary); }
.loc-row input {
  width: 100%; padding: 9px 11px;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  font-size: 13.5px; background: #fff;
}
.loc-row-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 8px; }
.loc-geo-ok, .loc-geo-pending {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11.5px; font-weight: 600;
}
.loc-geo-ok { color: var(--success, #059669); }
.loc-geo-ok .icon { --icon-size: 12px; }
.loc-geo-pending { color: var(--text-light); font-style: italic; }

/* Local / location-count pills on the admin Profiles list */
.org-type-pill.local-pill { background: rgba(5,150,105,0.14); color: #047857; }
.org-type-pill.loc-pill {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(124,58,237,0.10); color: var(--primary);
}
.org-type-pill.loc-pill .icon { --icon-size: 11px; }

/* ─── Annual student verification modal ─────────────────────────── */
.edu-verify-card { max-width: 440px; }
.edu-verify-head { text-align: center; margin-bottom: 18px; }
.edu-verify-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 54px; height: 54px; border-radius: 50%;
  background: rgba(124,58,237,0.12); color: var(--primary);
  --icon-size: 28px; margin-bottom: 10px;
}
.edu-verify-head h2 { margin: 0 0 6px; font-size: 20px; }
.edu-verify-head p { margin: 0; font-size: 13.5px; color: var(--text-secondary); line-height: 1.5; }
.edu-verify-email-row {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  font-size: 14px; font-weight: 700; color: var(--text);
  background: var(--surface-2, #F4F4F8);
  border: 1px solid var(--border); border-radius: var(--r-sm);
  padding: 12px 14px; margin-bottom: 14px; word-break: break-all;
}
.edu-verify-email-row .icon { --icon-size: 16px; color: var(--primary); flex-shrink: 0; }
.edu-verify-alt {
  display: block; margin: 12px auto 0;
  background: none; border: none; cursor: pointer;
  font-size: 13px; font-weight: 700; color: var(--primary);
}
.edu-verify-alt:hover { text-decoration: underline; }
.edu-verify-links { display: flex; justify-content: center; gap: 18px; }
.edu-verify-links .edu-verify-alt { margin: 12px 0 0; }
.edu-verify-sent { font-size: 13.5px; color: var(--text-secondary); text-align: center; margin: 0 0 12px; line-height: 1.5; word-break: break-all; }
.edu-verify-code-input {
  width: 100%; text-align: center;
  font-size: 26px; font-weight: 800; letter-spacing: 10px;
  padding: 12px 10px; margin-bottom: 12px;
  border: 1.5px solid var(--border); border-radius: var(--r-sm);
}
.edu-verify-code-input:focus { outline: none; border-color: var(--primary); }
.edu-verify-status {
  margin: 12px 0 0; text-align: center;
  font-size: 13px; font-weight: 600; color: var(--success, #059669);
}
.edu-verify-status.is-error { color: var(--error, #DC2626); }

/* School email row in Edit Profile */
.edit-profile-email-row {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  background: var(--surface-2, #F4F4F8);
  padding: 9px 12px; font-size: 13.5px; font-weight: 600;
  word-break: break-all;
}
/* Read-only "set at signup" birthday row */
.edit-profile-locked-row {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  background: var(--surface-2, #F4F4F8);
  padding: 9px 12px; font-size: 13.5px; font-weight: 600;
}
.edit-profile-locked-tag {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11.5px; font-weight: 700; color: var(--text-light);
  background: var(--bg, #fff); border: 1px solid var(--border);
  padding: 3px 9px; border-radius: var(--r-full); white-space: nowrap;
}
.edit-profile-locked-tag .icon { --icon-size: 12px; }

/* ─── Deals search row: search box + Select Tags dropdown ───────── */
.deals-search-row { display: flex; gap: 12px; align-items: flex-start; }
.deals-search-row .search-box { flex: 1; margin-bottom: 0; }

.tag-filter { position: relative; flex-shrink: 0; width: 240px; }
.tag-filter-trigger {
  display: flex; align-items: center; gap: 8px; width: 100%;
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--r-full); padding: 0 16px; height: 52px;
  font-size: 14px; font-weight: 600; color: var(--text);
  cursor: pointer; transition: border-color .15s, box-shadow .15s;
}
.tag-filter-trigger:hover { border-color: var(--primary); }
.tag-filter.open .tag-filter-trigger { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(124,58,237,0.12); }
.tag-filter-label { flex: 1; text-align: left; color: var(--text-light); }
.tag-filter.has-selection .tag-filter-label { color: var(--text); }
.tag-filter-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 6px;
  background: var(--primary); color: #fff;
  border-radius: var(--r-full); font-size: 12px; font-weight: 800;
}
.tag-filter-chevron { --icon-size: 18px; color: var(--text-light); transition: transform .18s; }
.tag-filter.open .tag-filter-chevron { transform: rotate(180deg); }

.tag-filter-panel {
  position: absolute; top: calc(100% + 8px); right: 0; z-index: 40;
  width: 300px; max-width: 88vw;
  background: #fff; border: 1px solid var(--border);
  border-radius: var(--r-md, 14px);
  box-shadow: 0 16px 40px rgba(15,23,42,0.16);
  padding: 12px; animation: tagFilterIn .14s ease;
}
@keyframes tagFilterIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.tag-filter-searchbox { position: relative; margin-bottom: 8px; }
.tag-filter-searchbox input {
  width: 100%; height: 40px; padding: 0 38px 0 14px;
  border: 1px solid var(--border); border-radius: var(--r-sm);
  font-size: 14px; outline: none;
}
.tag-filter-searchbox input:focus { border-color: var(--primary); }
.tag-filter-searchbox .icon { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); --icon-size: 16px; color: var(--text-light); }
.tag-filter-list { max-height: 260px; overflow-y: auto; display: flex; flex-direction: column; }
.tag-filter-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 8px; border-radius: var(--r-sm); cursor: pointer;
  font-size: 14px; font-weight: 600; color: var(--text);
}
.tag-filter-item:hover { background: rgba(124,58,237,0.07); }
.tag-filter-item input { width: 18px; height: 18px; accent-color: var(--primary); cursor: pointer; flex-shrink: 0; }
.tag-filter-empty { padding: 14px 8px; font-size: 13px; color: var(--text-light); text-align: center; }
.tag-filter-foot { display: flex; justify-content: flex-end; border-top: 1px solid var(--border); margin-top: 8px; padding-top: 8px; }
.tag-filter-clear {
  background: none; border: none; cursor: pointer;
  font-size: 13px; font-weight: 700; color: var(--primary); padding: 4px 6px;
}
.tag-filter-clear:hover { text-decoration: underline; }

/* Category pill on the deal card */
.coupon-cat-pill {
  display: inline-flex; align-self: flex-start; align-items: center;
  background: rgba(124,58,237,0.10); color: var(--primary);
  font-size: 11px; font-weight: 700;
  padding: 3px 10px; border-radius: var(--r-full);
  margin-bottom: 10px;
}

@media (max-width: 640px) {
  .deals-search-row { flex-direction: column; }
  .tag-filter { width: 100%; }
  .tag-filter-panel { right: auto; left: 0; width: 100%; }
}

/* ─── Wallet redeemed deals — deal-card look ────────────────────── */
.wallet-coupon-grid { margin-top: 4px; }
/* Redeemed line under the title on each wallet card */
.wallet-card-redeemed {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12.5px; font-weight: 600; color: var(--text-secondary);
  margin-bottom: 8px;
}
.wallet-card-redeemed .icon { --icon-size: 13px; color: var(--success, #059669); flex-shrink: 0; }
/* Order-status pill sits above the CTA */
.wallet-coupon-card .wallet-order-pill { margin: 0 0 10px; }
.wallet-coupon-card .btn-details { margin-top: auto; }

/* Expired-but-still-in-wallet: badged for a 14-day grace before it drops off. */
.wallet-coupon-expired .coupon-ad { filter: grayscale(0.6) opacity(0.75); }
.wallet-coupon-expired .coupon-title { color: var(--text-secondary); }
.coupon-expired-flag {
  position: absolute; top: 0; right: 0; z-index: 2;
  background: #6B7280; color: #fff;
  font-size: 11px; font-weight: 800; letter-spacing: 0.3px;
  padding: 5px 12px; border-bottom-left-radius: 8px;
}

/* "No longer available" fallback card */
.wallet-coupon-gone { opacity: 0.85; cursor: default; }
.coupon-ad-gone {
  display: flex; align-items: center; justify-content: center;
  color: var(--text-light);
  background: repeating-linear-gradient(45deg, #F1F1F6, #F1F1F6 10px, #E9E9F2 10px, #E9E9F2 20px);
}
.coupon-ad-gone .icon { --icon-size: 30px; opacity: 0.6; }
.wallet-coupon-gone .coupon-title { color: var(--text-secondary); }

/* ─── Quest-exclusive coupon reward (inside the quest detail) ────── */
.quest-reward-coupon {
  border: 1.5px solid var(--border); border-radius: var(--r-lg, 14px);
  overflow: hidden; margin: 10px 0 4px; background: #fff;
}
.quest-reward-coupon.is-unlocked { border-color: var(--success, #059669); box-shadow: 0 0 0 3px rgba(5,150,105,0.10); }
.quest-reward-coupon-head {
  display: flex; align-items: center; gap: 7px;
  padding: 9px 14px; font-size: 11.5px; font-weight: 800;
  letter-spacing: 0.4px; text-transform: uppercase;
  color: var(--primary); background: rgba(124,58,237,0.07);
}
.quest-reward-coupon.is-unlocked .quest-reward-coupon-head { color: var(--success, #059669); background: rgba(5,150,105,0.08); }
.quest-reward-coupon-head .icon { --icon-size: 15px; }
.quest-reward-coupon-media { position: relative; }
.quest-reward-coupon-media .coupon-tag { position: absolute; top: 0; left: 0; }
.quest-reward-coupon-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 4px; }
.quest-reward-coupon-brand { font-size: 13px; color: var(--primary); font-weight: 700; }
.quest-reward-coupon-title { font-size: 15px; font-weight: 700; margin-bottom: 8px; }
.quest-reward-redeem { display: flex; align-items: center; justify-content: center; gap: 7px; }
.quest-reward-locked {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 13px; font-weight: 600; color: var(--text-light);
  background: var(--surface-2, #F4F4F8); border-radius: var(--r-full);
  padding: 10px 14px;
}
.quest-reward-locked .icon { --icon-size: 14px; }
.quest-reward-claimed {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 13px; font-weight: 700; color: var(--success, #059669);
  padding: 10px 14px;
}

/* Inline, persistent status inside the Edit Profile modal (never a fleeting toast) */
.edit-profile-status {
  margin: 4px 0 12px; padding: 10px 12px; border-radius: var(--r-sm);
  font-size: 13px; font-weight: 600; line-height: 1.4;
  background: var(--surface-2, #F4F4F8); color: var(--text-secondary);
}
.edit-profile-status.is-error {
  background: rgba(220,38,38,0.10); color: var(--error, #DC2626);
}
