/* HelperConnect — LinkedIn-inspired layout, Superhairpieces CRM palette.
   Light + dark themes (toggle via [data-theme] on <html>, default follows OS). */

:root {
  /* Tell the browser to render native controls (select popups, date pickers,
     scrollbars) to match the theme instead of always-light. */
  color-scheme: light;
  /* Light palette — built around a dark-purple CTA */
  --bg: #f6f4fb;
  --surface: #ffffff;
  --surface-2: #f2edfa;
  --text: #1d1a2b;
  --muted: #5d5670;
  --faint: #938ca8;
  --border: #e8e3f3;
  --border-strong: #d8cfec;
  --field: #ffffff;
  --field-border: #d8cfec;
  --brand: #581c87;
  --brand-strong: #581c87;
  --brand-soft: #f3e8ff;
  --brand-contrast: #ffffff;
  --success: #2e7d57;
  --success-soft: #e3f3ec;
  --warning: #b8821a;
  --warning-soft: #fbf1da;
  --info: #4f46e5;
  --info-soft: #ebe9fe;
  --danger: #c0392b;
  --danger-soft: #f9e3df;
  --shadow-sm: 0 1px 2px rgba(33, 29, 26, 0.08);
  --shadow: 0 2px 8px rgba(33, 29, 26, 0.08);
  --shadow-lg: 0 10px 30px rgba(33, 29, 26, 0.14);
  --radius: 12px;
  --radius-sm: 8px;
  --radius-lg: 16px;
  --font: "Hanken Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;
  --appbar-h: 56px;
  --nav-h: 60px;
  --content-max: 1128px;
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --dur-enter: .3s;
  --dur-exit: .18s;
  --banner: linear-gradient(120deg, #4c1d95, #6b21a8 55%, #8b3fc0);
}

[data-theme="dark"] {
  color-scheme: dark; /* native select popups / date pickers / scrollbars go dark */
  /* Dark palette — deep blue-black with a violet aurora and ONE vivid
     violet-gradient accent for primary actions (glassy AI-assistant look). */
  --bg: #08070c;
  --surface: rgba(40, 39, 50, 0.55);
  --surface-2: rgba(28, 27, 36, 0.5);
  --text: #f5f3ff;
  --muted: #a29bbf;
  --faint: #6f6890;
  --border: rgba(255, 255, 255, 0.08);
  --border-strong: rgba(255, 255, 255, 0.16);
  --field: rgba(36, 35, 45, 0.5);
  --field-border: rgba(255, 255, 255, 0.14);
  --brand: #8b5cf6;
  --brand-strong: #c4b5fd;
  --brand-soft: rgba(139, 92, 246, 0.18);
  --brand-contrast: #ffffff;
  --success: #5fc08d;
  --success-soft: rgba(95, 192, 141, 0.16);
  --warning: #e6c067;
  --warning-soft: rgba(230, 192, 103, 0.16);
  --info: #a5b4fc;
  --info-soft: rgba(165, 180, 252, 0.16);
  --danger: #f0a08d;
  --danger-soft: rgba(240, 160, 141, 0.16);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow: 0 2px 10px rgba(0, 0, 0, 0.45);
  --shadow-lg: 0 12px 34px rgba(0, 0, 0, 0.55);
  --banner: linear-gradient(120deg, #312e81, #6d28d9 55%, #a855f7);
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  min-height: 100vh;
  color: var(--text);
  background: var(--bg);
  font-family: var(--font);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* Dark mode: a fixed violet "aurora" bloom behind everything — the page reads
   as deep space with soft purple light, not a flat charcoal sheet. */
[data-theme="dark"] body {
  background:
    radial-gradient(1100px 700px at 85% -10%, rgba(124, 58, 237, 0.20), transparent 60%),
    radial-gradient(900px 650px at -10% 25%, rgba(99, 102, 241, 0.13), transparent 55%),
    radial-gradient(800px 600px at 50% 110%, rgba(168, 85, 247, 0.10), transparent 60%),
    var(--bg);
  background-attachment: fixed;
}
/* Dark-mode glassmorphism: surfaces are translucent (the aurora glows through
   them); chrome that floats OVER content is frosted with backdrop blur so the
   content underneath reads as soft light, not noise. */
[data-theme="dark"] .appbar,
[data-theme="dark"] .bottomnav {
  background: rgba(8, 7, 12, 0.55);
  -webkit-backdrop-filter: blur(22px) saturate(170%);
  backdrop-filter: blur(22px) saturate(170%);
  box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 0.06);
}
[data-theme="dark"] .profile-menu,
[data-theme="dark"] .adv-filter,
[data-theme="dark"] .dialpick-menu {
  background: rgba(24, 20, 44, 0.6);
  -webkit-backdrop-filter: blur(28px) saturate(180%);
  backdrop-filter: blur(28px) saturate(180%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14), var(--shadow-lg);
}

/* ── Liquid Glass (dark) ─────────────────────────────────────────────────────
   Floating surfaces become light-refracting glass: they blur + saturate the
   violet aurora behind them, catch a bright specular line on their top edge,
   sit in a crisp rim, and lift off the page with a soft shadow. */
[data-theme="dark"] .card,
[data-theme="dark"] .jobcard,
[data-theme="dark"] .filter-panel {
  background: linear-gradient(160deg, rgba(255, 255, 255, 0.11), rgba(255, 255, 255, 0.035) 60%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  backdrop-filter: blur(20px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.14);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    inset 0 -1px 0 rgba(0, 0, 0, 0.25),
    0 8px 26px -12px rgba(0, 0, 0, 0.6);
}
[data-theme="dark"] .jobcard:hover {
  border-color: rgba(255, 255, 255, 0.22);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.30),
    0 12px 30px -12px rgba(0, 0, 0, 0.65);
}
[data-theme="dark"] .jobcard.selected {
  border-color: var(--brand);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22), 0 0 0 1px var(--brand), 0 8px 26px -12px rgba(0, 0, 0, 0.6);
}
/* Inset panels (fact cells, toggle rows) read as a subtle frosted layer on the
   glass card rather than a second heavy blur. */
[data-theme="dark"] .fact,
[data-theme="dark"] .wtoggle-row {
  background: rgba(255, 255, 255, 0.05);
}
/* The profile-card cover bar blends into the glass card (the bright violet
   banner was overpowering on dark); it keeps its height so the avatar still
   overlaps the header zone. */
[data-theme="dark"] .identity-cover { background: transparent; }
[data-theme="dark"] .id-edit { background: rgba(255, 255, 255, 0.10); border-color: rgba(255, 255, 255, 0.22); }
/* Solid center disc so the completeness ring reads as a ring over the
   translucent surface. */
[data-theme="dark"] .cc-ring span { background: #1d1c23; }
/* Card meta text (applied date, location/salary pills) reads white on dark —
   the muted grey sank into the near-black background. */
[data-theme="dark"] .jc-employer { color: var(--text); }
[data-theme="dark"] .pill.muted { color: var(--text); }
[data-theme="dark"] .jc-why { color: var(--text); }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; border: 0; background: none; }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }
::selection { background: var(--brand-soft); }

/* ── Top app bar (LinkedIn-style global nav) ─────────────────────────────── */
.appbar {
  position: sticky;
  top: 0;
  z-index: 40;
  height: var(--appbar-h);
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  box-shadow: var(--shadow-sm);
}
.appbar-inner {
  max-width: var(--content-max);
  height: 100%;
  margin: 0 auto;
  padding: 0 16px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.ab-logo {
  display: flex;
  align-items: center;
  gap: 9px;
  font-weight: 800;
  font-size: 18px;
  letter-spacing: -0.02em;
  flex-shrink: 0;
  cursor: pointer;
}
.ab-logo .mark {
  width: 32px; height: 32px; color: var(--brand-strong);
  display: grid; place-items: center;
}
.ab-logo .mark svg { width: 100%; height: 100%; }
.ab-logo .wordmark { display: none; }
.ab-search {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.ab-search svg { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); width: 17px; height: 17px; color: var(--faint); }
.ab-search input {
  width: 100%;
  height: 38px;
  padding: 0 12px 0 34px;
  border-radius: 999px;
  border: 1px solid transparent;
  background: var(--surface-2);
  font-size: 14px;
}
.ab-search input:focus { outline: none; border-color: var(--brand); background: var(--field); }
.ab-spacer { flex: 1; }
.ab-nav { display: none; align-items: stretch; gap: 2px; }
.ab-nav-item {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px; min-width: 64px; padding: 0 8px; color: var(--faint);
  font-size: 12px; font-weight: 600; border-bottom: 2px solid transparent;
}
.ab-nav-item svg { width: 22px; height: 22px; }
.ab-nav-item:hover { color: var(--text); }
.ab-nav-item.active { color: var(--text); border-bottom-color: var(--text); }
.ab-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.icon-btn {
  width: 38px; height: 38px; border-radius: 50%;
  display: grid; place-items: center; color: var(--muted);
}
.icon-btn:hover { background: var(--surface-2); color: var(--text); }
.icon-btn svg { width: 20px; height: 20px; }
.ab-avatar { width: 34px; height: 34px; flex: 0 0 34px; aspect-ratio: 1; min-width: 34px; overflow: hidden; border-radius: 50%; object-fit: cover; background: var(--brand-soft); color: var(--brand-strong); display: grid; place-items: center; font-weight: 800; font-size: 13px; }
.ab-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.lang-mini {
  border: 1px solid var(--field-border); background: var(--surface-2); color: var(--muted);
  border-radius: 999px; padding: 6px 8px; font-size: 12px; font-weight: 700; cursor: pointer; flex-shrink: 0;
  max-width: 96px;
}
.lang-mini:focus { outline: 2px solid var(--brand); outline-offset: -1px; }

/* ── Layout container ────────────────────────────────────────────────────── */
.layout {
  max-width: var(--content-max);
  margin: 0 auto;
  padding: 18px 16px calc(var(--nav-h) + 24px);
}
@media (min-width: 900px) {
  .layout { padding: 24px 16px 48px; }
}

/* ── Bottom nav (mobile only) ────────────────────────────────────────────── */
.bottomnav {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 45;
  height: var(--nav-h);
  display: grid; grid-template-columns: repeat(4, 1fr);
  background: var(--surface); border-top: 1px solid var(--border);
  box-shadow: 0 -3px 14px rgba(0,0,0,0.06);
}
.navitem {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 3px; color: var(--faint); font-size: 11px; font-weight: 700; position: relative;
}
.navitem svg { width: 23px; height: 23px; }
.navitem.active { color: var(--brand); }
.navitem .badge {
  position: absolute; top: 7px; left: calc(50% + 6px);
  min-width: 16px; height: 16px; padding: 0 4px;
  background: var(--danger); color: #fff; border-radius: 999px;
  font-size: 10px; font-weight: 800; display: grid; place-items: center;
}

/* ── Typography ──────────────────────────────────────────────────────────── */
h1.page { font-size: 22px; letter-spacing: -0.02em; margin: 2px 0 16px; }
.section-title { font-size: 16px; font-weight: 800; letter-spacing: -0.01em; margin: 0 0 12px; }
.eyebrow { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.06em; color: var(--faint); }

/* ── Cards ───────────────────────────────────────────────────────────────── */
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.card-pad { padding: 16px; }
.stack > * + * { margin-top: 14px; }

/* ── Buttons ─────────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 46px; padding: 0 22px; border-radius: 999px; white-space: nowrap;
  font-weight: 800; font-size: 15px; width: 100%;
  background: var(--brand); color: var(--brand-contrast);
  transition: filter .12s ease, background .12s ease;
}
.btn svg { width: 18px; height: 18px; flex-shrink: 0; }
.btn:hover { filter: brightness(1.06); }
.btn:disabled { background: var(--success); color: #fff; cursor: default; filter: none; }
.btn.secondary { background: var(--brand-soft); color: var(--brand-strong); }
.btn.ghost { background: transparent; color: var(--brand-strong); border: 1.5px solid var(--brand); }
.btn.neutral { background: transparent; color: var(--muted); border: 1.5px solid var(--field-border); }
.btn.danger { background: transparent; color: var(--danger); border: 1.5px solid var(--danger-soft); }
/* Dark mode: primary CTAs get a deep violet gradient + a faint glow — rich
   rather than bright. (.social excluded — Google/Facebook stay neutral.) */
[data-theme="dark"] .btn:not(.secondary):not(.ghost):not(.neutral):not(.danger):not(.social):not(:disabled) {
  background: linear-gradient(135deg, #6d28d9, #4c1d95);
  color: #fff;
  box-shadow: 0 4px 14px rgba(109, 40, 217, 0.22);
}
.btn-sm { height: 36px; padding: 0 16px; font-size: 14px; width: auto; }
.btn-block { width: 100%; }

/* ── Pills / chips / tags ────────────────────────────────────────────────── */
.pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 11px; border-radius: 999px; font-size: 12.5px; font-weight: 700;
  background: var(--brand-soft); color: var(--brand-strong);
}
.pill.muted { background: var(--surface-2); color: var(--muted); }
.pill svg { width: 13px; height: 13px; }
.chip {
  padding: 9px 14px; border-radius: 999px; border: 1px solid var(--field-border);
  background: var(--field); font-size: 13px; font-weight: 700; color: var(--muted);
  transition: all .1s ease;
  display: inline-flex; align-items: center; gap: 6px;
}
.chip svg { width: 16px; height: 16px; flex-shrink: 0; }
.chip:hover { border-color: var(--brand); color: var(--brand-strong); }
.chip[aria-pressed="true"] { background: var(--brand); color: var(--brand-contrast); border-color: var(--brand); }
.chipset { display: flex; flex-wrap: wrap; gap: 8px; }

/* iOS-style toggle for binary Yes/No fields (on = Yes / green, off = No). */
.wtoggle-field { margin-bottom: 12px; }
.wtoggle-row {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 11px 14px; background: var(--surface-2); border-radius: 14px;
}
.wtoggle-label { font-size: 14px; font-weight: 700; color: var(--text); line-height: 1.3; }
.ios-toggle {
  position: relative; flex: 0 0 auto; width: 51px; height: 31px; border-radius: 999px;
  background: #e9e9ea; border: none; padding: 0; cursor: pointer;
  transition: background .25s ease; -webkit-tap-highlight-color: transparent;
}
.ios-toggle::after {
  content: ""; position: absolute; top: 2px; left: 2px; width: 27px; height: 27px;
  border-radius: 50%; background: #fff;
  box-shadow: 0 3px 8px rgba(0,0,0,.15), 0 1px 1px rgba(0,0,0,.16);
  transition: transform .25s cubic-bezier(.4,.1,.3,1);
}
.ios-toggle[aria-checked="true"] { background: #cbb8f5; }
.ios-toggle[aria-checked="true"]::after { transform: translateX(20px); }
.ios-toggle:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
[data-theme="dark"] .ios-toggle { background: rgba(255, 255, 255, 0.12); }
[data-theme="dark"] .ios-toggle[aria-checked="true"] { background: linear-gradient(135deg, #8b5cf6, #6d28d9); }

/* Truthfulness confirmation checkbox (pre-submit modal). */
.truth-check {
  display: flex; align-items: flex-start; gap: 11px; margin-top: 10px;
  padding: 12px 14px; background: var(--surface-2); border-radius: 12px;
  cursor: pointer; font-size: 14px; line-height: 1.45; color: var(--text);
}
.truth-check input {
  margin: 1px 0 0; width: 20px; height: 20px; flex: 0 0 auto;
  accent-color: var(--brand); cursor: pointer;
}

.chip-status { padding: 4px 11px; border-radius: 999px; font-size: 12px; font-weight: 800; white-space: nowrap; }
.st-Pending { background: var(--warning-soft); color: var(--warning); }
.st-Reviewed { background: var(--info-soft); color: var(--info); }
.st-Shortlisted { background: var(--brand-soft); color: var(--brand-strong); }
.st-Rejected { background: var(--danger-soft); color: var(--danger); }

/* Employer's "move forward?" decision — an explicit question, not a stray button. */
.mf-ask { margin-top: 18px; padding: 16px; border: 1.5px solid var(--brand); border-radius: 14px; background: var(--brand-soft); }
.mf-q { font-weight: 800; font-size: 15.5px; line-height: 1.35; margin-bottom: 12px; }
.mf-note { font-weight: 700; font-size: 13px; margin: 0 0 12px; }
.mf-note.ok { color: var(--success); }
.mf-note.no { color: var(--muted); }
.mf-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.mf-actions .btn { flex: 1 1 140px; }

/* ── In-app chat ─────────────────────────────────────────────────────────── */
.ab-nav-item { position: relative; }
.chat-col.in-thread .page { display: none; }
.chat-list { display: flex; flex-direction: column; gap: 2px; }
.chat-row { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; border: 0; background: transparent; padding: 12px 10px; border-radius: 14px; cursor: pointer; color: inherit; font: inherit; }
.chat-row:hover { background: var(--surface-2); }
.chat-row-main { flex: 1; min-width: 0; }
.chat-row-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.chat-row-name { font-weight: 800; font-size: 15px; }
.chat-row-time { font-size: 12px; color: var(--faint); flex: 0 0 auto; }
.chat-row-last { color: var(--muted); font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 2px; }
.chat-row-last.unread { color: var(--text); font-weight: 700; }
.chat-unread { flex: 0 0 auto; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--brand); color: #fff; font-size: 12px; font-weight: 800; display: grid; place-items: center; }
.chat-thread { display: flex; flex-direction: column; height: calc(100vh - 200px); min-height: 380px; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; background: var(--surface); }
.chat-thread-head { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-bottom: 1px solid var(--border); }
.chat-thread-head .wiz-back-link { margin: 0; }
.chat-thread-name { font-weight: 800; }
.chat-thread-body { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 8px; background: var(--bg); }
.bubble-row { display: flex; }
.bubble-row.me { justify-content: flex-end; }
.bubble { max-width: 78%; padding: 9px 12px 6px; border-radius: 16px; font-size: 14px; line-height: 1.4; word-break: break-word; }
.bubble-row.them .bubble { background: var(--surface); border: 1px solid var(--border); border-bottom-left-radius: 5px; color: var(--text); }
.bubble-row.me .bubble { background: var(--brand); color: #fff; border-bottom-right-radius: 5px; }
.bubble-time { display: block; font-size: 10px; opacity: 0.65; margin-top: 3px; text-align: right; }
.chat-empty { margin: auto; color: var(--faint); font-weight: 600; }
.chat-composer { display: flex; gap: 8px; align-items: flex-end; padding: 10px; border-top: 1px solid var(--border); background: var(--surface); }
.chat-input { flex: 1; resize: none; max-height: 120px; border: 1px solid var(--field-border); background: var(--field); color: var(--text); border-radius: 14px; padding: 10px 12px; font: inherit; font-size: 14px; }
.chat-send { flex: 0 0 auto; width: 44px; height: 44px; padding: 0; display: grid; place-items: center; }
.chat-send svg { width: 18px; height: 18px; }

/* "Claim your profile" banner (helpers with an empty account shell) */
.claim-card {
  display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
  margin-bottom: 14px; padding: 14px 16px; cursor: pointer; font: inherit; color: inherit;
  background: var(--brand-soft); border: 1.5px solid var(--brand); border-radius: var(--radius-lg);
}
.claim-card > svg { width: 22px; height: 22px; flex: 0 0 22px; color: var(--brand-strong); }
.claim-txt { flex: 1; display: flex; flex-direction: column; gap: 2px; font-size: 13.5px; line-height: 1.4; }
.claim-txt strong { font-size: 14.5px; color: var(--brand-strong); }
.claim-txt span { color: var(--muted); font-weight: 500; }
.claim-cta { flex: 0 0 auto; background: var(--brand); color: #fff; font-weight: 800; font-size: 13.5px; padding: 8px 16px; border-radius: 999px; }
.claim-modal { max-width: 360px; }

/* Employer-facing helper intro video (applicant + browse detail) */
.applicant-video { width: 100%; max-height: 440px; border-radius: 14px; margin-bottom: 14px; background: #000; display: block; }

/* Collapsible video / photo sections in the employer helper view */
.collapse { border: 1px solid var(--border); border-radius: 14px; margin-bottom: 14px; overflow: hidden; background: var(--surface); }
.collapse-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 11px 14px; cursor: pointer; list-style: none; user-select: none; }
.collapse-head::-webkit-details-marker { display: none; }
.collapse-head .eyebrow { margin: 0; }
.collapse-chev { width: 18px; height: 18px; color: var(--muted); transition: transform 0.2s; flex: 0 0 auto; }
.collapse[open] .collapse-chev { transform: rotate(180deg); }
.collapse-body { padding: 0 14px 14px; }
.collapse-body .applicant-video { margin-bottom: 0; }
.collapse-body .act-gallery { margin-top: 0; }

/* AI profile-photo: busy overlay + original/portrait chooser */
.photo-busy { position: fixed; inset: 0; z-index: 90; background: rgba(20, 10, 40, 0.5); backdrop-filter: blur(3px); display: grid; place-items: center; padding: 24px; }
.pb-card { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; padding: 26px 30px; display: flex; flex-direction: column; align-items: center; gap: 14px; box-shadow: var(--shadow-lg); max-width: 320px; text-align: center; }
.pb-text { font-weight: 700; font-size: 14px; color: var(--text); }
.pc-scrim { position: fixed; inset: 0; z-index: 95; background: rgba(20, 10, 40, 0.5); backdrop-filter: blur(3px); display: grid; place-items: center; padding: 20px; }
.pc-modal { width: min(460px, 96vw); background: var(--surface); border: 1px solid var(--border); border-radius: 20px; padding: 22px 22px 24px; box-shadow: var(--shadow-lg); }
.pc-title { margin: 0 0 4px; font-size: 19px; letter-spacing: -0.02em; }
.pc-sub { margin: 0 0 18px; color: var(--muted); font-size: 14px; line-height: 1.45; }
.pc-options { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pc-opt { border: 2px solid var(--border); background: var(--surface-2); border-radius: 16px; padding: 10px; cursor: pointer; display: flex; flex-direction: column; gap: 10px; align-items: center; font: inherit; color: inherit; }
.pc-opt:hover { border-color: var(--brand); }
.pc-opt.recommended { border-color: var(--brand); }
.pc-opt img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 12px; background: var(--surface); }
.pc-badge { font-weight: 800; font-size: 13px; color: var(--brand-strong); }
.pc-badge.muted { color: var(--muted); }
@media (max-width: 480px) { .pc-options { grid-template-columns: 1fr; } }

/* ── Forms ───────────────────────────────────────────────────────────────── */
.field { margin-bottom: 14px; }
.field > label { display: block; font-weight: 700; font-size: 13.5px; margin-bottom: 6px; }
.field .hint { color: var(--faint); font-weight: 500; font-size: 12px; }
.input, .select, .textarea {
  width: 100%; height: 46px; padding: 0 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--field-border); background: var(--field); font-size: 15px;
}
.textarea { height: auto; min-height: 92px; padding: 12px 14px; resize: vertical; }
.input:focus, .select:focus, .textarea:focus { outline: 2px solid var(--brand); outline-offset: -1px; border-color: var(--brand); }

/* Custom dropdown (cselect) — a fully themed replacement for native <select>. */
.cs-inline { margin-bottom: 0; }
.cselect { position: relative; }
.cselect-btn {
  width: 100%; height: 46px; padding: 0 12px 0 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--field-border); background: var(--field); color: var(--text);
  font-size: 15px; display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: left;
}
.cselect-btn > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cselect-btn.ph > span { color: var(--muted); }
.cselect-btn .cs-chev { width: 18px; height: 18px; color: var(--muted); flex: 0 0 auto; transition: transform .18s ease; }
.cselect.open .cselect-btn { border-color: var(--brand); outline: 2px solid var(--brand); outline-offset: -1px; }
.cselect.open .cs-chev { transform: rotate(180deg); color: var(--brand); }
.cselect-backdrop { position: fixed; inset: 0; z-index: 45; }
.cselect-menu {
  position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 50;
  min-width: 180px; max-height: 264px; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--border-strong); border-radius: 14px;
  box-shadow: var(--shadow-lg); padding: 6px;
}
[data-theme="dark"] .cselect-menu {
  background: rgba(22, 18, 42, 0.96);
  -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px);
}
.cselect-group {
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
  color: var(--faint); padding: 10px 12px 4px;
}
.cselect-opt {
  display: block; width: 100%; padding: 11px 12px; border-radius: 10px; text-align: left;
  font-size: 14.5px; font-weight: 600; color: var(--text);
}
.cselect-opt:hover { background: var(--surface-2); }
.cselect-opt.sel { background: var(--brand-soft); color: var(--brand-strong); }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.row2 > * { min-width: 0; } /* let wide inputs (e.g. month pickers) shrink instead of overflowing */
.kid-age-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 12px; }
.kid-age-grid > * { min-width: 0; }
.field .row2 { margin-top: 2px; }
.field .row2 .field { margin-bottom: 0; }
@media (max-width: 520px) { .dur-range { grid-template-columns: 1fr; } }

/* ── Avatars ─────────────────────────────────────────────────────────────── */
.avatar {
  border-radius: 50%; object-fit: cover; background: var(--brand-soft);
  display: grid; place-items: center; color: var(--brand-strong); font-weight: 800;
  border: 3px solid var(--surface);
}
.avatar.sm { width: 48px; height: 48px; font-size: 18px; }
.avatar.md { width: 72px; height: 72px; font-size: 26px; }
.avatar.lg { width: 120px; height: 120px; font-size: 42px; }

/* ── Home (LinkedIn 2-column on desktop) ─────────────────────────────────── */
.home-grid { display: grid; gap: 16px; }
@media (min-width: 900px) {
  .home-grid { grid-template-columns: 300px minmax(0, 1fr); align-items: start; }
}
.identity-card { overflow: hidden; position: relative; }
.id-edit {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  width: 32px; height: 32px; display: grid; place-items: center;
  border-radius: 50%; cursor: pointer;
  background: rgba(255, 255, 255, 0.18); color: #fff;
  border: 1px solid rgba(255, 255, 255, 0.35);
  backdrop-filter: blur(2px); transition: background .12s ease;
}
.id-edit:hover { background: rgba(255, 255, 255, 0.32); }
.id-edit svg { width: 15px; height: 15px; }
.identity-cover { height: 60px; background: var(--banner); }
.identity-body { padding: 0 16px 18px; margin-top: -36px; }
.identity-body .name { font-size: 18px; font-weight: 800; letter-spacing: -0.02em; margin-top: 10px; }
.identity-body .sub { color: var(--muted); font-size: 13.5px; margin-top: 2px; }
.id-exp { display: flex; align-items: center; gap: 6px; color: var(--brand-strong); font-size: 13px; font-weight: 700; margin-top: 7px; }
.id-exp svg { width: 15px; height: 15px; flex-shrink: 0; }
.identity-stats { display: flex; gap: 18px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.identity-stats .n { display: block; font-size: 18px; font-weight: 800; color: var(--brand-strong); }
.identity-stats .l { display: block; font-size: 11px; font-weight: 700; color: var(--faint); text-transform: uppercase; letter-spacing: 0.03em; }
/* The stats are buttons — clicking opens Applications (2nd pre-filtered). */
.id-stat { padding: 0; text-align: left; }
.id-stat:hover .n { color: var(--brand); }
.id-stat:hover .l { color: var(--muted); }
/* Desktop-only richer profile snapshot below the stats */
.identity-extra { padding: 0 16px 18px; }
.id-section { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border); }
.id-section-title { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em; color: var(--faint); margin-bottom: 10px; }
.id-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 4px 0; font-size: 13.5px; font-weight: 600; }
.id-row-k { display: inline-flex; align-items: center; gap: 9px; min-width: 0; color: var(--muted); }
.id-row-k svg { width: 15px; height: 15px; color: var(--brand); flex-shrink: 0; }
.id-fact { display: flex; align-items: flex-start; gap: 10px; padding: 5px 0; }
.id-fact svg { width: 16px; height: 16px; color: var(--brand); margin-top: 2px; flex-shrink: 0; }
.id-fact .k { font-size: 11px; color: var(--faint); font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; }
.id-fact .v { font-size: 14px; font-weight: 700; margin-top: 1px; word-break: break-word; }
.feed-head { display: flex; align-items: center; justify-content: space-between; margin: 4px 2px 12px; }

/* ── Self-introduction video (profile card) ─────────────────────────────── */
.id-video { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.id-video-cta { width: 100%; gap: 8px; }
.id-video-cta svg { width: 18px; height: 18px; }
.id-video-hint { font-size: 12px; color: var(--muted); text-align: center; margin-top: 8px; line-height: 1.4; }
.id-video.has-video { display: flex; flex-direction: column; gap: 8px; }
.id-video-head {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 0; text-align: left;
}
.id-video-head .id-section-title { margin-bottom: 0; }
.id-video-head .chev { width: 16px; height: 16px; color: var(--faint); transition: transform .15s ease; }
.id-video-head[aria-expanded="true"] .chev { transform: rotate(180deg); }
.id-video-head:hover .id-section-title, .id-video-head:hover .chev { color: var(--brand); }
.id-video-player { width: 100%; aspect-ratio: 4 / 3; background: #000; border-radius: var(--radius-sm); object-fit: cover; }
.id-video-btn { align-self: flex-start; gap: 6px; }
.id-video-btn svg { width: 15px; height: 15px; }

/* ── Intro-video recorder overlay ───────────────────────────────────────── */
/* Lock the page while a full-screen overlay (the recorder) is open. Without
   this, scrolling the page behind collapses/expands the mobile browser toolbar,
   which resizes the viewport and shifts the overlay's bottom edge around. */
body.modal-open { overflow: hidden; }

.introrec-backdrop {
  position: fixed; top: 0; left: 0; right: 0; z-index: 80;
  height: 100dvh; /* fallback — JS overrides with the exact visualViewport height */
  display: grid; place-items: center; overscroll-behavior: contain;
  background: rgba(20, 16, 33, 0.62); backdrop-filter: blur(2px); padding: 16px;
}
.introrec {
  width: min(520px, 100%); max-height: calc(100dvh - 32px); display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg); overflow: hidden; animation: modal-in .14s ease;
}
.introrec-head { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--border); }
.introrec-title { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: 16px; }
.introrec-title svg { width: 20px; height: 20px; color: var(--brand); }
.ir-ver { font-size: 10px; font-weight: 600; color: var(--faint); align-self: flex-end; }
.introrec-stage { position: relative; background: #000; aspect-ratio: 4 / 3; display: grid; place-items: center; }
.introrec-video { width: 100%; height: 100%; object-fit: cover; background: #000; }
.introrec-timer {
  position: absolute; top: 12px; left: 12px; display: flex; align-items: center; gap: 7px;
  background: rgba(0, 0, 0, 0.6); color: #fff; font-size: 13px; font-weight: 700;
  padding: 5px 10px; border-radius: 999px; font-variant-numeric: tabular-nums;
}
.ir-livedot { width: 9px; height: 9px; border-radius: 50%; background: #ef4444; animation: ir-pulse 1s ease-in-out infinite; }
@keyframes ir-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.25; } }
.introrec-status { position: absolute; color: rgba(255, 255, 255, 0.9); font-size: 14px; font-weight: 600; text-align: center; padding: 0 24px; }
.introrec-tips { padding: 12px 16px; font-size: 13px; color: var(--muted); line-height: 1.45; border-bottom: 1px solid var(--border); }
.introrec-foot { display: flex; gap: 10px; padding: 14px 16px; }
.introrec-foot .btn { flex: 1; }
.introrec-rec { background: #ef4444; color: #fff; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.introrec-rec:hover { background: #dc2626; }
.rec-dot { width: 10px; height: 10px; border-radius: 50%; background: #fff; }
@media (max-width: 768px) {
  /* Full-screen on phones: no backdrop padding, dialog stretches to fill the
     backdrop exactly (the backdrop's height is set by JS from visualViewport). */
  .introrec-backdrop { padding: 0; place-items: stretch; }
  .introrec { width: 100%; height: 100%; max-height: none; border-radius: 0; position: relative; }
  .introrec-head { flex-shrink: 0; padding-top: max(14px, env(safe-area-inset-top)); }
  /* The camera fills everything below the header, edge to edge. */
  .introrec-stage { flex: 1; min-height: 0; aspect-ratio: auto; }
  /* Controls FLOAT over the camera view, lifted well clear of the bottom —
     the native camera-app pattern. Mobile browsers disagree on the visible
     viewport height (their floating toolbars overlay content and the reported
     height can be tens of px off), so nothing critical may sit at the exact
     bottom edge. A generous lift makes any measurement error irrelevant. */
  .introrec-foot {
    position: absolute; left: 0; right: 0; z-index: 3;
    bottom: max(84px, calc(56px + env(safe-area-inset-bottom)));
    padding: 0 24px; border-top: none; background: transparent;
  }
  .introrec-foot .btn { box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4); }
  .introrec-tips {
    position: absolute; left: 16px; right: 16px; z-index: 3;
    bottom: calc(max(84px, 56px + env(safe-area-inset-bottom)) + 62px);
    background: rgba(0, 0, 0, 0.55); color: #fff; border: none;
    border-radius: 12px; padding: 10px 14px; text-align: center;
  }
}

/* ── Profile completeness ────────────────────────────────────────────────── */
.complete-card { margin-bottom: 16px; border-color: var(--brand); }

/* Share bar under a helper profile (employer view) — anonymized share. */
.share-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.share-note { font-size: 12.5px; color: var(--muted); }
.share-btns { display: flex; gap: 8px; }
.share-btns .btn { width: auto; height: 36px; padding: 0 14px; font-size: 13px; }
/* Dark mode: a soft, on-brand violet bloom behind the one "do this next" card
   — a restrained take on the reference glow (single hue, low opacity, no rainbow). */
[data-theme="dark"] .complete-card {
  border-color: rgba(139, 92, 246, 0.5);
  box-shadow:
    0 0 22px -3px rgba(139, 92, 246, 0.40),
    0 0 60px -8px rgba(124, 58, 237, 0.30);
}
.cc-head { display: flex; gap: 14px; align-items: flex-start; justify-content: space-between; }
.cc-title { font-size: 16px; font-weight: 800; }
.cc-sub { color: var(--muted); font-size: 13.5px; margin-top: 3px; line-height: 1.45; }
.cc-bar { height: 8px; border-radius: 999px; background: var(--surface-2); overflow: hidden; margin-top: 12px; }
.cc-bar > span { display: block; height: 100%; background: var(--brand); border-radius: 999px; transition: width .4s ease; }
.cc-ring {
  flex-shrink: 0; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center;
  background: conic-gradient(var(--brand) calc(var(--pct) * 1%), var(--surface-2) 0);
}
.cc-ring span { width: 40px; height: 40px; border-radius: 50%; background: var(--surface); display: grid; place-items: center; font-size: 12px; font-weight: 800; color: var(--brand-strong); }
.profile-complete { margin-top: 14px; }
.profile-complete .pc-row { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; font-weight: 700; }
.profile-complete .pc-hint { color: var(--faint); font-weight: 500; }
.pc-done { margin-top: 12px; font-size: 13.5px; font-weight: 700; color: var(--success); }

/* ── Job cards ───────────────────────────────────────────────────────────── */
.jobcard {
  display: block; width: 100%; text-align: left; padding: 16px;
  border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface);
  box-shadow: var(--shadow-sm); transition: box-shadow .12s ease, border-color .12s ease;
  margin-bottom: 12px;
}
.jobcard:hover { box-shadow: var(--shadow); border-color: var(--border-strong); }
.jobcard.selected { border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand); }
.jc-top { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }
.jc-title { font-size: 16.5px; font-weight: 800; letter-spacing: -0.01em; line-height: 1.25; color: var(--brand-strong); }
.jc-salary { font-weight: 800; color: var(--text); white-space: nowrap; font-size: 14px; }
.jc-employer { color: var(--muted); font-size: 13.5px; margin-top: 2px; }
.jc-meta { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 11px; }
.jc-duty { color: var(--muted); font-size: 13.5px; margin-top: 10px; line-height: 1.4; }
/* Single-column pages (My applications): centered content column */
.page-col { max-width: 640px; margin: 0 auto; }

/* Personalized-match badge + why-this-job line (Home "Recommended for you") */
.jc-right { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex-shrink: 0; }
.pill-match { background: var(--brand); color: var(--brand-contrast); font-weight: 800; }
.jc-why { color: var(--brand-strong); font-size: 12.5px; font-weight: 700; margin-top: 8px; }

/* ── Jobs board (two-pane on desktop) ────────────────────────────────────── */
.jobs-toolbar { margin-bottom: 14px; }
.toolbar-row { display: flex; align-items: stretch; gap: 10px; }
.toolbar-row .filter-chip { align-self: stretch; }
.search { position: relative; margin-bottom: 12px; }
.search svg { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--faint); }
.search input { width: 100%; height: 46px; padding: 0 14px 0 40px; border-radius: 999px; border: 1px solid var(--field-border); background: var(--field); font-size: 15px; }
.search input:focus { outline: 2px solid var(--brand); outline-offset: -1px; }
.filter-scroll { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.filter-scroll::-webkit-scrollbar { display: none; }
.filter-chip { white-space: nowrap; flex-shrink: 0; }
.filter-panel { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; margin: 12px 0; box-shadow: var(--shadow-sm); }

.jobs-grid { display: block; }
.jobs-detail-pane { display: none; }
@media (min-width: 900px) {
  /* Both columns flow at their natural length and the whole page scrolls; the
     list column stretches to match the (usually longer) detail's height, so it
     extends the full way down instead of looking stunted beside a long profile. */
  .jobs-grid { display: grid; grid-template-columns: minmax(330px, 400px) minmax(0, 1fr); gap: 16px; align-items: stretch; }
  .jobs-list { padding-right: 4px; }
  .jobs-detail-pane { display: block; }
  /* Jobs board: fixed-height viewport region — search + filters stay frozen at
     the top, the detail pane is frozen on the right, and ONLY the list scrolls. */
  .jobs-board { height: calc(100vh - var(--appbar-h) - 72px); display: flex; flex-direction: column; }
  .jobs-board .jobs-toolbar { flex-shrink: 0; }
  .jobs-board .jobs-grid--frozen { flex: 1; min-height: 0; align-items: stretch; }
  .jobs-board .jobs-grid--frozen .jobs-list { height: 100%; overflow-y: auto; }
  .jobs-board .jobs-grid--frozen .jobs-detail-pane { height: 100%; overflow-y: auto; }
  /* Filters open as a dropdown floating over the list — it must not squeeze the
     fixed-height scroll area beneath it. */
  .jobs-board .jobs-toolbar { position: relative; }
  .jobs-board .filter-panel { position: absolute; top: 100%; left: 0; right: 0; z-index: 20; margin: 6px 0 0; }
  /* Sticky-list boards (Browse Helpers / Applicants): the list column pins to
     the viewport with its OWN scrollbar, while the profile flows at natural
     length so the normal PAGE scrollbar reads it. */
  .jobs-grid--sticky { align-items: start; }
  .jobs-grid--sticky .jobs-list {
    position: sticky; top: calc(var(--appbar-h) + 12px);
    max-height: calc(100vh - var(--appbar-h) - 24px); overflow-y: auto;
  }
}

/* ── Job detail ──────────────────────────────────────────────────────────── */
.detail-head { display: flex; gap: 14px; align-items: flex-start; }
.detail-title { font-size: 22px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.2; }
.detail-employer { color: var(--muted); margin-top: 3px; font-size: 14px; }
/* Nationality/gender, location/age, and zodiac lines under the profile
   title — bumped above the base .detail-employer size (compound selector so
   it wins regardless of declaration order). */
.detail-employer.profile-meta { font-size: 16px; }
.detail-headline { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 14px; font-weight: 700; color: var(--brand); }
.detail-headline svg { width: 16px; height: 16px; flex-shrink: 0; }
.detail-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border); border-radius: var(--radius); overflow: hidden; margin: 16px 0; }
.fact { background: var(--surface); padding: 13px 14px; }
.fact .k { font-size: 11px; color: var(--faint); font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; display: flex; align-items: center; gap: 6px; }
.fact .k svg { width: 14px; height: 14px; color: var(--brand); }
.fact .v { font-size: 15px; font-weight: 700; margin-top: 3px; }
/* Languages fact: name + 5 stars need real width — keep stars on one line and
   let the cell span the whole grid row on narrow (mobile) viewports. */
.fact-langs .rate-stars { flex-wrap: nowrap; }
.fact-langs { grid-column: 1 / -1; }
/* No orphan cells on the HELPER PROFILE grid only (it has a full-width Languages
   row): an odd-positioned fact that would sit alone spans the row too. The job
   detail grid pairs its facts normally (Children + Languages share a row). */
.detail-facts--profile .fact:nth-child(odd):nth-last-child(2) { grid-column: 1 / -1; }
.detail-facts--profile .fact:nth-child(odd):last-child { grid-column: 1 / -1; }
.detail-desc { line-height: 1.6; color: var(--text); white-space: pre-line; }
.contact-reveal { background: var(--success-soft); border: 1px solid var(--success); border-radius: var(--radius); padding: 16px; margin-top: 16px; }
.detail-cta { margin-top: 18px; }
@media (max-width: 899px) {
  .detail-cta { position: sticky; bottom: calc(var(--nav-h) + 10px); }
}

/* ── Profile (LinkedIn banner + sections) ────────────────────────────────── */
/* Account overlay (avatar menu) — replaces the old full Profile page */
.pm-backdrop { position: fixed; inset: 0; z-index: 60; background: transparent; }
.profile-menu {
  position: fixed; z-index: 61; top: 60px; width: 288px;
  right: max(16px, (100vw - var(--content-max)) / 2 + 16px);
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg); padding: 16px;
  animation: pm-in .14s ease;
}
@keyframes pm-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.pm-head { display: flex; align-items: center; gap: 12px; }
.pm-id { min-width: 0; }
.pm-name { font-weight: 800; font-size: 16px; letter-spacing: -0.01em; }
.pm-headline { color: var(--muted); font-size: 13px; margin-top: 2px; }
.pm-complete { margin-top: 14px; font-size: 12.5px; color: var(--muted); }
.pm-complete .cc-bar { margin-top: 7px; }
.pm-done { margin-top: 14px; font-size: 13px; font-weight: 600; color: var(--ok, #15803d); }
/* Stack the account actions — three pills (Credits · Edit profile · Log out)
   never fit side by side in the narrow menu card, so a row overflowed. */
.pm-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.pm-actions .btn { width: 100%; }
.ab-avatar.active { outline: 2px solid var(--brand); outline-offset: 2px; }
@media (max-width: 768px) {
  .pm-backdrop { background: rgba(20, 16, 33, 0.4); }
  .profile-menu {
    top: auto; right: 12px; left: 12px; bottom: calc(var(--nav-h) + 12px);
    width: auto; animation: pm-up .16s ease;
  }
  @keyframes pm-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
}
/* Advanced-filter modal (Browse Helpers) */
.adv-backdrop { background: rgba(20, 16, 33, 0.5); }
.adv-filter {
  position: fixed; z-index: 61; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: min(680px, calc(100vw - 32px)); max-height: min(86vh, 920px);
  display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg); animation: modal-in .14s ease;
}
@keyframes modal-in { from { opacity: 0; } to { opacity: 1; } }
.adv-filter-head { display: flex; align-items: center; justify-content: space-between; padding: 15px 18px; border-bottom: 1px solid var(--border); }
.adv-filter-head h2 { font-size: 17px; margin: 0; letter-spacing: -0.01em; }
.adv-filter-body { padding: 16px 18px; overflow-y: auto; }
.adv-filter-body .field { margin-bottom: 12px; }
.adv-filter-foot { display: flex; gap: 10px; padding: 14px 18px; border-top: 1px solid var(--border); }
.adv-filter-foot .btn { flex: 1; }
@media (max-width: 768px) {
  .adv-filter { top: 0; left: 0; transform: none; width: 100vw; max-width: 100vw; height: 100dvh; max-height: none; border-radius: 0; }
}
.lang-row { display: flex; justify-content: space-between; align-items: center; padding: 11px 0; border-bottom: 1px solid var(--border); }
.lang-row:last-child { border-bottom: 0; }
.rating-dots { display: inline-flex; gap: 4px; }
.dot { width: 9px; height: 9px; border-radius: 50%; background: var(--border-strong); }
.dot.on { background: var(--brand); }

/* Star rating (wizard input + profile display) */
.rate-row { padding: 14px 2px; border-bottom: 1px solid var(--border); }
.rate-row:last-child { border-bottom: 0; }
.rate-name { font-weight: 700; font-size: 15px; margin-bottom: 8px; }
.rate-stars { display: flex; align-items: center; gap: 2px; flex-wrap: wrap; }
.star { font-size: 30px; line-height: 1; color: var(--border-strong); background: none; border: 0; padding: 0 3px; }
.star.on { color: #f5a623; }
button.star { cursor: pointer; transition: transform .1s ease; -webkit-tap-highlight-color: transparent; }
button.star:hover { transform: scale(1.18); }
button.star:active { transform: scale(0.95); }
.rate-label { margin-left: 10px; font-size: 13px; font-weight: 600; color: var(--muted); }
.star.sm { font-size: 18px; padding: 0 1px; }

/* ── Auth ────────────────────────────────────────────────────────────────── */
.auth-wrap { min-height: 100vh; display: grid; place-items: center; padding: 24px; }
.auth-card { width: 100%; max-width: 400px; text-align: center; }
.auth-logo { width: 76px; height: 76px; color: var(--brand-strong); display: grid; place-items: center; margin: 0 auto 16px; }
.auth-logo svg { width: 100%; height: 100%; }
.theme-fab { position: fixed; top: 14px; right: 14px; z-index: 30; background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-sm); }
.auth-topbar { position: fixed; top: 14px; right: 14px; z-index: 30; display: flex; align-items: center; gap: 8px; }
.auth-topbar .icon-btn { background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-sm); }
.auth-topbar .lang-mini { background: var(--surface); box-shadow: var(--shadow-sm); }
.auth-card h1 { font-size: 28px; letter-spacing: -0.03em; margin: 0 0 6px; }
.auth-card .lede { color: var(--muted); margin: 0 0 28px; }
/* Labeled provider buttons (welcome screen) */
.provider-btn {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; height: 52px; border-radius: 12px; margin-bottom: 11px;
  font-weight: 700; font-size: 15px;
  border: 1.5px solid var(--field-border); background: var(--surface); color: var(--text);
  box-shadow: var(--shadow-sm); transition: filter .12s ease, background .12s ease, border-color .12s ease;
}
.provider-btn:hover { background: var(--surface-2); }
.provider-btn:active { transform: scale(0.99); }
.provider-btn.primary { background: var(--brand); color: var(--brand-contrast); border-color: var(--brand); }
.provider-btn.primary:hover { filter: brightness(1.06); background: var(--brand); }
.provider-btn svg, .provider-btn img { width: 20px; height: 20px; }
.auth-caption { color: var(--faint); font-size: 13px; margin: 0 0 14px; font-weight: 600; }
.auth-legal { color: var(--faint); font-size: 12px; line-height: 1.5; margin-top: 18px; }
/* Full-width labeled social buttons — promoted above the email form as the
   primary path (Facebook is near-ubiquitous for helpers; Google for employers). */
.social-stack { display: grid; gap: 10px; margin: 4px 0 2px; }
.btn.social { background: var(--surface); color: var(--text); border: 1.5px solid var(--field-border); font-weight: 700; gap: 10px; }
.btn.social:hover { filter: none; background: var(--surface-2); }
.btn.social .social-ic { display: inline-flex; }
.btn.social .social-ic svg { width: 20px; height: 20px; }
.linklike { color: var(--brand-strong); font-weight: 700; text-decoration: underline; padding: 0; }

/* Flag country-code picker */
.dialpick { position: relative; }
.dialpick-btn {
  display: flex; align-items: center; gap: 7px; width: 100%; height: 46px; padding: 0 10px;
  border: 1px solid var(--field-border); border-radius: var(--radius-sm); background: var(--field);
  font-weight: 700; font-size: 15px; color: var(--text);
}
.dialpick-btn .flag { width: 24px; height: 17px; border-radius: 3px; object-fit: cover; flex-shrink: 0; }
.dialpick-btn .chev { width: 16px; height: 16px; margin-left: auto; color: var(--faint); }
.dialpick.open .dialpick-btn { border-color: var(--brand); outline: 2px solid var(--brand); outline-offset: -1px; }
.dial-backdrop { position: fixed; inset: 0; z-index: 40; }
.dialpick-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 50;
  width: 240px; max-height: 280px; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-lg); padding: 6px;
}
.dialpick-opt { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px; border-radius: 9px; text-align: left; }
.dialpick-opt:hover { background: var(--surface-2); }
.dialpick-opt.sel { background: var(--brand-soft); }
.dialpick-opt .flag { width: 24px; height: 17px; border-radius: 3px; object-fit: cover; }
.dialpick-opt .dp-code { font-weight: 700; }
.dialpick-opt .dp-name { color: var(--muted); font-size: 13px; }

/* Segmented one-time-code input */
.otp-row { display: flex; gap: 10px; justify-content: center; margin: 10px 0 20px; }
.otp-box {
  width: 46px; height: 56px; text-align: center; font-size: 24px; font-weight: 800;
  border: 1.5px solid var(--field-border); border-radius: 12px; background: var(--field); color: var(--text);
}
.otp-box:focus { outline: 2px solid var(--brand); outline-offset: -1px; border-color: var(--brand); }
.auth-divider { text-align: center; color: var(--faint); font-size: 12px; font-weight: 700; margin: 18px 0; position: relative; }
.auth-divider::before, .auth-divider::after { content: ""; position: absolute; top: 50%; width: 36%; height: 1px; background: var(--border); }
.auth-divider::before { left: 0; } .auth-divider::after { right: 0; }

/* ── Wizard ──────────────────────────────────────────────────────────────── */
.wizard-wrap { max-width: 560px; margin: 0 auto; }
.wiz-back-link { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; color: var(--muted); font-weight: 700; font-size: 14px; cursor: pointer; padding: 4px 6px 4px 0; margin-bottom: 8px; transition: color .12s ease; }
.wiz-back-link:hover { color: var(--text); }
.wiz-back-link svg { width: 18px; height: 18px; }
/* The auth card centers everything; the role back-link belongs top-LEFT there. */
.auth-card .wiz-back-link { display: flex; }
.wizard-tip {
  display: flex; gap: 10px; align-items: flex-start;
  background: var(--brand-soft); color: var(--brand-strong);
  border-radius: 12px; padding: 12px 14px; margin-bottom: 18px;
  font-size: 13.5px; line-height: 1.45; font-weight: 600;
}
.wizard-tip svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 1px; }
.steps { display: flex; gap: 6px; margin-bottom: 20px; }
.steps .seg { flex: 1; height: 5px; border-radius: 999px; background: var(--border); }
.steps .seg.on { background: var(--brand); }
.wizard-actions { display: flex; gap: 10px; margin-top: 22px; }
.photo-pick { display: flex; flex-direction: column; align-items: center; gap: 12px; margin-bottom: 6px; }

/* ── Misc ────────────────────────────────────────────────────────────────── */
.empty { text-align: center; padding: 52px 20px; color: var(--muted); }
.empty svg { width: 52px; height: 52px; color: var(--border-strong); margin-bottom: 12px; }
.empty.detail-empty { display: grid; place-items: center; min-height: 320px; border: 1.5px dashed var(--border-strong); border-radius: var(--radius-lg); }
.toast { position: fixed; left: 50%; bottom: calc(var(--nav-h) + 18px); transform: translateX(-50%); background: var(--text); color: var(--bg); padding: 12px 20px; border-radius: 999px; font-weight: 700; font-size: 14px; z-index: 60; box-shadow: var(--shadow-lg); max-width: 90%; }
.toast.err { background: var(--danger); color: #fff; }
@media (min-width: 900px) { .toast { bottom: 28px; } }
.spinner { width: 30px; height: 30px; border: 3px solid var(--border); border-top-color: var(--brand); border-radius: 50%; animation: spin 0.7s linear infinite; margin: 50px auto; }
@keyframes spin { to { transform: rotate(360deg); } }
.loading-screen { min-height: 100vh; display: grid; place-items: center; }

/* ── Responsive show/hide ────────────────────────────────────────────────── */
.desktop-only { display: none; }
@media (min-width: 900px) {
  .desktop-only { display: flex; }
  .mobile-only { display: none !important; }
  .ab-nav { display: flex; }
  .ab-logo .wordmark { display: inline; }
  .ab-search { max-width: 280px; }
}

/* ══ Employer (Phase 2) ═══════════════════════════════════════════════════ */
/* Welcome screen — the very first screen, before any login form: two big
   tappable lanes so the choice can't be missed or mistaken for a toggle. */
.welcome-choices { display: flex; flex-direction: column; gap: 12px; margin-top: 22px; text-align: left; }
.welcome-choice {
  display: flex; align-items: center; gap: 14px; width: 100%;
  background: var(--surface); border: 1.5px solid var(--border); border-radius: var(--radius);
  padding: 16px; cursor: pointer; transition: border-color .12s ease, transform .12s ease, box-shadow .12s ease;
}
.welcome-choice:hover { border-color: var(--brand); box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.wc-icon {
  flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--radius-sm);
  background: var(--brand-soft); color: var(--brand-strong); display: grid; place-items: center;
}
.wc-icon svg { width: 22px; height: 22px; }
.wc-text { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.wc-text strong { font-size: 15.5px; font-weight: 800; }
.wc-text span { font-size: 13px; color: var(--muted); }
.wc-chev { flex-shrink: 0; color: var(--faint); }
.wc-chev svg { width: 18px; height: 18px; }
.welcome-choice:hover .wc-chev { color: var(--brand); }

/* Manage Jobs dashboard */
.emp-tabs { display: flex; gap: 8px; margin: 12px 0 16px; border-bottom: 1px solid var(--border); }
.emp-tab { border: 0; background: transparent; color: var(--muted); font-weight: 700; font-size: 14px; padding: 8px 4px 12px; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.emp-tab.on { color: var(--brand-strong); border-bottom-color: var(--brand); }
.emp-job { margin-bottom: 14px; }
.emp-job-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.emp-job-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.applicant-pill { border: 0; cursor: pointer; background: var(--brand-soft); color: var(--brand-strong); font: inherit; font-weight: 700; }
.applicant-pill:hover { filter: brightness(0.97); }
.emp-job-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }

.detail-employer svg { width: 14px; height: 14px; flex-shrink: 0; }

/* ── Credits (Phase 3) ─────────────────────────────────────────────────────── */
.tnum { font-variant-numeric: tabular-nums; }

/* Balance chip (employer app bar) — status readout, not a CTA */
.credit-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 999px; flex-shrink: 0;
  background: var(--brand-soft); color: var(--brand-strong);
  border: 1px solid transparent; font-weight: 800; font-size: 14px;
  transition: transform .15s var(--ease-out), border-color .12s ease;
}
.credit-chip svg { width: 16px; height: 16px; }
.credit-chip:hover { border-color: var(--border-strong); }
.credit-chip:active { transform: scale(.95); }
.credit-chip.zero { background: var(--warning-soft); color: var(--warning); }
.credit-chip.bump { animation: chip-bump .3s var(--ease-out); }
@keyframes chip-bump { 50% { transform: scale(1.12); } }

/* Balance hero — the one deliberately fintech moment */
.credit-hero {
  display: flex; flex-direction: column; gap: 8px;
  background: var(--brand); color: var(--brand-contrast);
  border-radius: var(--radius-lg); padding: 16px;
}
.credit-hero .ch-label { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; opacity: .75; }
.credit-hero .ch-row { display: flex; align-items: baseline; gap: 8px; }
.credit-hero .ch-n { font-size: 44px; font-weight: 700; line-height: 1; letter-spacing: -.02em; }
.credit-hero .ch-unit { font-size: 15px; font-weight: 600; opacity: .75; }
.credit-hero .ch-hint { font-size: 13px; font-weight: 500; opacity: .75; }

/* Pack cards */
.pack-grid { display: grid; gap: 12px; }
@media (min-width: 640px) {
  .pack-grid { grid-template-columns: repeat(3, 1fr); align-items: stretch; }
  .pack-card.pk3 { order: 1; } .pack-card.pk10 { order: 2; } .pack-card.pk25 { order: 3; }
  .pack-grid.single { grid-template-columns: 1fr; }
}
.pack-grid.single { max-width: 340px; }
.pack-card {
  position: relative; display: flex; flex-direction: column;
  padding: 16px; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  transition: box-shadow .12s ease, border-color .12s ease;
}
.pack-card:hover { box-shadow: var(--shadow); border-color: var(--border-strong); }
.pack-card.featured, .pack-card.featured:hover { border-color: var(--brand); box-shadow: var(--shadow-sm), 0 0 0 1px var(--brand); }
.pack-badge { position: absolute; top: 0; left: 50%; transform: translate(-50%, -50%); white-space: nowrap; }
.pack-card .pc-name { font-size: 16px; font-weight: 800; margin-bottom: 12px; }
.pack-card .pc-price { display: flex; align-items: flex-start; gap: 2px; }
.pack-card .pc-price .cur { font-size: 14px; font-weight: 700; color: var(--muted); margin-top: 3px; }
.pack-card .pc-price .amt { font-size: 28px; font-weight: 800; letter-spacing: -.02em; line-height: 1.1; }
.pack-card .pc-unit { font-size: 12.5px; font-weight: 600; color: var(--muted); margin-top: 4px; }
.pack-card .pc-save { margin-top: 8px; min-height: 26px; }
.pack-card .pc-cta { margin-top: auto; padding-top: 14px; }
.pill-save { background: var(--success-soft); color: var(--success); }
.credit-trust { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--faint); margin: 12px 0 0; }
.credit-trust svg { width: 13px; height: 13px; }

/* Transaction history — jobcard anatomy, non-interactive */
.txn-row { padding: 14px 16px; margin-bottom: 12px; cursor: default; }
.txn-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.txn-title { font-size: 16.5px; font-weight: 800; color: var(--brand-strong); }
.txn-sub { font-size: 13.5px; color: var(--muted); margin-top: 2px; }
.txn-amt { font-size: 14px; font-weight: 800; }
.txn-amt.in { color: var(--success); }
.txn-meta { display: flex; gap: 7px; margin-top: 10px; flex-wrap: wrap; }
.st-Failed { background: var(--danger-soft); color: var(--danger); }
.st-Refunded { background: var(--info-soft); color: var(--info); }

/* Paywall modal — adv-filter chrome, narrower */
.paywall { width: min(480px, calc(100vw - 32px)); animation: paywall-in var(--dur-enter) var(--ease-out); }
@keyframes paywall-in {
  from { opacity: 0; transform: translate(-50%, calc(-50% + 20px)) scale(.97); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
.pw-lede { font-size: 13.5px; font-weight: 500; color: var(--muted); margin: 0 0 14px; }
.pack-row {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 14px; min-height: 60px; background: var(--field);
  border: 1px solid var(--field-border); border-radius: var(--radius);
  text-align: left; margin-bottom: 8px; color: var(--text); font-family: inherit;
  transition: transform .15s var(--ease-out);
}
.pack-row:active { transform: scale(.98); }
.pack-row.sel { border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand); background: var(--surface); }
.pack-row .pr-left { display: flex; flex-direction: column; gap: 4px; }
.pack-row .pr-name { font-size: 15px; font-weight: 800; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pack-row .pr-unit { font-size: 12.5px; font-weight: 600; color: var(--muted); }
.pack-row .pr-price { font-size: 16px; font-weight: 800; flex-shrink: 0; }

/* Reveal states */
.contact-masked { display: flex; align-items: center; gap: 8px; margin-top: 10px; color: var(--faint); font-size: 14px; }
.contact-masked svg { width: 17px; height: 17px; }
.btn-reveal { transition: transform .15s var(--ease-out); }
.btn-reveal:active { transform: scale(.97); }

@media (prefers-reduced-motion: reduce) {
  .credit-chip, .pack-row, .btn-reveal { transition: none; }
  .credit-chip.bump { animation: none; }
  .paywall { animation: none; }
}

/* Per-certification Good-to-have / Must-have toggle (job wizard) */
.cert-imp { display: flex; flex-direction: column; gap: 8px; margin-top: 4px; }
.cert-imp-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.cert-imp-name { font-size: 14px; font-weight: 700; }
.cert-imp-opts { display: inline-flex; gap: 6px; }
.cert-imp-opt { font-size: 12.5px; padding: 5px 12px; }

/* ── Activity photos (wizard uploader + profile gallery) ─────────────────── */
.act-cats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px 20px; }
.act-cat { margin-bottom: 18px; }
.act-cat-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.act-cat-label { font-size: 14px; font-weight: 800; }
.act-cat-hint { font-size: 12px; color: var(--muted); }
.act-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
@media (max-width: 560px) {
  .act-cats { gap: 4px 14px; }
  /* Narrow screens: one slot per category row, so the tiles stay large —
     the side-by-side categories already give the two-column look. */
  .act-grid { grid-template-columns: 1fr; }
}
.act-thumb { position: relative; aspect-ratio: 1; border-radius: var(--radius-sm); overflow: hidden; background: var(--surface-2); border: 1px solid var(--border); }
.act-thumb img { width: 100%; height: 100%; object-fit: cover; }
.act-thumb-x {
  position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%;
  background: rgba(20, 16, 33, 0.62); color: #fff; display: grid; place-items: center; border: 0; cursor: pointer;
}
.act-thumb-x svg { width: 13px; height: 13px; }
.act-add {
  aspect-ratio: 1; border-radius: var(--radius-sm); border: 1.5px dashed var(--border-strong);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  color: var(--brand-strong); font-size: 12px; font-weight: 700; cursor: pointer; background: var(--surface-2);
}
.act-add svg { width: 20px; height: 20px; }
.act-add:hover { border-color: var(--brand); }
/* A just-picked photo that is still uploading: dimmed preview + spinner */
.act-thumb-up img { opacity: 0.45; }
.act-up-veil { position: absolute; inset: 0; display: grid; place-items: center; }
.act-up-spin {
  width: 24px; height: 24px; border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, 0.7); border-top-color: var(--brand);
  animation: spin 0.7s linear infinite;
}

/* Profile gallery */
.act-gallery { margin-bottom: 16px; }

/* ── Photo carousel (helper card + employer profile) ─────────────────────── */
.pc { position: relative; }
.pc-track {
  display: flex; gap: 8px; overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; -webkit-overflow-scrolling: touch; border-radius: var(--radius-sm);
}
.pc-track::-webkit-scrollbar { display: none; }
.pc-slide {
  position: relative; flex: 0 0 86%; max-width: 420px; aspect-ratio: 4 / 3;
  scroll-snap-align: start; border-radius: var(--radius-sm); overflow: hidden;
  background: var(--surface-2); border: 1px solid var(--border);
}
.pc-slide:only-child { flex-basis: 100%; }
.pc-slide img { width: 100%; height: 100%; object-fit: cover; }
.pc-tag, .pc-count {
  position: absolute; padding: 3px 9px; border-radius: 999px;
  background: rgba(20, 16, 33, 0.62); color: #fff; font-size: 11.5px; font-weight: 700;
}
.pc-tag { left: 8px; top: 8px; }
.pc-count { right: 8px; bottom: 8px; z-index: 2; pointer-events: none; }
.pc-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--border);
  background: var(--surface); color: inherit; display: grid; place-items: center;
  cursor: pointer; box-shadow: var(--shadow); opacity: 0.92;
}
.pc-arrow:hover { opacity: 1; }
.pc-arrow.prev { left: 8px; }
.pc-arrow.next { right: 8px; }
.pc-arrow svg { width: 15px; height: 15px; }
@media (hover: none) { .pc-arrow { display: none; } } /* phones: swipe + counter */

/* Activity-photos section on the helper's own Home card (above intro video).
   Collapsible header mirrors the intro-video section. */
.id-photos { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.id-photos.has-photos { display: flex; flex-direction: column; gap: 10px; }
.id-photos-head {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 0; text-align: left;
}
.id-photos-head .id-section-title { margin-bottom: 0; }
.id-photos-n {
  display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px;
  margin-left: 2px; border-radius: 999px; background: var(--brand-soft); color: var(--brand-strong);
  font-size: 11px; font-weight: 800; vertical-align: middle;
}
.id-photos-head .chev { width: 16px; height: 16px; color: var(--faint); transition: transform .15s ease; }
.id-photos-head[aria-expanded="true"] .chev { transform: rotate(180deg); }
.id-photos-head:hover .id-section-title, .id-photos-head:hover .chev { color: var(--brand); }
.id-photos-cta { width: 100%; gap: 8px; }
.id-photos-cta svg { width: 18px; height: 18px; }

/* "Signing you in…" full-screen loader (post-Google, session exchange) */
.signin-loading {
  min-height: 100vh; min-height: 100dvh;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
  padding: 24px; text-align: center;
}
.signin-loading .auth-logo { width: 64px; height: 64px; color: var(--brand-strong); }
.signin-loading p { color: var(--muted); font-size: 15px; font-weight: 700; margin: 0; }
