/* ═══════════════════════════════════════════════════════════
   ARCANA — Industrial Minimalist Design System
   Palette: #121212 / #FFFFFF / #2A2A2A + Accent #C5A059
═══════════════════════════════════════════════════════════ */

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

/* ── Design Tokens ───────────────────────────────────────── */
:root {
  --bg:           #121212;
  --bg-2:         #181818;
  --bg-3:         #2A2A2A;
  --surface:      #1E1E1E;
  --border:       rgba(255,255,255,0.07);
  --border-hi:    rgba(255,255,255,0.14);

  --txt-1:        #FFFFFF;
  --txt-2:        rgba(255,255,255,0.58);
  --txt-3:        rgba(255,255,255,0.32);

  --accent:       #C5A059;
  --accent-h:     #D4B06A;
  --accent-dim:   rgba(197,160,89,0.15);
  --accent-glow:  rgba(197,160,89,0.25);

  --glass-bg:     rgba(255,255,255,0.04);
  --glass-bg-h:   rgba(255,255,255,0.07);
  --glass-blur:   20px;

  --dot-color:    rgba(255,255,255,0.04);
  --overlay-bg:   rgba(0,0,0,0.72);

  --font-ui:      'Space Grotesk', system-ui, sans-serif;
  --font-disp:    'Playfair Display', Georgia, serif;

  --r-sm:  6px;
  --r-md:  10px;
  --r-lg:  16px;

  --ease:  cubic-bezier(.4,0,.2,1);
  --t1:    120ms;
  --t2:    240ms;
  --t3:    400ms;
}

/* ── Light Mode Overrides ────────────────────────────────── */
[data-theme="light"] {
  --bg:           #F4EFE6;
  --bg-2:         #EDE7DC;
  --bg-3:         #E0D8CC;
  --surface:      #F9F5EF;
  --border:       rgba(28,23,18,0.09);
  --border-hi:    rgba(28,23,18,0.17);

  --txt-1:        #1C1712;
  --txt-2:        rgba(28,23,18,0.62);
  --txt-3:        rgba(28,23,18,0.38);

  --accent:       #9B7B3A;
  --accent-h:     #B08A45;
  --accent-dim:   rgba(155,123,58,0.12);
  --accent-glow:  rgba(155,123,58,0.20);

  --glass-bg:     rgba(28,23,18,0.03);
  --glass-bg-h:   rgba(28,23,18,0.06);

  --dot-color:    rgba(28,23,18,0.05);
  --overlay-bg:   rgba(0,0,0,0.60);
}

/* Light mode: SVG chart text fills */
[data-theme="light"] .bazi-label       { fill: rgba(28,23,18,0.45); }
[data-theme="light"] .bazi-label-zh    { fill: rgba(28,23,18,0.32); }
[data-theme="light"] .bazi-sep         { stroke: rgba(28,23,18,0.10); }
[data-theme="light"] .bazi-god-zh      { fill: rgba(28,23,18,0.75); }
[data-theme="light"] .bazi-god-en      { fill: rgba(28,23,18,0.50); }
[data-theme="light"] .bazi-god.day-master-tag { fill: rgba(155,123,58,0.8); }
[data-theme="light"] .num-label        { fill: rgba(28,23,18,0.45); }
[data-theme="light"] .num-value        { fill: #1C1712; }
[data-theme="light"] .num-value-sm     { fill: #1C1712; }
[data-theme="light"] .num-desc         { fill: rgba(28,23,18,0.55); }
[data-theme="light"] .hd-center-label  { fill: rgba(28,23,18,0.55); }
[data-theme="light"] .hd-type-label    { fill: rgba(28,23,18,0.45); }
[data-theme="light"] .hd-type-value    { fill: #9B7B3A; }
[data-theme="light"] .hd-gate-label    { fill: rgba(28,23,18,0.38); }
[data-theme="light"] .ziwei-palace-name { fill: rgba(28,23,18,0.50); }
[data-theme="light"] .ziwei-star-minor  { fill: rgba(28,23,18,0.60); }
[data-theme="light"] .ziwei-branch      { fill: rgba(28,23,18,0.40); }
[data-theme="light"] .ziwei-center-label { fill: rgba(28,23,18,0.25); }

/* Light mode: select arrow (dark chevron) */
[data-theme="light"] .field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='rgba(28,23,18,0.45)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* Light mode: token modal background */
[data-theme="light"] .token-modal      { background: #F9F5EF; }

/* Light mode: auth panel — left stays dark by design */
[data-theme="light"] .auth-info-panel  { background-color: #23201a; }

/* Light mode: site header border */
[data-theme="light"] .site-header { border-bottom-color: rgba(28,23,18,0.10); }

/* Light mode: history panel */
[data-theme="light"] .history-panel { background: var(--bg-2); }

/* ── Base ────────────────────────────────────────────────── */
body {
  font-family: var(--font-ui);
  font-size: 16px;
  line-height: 1.6;
  color: var(--txt-1);
  overflow-x: hidden;
  background: var(--bg);
  min-height: 100dvh;
  overflow-x: hidden;

  /* Subtle dot-grid texture (Industrial aesthetic) */
  background-image: radial-gradient(circle, var(--dot-color) 1px, transparent 1px);
  background-size: 28px 28px;
}

/* Ambient glow in top-right corner */
body::before {
  content: '';
  position: fixed;
  top: -200px; right: -200px;
  width: 600px; height: 600px;
  background: radial-gradient(circle, rgba(197,160,89,0.06) 0%, transparent 70%);
  pointer-events: none;
  z-index: 0;
}

/* ── View Management ─────────────────────────────────────── */
.view {
  position: fixed;
  inset: 0;
  overflow-y: auto;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--t3) var(--ease);
  z-index: 1;
}
.view.active {
  opacity: 1;
  pointer-events: auto;
}


/* ══════════════════════════════════════════
   LANDING VIEW
══════════════════════════════════════════ */

/* Site Header — overridden with full definition in auth section below */
.wordmark {
  font-family: var(--font-disp);
  font-size: 24px;
  font-weight: 600;
  letter-spacing: 0.04em;   /* tighter — suits mixed-case */
  color: var(--accent);
}
.wordmark--sm {
  font-size: 18px;
  letter-spacing: 0.02em;
}
.wordmark-tagline {
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--txt-3);
}

/* Intake wrapper — centered column */
.intake-wrap {
  max-width: 660px;
  margin: 0 auto;
  padding: 48px 24px 80px;
}

/* Form blocks */
.form-block {
  position: relative;
  border: none;
  margin-bottom: 40px;
}
.block-legend {
  font-family: var(--font-disp);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* Fields */
.field-row { margin-bottom: 16px; }
.field-row--half {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.field-row--pob {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}

.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.field label {
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-3);
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.label-hint {
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--accent);
  font-weight: 400;
  text-transform: uppercase;
  border: 1px solid var(--accent-dim);
  border-radius: 3px;
  padding: 1px 5px;
}

.field input {
  width: 100%;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border-hi);
  padding: 10px 0;
  line-height: 1;
  font-family: var(--font-ui);
  font-size: 17px;
  font-weight: 400;
  color: var(--txt-1);
  outline: none;
  transition: border-color var(--t2) var(--ease);
  border-radius: 0;
  box-sizing: border-box;
  -webkit-appearance: none;
}
.field input::placeholder { color: var(--txt-3); }

/* Override WebKit autofill blue injection */
.field input:-webkit-autofill,
.field input:-webkit-autofill:hover,
.field input:-webkit-autofill:focus,
.field input:-webkit-autofill:active {
  -webkit-box-shadow: 0 0 0 1000px var(--bg) inset;
  -webkit-text-fill-color: var(--txt-1);
  border-bottom: 1px solid var(--border-hi) !important;
  transition: background-color 5000s ease-in-out 0s;
}

.field input:focus {
  border-bottom-color: var(--accent);
}
.field.valid input    { border-bottom-color: rgba(74,124,89,0.7); }
.field.invalid input  { border-bottom-color: rgba(196,69,54,0.7); }

/* Webkit date/time input styling */
.field input[type="date"],
.field input[type="time"] {
  color-scheme: dark;
  border-bottom: 1px solid var(--border-hi) !important;
}
.field input[type="date"]::-webkit-datetime-edit,
.field input[type="time"]::-webkit-datetime-edit {
  line-height: 1;
  padding: 0;
}


/* Gender / any select element inside .field */
.field select {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border-hi) !important;
  padding: 10px 24px 10px 0;
  font-family: var(--font-ui);
  font-size: 17px;
  font-weight: 400;
  color: var(--txt-1);
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  transition: border-color var(--t2) var(--ease);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='rgba(255,255,255,0.32)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 2px center;
  border-radius: 0;
}
.field select:focus         { border-bottom-color: var(--accent); }
.field.valid select         { border-bottom-color: rgba(74,124,89,0.7); }
.field.invalid select       { border-bottom-color: rgba(196,69,54,0.7); }
.field select option        { background: var(--surface); color: var(--txt-1); }

.field-msg {
  font-size: 13px;
  color: #C44536;
  min-height: 16px;
  transition: opacity var(--t1);
}

/* ── Place of Birth Autocomplete ────────────── */
.pob-wrap {
  position: relative;
}

.pob-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  z-index: 200;
  list-style: none;
  margin: 0;
  padding: 4px 0;
  background: #1c1c1c;
  border: 1px solid rgba(197,160,89,0.28);
  border-radius: var(--r-md);
  box-shadow: 0 12px 32px rgba(0,0,0,0.6);
  max-height: 256px;
  overflow-y: auto;
}

.pob-item {
  padding: 10px 16px;
  font-size: 14px;
  color: var(--txt-2);
  cursor: pointer;
  transition: background var(--t1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pob-item:hover,
.pob-item--active {
  background: rgba(197,160,89,0.1);
  color: var(--txt-1);
}

.pob-item mark {
  background: transparent;
  color: var(--accent);
  font-weight: 600;
}

/* System Cards */
/* ── System grid — 3 × 2 tile layout ──────────────────── */
.system-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}

.sys-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 14px 12px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: background var(--t2) var(--ease),
              border-color var(--t2) var(--ease);
  position: relative;
  user-select: none;
  min-height: 110px;
}
.sys-card input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0; height: 0;
}
.sys-card:hover {
  background: var(--glass-bg);
  border-color: var(--border-hi);
}
.sys-card:has(input:checked) {
  background: var(--accent-dim);
  border-color: var(--accent);
}

.sys-card__glyph {
  font-family: var(--font-disp);
  font-size: 24px;
  color: var(--txt-3);
  line-height: 1;
  transition: color var(--t2);
}
.sys-card:has(input:checked) .sys-card__glyph { color: var(--accent); }
.sys-card__glyph--sym { font-size: 30px; }
.sys-card__glyph--svg { display: flex; align-items: center; }
.sys-card__glyph--svg svg { display: block; }

.sys-card__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.sys-card__name {
  font-size: 14px;
  font-weight: 600;
  color: var(--txt-1);
  line-height: 1.2;
}
.sys-card__desc {
  font-size: 12px;
  color: var(--txt-3);
  line-height: 1.3;
}

.sys-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: auto;
}
.sys-card__cost {
  font-size: 12px;
  color: var(--accent);
  opacity: 0.7;
  letter-spacing: 0.04em;
  transition: opacity var(--t2);
}
.sys-card:has(input:checked) .sys-card__cost { opacity: 1; }

.sys-card__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  border: 1px solid var(--border-hi);
  transition: background var(--t2), border-color var(--t2);
  flex-shrink: 0;
}
.sys-card:has(input:checked) .sys-card__dot {
  background: var(--accent);
  border-color: var(--accent);
}

/* Generate Button */
.btn-generate {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 40px;
  padding: 16px 32px;
  background: var(--accent);
  border: none;
  border-radius: var(--r-sm);
  font-family: var(--font-ui);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #0D0D0D;
  cursor: pointer;
  transition: background var(--t2) var(--ease),
              opacity var(--t2) var(--ease),
              transform var(--t1) var(--ease);
}
.btn-generate:disabled {
  opacity: 0.28;
  cursor: not-allowed;
}
.btn-generate:not(:disabled):hover {
  background: var(--accent-h);
  transform: translateY(-1px);
}
.btn-generate:not(:disabled):active {
  transform: translateY(0);
}
.btn-generate__arrow {
  font-size: 18px;
  transition: transform var(--t2) var(--ease);
}
.btn-generate:not(:disabled):hover .btn-generate__arrow {
  transform: translateX(4px);
}


/* ══════════════════════════════════════════
   LOADING VIEW
══════════════════════════════════════════ */
.loading-stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 100dvh;
  gap: 24px;
  padding: 40px;
}

.loading-glyph {
  width: 96px; height: 96px;
}
.loading-glyph svg { width: 100%; height: 100%; }

@keyframes spin { to { transform: rotate(360deg); } }
@keyframes arc-fill {
  0%   { stroke-dashoffset: 326.7; }
  60%  { stroke-dashoffset: 60; }
  100% { stroke-dashoffset: 0; }
}
@keyframes dot-orbit {
  to { transform-origin: 60px 60px; transform: rotate(360deg); }
}

.loading-arc {
  animation: arc-fill 2.4s var(--ease) infinite;
  transform-origin: 60px 60px;
}
.loading-dot {
  animation: dot-orbit 2.4s linear infinite;
  transform-origin: 60px 60px;
}

.loading-headline {
  font-family: var(--font-disp);
  font-size: 24px;
  font-weight: 400;
  color: var(--txt-1);
  text-align: center;
}
.loading-sub {
  font-size: 14px;
  color: var(--txt-3);
  letter-spacing: 0.08em;
  text-align: center;
  min-height: 18px;
}

.loading-bar {
  width: 200px; height: 1px;
  background: var(--border);
  border-radius: 1px;
  overflow: hidden;
}
.loading-bar__fill {
  height: 100%;
  width: 0;
  background: var(--accent);
  transition: width 0.4s var(--ease);
}


/* ══════════════════════════════════════════
   RESULTS VIEW
══════════════════════════════════════════ */
.results-bar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 32px;
  background: rgba(18,18,18,0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
}

.btn-back {
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  padding: 8px 14px;
  font-family: var(--font-ui);
  font-size: 14px;
  color: var(--txt-2);
  cursor: pointer;
  transition: border-color var(--t2), color var(--t2);
  white-space: nowrap;
}
.btn-back:hover {
  border-color: var(--accent);
  color: var(--accent);
}

.results-ident {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.res-name {
  font-family: var(--font-disp);
  font-size: 17px;
  font-weight: 600;
  color: var(--txt-1);
}
.res-meta {
  font-size: 13px;
  color: var(--txt-3);
  letter-spacing: 0.05em;
}

/* Results layout — stacked, centered */
.results-layout {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 40px 24px 80px;
  gap: 40px;
  min-height: calc(100dvh - 65px);
}

/* Chart area */
.chart-area {
  width: 100%;
  max-width: 700px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}
.chart-area svg {
  width: 100%;
  max-width: 640px;
  height: auto;
}

/* Interpretation panel */
.interp-panel {
  width: 100%;
  max-width: 700px;
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 32px 36px;
  overflow: visible;
}
.interp-panel__titlebar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}
.interp-panel__title {
  font-family: var(--font-disp);
  font-size: 20px;
  font-weight: 400;
  color: var(--accent);
  margin-bottom: 0;
}
.interp-panel__body {
  display: flex;
  flex-direction: column;
  gap: 0;
}


/* ── Glassmorphism utility ───────────────────────────────── */
.glass {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur)) saturate(160%);
  -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(160%);
  border: 1px solid var(--border);
}


/* ══════════════════════════════════════════
   DETAIL POPOVER
══════════════════════════════════════════ */
.overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 40;
  animation: fade-in var(--t2) var(--ease) forwards;
}
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }

.detail-popover {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 50;
  border-radius: var(--r-lg) var(--r-lg) 0 0;
  border-bottom: none;
  padding: 28px 28px 40px;
  max-height: 65dvh;
  overflow-y: auto;
  animation: slide-up var(--t3) var(--ease) forwards;

  /* Also support desktop center modal */
}
@media (min-width: 720px) {
  .detail-popover {
    bottom: auto;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 480px;
    max-height: 70dvh;
    border-radius: var(--r-lg);
    border: 1px solid var(--border-hi);
    animation: pop-in var(--t3) var(--ease) forwards;
  }
}
@keyframes slide-up {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}
@keyframes pop-in {
  from { opacity: 0; transform: translate(-50%, calc(-50% + 20px)); }
  to   { opacity: 1; transform: translate(-50%, -50%); }
}

.popover-close {
  position: absolute;
  top: 16px; right: 20px;
  background: none;
  border: none;
  color: var(--txt-3);
  font-size: 22px;
  cursor: pointer;
  line-height: 1;
  padding: 4px;
  transition: color var(--t1);
}
.popover-close:hover { color: var(--txt-1); }

.popover-body { padding-top: 8px; }


/* ── Popover content styles ──────────────────────────────── */
.popover-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}
.popover-hanzi {
  font-family: var(--font-disp);
  font-size: 40px;
  line-height: 1;
  color: var(--accent);
}
.popover-subtitle {
  font-size: 13px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--txt-3);
}
.popover-section { margin-bottom: 14px; }
.popover-section p {
  font-size: 15px;
  color: var(--txt-2);
  line-height: 1.7;
  margin-bottom: 8px;
}
.popover-section p:last-child { margin-bottom: 0; }
.popover-section strong { color: var(--txt-1); font-weight: 500; }
.popover-highlight {
  color: var(--accent) !important;
  font-style: italic;
}
.popover-ten-god {
  padding: 10px 14px;
  background: var(--glass-bg);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  font-size: 15px !important;
  line-height: 1.6 !important;
}


/* ── Interpretation panel content ────────────────────────── */
.interp-section {
  padding: 18px 0;
  border-bottom: 1px solid var(--border);
}
.interp-section:last-child { border-bottom: none; }
.interp-section-title {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 10px;
}
.interp-section p {
  font-size: 15px;
  color: var(--txt-2);
  line-height: 1.7;
  margin-bottom: 6px;
}
.interp-section p:last-child { margin-bottom: 0; }
.accent  { color: var(--accent); font-weight: 500; }
.dimmed  { color: var(--txt-3); }
.interp-hint {
  font-size: 14px !important;
  color: var(--txt-3) !important;
  font-style: italic;
}


/* ══════════════════════════════════════════
   SVG CHART SHARED STYLES (via text class)
══════════════════════════════════════════ */

/* BaZi SVG */
.bazi-label       { font: 10px/1 var(--font-ui); fill: rgba(255,255,255,0.35); letter-spacing: 0.08em; text-transform: uppercase; }
.bazi-label-zh    { font: 11px/1 var(--font-disp); fill: rgba(255,255,255,0.25); }
.bazi-sep         { stroke: rgba(255,255,255,0.06); stroke-width: 1; }
.bazi-hanzi       { font: bold 32px/1 var(--font-disp); }
.bazi-elem-label  { font: 10px/1 var(--font-ui); letter-spacing: 0.05em; }
.bazi-god-zh      { font: bold 13px/1 var(--font-disp); fill: rgba(255,255,255,0.7); }
.bazi-god-en      { font: 10px/1 var(--font-ui); fill: rgba(255,255,255,0.4); }
.bazi-god.day-master-tag { font: 9px/1 var(--font-ui); fill: rgba(197,160,89,0.7); letter-spacing: 0.1em; text-transform: uppercase; }
.bazi-elem-bar-label { font: 9px/1 var(--font-ui); }
.pillar-rect      { transition: opacity 0.2s; }
.bazi-pillar-stem:hover .pillar-rect,
.bazi-pillar-branch:hover .pillar-rect,
.bazi-ten-god:hover rect,
.bazi-elem-bar:hover rect { opacity: 1.4; filter: brightness(1.3); }

/* Chinese Astrology SVG */
.chinese-animal-label  { font: bold 14px/1 var(--font-disp); }
.chinese-animal-label.active { font-size: 16px; }
.chinese-center-hanzi  { font: bold 28px/1 var(--font-disp); }
.chinese-center-name   { font: 12px/1 var(--font-ui); }
.chinese-center-elem   { font: 10px/1 var(--font-ui); letter-spacing: 0.08em; }
.chinese-legend        { font: 10px/1 var(--font-ui); letter-spacing: 0.05em; }
.chinese-animal-segment { transition: opacity 0.2s; }
.chinese-animal-segment:hover path { opacity: 1.3; filter: brightness(1.2); }

/* Numerology SVG */
.num-label      { font: 9px/1 var(--font-ui); fill: rgba(255,255,255,0.35); letter-spacing: 0.1em; text-transform: uppercase; }
.num-value      { font: bold 36px/1 var(--font-disp); fill: #FFFFFF; }
.num-value-sm   { font: bold 24px/1 var(--font-disp); fill: #FFFFFF; }
.num-desc       { font: 11px/1 var(--font-ui); fill: rgba(255,255,255,0.5); }
.num-node       { cursor: pointer; }
.num-node:hover circle { filter: brightness(1.25); }

/* Human Design SVG */
.hd-center-label { font: 9px/1 var(--font-ui); fill: rgba(255,255,255,0.6); letter-spacing: 0.06em; text-transform: uppercase; }
.hd-type-label   { font: 11px/1 var(--font-ui); fill: rgba(255,255,255,0.4); letter-spacing: 0.06em; }
.hd-type-value   { font: bold 14px/1 var(--font-disp); fill: #C5A059; }
.hd-gate-label   { font: 8px/1 var(--font-ui); fill: rgba(255,255,255,0.3); }
.hd-center-node  { cursor: pointer; }
.hd-center-node:hover polygon,
.hd-center-node:hover rect,
.hd-center-node:hover circle { filter: brightness(1.25); }

/* Zi Wei SVG */
.ziwei-palace-bg   { }
.ziwei-palace-name { font: bold 10px/1 var(--font-disp); fill: rgba(255,255,255,0.4); letter-spacing: 0.05em; }
.ziwei-star-main   { font: bold 13px/1 var(--font-disp); }
.ziwei-star-minor  { font: 10px/1 var(--font-disp); fill: rgba(255,255,255,0.55); }
.ziwei-branch      { font: 9px/1 var(--font-ui); fill: rgba(255,255,255,0.3); }
.ziwei-palace-node { cursor: pointer; }
.ziwei-palace-node:hover rect { filter: brightness(1.3); }
.ziwei-center-label { font: italic 13px/1 var(--font-disp); fill: rgba(255,255,255,0.2); }


/* ══════════════════════════════════════════
   AI GENERATION PROGRESS BAR
══════════════════════════════════════════ */

.ai-prog-wrap {
  margin-bottom: 20px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border);
}

.ai-prog-bar {
  height: 2px;
  background: rgba(255,255,255,0.07);
  border-radius: 2px;
  overflow: hidden;
  margin-bottom: 8px;
}

.ai-prog-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--accent) 0%, var(--accent-h) 100%);
  border-radius: 2px;
  transition: width 0.35s cubic-bezier(.4,0,.2,1);
  box-shadow: 0 0 8px rgba(197,160,89,0.4);
}

.ai-prog-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.ai-prog-label {
  font-size: 12px;
  color: var(--txt-3);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.ai-prog-pct {
  font-size: 13px;
  font-weight: 600;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  min-width: 36px;
  text-align: right;
}


/* ══════════════════════════════════════════
   AI READING OUTPUT
══════════════════════════════════════════ */

/* Typing / loading state */
.ai-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 40px 0;
}
.ai-loading__dots {
  display: flex;
  gap: 6px;
}
.ai-loading__dots span {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--accent);
  animation: ai-pulse 1.2s ease-in-out infinite;
}
.ai-loading__dots span:nth-child(2) { animation-delay: 0.2s; }
.ai-loading__dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes ai-pulse {
  0%,80%,100% { opacity: 0.2; transform: scale(0.8); }
  40%         { opacity: 1;   transform: scale(1); }
}
.ai-loading__label {
  font-size: 14px;
  color: var(--txt-3);
  letter-spacing: 0.08em;
}

/* AI output */
.ai-output {
  padding: 4px 0 24px;
}
.ai-section-title {
  font-family: var(--font-disp);
  font-size: 17px;
  font-weight: 600;
  color: var(--txt-1);
  margin: 24px 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
}
.ai-section-title:first-child { margin-top: 4px; }
.ai-sub-title {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 16px 0 6px;
}
.ai-para {
  font-size: 15px;
  color: var(--txt-2);
  line-height: 1.75;
  margin-bottom: 10px;
}
.ai-list {
  list-style: none;
  padding: 0;
  margin: 8px 0 12px;
}
.ai-list li {
  font-size: 15px;
  color: var(--txt-2);
  line-height: 1.7;
  padding: 4px 0 4px 16px;
  position: relative;
}
.ai-list li::before {
  content: '·';
  position: absolute;
  left: 4px;
  color: var(--accent);
}
.ai-output strong { color: var(--txt-1); font-weight: 600; }
.ai-output em     { color: var(--txt-2); font-style: italic; }


/* Error states */
.ai-error {
  font-size: 14px;
  color: #C44536;
  font-style: italic;
  margin-top: 12px;
}
.ai-error-full {
  font-size: 15px;
  color: var(--txt-3);
  text-align: center;
  padding: 32px 0;
}


/* ══════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════ */
@media (max-width: 900px) {
  .results-layout { padding: 24px 16px 60px; }
  .chart-area { gap: 12px; }
  .interp-panel { padding: 24px 20px; }
}

@media (max-width: 600px) {
  .site-header {
    padding: 24px 20px 0;
    flex-direction: column;
    gap: 8px;
    align-items: flex-start;
  }
  .intake-wrap { padding: 28px 20px 60px; }
  .field-row--half { grid-template-columns: 1fr; }
  .field-row--pob  { grid-template-columns: 1fr; }
  .results-bar { padding: 10px 16px; gap: 10px; }
  .btn-back { font-size: 13px; padding: 7px 12px; }
  .results-bar .wordmark--sm { display: none; }
  .results-bar .btn-history  { display: none; }
  .results-ident { align-items: flex-start; }
  .interp-panel { padding: 20px 16px; }
  .interp-panel__title { font-size: 18px; }
  .results-layout { padding: 20px 12px 60px; gap: 28px; }
}

/* ── Phones (≤ 480px) ──────────────────────── */
@media (max-width: 480px) {
  /* Loading */
  .loading-stage { padding: 32px 20px; gap: 18px; }
  .loading-glyph { width: 76px; height: 76px; }
  .loading-headline { font-size: 20px; }

  /* Landing header */
  .wordmark { font-size: 22px; }
  .wordmark-tagline { display: none; }
  .site-nav { gap: 8px; }
  .btn-nav  { padding: 6px 10px; font-size: 12px; }
  .site-nav__email { display: none; }

  /* Form */
  .intake-wrap { padding: 20px 14px 60px; }
  .block-legend { font-size: 12px; letter-spacing: 0.15em; }
  .form-block { margin-bottom: 28px; }
  .field input, .field select { font-size: 17px; }

  /* System cards — 2 columns on tablet */
  .system-list { grid-template-columns: repeat(2, 1fr); gap: 5px; }
  .sys-card { padding: 12px 12px 10px; min-height: 100px; }
  .sys-card__glyph { font-size: 20px; }
  .sys-card__glyph--sym { font-size: 24px; }
  .sys-card__name  { font-size: 13px; }
  .sys-card__desc  { font-size: 11px; }
  .sys-card__cost  { font-size: 11px; }

  /* Generate */
  .btn-generate { margin-top: 24px; padding: 14px 20px; font-size: 14px; }

  /* Results bar */
  .results-bar { padding: 8px 12px; gap: 8px; }
  .btn-back    { font-size: 12px; padding: 6px 10px; }
  .res-name    { font-size: 15px; }
  .res-meta    { font-size: 12px; }
  .results-bar .site-nav { gap: 6px; }

  /* Results */
  .results-layout { padding: 16px 10px 60px; gap: 20px; }
  .interp-panel   { padding: 16px 14px; border-radius: var(--r-md); }

  /* History */
  .history-content { padding: 16px 12px 60px; }
  .history-card__header  { padding: 12px 14px; gap: 10px; }
  .history-card__reading { padding: 16px 14px 20px; }
  .history-card__date-block { display: none; }

  /* Popover */
  .detail-popover { padding: 20px 20px 32px; }
}


/* ══════════════════════════════════════════
   AUTH VIEW
══════════════════════════════════════════ */

/* New auth landing is a scrolling marketing layout — overflow must be auto.
   (Previously hidden when auth was a fixed 2-column split.) */
#view-auth { overflow-y: auto; overflow-x: hidden; }

.auth-page-container {
  display: flex;
  width: 100%;
  height: 100%;
}

/* ── Left dark panel — bg image fills everything ── */
.auth-info-panel {
  flex: 1;
  position: relative;
  background-color: #23201a;
  background-image: url('../images/bg_image.png');
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 10vh;
  padding: 10vh 0 8vh 7vw;
  overflow: hidden;
}

/* Subtle dark scrim over left portion so text is readable */
.auth-info-panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to right,
    rgba(30,26,18,0.72) 0%,
    rgba(30,26,18,0.45) 45%,
    rgba(30,26,18,0.08) 75%,
    transparent 100%
  );
  pointer-events: none;
  z-index: 0;
}

.auth-info-content {
  display: flex;
  flex-direction: column;
  gap: 44px;
  position: relative;
  z-index: 1;
  max-width: 400px;
}

/* Brand */
.auth-brand-block { display: flex; flex-direction: column; gap: 8px; }

.auth-brand-name {
  font-family: var(--font-disp);
  font-size: clamp(2.2rem, 3.5vw, 3.2rem);
  font-weight: 700;
  color: #c9a84c;
  margin: 0;
  line-height: 1.05;
  letter-spacing: 0.01em;
}

.auth-brand-tagline {
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(210,190,140,0.65);
  margin: 0;
}

/* Systems list */
.auth-systems-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.auth-sys-row {
  display: flex;
  align-items: center;
  gap: 20px;
}

.auth-sys-icon {
  font-family: var(--font-disp);
  font-size: 1.35rem;
  color: #c9a84c;
  width: 44px;
  text-align: center;
  flex-shrink: 0;
  opacity: 0.9;
}

.auth-sys-icon--svg {
  display: flex;
  align-items: center;
  justify-content: center;
}

.auth-sys-label {
  font-size: 0.97rem;
  color: rgba(235,225,200,0.88);
  font-weight: 400;
  letter-spacing: 0.01em;
}

/* Footer note */
.auth-save-note {
  font-size: 0.82rem;
  color: rgba(210,190,140,0.55);
  line-height: 1.65;
  position: relative;
  z-index: 1;
  max-width: 360px;
}

/* ── Right cream form panel ────────────────── */
.auth-form-panel {
  width: 416px;
  flex-shrink: 0;
  background-color: #e8d9bb;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 44px;
  position: relative;
  z-index: 10;
  box-shadow: -8px 0 32px rgba(0,0,0,0.45);
}

/* Star decoration — bottom right */
.auth-panel-star {
  position: absolute;
  bottom: 28px;
  right: 28px;
  font-size: 1.6rem;
  color: #c9a84c;
  opacity: 0.7;
  line-height: 1;
}

/* Tabs */
.auth-tabs {
  display: flex;
  align-items: flex-end;
  gap: 0;
  margin-bottom: 36px;
  border-bottom: 1px solid rgba(160,140,100,0.35);
}

.auth-tab {
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 10px 0;
  margin-bottom: -1px;
  margin-right: 20px;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: rgba(245, 235, 215, 0.45);   /* dim cream — inactive */
  cursor: pointer;
  transition: color var(--t2), border-color var(--t2);
}

.auth-tab.active {
  color: #f5ebd7;                      /* bright cream — active */
  border-bottom-color: #c9a84c;
}

.auth-tab:hover:not(.active) { color: #f5ebd7; }

/* Light theme: revert to dark text on cream card */
[data-theme="light"] .auth-tab        { color: #8a7d5e; }
[data-theme="light"] .auth-tab.active { color: #2a2418; }
[data-theme="light"] .auth-tab:hover:not(.active) { color: #2a2418; }

/* Fields */
.auth-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
  margin-bottom: 18px;
}

.auth-field label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: #c5a059;            /* accent gold — readable on dark form card bg */
}
[data-theme="light"] .auth-field label { color: #7a5c20; }

.auth-input-with-icon { position: relative; }

.auth-input-icon {
  position: absolute;
  left: 13px;
  top: 50%;
  transform: translateY(-50%);
  color: #6e5e3a;          /* darker olive — readable on cream input */
  font-size: 1rem;
  pointer-events: none;
  line-height: 1;
}

.auth-input-with-icon input {
  width: 100%;
  padding: 13px 13px 13px 40px;
  border: 1px solid rgba(120, 100, 70, 0.5);
  border-radius: 3px;
  background-color: rgba(255, 252, 240, 0.88);
  font-family: var(--font-ui);
  font-size: 14px;
  color: #2a2418;
  box-sizing: border-box;
  outline: none;
  transition: border-color var(--t2), box-shadow var(--t2), background-color var(--t2);
  -webkit-appearance: none;
}

.auth-input-with-icon input::placeholder {
  color: #8a7a52;          /* darker olive — readable on cream input */
  opacity: 1;              /* override browser default fade */
}
.auth-input-with-icon input::-webkit-input-placeholder { color: #8a7a52; opacity: 1; }
.auth-input-with-icon input::-moz-placeholder { color: #8a7a52; opacity: 1; }

.auth-input-with-icon input:focus {
  border-color: #c9a84c;
  background-color: rgba(255,252,242,0.95);
  box-shadow: 0 0 0 3px rgba(201,168,76,0.18);
}

.auth-error-msg {
  font-size: 13px;
  color: #9a3020;
  min-height: 16px;
  margin-bottom: 10px;
  line-height: 1.5;
}

.btn-auth-submit {
  width: 100%;
  padding: 14px;
  background-color: #b8901a;
  color: #fff8e8;
  border: none;
  border-radius: 3px;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  cursor: pointer;
  margin-top: 8px;
  transition: background-color var(--t2), transform var(--t1);
}

.btn-auth-submit:hover:not(:disabled) {
  background-color: #caa030;
  transform: translateY(-1px);
}

.btn-auth-submit:disabled {
  opacity: 0.78;
  cursor: not-allowed;
  transform: none;
}
.btn-auth-submit__spinner {
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 8px;
  border-radius: 50%;
  background: currentColor;
  animation: authSpinPulse 1.1s ease-in-out infinite;
  vertical-align: middle;
}
@keyframes authSpinPulse {
  0%, 80%, 100% { opacity: 0.3; transform: scale(0.7); }
  40%           { opacity: 1;   transform: scale(1); }
}

/* Forgot password link */
.auth-forgot-link {
  display: block;
  text-align: center;
  margin-top: 16px;
  font-size: 14px;
  color: #9a8050;
  text-decoration: none;
  transition: color var(--t2);
  letter-spacing: 0.02em;
}

.auth-forgot-link:hover { color: #c9a84c; text-decoration: underline; }

button.auth-forgot-link {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  font-family: inherit;
  width: 100%;
}

/* ── Email verification pending state ──── */
#auth-pending {
  text-align: center;
  padding: 12px 0;
}
.auth-pending-icon {
  font-size: 36px;
  margin-bottom: 14px;
  color: var(--accent, #c5a059);
}
.auth-pending-title {
  font-family: var(--font-disp, serif);
  font-size: 20px;
  font-weight: 600;
  color: #2a1f0e;
  margin: 0 0 12px;
}
.auth-pending-desc {
  font-size: 15px;
  color: #5a4020;
  line-height: 1.6;
  margin: 0 0 10px;
}
.auth-pending-desc strong {
  color: #2a1f0e;
}
.auth-pending-sub {
  font-size: 13px;
  color: #8a7050;
  line-height: 1.6;
  margin: 0 0 4px;
}

/* ── Shared nav (landing + results views) ──── */
.site-nav {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Desktop: nav items sit inline. (Mobile media query turns this into a
   collapsible drawer.) */
.site-nav__items {
  display: flex;
  align-items: center;
  gap: 12px;
}

.site-nav__email {
  font-size: 13px;
  color: var(--txt-3);
  letter-spacing: 0.04em;
  max-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.btn-nav {
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  padding: 7px 13px;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--txt-2);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--t2), color var(--t2);
}

.btn-nav:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* Theme toggle button */
.btn-theme {
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  cursor: pointer;
  color: var(--txt-2);
  transition: border-color var(--t2), color var(--t2), transform var(--t1);
  flex-shrink: 0;
}
.btn-theme:hover { border-color: var(--accent); color: var(--accent); }

/* Landing header */
.site-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 32px 48px 0;
  gap: 20px;
}

.results-bar__title {
  font-family: var(--font-disp);
  font-size: 18px;
  font-weight: 400;
  color: var(--txt-1);
  letter-spacing: 0.04em;
}

/* ── Auth responsive ─────────────────────── */
@media (max-width: 900px) {
  .auth-page-container { flex-direction: column; }

  .auth-info-panel {
    flex: none;
    justify-content: flex-start;
    gap: 28px;
    padding: 36px 28px 28px;
    min-height: 240px;
    background-position: right center;
  }

  .auth-systems-list { gap: 14px; }
  .auth-sys-label    { font-size: 0.9rem; }

  .auth-form-panel {
    width: 100%;
    flex: 1;
    padding: 36px 28px 56px;
    box-shadow: none;
  }
}

@media (max-width: 600px) {
  .auth-info-panel  { padding: 24px 20px 20px; min-height: 180px; gap: 20px; }
  .auth-form-panel  { padding: 28px 20px 48px; }
  .auth-brand-name  { font-size: 1.9rem; }
  .site-nav__email  { display: none; }
}

@media (max-width: 480px) {
  .auth-info-panel {
    min-height: 140px;
    padding: 20px 18px 16px;
    gap: 14px;
  }
  .auth-info-content { gap: 16px; }
  .auth-systems-list { display: none; }
  .auth-brand-name   { font-size: 1.7rem; }
  .auth-brand-tagline { font-size: 0.65rem; letter-spacing: 0.16em; }
  .auth-save-note    { display: none; }
  .auth-form-panel   { padding: 24px 18px 40px; }
  .auth-tabs         { margin-bottom: 24px; }
  .auth-field        { margin-bottom: 14px; }
  .btn-auth-submit   { padding: 12px; }
  .auth-panel-star   { bottom: 18px; right: 18px; font-size: 1.3rem; }
}


/* ══════════════════════════════════════════
   HISTORY VIEW
══════════════════════════════════════════ */

.history-content {
  max-width: 860px;
  margin: 0 auto;
  padding: 40px 32px 80px;
}

.history-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.history-loading {
  text-align: center;
  padding: 60px 0;
  font-size: 14px;
  color: var(--txt-3);
  letter-spacing: 0.08em;
}

/* Empty state */
.history-empty {
  text-align: center;
  padding: 80px 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.history-empty__glyph {
  font-family: var(--font-disp);
  font-size: 32px;
  color: var(--accent);
  opacity: 0.3;
}

.history-empty__text {
  font-family: var(--font-disp);
  font-size: 20px;
  font-weight: 400;
  color: var(--txt-2);
}

.history-empty__sub {
  font-size: 15px;
  color: var(--txt-3);
}

/* Reading card */
.history-card {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  overflow: hidden;
  transition: border-color var(--t2) var(--ease);
}

.history-card:hover,
.history-card.expanded {
  border-color: var(--border-hi);
}

.history-card__header {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 20px;
  cursor: pointer;
  user-select: none;
  transition: background var(--t2) var(--ease);
}

.history-card__header:hover {
  background: var(--glass-bg);
}

.history-card__glyph {
  font-family: var(--font-disp);
  font-size: 20px;
  color: var(--accent);
  min-width: 36px;
  text-align: center;
  opacity: 0.7;
  flex-shrink: 0;
}

.history-card__info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.history-card__name {
  font-size: 16px;
  font-weight: 500;
  color: var(--txt-1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.history-card__sys {
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--accent);
}

.history-card__dob {
  font-size: 13px;
  color: var(--txt-3);
}

.history-card__date-block {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  flex-shrink: 0;
}

.history-card__date {
  font-size: 14px;
  color: var(--txt-2);
}

.history-card__time {
  font-size: 13px;
  color: var(--txt-3);
}

.history-card__chevron {
  font-size: 20px;
  color: var(--txt-3);
  flex-shrink: 0;
  transition: transform var(--t2) var(--ease), color var(--t2);
  display: inline-block;
  margin-left: 4px;
}

.history-card.expanded .history-card__chevron {
  transform: rotate(90deg);
  color: var(--accent);
}

/* Expandable body */
.history-card__body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s var(--ease);
}

.history-card.expanded .history-card__body {
  max-height: 20000px;
}

.history-card__chart {
  padding: 28px 24px 20px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: center;
  background: rgba(0,0,0,0.15);
  overflow-x: auto;
}
.history-card__chart-inner {
  width: 100%;
  max-width: 640px;
}

.history-card__reading {
  padding: 24px 20px 28px 72px;
  border-top: 1px solid var(--border);
}

@media (max-width: 600px) {
  .history-content { padding: 24px 16px 60px; }
  .history-card__chart { padding: 20px 16px 16px; }
  .history-card__reading { padding: 20px 16px 24px; }
  .history-card__date-block { display: none; }
}

/* ── Person-grouped reading cards ──────── */
.person-card {
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  overflow: hidden;
  transition: border-color var(--t2) var(--ease);
}
.person-card:hover { border-color: var(--border-hi); }

.person-card__header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
}
.person-card__avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--accent), var(--accent-h));
  color: #1a1208;
  font-size: 17px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-family: var(--font-disp);
}
.person-card__info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.person-card__name {
  font-size: 16px;
  font-weight: 500;
  color: var(--txt-1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.person-card__detail {
  font-size: 13px;
  color: var(--txt-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.person-card__count {
  font-size: 11px;
  color: var(--txt-3);
  background: var(--glass-bg-h);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 2px 10px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* System chips row */
.person-card__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 12px 20px 16px;
  border-top: 1px solid var(--border);
}
.sys-chip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  background: var(--glass-bg);
  border: 1px solid var(--border-hi);
  border-radius: 20px;
  cursor: pointer;
  font-family: var(--font-ui);
  transition: background var(--t1), border-color var(--t1);
}
.sys-chip:hover { background: var(--glass-bg-h); border-color: var(--accent); }
.sys-chip--active {
  background: rgba(197,160,89,0.10);
  border-color: var(--accent);
}
.sys-chip__glyph {
  font-family: var(--font-disp);
  font-size: 13px;
  color: var(--accent);
}
.sys-chip__name {
  font-size: 12px;
  font-weight: 500;
  color: var(--txt-2);
}
.sys-chip--active .sys-chip__name { color: var(--txt-1); }
.sys-chip__date {
  font-size: 11px;
  color: var(--txt-3);
}

/* Expanded reading panels */
.prp { border-top: 1px solid var(--border); }
.prp__head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 20px;
  background: var(--glass-bg);
  border-bottom: 1px solid var(--border);
}
.prp__label {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 500;
  color: var(--txt-1);
}
.prp__glyph {
  font-family: var(--font-disp);
  font-size: 15px;
  color: var(--accent);
}
.prp__date {
  font-size: 12px;
  color: var(--txt-3);
  flex-shrink: 0;
}
/* Reading content inside person panel — reset the 72px left indent */
.prp .history-card__reading { padding: 20px 20px 24px; }

@media (max-width: 600px) {
  .person-card__header { padding: 12px 14px; }
  .person-card__chips  { padding: 10px 14px 12px; }
  .prp__head           { padding: 10px 14px; }
  .prp__date           { display: none; }
  .prp .history-card__reading { padding: 16px 14px 20px; }
}

/* ── Chat sessions panel ───────────────── */
.sys-chip--chat .sys-chip__glyph { color: var(--accent); }

.prp--chat { border-top: 1px solid var(--border); }

.chat-session-item {
  border-bottom: 1px solid var(--border);
}
.chat-session-item:last-child { border-bottom: none; }

.chat-session-row {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 20px;
  background: none;
  border: none;
  color: var(--txt-2);
  font-family: var(--font-ui);
  cursor: pointer;
  text-align: left;
  transition: background var(--t1);
}
.chat-session-row:hover { background: var(--glass-bg-h); }
.chat-session-row--open { color: var(--txt-1); }

.chat-session-row__info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 0 0 auto;
  min-width: 160px;
}
.chat-session-row__date {
  font-size: 12px;
  font-weight: 500;
  color: var(--txt-1);
}
.chat-session-row__meta {
  font-size: 11px;
  color: var(--txt-3);
}
.chat-session-row__preview {
  flex: 1;
  font-size: 12px;
  color: var(--txt-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.chat-session-row__caret {
  font-size: 16px;
  color: var(--txt-3);
  flex-shrink: 0;
  transition: transform var(--t1);
}
.chat-session-row--open .chat-session-row__caret { transform: rotate(90deg); }

/* Thread view */
.chat-session-thread {
  border-top: 1px solid var(--border);
  padding: 16px 20px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  background: var(--bg);
}
.cst-msg { display: flex; flex-direction: column; gap: 4px; }
.cst-msg__label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--txt-3);
}
.cst-msg--assistant .cst-msg__label { color: var(--accent); }
.cst-msg__text {
  font-size: 13px;
  line-height: 1.55;
  color: var(--txt-2);
}
.cst-msg--user .cst-msg__text { color: var(--txt-1); }

@media (max-width: 600px) {
  .chat-session-row        { padding: 10px 14px; gap: 8px; }
  .chat-session-row__info  { min-width: 120px; }
  .chat-session-row__preview { display: none; }
  .chat-session-thread     { padding: 12px 14px 16px; }
}

/* ══════════════════════════════════════════
   MY READINGS — TAGS, SHARE PICKER, DELETE
══════════════════════════════════════════ */

/* Person card actions area (right of header) */
.person-card__actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

/* Tag badge button */
.person-tag {
  display: inline-flex;
  align-items: center;
  padding: 2px 10px;
  border-radius: 12px;
  font-size: 11px;
  font-weight: 500;
  font-family: var(--font-ui);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t1), color var(--t1), border-color var(--t1);
}
.person-tag--set {
  background: var(--accent-dim);
  border: 1px solid rgba(197,160,89,0.30);
  color: var(--accent);
}
.person-tag--set:hover {
  background: rgba(197,160,89,0.22);
  border-color: var(--accent);
}
.person-tag--empty {
  background: transparent;
  border: 1px dashed var(--border-hi);
  color: var(--txt-3);
}
.person-tag--empty:hover {
  border-color: var(--accent);
  color: var(--accent);
}

/* Tag picker dropdown */
.person-tag-picker {
  border-top: 1px solid var(--border);
  background: var(--bg-2);
  padding: 12px 16px 14px;
}
.tag-picker-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}
.tag-option {
  padding: 4px 12px;
  background: var(--glass-bg);
  border: 1px solid var(--border-hi);
  border-radius: 14px;
  font-size: 12px;
  font-family: var(--font-ui);
  color: var(--txt-2);
  cursor: pointer;
  transition: background var(--t1), border-color var(--t1), color var(--t1);
}
.tag-option:hover { background: var(--glass-bg-h); border-color: var(--accent); color: var(--txt-1); }
.tag-option--active { background: var(--accent-dim); border-color: rgba(197,160,89,0.35); color: var(--accent); }
.tag-option--clear { border-color: rgba(200,60,60,0.20); color: rgba(220,80,80,0.65); }
.tag-option--clear:hover { border-color: rgba(200,60,60,0.45); color: #e07070; background: rgba(200,60,60,0.08); }

.tag-custom-row {
  display: flex;
  gap: 8px;
}
.tag-custom-input {
  flex: 1;
  padding: 6px 10px;
  background: var(--glass-bg);
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  font-size: 12px;
  font-family: var(--font-ui);
  color: var(--txt-1);
  outline: none;
}
.tag-custom-input:focus { border-color: var(--accent); }
.tag-custom-input::placeholder { color: var(--txt-3); }
.tag-custom-apply {
  padding: 6px 14px;
  background: var(--accent);
  border: none;
  border-radius: var(--r-sm);
  font-size: 12px;
  font-weight: 600;
  font-family: var(--font-ui);
  color: #1a1208;
  cursor: pointer;
  white-space: nowrap;
}
.tag-custom-apply:hover { background: var(--accent-h); }

/* Card-level share button (↗ icon) */
.btn-share-all {
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  font-size: 13px;
  color: var(--txt-3);
  cursor: pointer;
  transition: color var(--t1), border-color var(--t1), background var(--t1);
  flex-shrink: 0;
}
.btn-share-all:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-dim);
}

/* Share picker panel */
.person-share-panel {
  border-top: 1px solid var(--border);
  background: var(--bg-2);
}
.share-pick-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--border);
}
.share-pick-row:last-child { border-bottom: none; }
.share-pick-glyph {
  font-family: var(--font-disp);
  font-size: 15px;
  color: var(--accent);
  width: 22px;
  text-align: center;
  flex-shrink: 0;
}
.share-pick-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.share-pick-name {
  font-size: 13px;
  font-weight: 500;
  color: var(--txt-1);
}
.share-pick-date {
  font-size: 11px;
  color: var(--txt-3);
}
.share-pick-btn { flex-shrink: 0; }

/* Delete button in prp__head */
.btn-reading-delete {
  flex-shrink: 0;
  padding: 2px 9px;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 500;
  color: rgba(220,80,80,0.55);
  background: transparent;
  border: 1px solid rgba(220,80,80,0.18);
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: color var(--t1), border-color var(--t1), background var(--t1);
  white-space: nowrap;
}
.btn-reading-delete:hover {
  color: #e07070;
  border-color: rgba(220,80,80,0.45);
  background: rgba(220,80,80,0.08);
}

/* Delete confirm inline */
.delete-confirm {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.delete-confirm__label {
  font-size: 11px;
  color: var(--txt-2);
  white-space: nowrap;
}
.btn-delete-cancel {
  padding: 2px 8px;
  font-family: var(--font-ui);
  font-size: 11px;
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  color: var(--txt-3);
  cursor: pointer;
}
.btn-delete-cancel:hover { color: var(--txt-1); border-color: var(--txt-3); }
.btn-delete-confirm {
  padding: 2px 8px;
  font-family: var(--font-ui);
  font-size: 11px;
  background: rgba(220,80,80,0.12);
  border: 1px solid rgba(220,80,80,0.30);
  border-radius: var(--r-sm);
  color: #e07070;
  cursor: pointer;
}
.btn-delete-confirm:hover { background: rgba(220,80,80,0.22); border-color: rgba(220,80,80,0.50); }
.btn-delete-confirm:disabled { opacity: .45; cursor: not-allowed; }

/* prp__head mobile: allow wrapping for delete confirm */
@media (max-width: 600px) {
  .prp__head { flex-wrap: wrap; }
  .delete-confirm { width: 100%; border-top: 1px solid var(--border); padding-top: 8px; margin-top: 4px; }
}

/* Light mode: tag + delete adjustments */
[data-theme="light"] .person-tag--empty { border-color: rgba(28,23,18,0.20); }
[data-theme="light"] .tag-custom-input  { background: rgba(28,23,18,0.04); border-color: rgba(28,23,18,0.15); }
[data-theme="light"] .tag-option        { background: rgba(28,23,18,0.04); border-color: rgba(28,23,18,0.12); }
[data-theme="light"] .btn-share-all     { border-color: rgba(28,23,18,0.12); }
[data-theme="light"] .person-share-panel { background: var(--bg-2); }
[data-theme="light"] .person-tag-picker  { background: var(--bg-2); }

/* ═══════════════════════════════════════════════════════════
   TOKEN BALANCE BADGE
   BATBiz payments are live: VA + QRIS via /api/tokens/checkout
═══════════════════════════════════════════════════════════ */
.btn-topup {
  background: rgba(197, 160, 89, 0.12);
  border-color: rgba(197, 160, 89, 0.4);
  color: var(--accent);
}
.btn-topup:hover { background: rgba(197, 160, 89, 0.2); border-color: var(--accent); }
#no-token-notice {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  background: rgba(197, 160, 89, 0.08);
  border: 1px solid rgba(197, 160, 89, 0.25);
  border-radius: var(--r-md);
  margin-top: 16px;
  font-size: 13px;
  color: var(--txt-2);
}
#no-token-notice .no-token-notice__btn {
  background: var(--accent);
  color: #1a1410;
  border: none;
  border-radius: 999px;
  padding: 8px 16px;
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}
#no-token-notice .no-token-notice__btn:hover { opacity: 0.92; }
.token-bal {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 20px;
  background: rgba(197,160,89,0.1);
  border: 1px solid rgba(197,160,89,0.25);
}
.token-bal__icon {
  font-size: 13px;
  color: var(--accent);
}
.token-bal__count {
  font-size: 15px;
  font-weight: 600;
  color: var(--accent);
  min-width: 16px;
  text-align: center;
}
.token-bal--clickable {
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.1s;
  user-select: none;
}
.token-bal--clickable:hover {
  background: rgba(197,160,89,0.18);
  border-color: rgba(197,160,89,0.5);
}
.token-bal--clickable:active { transform: scale(0.97); }
.token-bal--clickable:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.settings-row--clickable {
  cursor: pointer;
  transition: background 0.15s;
}
.settings-row--clickable:hover { background: rgba(197,160,89,0.06); }
.settings-row--clickable:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}
.btn-topup {
  background: rgba(197,160,89,0.15);
  border: 1px solid rgba(197,160,89,0.4);
  color: var(--accent);
  font-size: 14px;
  font-weight: 600;
  padding: 4px 12px;
  border-radius: 20px;
  cursor: pointer;
  transition: background var(--t1), border-color var(--t1);
  letter-spacing: 0.04em;
}
.btn-topup:hover {
  background: rgba(197,160,89,0.28);
  border-color: var(--accent);
}

/* ── No-token notice below generate button ─────────────── */
.no-token-notice {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding: 12px 20px;
  background: rgba(197,160,89,0.07);
  border: 1px solid rgba(197,160,89,0.2);
  border-radius: 10px;
  margin-top: 16px;
  font-size: 15px;
  color: var(--txt-2);
}
.no-token-notice__btn {
  background: none;
  border: none;
  color: var(--accent);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.no-token-notice__btn:hover { opacity: 0.8; }

/* Generate button — no-tokens state */
.btn-generate--no-tokens {
  background: rgba(197,160,89,0.18);
  color: var(--accent);
  border: 1px solid rgba(197,160,89,0.4);
  cursor: pointer;
}
.btn-generate--no-tokens:hover {
  background: rgba(197,160,89,0.26) !important;
  transform: none !important;
}

/* ── No-token message in interp panel ──────────────────── */
.ai-no-tokens {
  text-align: center;
  padding: 48px 24px;
}
.ai-no-tokens__icon {
  font-size: 36px;
  color: var(--accent);
  margin-bottom: 16px;
  opacity: 0.6;
}
.ai-no-tokens__msg {
  font-family: var(--font-disp);
  font-size: 20px;
  color: var(--txt-1);
  margin-bottom: 8px;
}
.ai-no-tokens__sub {
  font-size: 14px;
  color: var(--txt-2);
  margin-bottom: 24px;
}
.ai-no-tokens__btn {
  display: inline-block;
  padding: 10px 28px;
  background: var(--accent);
  color: #1a1208;
  border: none;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  letter-spacing: 0.06em;
  transition: opacity var(--t1);
}
.ai-no-tokens__btn:hover { opacity: 0.85; }

/* ═══════════════════════════════════════════════════════════
   TOKEN PURCHASE MODAL
═══════════════════════════════════════════════════════════ */
.token-modal-overlay {
  position: fixed;
  inset: 0;
  background: var(--overlay-bg);
  z-index: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  backdrop-filter: blur(4px);
}
.token-modal-overlay[hidden] { display: none; }

.token-modal {
  background: #1a1208;
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 36px 32px 32px;
  width: 100%;
  max-width: 680px;
  max-height: 90vh;
  overflow-y: auto;
  position: relative;
  box-shadow: 0 32px 80px rgba(0,0,0,0.6);
}
.token-modal__close {
  position: absolute;
  top: 16px;
  right: 20px;
  background: none;
  border: none;
  color: var(--txt-3);
  font-size: 24px;
  cursor: pointer;
  line-height: 1;
  padding: 4px 8px;
  border-radius: 6px;
  transition: color var(--t1), background var(--t1);
}
.token-modal__close:hover { color: var(--txt-1); background: rgba(255,255,255,0.06); }

.token-modal__header { margin-bottom: 24px; }
.token-modal__title {
  font-family: var(--font-disp);
  font-size: 24px;
  font-weight: 600;
  color: var(--txt-1);
  margin-bottom: 6px;
}
.token-modal__sub {
  font-size: 15px;
  color: var(--txt-3);
}
.token-modal__note {
  font-size: 14px;
  color: var(--txt-3);
  text-align: center;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

.token-modal__dismiss {
  display: block;
  width: 100%;
  margin-top: 12px;
  padding: 13px;
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt-2);
  cursor: pointer;
  text-align: center;
  transition: border-color var(--t1), color var(--t1), background var(--t1);
}
.token-modal__dismiss:hover {
  border-color: var(--txt-2);
  color: var(--txt-1);
  background: var(--glass-bg);
}

.token-packages {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.token-pkg-loading {
  text-align: center;
  padding: 32px;
  color: var(--txt-3);
  font-size: 14px;
  grid-column: 1 / -1;
}

.token-pkg {
  position: relative;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 20px 16px;
  text-align: center;
  transition: border-color var(--t1), background var(--t1);
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.token-pkg:hover {
  border-color: rgba(197,160,89,0.4);
  background: rgba(197,160,89,0.04);
}
.token-pkg--popular {
  border-color: rgba(197,160,89,0.5);
  background: rgba(197,160,89,0.06);
}
.token-pkg--monthly {
  border-color: rgba(100,160,200,0.45);
  background: rgba(100,160,200,0.05);
}
.token-pkg__badge {
  position: absolute;
  top: -11px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--accent);
  color: #1a1208;
  font-size: 10px;
  font-weight: 700;
  padding: 2px 10px;
  border-radius: 20px;
  letter-spacing: 0.06em;
  white-space: nowrap;
}
.token-pkg__badge--monthly {
  background: #4a90c4;
  color: #fff;
}
.token-pkg__per {
  font-size: 13px;
  font-weight: 400;
  color: var(--txt-3);
  margin-left: 2px;
}
.token-pkg__name {
  font-size: 14px;
  font-weight: 600;
  color: var(--txt-3);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.token-pkg__tokens {
  font-size: 28px;
  font-weight: 700;
  color: var(--accent);
  line-height: 1;
}
.token-pkg__tokens span {
  font-size: 15px;
  font-weight: 400;
  color: var(--txt-3);
}
.token-pkg__readings {
  font-size: 14px;
  color: var(--txt-3);
}
.token-pkg__price {
  font-size: 17px;
  font-weight: 600;
  color: var(--txt-1);
  margin: 6px 0 2px;
}
.token-pkg__btn {
  margin-top: 8px;
  padding: 8px 16px;
  background: var(--accent);
  color: #1a1208;
  border: none;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 700;
  cursor: pointer;
  transition: opacity var(--t1);
  letter-spacing: 0.05em;
}
.token-pkg__btn:hover { opacity: 0.85; }
.token-pkg__btn:disabled { opacity: 0.5; cursor: wait; }

/* ═══════════════════════════════════════════════════════════
   VA PAYMENT PANEL
═══════════════════════════════════════════════════════════ */
.va-panel {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.va-panel__header {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.va-panel__bank {
  font-size: 18px;
  font-weight: 600;
  color: var(--txt-1);
}
.va-panel__pkg {
  font-size: 13px;
  color: var(--txt-3);
}
.va-panel__amount {
  font-size: 28px;
  font-weight: 700;
  color: var(--accent);
  letter-spacing: -0.5px;
}
.va-panel__va-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: var(--bg-2);
  border-radius: 10px;
  padding: 14px 16px;
}
.va-panel__label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--txt-3);
}
.va-panel__number-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
}
.va-panel__number {
  font-size: 22px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: 1px;
  color: var(--txt-1);
  flex: 1;
}
.va-panel__copy {
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: opacity 0.15s;
}
.va-panel__copy:hover { opacity: 0.85; }
.va-panel__expiry {
  font-size: 12px;
  color: var(--txt-3);
}
.va-panel__steps {
  margin: 0;
  padding-left: 20px;
  font-size: 13px;
  color: var(--txt-2);
  line-height: 1.7;
}
.va-panel__steps li + li { margin-top: 4px; }
.va-panel__status {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  color: var(--txt-2);
  padding: 10px 14px;
  border-radius: 8px;
  background: var(--bg-2);
}
.va-status-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--accent);
  animation: vaPulse 1.6s ease-in-out infinite;
  flex-shrink: 0;
}
@keyframes vaPulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(0.75); }
}
.va-panel__back {
  background: none;
  border: 1px solid var(--border-2);
  border-radius: 8px;
  color: var(--txt-3);
  font-size: 13px;
  padding: 8px 14px;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
  align-self: flex-start;
}
.va-panel__back:hover { color: var(--txt-1); border-color: var(--txt-3); }

/* ═══════════════════════════════════════════════════════════
   PAYMENT METHOD SELECTOR
═══════════════════════════════════════════════════════════ */
.method-selector {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.method-selector__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.method-selector__back {
  background: none;
  border: none;
  color: var(--txt-3);
  font-size: 13px;
  cursor: pointer;
  padding: 4px 0;
  transition: color 0.15s;
  flex-shrink: 0;
}
.method-selector__back:hover { color: var(--txt-1); }
.method-selector__pkg {
  font-size: 13px;
  color: var(--txt-3);
  text-align: right;
}
.method-selector__title {
  font-size: 15px;
  font-weight: 600;
  color: var(--txt-1);
}
.method-selector__options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.method-opt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--bg-2, rgba(255,255,255,0.04));
  border: 1px solid var(--border-2);
  border-radius: 10px;
  padding: 14px 16px;
  cursor: pointer;
  text-align: left;
  transition: border-color 0.15s, background 0.15s;
  width: 100%;
}
.method-opt:hover {
  border-color: var(--accent, #c9a96e);
  background: var(--bg-3, rgba(255,255,255,0.07));
}
.method-opt__info { flex: 1; }
.method-opt__name {
  font-size: 14px;
  font-weight: 600;
  color: var(--txt-1);
}
.method-opt__desc {
  font-size: 12px;
  color: var(--txt-3);
  margin-top: 2px;
}
.method-opt__arrow {
  font-size: 18px;
  color: var(--txt-3);
  margin-left: 12px;
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   QRIS QR CODE PANEL
═══════════════════════════════════════════════════════════ */
.qris-panel__qr {
  display: flex;
  justify-content: center;
  margin: 8px 0;
}
.qris-qr-img {
  width: 200px;
  height: 200px;
  padding: 12px;
  background: #ffffff;
  border-radius: 8px;
  box-sizing: content-box;
  display: block;
}
.qris-qr-fallback {
  background: var(--bg-2);
  border: 1px solid var(--border-2);
  border-radius: 8px;
  padding: 12px;
  font-size: 12px;
  color: var(--txt-3);
  word-break: break-all;
  max-width: 100%;
}
.qris-string {
  display: block;
  font-family: monospace;
  font-size: 10px;
  margin-top: 6px;
  color: var(--txt-2);
}

/* ═══════════════════════════════════════════════════════════
   PAYWALL — blur last 30% of reading until user pays
═══════════════════════════════════════════════════════════ */
.paywall-wrap {
  position: relative;
  user-select: none;
  -webkit-user-select: none;
}
.paywall-overlay {
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  bottom: 0;
  pointer-events: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  background: linear-gradient(
    to bottom,
    rgba(16, 12, 8, 0) 0%,
    rgba(16, 12, 8, 0.55) 30%,
    rgba(16, 12, 8, 0.85) 100%
  );
  z-index: 5;
}
[data-theme="light"] .paywall-overlay {
  background: linear-gradient(
    to bottom,
    rgba(252, 248, 240, 0) 0%,
    rgba(252, 248, 240, 0.6) 30%,
    rgba(252, 248, 240, 0.92) 100%
  );
}
.paywall-msg {
  position: absolute;
  bottom: 78px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 6;
  color: var(--txt-1);
  font-size: 13px;
  text-align: center;
  white-space: nowrap;
  padding: 6px 14px;
  background: rgba(0, 0, 0, 0.35);
  border-radius: 999px;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
[data-theme="light"] .paywall-msg {
  background: rgba(255, 255, 255, 0.6);
  color: var(--txt-2);
}
.paywall-msg__icon {
  color: var(--accent);
  font-weight: 700;
  margin-right: 4px;
}
.paywall-cta {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 7;
  padding: 14px 32px;
  background: var(--accent);
  color: #1a1410;
  border: none;
  border-radius: 999px;
  font-weight: 700;
  font-size: 15px;
  cursor: pointer;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.45);
  transition: transform 0.15s, opacity 0.15s, box-shadow 0.15s;
  white-space: nowrap;
}
.paywall-cta:hover {
  transform: translateX(-50%) translateY(-1px);
  opacity: 0.95;
  box-shadow: 0 12px 34px rgba(0, 0, 0, 0.55);
}
.paywall-cta:active {
  transform: translateX(-50%) scale(0.98);
}

/* ═══════════════════════════════════════════════════════════
   PAYMENT SUCCESS BANNER
═══════════════════════════════════════════════════════════ */
.payment-success-banner {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(26,18,8,0.96);
  border: 1px solid var(--accent);
  border-radius: 12px;
  padding: 16px 20px 14px 24px;
  display: flex;
  align-items: center;
  gap: 16px;
  z-index: 1000;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
  max-width: 480px;
  width: calc(100% - 32px);
  color: var(--txt-1);
  font-size: 14px;
  animation: slideUp 0.3s var(--ease);
}
.payment-success-banner__close {
  background: none;
  border: none;
  color: var(--txt-3);
  font-size: 20px;
  cursor: pointer;
  padding: 0 4px;
  flex-shrink: 0;
  line-height: 1;
}
@keyframes slideUp {
  from { opacity: 0; transform: translateX(-50%) translateY(20px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* ═══════════════════════════════════════════════════════════
   PASSWORD RESET VIEW
═══════════════════════════════════════════════════════════ */
.auth-page-container--centered {
  justify-content: center;
}

/* ═══════════════════════════════════════════════════════════
   SETTINGS VIEW
═══════════════════════════════════════════════════════════ */
.settings-content {
  max-width: 640px;
  margin: 0 auto;
  padding: 40px 24px 80px;
  display: flex;
  flex-direction: column;
  gap: 32px;
}

.settings-section__title {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--txt-3);
  margin-bottom: 12px;
}
.settings-section__title--danger { color: #c0392b; }

.settings-card {
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
}
.settings-card--danger {
  border-color: rgba(192,57,43,0.3);
  background: rgba(192,57,43,0.04);
}
.settings-card--links { padding: 4px 0; }

.settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  gap: 16px;
}
.settings-row:last-child { border-bottom: none; }

.settings-row__label {
  font-size: 15px;
  color: var(--txt-3);
  flex-shrink: 0;
}
.settings-row__value {
  font-size: 15px;
  color: var(--txt-1);
  text-align: right;
  word-break: break-all;
}
.settings-row__value--accent {
  color: var(--accent);
  font-weight: 600;
}

.settings-field {
  padding: 16px 20px 0;
}
.settings-field:last-of-type { padding-bottom: 0; }
.settings-field label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt-3);
  margin-bottom: 6px;
}
.settings-field input {
  width: 100%;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 16px;
  color: var(--txt-1);
  font-size: 14px;
  font-family: var(--font-body);
  outline: none;
  transition: border-color var(--t1);
  box-sizing: border-box;
}
.settings-field input:focus { border-color: var(--accent); }

.settings-msg {
  margin: 12px 20px 0;
  font-size: 15px;
  color: var(--error, #e74c3c);
  min-height: 18px;
}

.btn-settings-action {
  display: block;
  margin: 16px 20px 20px;
  padding: 10px 24px;
  background: rgba(197,160,89,0.15);
  border: 1px solid rgba(197,160,89,0.4);
  border-radius: 8px;
  color: var(--accent);
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  letter-spacing: 0.05em;
  transition: background var(--t1), border-color var(--t1);
}
.btn-settings-action:hover {
  background: rgba(197,160,89,0.25);
  border-color: var(--accent);
}
.btn-settings-action:disabled { opacity: 0.5; cursor: wait; }

.settings-link {
  display: block;
  padding: 15px 20px;
  font-size: 13px;
  color: var(--txt-2);
  text-decoration: none;
  border-bottom: 1px solid var(--border);
  transition: color var(--t1), background var(--t1);
}
.settings-link:last-child { border-bottom: none; }
.settings-link:hover { color: var(--accent); background: rgba(197,160,89,0.05); }

.settings-danger-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px;
  gap: 16px;
  flex-wrap: wrap;
}
.settings-danger__label {
  font-size: 14px;
  font-weight: 600;
  color: var(--txt-1);
  margin-bottom: 4px;
}
.settings-danger__sub {
  font-size: 12px;
  color: var(--txt-3);
}
.btn-delete-account {
  padding: 8px 20px;
  background: none;
  border: 1px solid rgba(192,57,43,0.6);
  border-radius: 8px;
  color: #e74c3c;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--t1), border-color var(--t1);
  flex-shrink: 0;
}
.btn-delete-account:hover {
  background: rgba(192,57,43,0.12);
  border-color: #e74c3c;
}
.btn-delete-account:disabled { opacity: 0.5; cursor: wait; }

/* ── Settings secondary action button ──────────────────── */
.btn-settings-action--secondary {
  background: transparent;
  border: 1px solid var(--border-hi);
  color: var(--txt-2);
}
.btn-settings-action--secondary:hover {
  border-color: var(--txt-2);
  background: transparent;
  color: var(--txt-1);
}

/* ── Site footer ────────────────────────────────────────── */
.site-footer {
  text-align: center;
  padding: 20px 24px 32px;
  font-size: 12px;
  color: var(--txt-3);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
}
.site-footer a {
  color: var(--txt-3);
  text-decoration: none;
  transition: color var(--t1);
}
.site-footer a:hover { color: var(--accent); }
.site-footer__sep { opacity: 0.4; }

@media (max-width: 600px) {
  .settings-content { padding: 24px 16px 60px; }
  .settings-danger-row { flex-direction: column; align-items: flex-start; }
}

/* ── Mobile token modal ────────────────────────────────── */
@media (max-width: 600px) {
  .token-modal { padding: 28px 20px 24px; border-radius: 16px 16px 0 0; align-self: flex-end; }
  .token-modal-overlay { align-items: flex-end; padding: 0; }
  .token-packages { grid-template-columns: repeat(2, 1fr); }
  .token-bal { display: none; }
  .btn-topup { font-size: 13px; padding: 3px 10px; }
}

/* ── Share: results panel button (reuses .btn-card-share) ── */
.btn-share-reading--shared {
  color: var(--accent) !important;
  border-color: rgba(197,160,89,0.35) !important;
  background: var(--accent-dim) !important;
}

/* ── Share: history card button ────────────────────────── */
.btn-card-share {
  flex-shrink: 0;
  padding: 3px 10px;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 500;
  color: var(--txt-3);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: color var(--t1), border-color var(--t1), background var(--t1);
  white-space: nowrap;
}
.btn-card-share:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-dim);
}
.btn-card-share--shared {
  color: var(--accent);
  border-color: rgba(197,160,89,0.35);
  background: var(--accent-dim);
}

/* ── Share: clipboard toast ────────────────────────────── */
.share-toast {
  position: fixed;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%) translateY(12px);
  background: var(--bg-3);
  color: var(--txt-1);
  border: 1px solid var(--border-hi);
  border-radius: var(--r-md);
  padding: 10px 20px;
  font-size: 13px;
  font-weight: 500;
  z-index: 9999;
  opacity: 0;
  transition: opacity var(--t2), transform var(--t2);
  pointer-events: none;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
}
.share-toast--visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.share-toast--error { border-color: rgba(220,60,60,0.5); color: #ff7070; }

/* ── Shared reading view ───────────────────────────────── */
#view-shared {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  background: var(--bg);
}
.shared-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 32px;
  border-bottom: 1px solid var(--border);
  background: var(--bg-2);
  position: sticky;
  top: 0;
  z-index: 10;
}
.btn-shared-signup {
  display: inline-flex;
  align-items: center;
  padding: 8px 18px;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 600;
  color: var(--bg);
  background: var(--accent);
  border-radius: var(--r-sm);
  text-decoration: none;
  transition: background var(--t1);
}
.btn-shared-signup:hover { background: var(--accent-h); }

.shared-body {
  flex: 1;
  max-width: 780px;
  margin: 0 auto;
  padding: 48px 24px 80px;
  width: 100%;
}
.shared-hero {
  text-align: center;
  margin-bottom: 36px;
}
.shared-hero__eyebrow {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 10px;
}
.shared-hero__name {
  font-family: var(--font-disp);
  font-size: 32px;
  font-weight: 600;
  color: var(--txt-1);
  margin-bottom: 8px;
}
.shared-hero__sys {
  font-size: 14px;
  color: var(--txt-2);
}

.shared-reading-wrap {
  padding: 32px 36px;
  border-radius: var(--r-lg);
  border: 1px solid var(--border);
  margin-bottom: 48px;
}

.shared-cta-box {
  text-align: center;
  padding: 40px 32px;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-lg);
  background: var(--glass-bg);
}
.shared-cta-box__eyebrow {
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 12px;
}
.shared-cta-box__title {
  font-family: var(--font-disp);
  font-size: 22px;
  font-weight: 600;
  color: var(--txt-1);
  margin-bottom: 10px;
}
.shared-cta-box__sub {
  font-size: 14px;
  color: var(--txt-2);
  line-height: 1.6;
  max-width: 440px;
  margin: 0 auto 24px;
}
.btn-shared-cta {
  display: inline-flex;
  align-items: center;
  padding: 12px 28px;
  font-family: var(--font-ui);
  font-size: 15px;
  font-weight: 600;
  color: var(--bg);
  background: var(--accent);
  border-radius: var(--r-md);
  text-decoration: none;
  transition: background var(--t1), transform var(--t1);
}
.btn-shared-cta:hover {
  background: var(--accent-h);
  transform: translateY(-1px);
}

@media (max-width: 768px) {
  .shared-bar { padding: 14px 16px; }
  .shared-body { padding: 32px 16px 60px; }
  .shared-hero__name { font-size: 24px; }
  .shared-reading-wrap { padding: 20px 18px; }
}

/* ── Saved profile chips ────────────────────────────────── */
.profile-chips-wrap {
  position: relative;
  margin-bottom: 24px;
}
.profile-chips-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}
.profile-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.btn-pick-person {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px dashed var(--border-hi);
  background: transparent;
  color: var(--txt-3);
  font-size: 1.1rem;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color var(--t1), color var(--t1), background var(--t1);
}
.btn-pick-person:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-dim);
}

/* ── Person picker dropdown ─────────────────────────────────── */
.person-picker-dropdown {
  position: absolute;
  top: 28px;
  left: 0;
  z-index: 200;
  background: #1c1a16;
  border: 1px solid var(--border-hi);
  border-radius: 10px;
  min-width: 280px;
  max-width: 420px;
  max-height: 280px;
  overflow-y: auto;
  box-shadow: 0 12px 40px rgba(0,0,0,0.55);
  padding: 6px;
}
.person-picker__loading,
.person-picker__empty {
  padding: 1.2rem 1rem;
  text-align: center;
  color: #8a7f6e;
  font-size: 0.85rem;
}
.person-picker__item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  width: 100%;
  padding: 0.6rem 0.9rem;
  border-radius: 7px;
  border: none;
  background: transparent;
  cursor: pointer;
  text-align: left;
  transition: background 0.15s;
  gap: 2px;
}
.person-picker__item + .person-picker__item {
  border-top: 1px solid rgba(255,255,255,0.05);
}
.person-picker__item:hover { background: rgba(197,160,89,0.12); }
.person-picker__name {
  font-size: 0.9rem;
  font-weight: 500;
  color: #e8dfc8;
}
.person-picker__meta {
  font-size: 0.75rem;
  color: #7a7060;
}
.profile-chip {
  padding: 6px 16px;
  background: var(--glass-bg);
  border: 1px solid var(--border-hi);
  border-radius: 999px;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 500;
  color: var(--txt-2);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--t1), color var(--t1), background var(--t1);
}
.profile-chip:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-dim);
}
.profile-chip--active {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--accent-dim);
}

/* ══════════════════════════════════════════
   COMPREHENSIVE MOBILE RESPONSIVE FIXES
══════════════════════════════════════════ */

/* ── Results bar (≤ 600px) ───────────────────────────────── */
@media (max-width: 600px) {
  .results-ident { gap: 1px; }
  .res-name { font-size: 14px; }
  .res-meta { font-size: 11px; }
}

/* ── Results bar (≤ 480px) ───────────────────────────────
   Name/meta is visible in the chart below; remove ident
   so btn-back and Settings can breathe.                   */
@media (max-width: 480px) {
  .results-ident { display: none; }
}

/* ── History card share button — mobile ─────────────────── */
@media (max-width: 600px) {
  .btn-card-share { padding: 3px 9px; font-size: 11px; }
}
@media (max-width: 480px) {
  .btn-card-share { padding: 2px 7px; font-size: 10px; }
}

/* ── System cards — very small screens (≤ 360px) ────────── */
@media (max-width: 360px) {
  .system-list { grid-template-columns: 1fr; gap: 6px; }
  .sys-card { min-height: auto; padding: 12px 14px 10px; flex-direction: row; gap: 14px; align-items: center; }
  .sys-card__footer { margin-top: 0; }
}

/* ── Touch targets — 44px minimum ───────────────────────── */
@media (max-width: 768px) {
  .field input,
  .field select { min-height: 44px; }

  .auth-field input { min-height: 44px; }

  .btn-nav,
  .btn-back { min-height: 36px; }

  /* Larger tap area for system card radio */
  .sys-card { min-height: 110px; }
}

/* ── No-token notice — narrow screens ───────────────────── */
@media (max-width: 480px) {
  .no-token-notice {
    flex-direction: column;
    gap: 10px;
    text-align: center;
    padding: 14px 16px;
  }
}

/* ── Shared view — extra small ───────────────────────────── */
@media (max-width: 480px) {
  .shared-bar { padding: 12px 14px; }
  .shared-hero__name { font-size: 20px; }
  .shared-reading-wrap { padding: 16px 14px; }
  .shared-cta-box { padding: 24px 16px; }
  .shared-cta-box__title { font-size: 18px; }
  .btn-shared-signup { padding: 6px 12px; font-size: 12px; }
  .btn-shared-cta { padding: 11px 22px; font-size: 14px; }
}

/* ── Token packages — extra small ───────────────────────── */
@media (max-width: 360px) {
  .token-packages { grid-template-columns: 1fr; }
  .token-modal { padding: 24px 16px 20px; }
}

/* ── Auth form — extra small ─────────────────────────────── */
@media (max-width: 360px) {
  .auth-info-panel { min-height: 100px; padding: 16px 14px 12px; }
  .auth-brand-name { font-size: 1.5rem; }
  .auth-form-panel { padding: 20px 14px 36px; }
}

/* ── Settings — extra small ──────────────────────────────── */
@media (max-width: 360px) {
  .settings-content { padding: 16px 12px 60px; }
  .settings-card { padding: 16px 14px; }
}

/* ── Landing header nav — very small ────────────────────── */
@media (max-width: 360px) {
  .site-nav { gap: 6px; }
  .btn-nav  { padding: 5px 8px; font-size: 11px; }
}

/* ── Popover — extra small ───────────────────────────────── */
@media (max-width: 360px) {
  .detail-popover { padding: 18px 16px 28px; }
}


/* ══════════════════════════════════════════
   MAIN TAB SWITCHER
══════════════════════════════════════════ */
.main-tabs {
  display: flex;
  gap: 12px;
  margin-bottom: 36px;
  /* No bottom border — pill buttons stand on their own */
}
.main-tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 11px 22px;
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txt-3);
  cursor: pointer;
  transition: background var(--t2), color var(--t2), border-color var(--t2), transform var(--t2);
}
.main-tab__icon {
  font-size: 15px;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  /* Emoji and Unicode glyphs render at slightly different baselines — nudge */
  transform: translateY(-1px);
}
.main-tab__label {
  display: inline-block;
}
/* Hover (inactive tabs only): brighten + accent-tint the border */
.main-tab:not(.main-tab--active):hover {
  color: var(--txt-2);
  border-color: rgba(197, 160, 89, 0.35);
}
.main-tab:not(.main-tab--active):active {
  transform: translateY(1px);
}
/* Active state: filled accent so the chosen mode is unmistakable */
.main-tab--active {
  background: var(--accent-dim);
  border-color: rgba(197, 160, 89, 0.55);
  color: var(--accent);
}
.main-tab--active .main-tab__icon { color: var(--accent); }

/* ── Tab Panels ─────────────────────────── */
.tab-panel             { display: none; }
.tab-panel--active     { display: block; }

/* ── Relationship tag field ─────────────── */
.field-row--tag {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 4px;
}

/* ── Consult type toggle ────────────────── */
.consult-type-toggle {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 36px;
}
.consult-type-opt { position: relative; cursor: pointer; }
.consult-type-opt input[type="radio"] {
  position: absolute; opacity: 0; width: 0; height: 0;
}
.consult-type-opt__inner {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px 18px;
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  transition: background var(--t2), border-color var(--t2);
}
.consult-type-opt:hover .consult-type-opt__inner {
  background: var(--glass-bg);
  border-color: var(--border-hi);
}
.consult-type-opt input:checked + .consult-type-opt__inner {
  background: var(--accent-dim);
  border-color: var(--accent);
}
.consult-type-opt__icon  { font-size: 22px; line-height: 1; margin-bottom: 4px; }
.consult-type-opt__title { font-size: 15px; font-weight: 600; color: var(--txt-1); }
.consult-type-opt__sub   { font-size: 12px; color: var(--txt-3); line-height: 1.3; }
.consult-type-opt__cost  { font-size: 12px; color: var(--accent); opacity: 0.7; margin-top: 4px; }
.consult-type-opt input:checked + .consult-type-opt__inner .consult-type-opt__cost { opacity: 1; }

/* ── Consult sections ───────────────────── */
.consult-section { display: none; }
.consult-section--active { display: block; }

/* ── Compatibility grid ─────────────────── */
.compat-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 0 16px;
  align-items: start;
  margin-bottom: 8px;
}
.compat-vs {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: 24px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--txt-3);
  width: 32px;
}

/* ── Legend optional hint ───────────────── */
.legend-opt {
  font-size: 11px;
  letter-spacing: 0.06em;
  color: var(--txt-3);
  font-family: var(--font-ui);
  text-transform: none;
  font-weight: 400;
}

/* ── Consult summary card (results view) ── */
.consult-summary-card {
  background: var(--glass-bg);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 24px 28px;
  max-width: 640px;
  width: 100%;
}
.cscard__label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 12px;
}
.cscard__date {
  font-family: var(--font-disp);
  font-size: 22px;
  color: var(--txt-1);
  margin-bottom: 8px;
}
.cscard__activity {
  font-size: 15px;
  color: var(--txt-2);
  margin-bottom: 6px;
}
.cscard__person {
  font-size: 13px;
  color: var(--txt-3);
}
.cscard__persons {
  display: flex;
  align-items: center;
  gap: 20px;
}
.cscard__person-block {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.cscard__person-name {
  font-family: var(--font-disp);
  font-size: 18px;
  font-weight: 600;
  color: var(--txt-1);
}
.cscard__person-dob {
  font-size: 13px;
  color: var(--txt-3);
}
.cscard__vs {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--accent);
  opacity: 0.6;
}

/* ── Consult responsive ─────────────────── */
@media (max-width: 600px) {
  .compat-grid {
    grid-template-columns: 1fr;
    gap: 0;
  }
  .compat-vs {
    padding: 4px 0;
    justify-content: flex-start;
    font-size: 10px;
  }
  .consult-type-toggle { grid-template-columns: 1fr; }
}

/* ── CHAT ─────────────────────────────────────────────────── */
.chat-shell {
  display: flex;
  flex-direction: column;
  height: 70vh;
  min-height: 480px;
  max-height: 780px;
  background: var(--surface);
  border: 1px solid var(--border-hi);
  border-radius: 16px;
  overflow: hidden;
  margin-top: 8px;
}

.chat-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--glass-bg);
  flex-shrink: 0;
  gap: 8px;
}
.chat-toolbar__left  { display: flex; align-items: center; gap: 10px; }
.chat-toolbar__right { display: flex; align-items: center; gap: 8px; }
.chat-toolbar__title {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--accent);
}
.chat-toolbar__cost {
  font-size: 11px;
  color: var(--txt-3);
  background: var(--glass-bg-h);
  border-radius: 20px;
  padding: 2px 8px;
}

.chat-lang-select {
  background: var(--glass-bg-h);
  border: 1px solid var(--border-hi);
  border-radius: 8px;
  color: var(--txt-2);
  font-size: 12px;
  padding: 4px 8px;
  cursor: pointer;
  outline: none;
}
.chat-lang-select:focus { border-color: var(--accent); }

.chat-new-btn {
  background: var(--glass-bg-h);
  border: 1px solid var(--border-hi);
  border-radius: 8px;
  color: var(--txt-2);
  font-size: 12px;
  padding: 4px 10px;
  cursor: pointer;
  transition: background var(--t1), color var(--t1);
  white-space: nowrap;
}
.chat-new-btn:hover { background: var(--bg-3); color: var(--txt-1); }

/* ── Profile bar ───────────────────────── */
.chat-profile-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--glass-bg);
  flex-shrink: 0;
}
.chat-profile-bar__label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-3);
  flex-shrink: 0;
}
.chat-profile-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--glass-bg-h);
  border: 1px solid var(--border-hi);
  border-radius: 20px;
  padding: 3px 10px;
  color: var(--txt-2);
  font-size: 12px;
  font-family: var(--font-ui);
  cursor: pointer;
  transition: border-color var(--t1), color var(--t1);
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.chat-profile-btn:hover { border-color: var(--accent); color: var(--txt-1); }
.chat-profile-btn__dot  { font-size: 9px; flex-shrink: 0; }
.chat-profile-btn__caret { opacity: 0.5; flex-shrink: 0; }
.chat-profile-bar__sep  { color: var(--txt-3); font-size: 12px; flex-shrink: 0; }

/* ── Profile picker panel ──────────────── */
.chat-profile-picker {
  flex-shrink: 0;
  max-height: 240px;
  overflow-y: auto;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.chat-profile-picker::-webkit-scrollbar { width: 4px; }
.chat-profile-picker::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 2px; }
.cpp-section {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-3);
  padding: 8px 14px 4px;
}
.cpp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
  padding: 9px 14px;
  background: none;
  border: none;
  color: var(--txt-2);
  font-size: 13px;
  font-family: var(--font-ui);
  cursor: pointer;
  transition: background var(--t1);
}
.cpp-item:hover  { background: var(--glass-bg-h); color: var(--txt-1); }
.cpp-item--active { color: var(--accent); }
.cpp-item__dot   { font-size: 13px; flex-shrink: 0; color: var(--txt-3); }
.cpp-item__dot--filled { color: var(--accent); }
.cpp-item__info  { display: flex; flex-direction: column; gap: 1px; }
.cpp-item__name  { font-size: 13px; font-weight: 500; }
.cpp-item__sub   { font-size: 11px; color: var(--txt-3); }
.cpp-divider     { height: 1px; background: var(--border); margin: 2px 0; }
.cpp-empty,
.cpp-loading     { padding: 10px 14px; color: var(--txt-3); font-size: 12px; font-style: italic; }

/* ── System picker panel ───────────────── */
.chat-sys-picker {
  flex-shrink: 0;
  max-height: 260px;
  overflow-y: auto;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.chat-sys-picker::-webkit-scrollbar { width: 4px; }
.chat-sys-picker::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 2px; }
.csp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 14px;
  background: none;
  border: none;
  color: var(--txt-2);
  font-family: var(--font-ui);
  cursor: pointer;
  text-align: left;
  transition: background var(--t1), color var(--t1);
}
.csp-item:hover   { background: var(--glass-bg-h); color: var(--txt-1); }
.csp-item--active { color: var(--accent); }
.csp-item__dot    { font-size: 13px; flex-shrink: 0; color: var(--txt-3); width: 18px; text-align: center; }
.csp-item--active .csp-item__dot { color: var(--accent); }
.csp-item__info   { display: flex; flex-direction: column; gap: 1px; }
.csp-item__name   { font-size: 13px; font-weight: 500; }
.csp-item__sub    { font-size: 11px; color: var(--txt-3); }

/* ── Manual profile form ───────────────── */
.chat-profile-manual {
  flex-shrink: 0;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--glass-bg);
}
.cpm-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 14px;
}
.cpm-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.cpm-field--full { grid-column: 1 / -1; }
.cpm-field label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--txt-3);
}
.cpm-field input,
.cpm-field select {
  background: var(--bg);
  border: 1px solid var(--border-hi);
  border-radius: 6px;
  padding: 7px 10px;
  font-size: 13px;
  font-family: var(--font-ui);
  color: var(--txt-1);
  outline: none;
  width: 100%;
  box-sizing: border-box;
}
.cpm-field input:focus,
.cpm-field select:focus { border-color: var(--accent); }
.cpm-field input[type="date"],
.cpm-field input[type="time"] { color-scheme: dark; }
.cpm-actions {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}
.cpm-btn-apply {
  padding: 7px 16px;
  background: var(--accent);
  color: #000;
  border: none;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 600;
  font-family: var(--font-ui);
  cursor: pointer;
}
.cpm-btn-apply:hover { background: var(--accent-h); }
.cpm-btn-cancel {
  padding: 7px 14px;
  background: var(--glass-bg-h);
  border: 1px solid var(--border-hi);
  border-radius: 6px;
  color: var(--txt-2);
  font-size: 12px;
  font-family: var(--font-ui);
  cursor: pointer;
}

/* Messages area */
.chat-messages {
  flex: 1;
  overflow-y: auto;
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  scroll-behavior: smooth;
}
.chat-messages::-webkit-scrollbar { width: 4px; }
.chat-messages::-webkit-scrollbar-track { background: transparent; }
.chat-messages::-webkit-scrollbar-thumb { background: var(--border-hi); border-radius: 2px; }

.chat-msg {
  display: flex;
  max-width: 85%;
}
.chat-msg--user      { align-self: flex-end; justify-content: flex-end; }
.chat-msg--assistant { align-self: flex-start; }

.chat-bubble {
  padding: 10px 14px;
  border-radius: 16px;
  font-size: 14px;
  line-height: 1.6;
  word-break: break-word;
}
.chat-bubble p        { margin: 0 0 .5em; }
.chat-bubble p:last-child { margin-bottom: 0; }
.chat-bubble strong   { color: var(--accent); font-weight: 600; }
.chat-bubble code     { background: var(--glass-bg-h); border-radius: 4px; padding: 1px 5px; font-size: 12px; }

.chat-msg--user .chat-bubble {
  background: var(--accent);
  color: #1a1208;
  border-bottom-right-radius: 4px;
}
.chat-msg--user .chat-bubble strong { color: #1a1208; }

.chat-msg--assistant .chat-bubble {
  background: var(--glass-bg-h);
  color: var(--txt-1);
  border-bottom-left-radius: 4px;
  border: 1px solid var(--border);
}

.chat-cursor {
  display: inline-block;
  width: 2px;
  height: 1em;
  background: var(--accent);
  vertical-align: text-bottom;
  animation: cursor-blink .7s infinite;
}
@keyframes cursor-blink { 0%,100%{opacity:1} 50%{opacity:0} }

.chat-error {
  color: #e88;
  font-style: normal;
  font-size: 13px;
}

/* Input area */
.chat-input-area {
  padding: 12px 16px;
  border-top: 1px solid var(--border);
  flex-shrink: 0;
  background: var(--glass-bg);
}
.chat-input-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--glass-bg-h);
  border: 1px solid var(--border-hi);
  border-radius: 12px;
  padding: 8px 8px 8px 14px;
  transition: border-color var(--t2);
}
.chat-input-wrap:focus-within { border-color: var(--accent); }

.chat-input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  color: var(--txt-1);
  font-size: 14px;
  line-height: 1.5;
  resize: none;
  max-height: 160px;
  font-family: inherit;
  padding: 0;
}
.chat-input::placeholder { color: var(--txt-3); }

.chat-send-btn {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: var(--accent);
  border: none;
  color: #1a1208;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity var(--t1), transform var(--t1);
}
.chat-send-btn:disabled { opacity: .35; cursor: not-allowed; }
.chat-send-btn:not(:disabled):hover { opacity: .85; }
.chat-send-btn:not(:disabled):active { transform: scale(.95); }

/* Chat shell mobile — overridden below by :has() full-screen approach */
@media (max-width: 600px) {
  .chat-shell { height: 65vh; min-height: 400px; }
  .chat-toolbar { flex-wrap: wrap; }
  .chat-msg { max-width: 92%; }
  /* Hide token cost badge in toolbar on mobile */
  .chat-toolbar__cost { display: none; }
}

/* ══════════════════════════════════════════
   MOBILE RESPONSIVE — GLOBAL
══════════════════════════════════════════ */

/* ── Main tabs: pill buttons — three across, equal width on mobile ── */
@media (max-width: 600px) {
  .main-tabs {
    gap: 8px;
    justify-content: stretch;
  }
  .main-tab {
    flex: 1 1 0;
    justify-content: center;
    padding: 10px 8px;
    font-size: 12px;
    letter-spacing: 0.06em;
    gap: 6px;
  }
  .main-tab__icon { font-size: 14px; }
}
@media (max-width: 380px) {
  /* Very narrow phones: hide labels, keep large icons (still tappable, still clear) */
  .main-tab__label { display: none; }
  .main-tab {
    padding: 12px 0;
  }
  .main-tab__icon { font-size: 18px; transform: none; }
}

/* ── Theme toggle: only rotate on real-hover devices (desktop) ── */
@media (hover: hover) {
  .btn-theme:hover {
    border-color: var(--accent);
    color: var(--accent);
    transform: rotate(12deg);
  }
}
/* On touch devices, remove the rotation so tap doesn't skew the icon */
@media (hover: none) {
  .btn-theme:hover { transform: none; }
  .btn-theme:active {
    border-color: var(--accent);
    color: var(--accent);
  }
}

/* ── Chat: fill viewport height on mobile ─────────────────── */
/*
   JS adds .chat-tab-active to #view-landing when the Chat tab is
   tapped on mobile and scrolls the view so the header disappears
   above the viewport — only the tabs bar + chat remain visible.
   The chat shell fills from the tabs bar to the very screen bottom.
*/
@media (max-width: 600px) {
  /* Chat shell: full height minus the tabs bar (~44px) */
  #view-landing.chat-tab-active #tab-chat .chat-shell {
    height: calc(100dvh - 44px);
    max-height: none;
    min-height: 0;
    margin-top: 0;
    border-radius: 0;
    border-left: none;
    border-right: none;
    border-bottom: none;
  }

  /* Remove bottom padding from intake-wrap so shell hugs the screen edge */
  #view-landing.chat-tab-active .intake-wrap {
    padding-bottom: 0;
  }

  /* Remove top margin/padding between tabs and chat panel */
  #view-landing.chat-tab-active #tab-chat {
    margin-top: 0;
    padding-top: 0;
  }
}

/* ── Person card: stack actions below info on very small screens ── */
@media (max-width: 480px) {
  .person-card__header { flex-wrap: wrap; gap: 10px 14px; }
  .person-card__actions { margin-left: 54px; }
  .person-card__count { padding: 2px 8px; font-size: 10px; }

  /* Chat profile bar: allow wrapping */
  .chat-profile-bar { flex-wrap: wrap; gap: 6px; }
}

/* ── Light Mode: Generate button disabled visibility ───── */
[data-theme="light"] .btn-generate:disabled {
  opacity: 1;
  background: var(--bg-3);
  color: rgba(28,23,18,0.30);
  cursor: not-allowed;
}

/* ── Light Mode: My Readings history panel ──────────────── */
[data-theme="light"] .chat-session-thread { background: var(--bg); }
[data-theme="light"] .btn-reading-delete {
  color: rgba(180,40,40,0.60);
  border-color: rgba(180,40,40,0.18);
}
[data-theme="light"] .btn-reading-delete:hover {
  color: #c43030;
  border-color: rgba(180,40,40,0.40);
  background: rgba(180,40,40,0.07);
}
[data-theme="light"] .btn-delete-confirm {
  background: rgba(180,40,40,0.10);
  border-color: rgba(180,40,40,0.30);
  color: #c43030;
}
[data-theme="light"] .btn-delete-confirm:hover {
  background: rgba(180,40,40,0.18);
}

/* ═══════════════════════════════════════════════════════════
   MOBILE LANDING REDESIGN
   Hero block, hamburger nav, sticky generate button.
   Desktop unchanged; mobile gets a welcoming hero + collapsible nav.
═══════════════════════════════════════════════════════════ */

/* Anchor for smooth scroll (offset for sticky header) */
.scroll-anchor {
  display: block;
  height: 0;
  scroll-margin-top: 12px;
}

/* Hamburger button — hidden on desktop */
.btn-nav-burger {
  display: none;
  background: transparent;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  width: 38px;
  height: 38px;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  cursor: pointer;
  color: var(--txt-1);
  flex-shrink: 0;
}
.btn-nav-burger:hover { border-color: var(--accent); color: var(--accent); }

/* Mobile hero — hidden on desktop, shown on mobile */
.mobile-hero { display: none; }

/* ── Mobile: ≤ 768px ── */
@media (max-width: 768px) {
  /* Header: compact, brand left, badge + burger right */
  .site-header {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px 0;
    gap: 8px;
  }
  .site-header__brand { min-width: 0; }
  .site-header__brand .wordmark { font-size: 18px; line-height: 1.1; }
  .site-header__brand .wordmark-tagline {
    font-size: 10px;
    margin: 2px 0 0;
    color: var(--txt-3);
    letter-spacing: 0.04em;
  }

  /* Nav: only show token badge + burger inline; hide nav items */
  .site-nav { gap: 8px; flex-shrink: 0; }
  .site-nav__email { display: none; }
  .btn-nav-burger {
    display: inline-flex;
  }

  /* Collapse nav items into a dropdown drawer */
  .site-nav__items {
    position: absolute;
    top: 64px;
    right: 14px;
    z-index: 50;
    display: none;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
    background: var(--bg-2, rgba(20, 14, 8, 0.96));
    border: 1px solid var(--border-hi);
    border-radius: var(--r-md);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45);
    min-width: 180px;
  }
  .site-nav__items.is-open {
    display: flex;
    animation: navDrop 0.18s ease;
  }
  .site-nav__items .btn-nav,
  .site-nav__items .btn-theme {
    width: 100%;
    height: 40px;
    text-align: left;
    justify-content: flex-start;
    padding: 0 14px;
  }
  @keyframes navDrop {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
  }

  /* Show hero */
  .mobile-hero {
    display: block;
    padding: 28px 20px 16px;
    text-align: center;
    background:
      radial-gradient(ellipse at 50% 30%, rgba(197,160,89,0.10) 0%, transparent 65%),
      transparent;
  }
  .mobile-hero__inner {
    max-width: 480px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
  }
  .mobile-hero__title {
    font-family: var(--font-disp);
    font-size: 38px;
    font-weight: 400;
    margin: 0;
    color: var(--txt-1);
    letter-spacing: 0.01em;
    line-height: 1.05;
    background: linear-gradient(180deg, var(--accent) 0%, var(--txt-1) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
  }
  .mobile-hero__tagline {
    font-size: 14px;
    color: var(--txt-3);
    line-height: 1.6;
    margin: 0;
    letter-spacing: 0.02em;
  }
  .mobile-hero__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    background: var(--accent);
    color: #1a1410;
    text-decoration: none;
    border-radius: 999px;
    font-weight: 700;
    font-size: 15px;
    letter-spacing: 0.02em;
    box-shadow: 0 8px 24px rgba(197, 160, 89, 0.25);
    transition: transform 0.15s, box-shadow 0.15s, opacity 0.15s;
    margin-top: 6px;
  }
  .mobile-hero__cta:hover,
  .mobile-hero__cta:active {
    transform: translateY(-1px);
    box-shadow: 0 12px 28px rgba(197, 160, 89, 0.35);
  }

  /* Tighten main wrap padding on mobile */
  .intake-wrap { padding: 8px 16px 100px; }

  /* Main tab switcher tighter on tablet — keep pill shape */
  .main-tabs { gap: 8px; margin-bottom: 20px; }
  .main-tab  { font-size: 13px; padding: 10px 16px; }

  /* Form blocks tighter spacing */
  .form-block { padding: 18px 16px; margin-bottom: 16px; }
  .block-legend { font-size: 13px; padding: 0 8px; }

  /* System grid: 2 columns on mobile */
  .system-list {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .sys-card {
    padding: 14px 10px;
    min-height: 130px;
  }
  .sys-card__glyph {
    font-size: 24px;
    height: 36px;
  }
  .sys-card__name { font-size: 13px; }
  .sys-card__desc { font-size: 11px; line-height: 1.3; }
  .sys-card__cost { font-size: 10px; }

  /* Sticky Generate button at bottom of viewport */
  .btn-generate {
    position: fixed;
    bottom: 16px;
    left: 16px;
    right: 16px;
    width: auto;
    margin: 0;
    z-index: 40;
    box-shadow: 0 -6px 20px rgba(0, 0, 0, 0.35), 0 8px 24px rgba(197, 160, 89, 0.2);
  }
  /* When disabled, fade it so it doesn't dominate */
  .btn-generate:disabled {
    opacity: 0.55;
    box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.25);
  }
  /* Spacer so the sticky button doesn't overlap final field on scroll */
  .intake-wrap form::after {
    content: '';
    display: block;
    height: 70px;
  }
}

/* ── Phones (≤ 480px) ── */
@media (max-width: 480px) {
  .mobile-hero { padding: 22px 18px 12px; }
  .mobile-hero__title { font-size: 32px; }
  .mobile-hero__tagline { font-size: 13px; }
  .mobile-hero__cta { padding: 13px 24px; font-size: 14px; }

  /* Single column system list */
  .system-list {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .sys-card { min-height: auto; padding: 12px 14px; }

  /* Even tighter header */
  .site-header__brand .wordmark { font-size: 17px; }
  .site-header__brand .wordmark-tagline { display: none; }
}

/* Light theme drawer background */
[data-theme="light"] .site-nav__items {
  background: var(--bg-2, rgba(252, 248, 240, 0.98));
}

/* Hide hero immediately if results view active (defensive) */
#view-landing:not(.active) .mobile-hero { display: none !important; }

/* ═══════════════════════════════════════════════════════════
   AUTH LANDING REDESIGN
   Marketing-first scrollable layout. Hero, free banner, system
   cards, how-it-works, then form. Desktop: 2-column with
   sticky form. Mobile: vertical stack with sticky CTA.
═══════════════════════════════════════════════════════════ */

/* Reset old auth-page-container styles for view-auth — keep only for password reset view */
#view-auth { background: var(--bg-1); min-height: 100vh; }

/* Top bar */
.auth-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 32px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,0.06));
  background: var(--bg-1);
  position: sticky;
  top: 0;
  z-index: 30;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
[data-theme="light"] .auth-topbar { background: rgba(252, 248, 240, 0.95); }
.auth-topbar__brand .wordmark { font-size: 20px; line-height: 1; }
.auth-topbar__actions {
  display: flex;
  align-items: center;
  gap: 14px;
}
.auth-topbar__signin {
  color: var(--txt-2);
  text-decoration: none;
  font-size: 13px;
  font-weight: 500;
  padding: 6px 14px;
  border: 1px solid var(--border-hi);
  border-radius: var(--r-sm);
  transition: border-color 0.15s, color 0.15s;
  letter-spacing: 0.04em;
}
.auth-topbar__signin:hover { border-color: var(--accent); color: var(--accent); }

/* Two-column layout */
.auth-landing {
  display: grid;
  grid-template-columns: 1fr 420px;
  gap: 40px;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
  align-items: start;
}
.auth-landing__content {
  padding: 48px 0 80px;
  max-width: 680px;
  margin: 0 auto;
}

/* Sticky form column (desktop) */
.auth-form-aside {
  position: sticky;
  top: 90px;
  padding: 48px 0;
  align-self: start;
}

/* ── Hero ── */
.auth-hero {
  text-align: left;
  margin-bottom: 32px;
}
.auth-hero__eyebrow {
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--accent);
  font-weight: 600;
  margin: 0 0 16px;
}
.auth-hero__title {
  font-family: var(--font-disp);
  font-size: 48px;
  font-weight: 400;
  line-height: 1.1;
  margin: 0 0 20px;
  color: var(--txt-1);
  letter-spacing: -0.005em;
}
.auth-hero__title-accent {
  background: linear-gradient(120deg, var(--accent) 0%, #e8c896 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.auth-hero__pitch {
  font-size: 16px;
  line-height: 1.7;
  color: var(--txt-2);
  margin: 0 0 28px;
  max-width: 560px;
}
.auth-hero__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 16px 32px;
  background: var(--accent);
  color: #1a1410;
  text-decoration: none;
  border-radius: 999px;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.02em;
  box-shadow: 0 10px 28px rgba(197, 160, 89, 0.3);
  transition: transform 0.15s, box-shadow 0.15s;
}
.auth-hero__cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 14px 32px rgba(197, 160, 89, 0.4);
}
.auth-hero__sub {
  font-size: 12px;
  color: var(--txt-3);
  margin: 12px 0 0;
  letter-spacing: 0.04em;
}

/* ── Free banner ── */
.auth-free-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  background: linear-gradient(90deg, rgba(197, 160, 89, 0.08) 0%, rgba(197, 160, 89, 0.04) 100%);
  border: 1px solid rgba(197, 160, 89, 0.25);
  border-radius: var(--r-md);
  margin: 0 0 56px;
}
.auth-free-banner__icon {
  font-size: 18px;
  color: var(--accent);
  flex-shrink: 0;
}
.auth-free-banner__text {
  font-size: 13px;
  color: var(--txt-2);
  line-height: 1.5;
}
.auth-free-banner__text strong { color: var(--txt-1); font-weight: 600; }

/* ── Sections ── */
.auth-section { margin: 0 0 56px; }
.auth-section__title {
  font-family: var(--font-disp);
  font-size: 26px;
  font-weight: 400;
  color: var(--txt-1);
  margin: 0 0 8px;
  letter-spacing: -0.005em;
}
.auth-section__sub {
  font-size: 14px;
  color: var(--txt-3);
  margin: 0 0 24px;
  letter-spacing: 0.02em;
}

/* ── Systems grid ── */
.auth-systems-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.auth-sys-card {
  padding: 20px 18px;
  background: var(--bg-2, rgba(255, 255, 255, 0.025));
  border: 1px solid var(--border-hi);
  border-radius: var(--r-md);
  transition: border-color 0.15s, transform 0.15s, background 0.15s;
}
.auth-sys-card:hover {
  border-color: rgba(197, 160, 89, 0.5);
  transform: translateY(-2px);
  background: rgba(255, 255, 255, 0.04);
}
[data-theme="light"] .auth-sys-card:hover { background: rgba(28, 23, 18, 0.04); }
.auth-sys-card__glyph {
  display: inline-block;
  font-family: var(--font-disp);
  font-size: 26px;
  color: var(--accent);
  margin-bottom: 12px;
  line-height: 1;
}
.auth-sys-card__glyph--sym { font-family: var(--font-ui); font-size: 22px; }
.auth-sys-card__glyph--svg { display: inline-flex; align-items: center; }
.auth-sys-card__glyph--svg svg { width: 22px; height: 22px; }
.auth-sys-card__name {
  font-family: var(--font-disp);
  font-size: 16px;
  font-weight: 500;
  color: var(--txt-1);
  margin: 0 0 6px;
  letter-spacing: 0;
}
.auth-sys-card__desc {
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--txt-3);
  margin: 0;
}

/* ── How it works ── */
.auth-howto {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.auth-howto__step {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  padding: 18px 20px;
  background: var(--bg-2, rgba(255, 255, 255, 0.02));
  border: 1px solid var(--border-hi);
  border-radius: var(--r-md);
}
.auth-howto__num {
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(197, 160, 89, 0.12);
  color: var(--accent);
  font-family: var(--font-disp);
  font-size: 18px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(197, 160, 89, 0.3);
}
.auth-howto__body { flex: 1; min-width: 0; }
.auth-howto__title {
  font-family: var(--font-disp);
  font-size: 16px;
  font-weight: 500;
  color: var(--txt-1);
  margin: 0 0 4px;
}
.auth-howto__desc {
  font-size: 13px;
  line-height: 1.55;
  color: var(--txt-3);
  margin: 0;
}

/* ── Trust strip ── */
.auth-trust {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  padding: 24px 0;
  border-top: 1px solid var(--border-hi);
  border-bottom: 1px solid var(--border-hi);
  margin-bottom: 32px;
}
.auth-trust__item {
  display: flex;
  align-items: center;
  gap: 12px;
}
.auth-trust__icon {
  font-size: 20px;
  color: var(--accent);
  flex-shrink: 0;
}
.auth-trust__text {
  font-size: 11.5px;
  color: var(--txt-3);
  line-height: 1.4;
  letter-spacing: 0.02em;
}

/* ── Footer ── */
.auth-footer {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 16px 0 0;
  font-size: 12px;
  color: var(--txt-3);
}
.auth-footer a {
  color: var(--txt-3);
  text-decoration: none;
  transition: color 0.15s;
}
.auth-footer a:hover { color: var(--accent); }
.auth-footer__sep { opacity: 0.5; }

/* ── Form card ── */
.auth-form-card {
  background: var(--bg-2, rgba(20, 14, 8, 0.6));
  border: 1px solid var(--border-hi);
  border-radius: var(--r-lg, 16px);
  padding: 28px 24px;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
}
[data-theme="light"] .auth-form-card {
  background: rgba(255, 255, 255, 0.9);
}
.auth-form-card__header {
  text-align: center;
  margin-bottom: 20px;
}
.auth-form-card__title {
  font-family: var(--font-disp);
  font-size: 22px;
  font-weight: 400;
  color: var(--txt-1);
  margin: 0 0 4px;
}
.auth-form-card__sub {
  font-size: 12px;
  color: var(--txt-3);
  margin: 0;
  letter-spacing: 0.02em;
}
.auth-form-card__note {
  margin: 18px 0 0;
  text-align: center;
  font-size: 11px;
  color: var(--txt-3);
  line-height: 1.5;
  letter-spacing: 0.02em;
}

/* ── Sticky mobile CTA ── */
.auth-mobile-sticky-cta {
  display: none;  /* default hidden; shown on mobile via media query */
  position: fixed;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 45;
  align-items: center;
  gap: 8px;
  padding: 13px 28px;
  background: var(--accent);
  color: #1a1410;
  text-decoration: none;
  border-radius: 999px;
  font-weight: 700;
  font-size: 14px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(197, 160, 89, 0.3);
  letter-spacing: 0.02em;
  animation: stickyCtaIn 0.25s ease;
}
@keyframes stickyCtaIn {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ── Responsive: tablet ≤ 1024px ── */
@media (max-width: 1024px) {
  .auth-landing {
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 0 24px;
  }
  .auth-form-aside {
    position: static;
    padding: 0 0 80px;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
  }
  .auth-landing__content {
    padding: 36px 0 24px;
    max-width: 100%;
  }
  .auth-mobile-sticky-cta:not([hidden]) { display: inline-flex; }
}

/* ── Mobile ≤ 600px ── */
@media (max-width: 600px) {
  .auth-topbar { padding: 14px 16px; }
  .auth-topbar__brand .wordmark { font-size: 17px; }
  .auth-topbar__signin { font-size: 12px; padding: 5px 11px; }

  .auth-landing { padding: 0 16px; gap: 18px; }
  .auth-landing__content { padding: 24px 0 16px; }

  .auth-hero__eyebrow { font-size: 10px; }
  .auth-hero__title { font-size: 34px; line-height: 1.08; }
  .auth-hero__pitch { font-size: 14px; }
  .auth-hero__cta { padding: 14px 26px; font-size: 14px; }

  .auth-free-banner { padding: 12px 14px; margin-bottom: 40px; }
  .auth-free-banner__text { font-size: 12px; }

  .auth-section { margin-bottom: 40px; }
  .auth-section__title { font-size: 22px; }
  .auth-section__sub { font-size: 13px; }

  .auth-systems-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .auth-sys-card { padding: 16px 14px; }
  .auth-sys-card__name { font-size: 15px; }
  .auth-sys-card__desc { font-size: 12px; }

  .auth-howto__step { padding: 14px 16px; gap: 14px; }
  .auth-howto__num { width: 34px; height: 34px; font-size: 16px; }
  .auth-howto__title { font-size: 15px; }
  .auth-howto__desc { font-size: 12px; }

  .auth-trust { grid-template-columns: 1fr; gap: 12px; padding: 18px 0; }

  .auth-form-card { padding: 22px 18px; }
  .auth-form-card__title { font-size: 20px; }
}

/* ── Tiny phones ≤ 380px ── */
@media (max-width: 380px) {
  .auth-systems-grid { grid-template-columns: 1fr; }
  .auth-hero__title { font-size: 30px; }
}

/* ═══════════════════════════════════════════════════════════
   MOBILE UI FIXES (≤ 600px)
   - Saved readings: name gets full row width, actions wrap below
   - General overflow safety
═══════════════════════════════════════════════════════════ */

@media (max-width: 600px) {
  /* ── History: name on its own row, actions below ── */
  .person-card__header {
    flex-wrap: wrap;
    gap: 10px;
    padding: 14px 14px;
    align-items: flex-start;
  }
  .person-card__avatar {
    width: 36px;
    height: 36px;
    font-size: 15px;
    flex-shrink: 0;
  }
  .person-card__info {
    /* Take the remaining row width next to the avatar */
    flex: 1 1 calc(100% - 50px);
    min-width: 0;
    gap: 2px;
  }
  .person-card__name {
    font-size: 15px;
    line-height: 1.3;
    /* Allow the full name to render — clip without ellipsis marker, with
       horizontal scroll as a graceful fallback if it truly overflows. */
    text-overflow: clip;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-bottom: 1px;
  }
  .person-card__name::-webkit-scrollbar { display: none; }
  .person-card__detail {
    font-size: 12px;
    text-overflow: clip;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
  }
  .person-card__detail::-webkit-scrollbar { display: none; }
  .person-card__actions {
    /* Push to a new row, aligned under the name (skip past avatar) */
    flex: 1 1 100%;
    margin-left: 46px;
    margin-top: 2px;
    gap: 6px;
    flex-wrap: wrap;
  }
  .person-card__count {
    font-size: 10px;
    padding: 2px 8px;
  }

  /* ── Settings: tighter rows ── */
  .settings-content { padding: 16px; }
  .settings-section { margin-bottom: 24px; }
  .settings-section__title { font-size: 16px; }
  .settings-card { padding: 14px 16px; }
  .settings-row { padding: 10px 0; }
  .settings-row__label { font-size: 12px; }
  .settings-row__value { font-size: 13px; }

  /* ── Top-up modal: tighter packages + better VA/QRIS panel ── */
  .token-modal { padding: 24px 16px 20px; }
  .token-modal__title { font-size: 20px; }
  .token-modal__sub { font-size: 12px; }
  .token-packages { gap: 10px; }
  .token-pkg { padding: 14px 12px; }
  .token-pkg__name { font-size: 14px; }
  .token-pkg__tokens { font-size: 18px; }
  .token-pkg__readings { font-size: 11px; }
  .token-pkg__price { font-size: 16px; }
  .token-pkg__btn { padding: 9px 14px; font-size: 12px; }
  .method-opt { padding: 12px 14px; }
  .method-opt__name { font-size: 13px; }
  .method-opt__desc { font-size: 11px; }
  .va-panel { padding: 0; gap: 10px; }
  .va-panel__amount { font-size: 24px; }
  .va-panel__number { font-size: 18px; }
  .va-panel__steps { font-size: 12px; }
  .qris-qr-img { width: 180px; height: 180px; }

  /* ── Results / reading display: tighter padding ── */
  .results-bar { padding: 10px 14px; }
  .interp-title { font-size: 18px; }

  /* ── Chat: input bar + bubbles ── */
  .chat-input-bar { padding: 10px 12px; }
  .chat-input { font-size: 14px; }
  .cst-msg { padding: 10px 12px; }
  .cst-msg__text { font-size: 13px; line-height: 1.55; }

  /* ── Generic safety: prevent horizontal page-level scroll ── */
  body, html { overflow-x: hidden; }

  /* Ensure all long words/URLs in reading body break, not overflow */
  .ai-output, .history-card__reading, .interp-section p {
    word-break: break-word;
    overflow-wrap: break-word;
  }
}

@media (max-width: 380px) {
  /* Very narrow phones: even tighter padding */
  .person-card__avatar { width: 32px; height: 32px; font-size: 14px; }
  .person-card__info   { flex-basis: calc(100% - 44px); }
  .person-card__actions { margin-left: 42px; }
  .person-card__name { font-size: 14px; }
}

/* ═══════════════════════════════════════════════════════════
   PAYMENT METHOD SELECTOR — GROUPS + TAG BADGES
═══════════════════════════════════════════════════════════ */
.method-group__title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt-3);
  margin: 16px 0 8px;
  padding: 0 2px;
}
.method-group__title:first-child { margin-top: 4px; }

.method-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 4px;
}

/* Compact tag badge on each method button */
.method-opt__tag {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 36px;
  padding: 0 8px;
  border-radius: 8px;
  background: rgba(197, 160, 89, 0.10);
  border: 1px solid rgba(197, 160, 89, 0.25);
  color: var(--accent);
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  margin-right: 12px;
}
[data-theme="light"] .method-opt__tag {
  background: rgba(122, 92, 32, 0.08);
  border-color: rgba(122, 92, 32, 0.22);
  color: #7a5c20;
}

/* Slightly tighter padding on options since there are more of them now */
.method-selector__options { gap: 0; }
.method-opt { padding: 12px 14px; }

/* Mobile: keep tags but slightly smaller */
@media (max-width: 600px) {
  .method-opt__tag { min-width: 38px; height: 32px; font-size: 10px; margin-right: 10px; }
  .method-opt { padding: 10px 12px; }
  .method-group__title { font-size: 10px; margin: 12px 0 6px; }
}

/* ═══════════════════════════════════════════════════════════
   MOBILE HORIZONTAL-OVERFLOW SAFETY NET
   Prevents sideways scroll on phones from any unconstrained
   wide element (SVGs, markdown <pre>/<table>/<img>, long URLs).
═══════════════════════════════════════════════════════════ */

/* Belt-and-suspenders: kill any page-level horizontal scroll */
html, body { overflow-x: hidden; max-width: 100%; }

/* All SVGs scale to container by default — covers any chart we render */
svg { max-width: 100%; height: auto; }

/* Markdown content from AI readings (.ai-output, .history-card__reading,
   .interp-section): tables, code blocks, images, and long URLs must
   never exceed container width on any screen size. */
.ai-output, .history-card__reading, .interp-section {
  overflow-wrap: break-word;
  word-break: break-word;
  max-width: 100%;
}
.ai-output pre, .history-card__reading pre, .interp-section pre {
  max-width: 100%;
  overflow-x: auto;        /* allow horizontal scroll on the <pre> itself, not the page */
  white-space: pre-wrap;   /* prefer wrapping over scrolling for long lines */
  word-break: break-all;
}
.ai-output code, .history-card__reading code, .interp-section code {
  word-break: break-all;
}
.ai-output table, .history-card__reading table, .interp-section table {
  max-width: 100%;
  display: block;
  overflow-x: auto;
}
.ai-output img, .history-card__reading img, .interp-section img {
  max-width: 100%;
  height: auto;
}
.ai-output a, .history-card__reading a, .interp-section a {
  word-break: break-all;   /* long URLs wrap instead of overflowing */
}

/* Form inputs: prevent date/time pickers from exceeding container width */
.form-block input[type="date"],
.form-block input[type="time"],
.form-block input[type="text"],
.form-block input[type="email"],
.form-block select {
  max-width: 100%;
  box-sizing: border-box;
}

/* Saved-readings person card name: wrap to 2 lines on mobile instead of
   horizontal-scrolling (better UX than swipe-to-read) */
@media (max-width: 600px) {
  .person-card__name {
    white-space: normal;
    word-break: break-word;
    overflow-x: visible;
    overflow-y: visible;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .person-card__detail {
    white-space: normal;
    word-break: break-word;
    overflow-x: visible;
  }
}

/* Top-up modal & VA panel: never exceed viewport on phones */
@media (max-width: 600px) {
  .token-modal, .va-panel, .method-selector {
    max-width: 100vw;
    box-sizing: border-box;
  }
  .va-panel__number {
    word-break: break-all;
    max-width: 100%;
  }
  .qris-string {
    word-break: break-all;
  }
}

/* ── Saved Readings — tag filter chips ─────────────────── */
.history-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 4px 16px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 18px;
}
.history-filter-chip {
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 0.04em;
  padding: 6px 12px;
  border-radius: 14px;
  background: var(--glass-bg);
  border: 1px solid var(--border);
  color: var(--txt-2);
  cursor: pointer;
  transition: all 0.15s ease;
}
.history-filter-chip:hover {
  background: var(--glass-bg-h);
  border-color: var(--accent);
  color: var(--txt-1);
}
.history-filter-chip--active {
  background: var(--accent-dim);
  border-color: rgba(197,160,89,0.45);
  color: var(--accent);
  font-weight: 500;
}
[data-theme="light"] .history-filter-chip {
  background: rgba(28,23,18,0.04);
  border-color: rgba(28,23,18,0.12);
}
[data-theme="light"] .history-filter-chip--active {
  background: rgba(197,160,89,0.18);
}

/* ── Auth splash: product image (top) + system features (3×2 grid below) ── */
.auth-image-features {
  display: flex;
  flex-direction: column;
  gap: 32px;
}
.auth-image-features__visual {
  margin: 0 auto;
  max-width: 920px;          /* large product shot, capped so it doesn't run wild on ultra-wide */
  width: 100%;
  text-align: center;
}
.auth-image-features__img {
  display: block;
  width: 100%;
  height: auto;
  max-width: 100%;
}
.auth-image-features__caption {
  margin-top: 12px;
  font-size: 13px;
  letter-spacing: 0.02em;
  color: var(--txt-2, #8b95a8);
  font-style: italic;
}
.auth-image-features__body {
  width: 100%;
}

/* 3-column feature grid on desktop, falls back to the page's existing
   responsive breakpoints on tablet (2-col) and phone (1-col) below. */
.auth-systems-grid--stacked {
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
@media (max-width: 800px) {
  .auth-image-features {
    gap: 24px;
  }
  .auth-image-features__caption {
    font-size: 12px;
    margin-top: 10px;
  }
  .auth-systems-grid--stacked {
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
}
@media (max-width: 480px) {
  .auth-systems-grid--stacked {
    grid-template-columns: 1fr;
  }
}
