:root{
  --bg:#faf9f5;--card:#fff;--bd:#e5e3da;--tx:#2c2c2a;--mut:#6b6a64;--ac:#7c6f5b;--ac2:#efeae0;--p0:#edf7ee;--p0c:#27ae60;--warn:#a05a2c;
  --font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Segoe UI",system-ui,sans-serif;
  --font-display:"Griun Cherry 1 Spoon",var(--font-sans);
  /* ── 타이포 스케일(캐노니컬 — globals.css도 이 토큰을 쓴다. 값 변경 시 DESIGN.md 표 갱신) ──
     2026-07-11: 화면마다 브레이크포인트로 덧칠하지 않고, 토큰 자체를 뷰포트에 비례해
     모바일→데스크톱으로 "한 단계씩 줄어드는" clamp로 전환(cross-platform 동일 비율 자동 적용).
     "전반적으로 너무 크다/줌인" 반복 피드백 대응 — 데스크톱이 더 커지는 일반적 반응형과 반대로,
     여긴 데스크톱이 살짝 더 작아지는 쪽으로 의도적으로 설계함. 1440px 뷰포트 부근에서 바닥값 도달.
     아주 작은 보조 텍스트(micro/caption/small/label)는 가독성 때문에 고정값 유지. */
  --fs-micro:11.5px;--fs-caption:12.5px;--fs-small:13.5px;--fs-label:14px;
  --fs-body-sm:clamp(14px,15px - 0.07vw,15px);
  --fs-body:clamp(15px,16px - 0.07vw,16px);
  --fs-chat:15.8px;
  --fs-title:clamp(20px,22px - 0.14vw,22px);
  --fs-card-title:clamp(21px,24px - 0.21vw,24px);
  --fs-page-title:clamp(23px,27px - 0.28vw,27px);
  --lh-tight:1.35;--lh-snug:1.5;--lh-chat:1.62;--lh-copy:1.74;--lh-report:1.82;
  /* ── 캐릭터(슬라임) 크기 5단계 — 흩어진 임의 px 대신 이 토큰만 쓸 것 (DESIGN.md §3) ──
     xs: 텍스트에 곁들이는 아이콘(로고·공지) / sm: 목록·보조 아바타 / md: 예약(중간 규모 신규 요소용)
     lg: 주요 아바타(채팅 프로필·매칭 듀오) / hero: 화면의 주인공(언어 히어로·로딩) */
  --chara-xs:24px;--chara-sm:40px;--chara-md:64px;--chara-lg:96px;--chara-hero:160px;
}
*{box-sizing:border-box}
@font-face{font-family:"Griun Cherry 1 Spoon";src:url("/fonts/griun/Griun_Cherry1Spoon-Rg.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
body[data-font-preview="system"]{--font-sans:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR","Segoe UI",system-ui,sans-serif;--font-display:var(--font-sans)}
body[data-font-preview="round"]{--font-sans:ui-rounded,"SF Pro Rounded","Apple SD Gothic Neo","Noto Sans KR","Segoe UI",system-ui,sans-serif;--font-display:var(--font-sans)}
body[data-font-preview="plex"]{--font-sans:"IBM Plex Sans KR","Noto Sans KR","Apple SD Gothic Neo","Segoe UI",system-ui,sans-serif;--font-display:var(--font-sans)}
body[data-font-preview="serif"]{--font-display:"Noto Serif KR","Nanum Myeongjo","AppleMyungjo",serif}
body[data-font-preview="custom"]{--font-display:"Griun Cherry 1 Spoon",var(--font-sans)}
body{font-family:var(--font-sans);background:var(--bg);color:var(--tx);margin:0;font-size:var(--fs-body);line-height:var(--lh-copy);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;word-break:keep-all}
.brand-title h1,.brief-title,.f-header .f-name,.panel h2{font-family:var(--font-display)}
body[data-font-preview="serif"] .brand-title h1,
body[data-font-preview="serif"] .brief-title,
body[data-font-preview="serif"] .f-header .f-name,
body[data-font-preview="serif"] .panel h2{font-weight:600;letter-spacing:0}
body[data-font-preview="custom"] .brand-title h1,
body[data-font-preview="custom"] .brief-title,
body[data-font-preview="custom"] .f-header .f-name,
body[data-font-preview="custom"] .panel h2{font-weight:400;letter-spacing:.01em}
.app{display:flex;height:100vh;overflow:hidden}
.main{flex:1;overflow-y:auto;padding:20px}
.wrap{max-width:600px;margin:0 auto}

/* ── 설정 영역 (접이식) ── */
.settings-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.settings-bar h1{font-size:16px;font-weight:700;margin:0}
.brand-title{display:flex;flex-direction:column;gap:0}
.brand-title h1{font-size:22px;font-weight:900;margin:0;line-height:1.15;letter-spacing:0}
.brand-sub{font-size:12px;color:var(--mut);line-height:1.35;margin-top:2px}
.settings-toggle{font-size:12px;color:var(--ac);background:var(--ac2);border:none;border-radius:99px;padding:4px 12px;cursor:pointer}
.settings-body{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:14px;margin-bottom:14px}
.status-row{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px;align-items:center;font-size:12px;color:var(--mut)}
.kbadge{padding:2px 8px;border-radius:99px;font-size:var(--fs-micro);font-weight:600}
.kbadge.on{background:var(--p0);color:var(--p0c)}.kbadge.off{background:rgba(255,255,255,.06);color:var(--mut)}
.row{display:flex;gap:6px;flex-wrap:wrap;align-items:end}
.f{display:flex;flex-direction:column;gap:3px}
label{font-size:var(--fs-micro);color:var(--mut)}
input.n,select{padding:6px 8px;border:1px solid var(--bd);border-radius:7px;font-size:14px;background:var(--card);color:var(--tx);width:60px}
input#yr{width:74px}
.chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.chip{font-size:12px;background:var(--ac2);color:var(--ac);padding:3px 10px;border-radius:99px;cursor:pointer}
.pvdr-row{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.pvdr-row span{font-size:var(--fs-micro);color:var(--mut)}
.pbtn{font-size:12px;padding:5px 11px;border:1px solid var(--bd);border-radius:7px;background:var(--card);cursor:pointer;color:var(--tx)}
.pbtn.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.pbtn:disabled{opacity:.4;cursor:default}
.pbtn.compare{background:#2c4a7c;color:#fff;border-color:#2c4a7c}
.mode-row{margin-top:10px;border:1px solid var(--bd);border-radius:9px;padding:9px 10px;background:var(--card)}
.mode-toggle{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--tx);cursor:pointer}
.mode-toggle input{width:15px;height:15px;accent-color:var(--ac)}
.mode-note{font-size:var(--fs-micro);color:var(--mut);line-height:1.5;margin-top:4px;padding-left:22px}
.go-btn{background:var(--ac);color:#fff;border:0;border-radius:8px;padding:9px 16px;font-size:14px;cursor:pointer;font-weight:500;margin-top:10px;width:100%}
.go-btn:disabled{opacity:.5;cursor:wait}

/* ── 통합 인트로 카드 ── */
.intro-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;margin-bottom:10px}
.intro-meta{font-size:var(--fs-micro);color:var(--mut);margin-bottom:8px;line-height:1.6}
.intro-meta b{color:var(--tx)}
.intro-what{font-size:13px;color:var(--mut);margin-bottom:3px}
.intro-you{font-size:14px;font-weight:600;color:var(--tx);margin-bottom:6px}
.intro-today{font-size:13px;line-height:1.7;margin-bottom:6px;padding:8px 10px;background:var(--ac2);border-radius:8px}
.intro-today b{color:var(--ac)}
.intro-badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 7px;border-radius:99px;margin-right:4px;vertical-align:middle}
.intro-badge.natal{background:rgba(255,255,255,.06);color:var(--mut)}
.intro-badge.ilun{background:var(--ac2);color:var(--ac)}
.intro-summary{font-size:14px;line-height:1.7;color:var(--tx);font-style:italic;margin-bottom:6px}
.sig-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:2px}
.sig-chip{font-size:10px;padding:2px 7px;border-radius:99px}
.special-note{font-size:var(--fs-micro);color:var(--warn);background:rgba(217,185,140,.12);border:1px solid rgba(217,185,140,.3);border-radius:8px;padding:6px 9px;margin-top:7px}
.ix-badge{display:inline-block;font-size:10px;padding:2px 6px;border-radius:99px;font-weight:600;margin-left:2px}
.ix-c{background:rgba(224,90,90,.16);color:#ff8a80}.ix-h{background:rgba(39,174,96,.16);color:var(--p0c)}.ix-m{background:rgba(217,185,140,.14);color:var(--warn)}

/* ── 영역 카드 ── */
.area-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:14px;margin-bottom:10px}
.area-title{font-size:13px;font-weight:700;color:var(--ac);margin-bottom:7px}
.area-body{font-size:14px;line-height:1.75}
.chat-hook{font-size:13px;color:var(--ac);background:var(--ac2);border-radius:7px;padding:7px 10px;margin-top:8px}

/* ── 앱 첫 화면: 짧은 운세 ── */
.brief-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:16px;margin-bottom:10px}
.brief-kicker{font-size:var(--fs-micro);color:var(--mut);margin-bottom:5px}
.brief-title{font-weight:800;margin-bottom:8px;letter-spacing:0} /* font-size/line-height는 아래 :282(v3.7 리맵)이 정의 — 여기 죽어있던 18px/1.45 선언 정리(2026-07-12) */
.brief-copy{font-size:15px;line-height:1.75;white-space:pre-wrap}
.brief-profile{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.brief-profile-main{min-width:0}
.brief-meta{font-size:12px;color:var(--mut);line-height:1.55;margin-top:4px}
.talk-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:16px;margin-bottom:10px}
.talk-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:8px}
.talk-mode{font-size:12px;font-weight:800;color:var(--ac);background:var(--ac2);border-radius:99px;padding:3px 9px;white-space:nowrap}
.talk-body{font-size:14px;line-height:1.75;white-space:pre-wrap;margin-bottom:10px}
.talk-guide{display:grid;gap:7px;margin-top:8px}
.talk-line{font-size:13px;line-height:1.55;background:rgba(255,255,255,.035);border:1px solid var(--bd);border-radius:8px;padding:8px 10px}
.talk-line b{color:var(--ac)}
.talk-cta{margin-top:10px;width:100%;background:var(--ac);color:#fff;border:1px solid var(--ac);border-radius:8px;font-size:13px;font-weight:700;padding:9px 12px;cursor:pointer}
.talk-status{font-size:12px;color:var(--mut);margin-top:7px;text-align:center;min-height:18px}
.brief-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
.brief-btn{background:var(--ac);color:#fff;border:1px solid var(--ac);font-size:13px;padding:9px 12px;border-radius:8px;cursor:pointer;flex:1;min-width:140px}
.brief-btn.secondary{background:var(--card);color:var(--ac)}
.brief-btn.ghost{background:transparent;color:var(--mut);border-color:var(--bd)}
.mini-pill{display:inline-block;font-size:10px;padding:2px 7px;border-radius:99px;background:var(--ac2);color:var(--ac);font-weight:700;margin-right:4px}

/* ── 자세히 버튼 ── */
.detail-btns{display:flex;gap:8px;margin-top:4px;margin-bottom:10px;flex-wrap:wrap}
.detail-btn{flex:1;min-width:140px;background:rgba(138,132,245,.10);color:#b9b4ff;border:1px solid rgba(158,152,255,.25);font-size:13px;padding:8px;border-radius:8px;cursor:pointer}

/* ── 로딩·오류 ── */
.loading{color:var(--mut);font-size:13px;padding:8px 0}
/* 패널(내 사주 자세히 등) 안 로딩 — 귀여운 슬라임 + 스피너 */
.panel-loading{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:16px 0 10px}
.panel-loading-text{font-size:13px;color:var(--mut)}
.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--ac2);border-top-color:var(--ac);border-radius:50%;animation:s .7s linear infinite;vertical-align:-2px;margin-right:5px}
@keyframes s{to{transform:rotate(360deg)}}
.err{color:#ff8a80;font-size:13px;background:rgba(224,90,90,.14);padding:8px 11px;border-radius:8px;margin:6px 0}
.qa-warn{margin-top:6px;font-size:var(--fs-micro);color:var(--warn);background:rgba(217,185,140,.12);border-radius:6px;padding:5px 9px}

/* ── 비교 모드 ── */
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
@media(max-width:500px){.cmp-grid{grid-template-columns:1fr}}
.cmp-card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:13px;min-height:100px}
.cmp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}
.cmp-name{font-size:12px;font-weight:700;color:var(--ac)}
.cmp-ms{font-size:10px;color:var(--mut);background:rgba(255,255,255,.06);padding:2px 6px;border-radius:99px}
.cmp-body{font-size:13px;line-height:1.65;white-space:pre-wrap}
.cmp-err{font-size:12px;color:#ff8a80;background:rgba(224,90,90,.14);border-radius:7px;padding:7px 9px}
.cmp-skip{font-size:12px;color:#aaa}

/* ── 패널 ── */
.panel{position:fixed;top:0;right:0;width:0;height:100vh;background:var(--card);border-left:1px solid var(--bd);box-shadow:-6px 0 24px rgba(0,0,0,.06);overflow-y:auto;transition:width .3s ease;z-index:10}
.panel.open{width:min(480px,90vw)}
.panel-in{padding:20px;width:min(480px,90vw)}
.panel h2{font-size:15px;margin:0 0 10px}
.panel .close{position:absolute;top:12px;right:14px;background:none;border:0;color:var(--mut);font-size:22px;cursor:pointer;padding:0;width:28px}
.flow-intro-note{font-size:15px;line-height:1.7;color:var(--tx);margin:2px 0 10px}
.psec{margin:12px 0}
.psec h3{font-size:12px;color:var(--ac);margin:0 0 4px;font-weight:700;border-bottom:1px solid var(--ac2);padding-bottom:2px}
.psec .body{font-size:13px;white-space:pre-wrap;line-height:1.75}

/* ═══════════════════════════════════════════════════════════════
   COSMIC GLASS v2 — StarsTell 감성 · 눈 편한 다크 (2026-07-02)
   대비 검증: 본문 #dcdaea/#0c0c20 ≈ 13:1, 보조 #9d9bba ≈ 6.5:1(AA↑)
   원칙: 순백·순흑 금지 / 악센트는 인터랙티브만 / 블러 10px / 저자극 모션
   ═══════════════════════════════════════════════════════════════ */
/* v3 BLACK — 남색 우주 → 거의 순검정. 은하수·유리·캐릭터가 주인공이 되도록 배경은 미니멀 */
:root{
  --bg:#08080f;
  --card:rgba(255,255,255,.045);
  --bd:rgba(255,255,255,.10);
  --tx:#dcdaea;            /* 옅은 라벤더 화이트 (순백 아님) */
  --mut:#9d9bba;
  --ac:#8a84f5;            /* 인터랙티브 전용 */
  --ac2:rgba(138,132,245,.13);
  --ac-btn-a:#6f66e0;--ac-btn-b:#5a52c8;  /* 버튼 그라디언트 (흰 글자 대비 확보) */
  --p0:rgba(127,216,164,.13);--p0c:#8fd8b0;
  --warn:#d9b98c;          /* 저채도 앰버 */
  --pink:#c9b8e8;--gold:#d9be91; /* 킥커·포인트 금색 — 예전 생값 #d9be91을 토큰화(구 #d9b98c는 --warn과 동일해 폐기) */
  --glass-blur:10px;
  --glass-shadow:0 8px 28px rgba(3,4,16,.45);
  /* ── 모션 토큰(2026-07-12) — "예쁜 장식"이 아니라 상태 변화를 설명하는 짧은 마이크로 인터랙션.
     opacity/transform 위주, width/height 애니메이션 없음, 400ms 넘는 잦은 인터랙션 없음. ── */
  --mo-fast:140ms;--mo-base:200ms;--mo-panel:340ms;
  --mo-ease:cubic-bezier(.22,1,.36,1);--mo-exit:cubic-bezier(.4,0,1,1);
}
/* 그라디언트는 html에 — z-index:-1 별 레이어(캔버스·노이즈)가 그 위에 칠해지도록
   (body에 두면 페인트 순서상 배경이 별을 덮어 반짝임이 안 보임) */
html{
  background:
    radial-gradient(1000px 640px at 76% -6%, rgba(110,96,225,.11), transparent 60%),
    radial-gradient(820px 560px at 10% 106%, rgba(72,96,215,.08), transparent 55%),
    radial-gradient(700px 500px at 42% 52%, rgba(150,110,220,.05), transparent 60%),
    linear-gradient(168deg,#050508 0%,#0a0913 50%,#07070f 100%);
  background-attachment:fixed;
  /* 불투명 캔버스 색 필수(2026-07-26) — 위 shorthand가 background-color를 transparent로 리셋하고,
     그라디언트는 attachment:fixed라 뷰포트만 칠한다. iOS 사파리에서 문서 높이가 바뀌거나(화면 전환)
     주소창이 접히거나 러버밴딩할 때 안 칠해진 영역이 브라우저 기본 캔버스(흰색)로 보였다. */
  background-color:#07070f;
}
body{
  color:var(--tx);
  background:transparent;
  min-height:100dvh;
  line-height:1.78;
}
/* 아주 약한 노이즈 — 밋밋함만 제거 (투명도 3.5%) */
body::after{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* CSS 별점 — StarField(canvas)가 있으면 숨김 (dev.html 등 레거시 화면용) */
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.5;
  background-image:
    radial-gradient(1.3px 1.3px at 12% 22%, rgba(240,238,255,.5) 45%, transparent 55%),
    radial-gradient(1px 1px at 33% 64%, rgba(240,238,255,.32) 45%, transparent 55%),
    radial-gradient(1.5px 1.5px at 51% 12%, rgba(226,220,255,.42) 45%, transparent 55%),
    radial-gradient(1px 1px at 66% 43%, rgba(240,238,255,.28) 45%, transparent 55%),
    radial-gradient(1.2px 1.2px at 78% 78%, rgba(233,228,255,.38) 45%, transparent 55%),
    radial-gradient(1px 1px at 89% 27%, rgba(240,238,255,.3) 45%, transparent 55%),
    radial-gradient(1.4px 1.4px at 24% 88%, rgba(240,238,255,.26) 45%, transparent 55%),
    radial-gradient(1px 1px at 44% 36%, rgba(240,238,255,.24) 45%, transparent 55%);
}
body:has(#starfield)::before{display:none}
/* 유리 카드 — 은은하게 */
.intro-card,.brief-card,.talk-card,.area-card,.settings-body,.cmp-card,.panel{
  background:var(--card);
  border-color:var(--bd);
  backdrop-filter:blur(var(--glass-blur));
  -webkit-backdrop-filter:blur(var(--glass-blur));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.13),var(--glass-shadow); /* 상단 유리 하이라이트 */
}
.talk-card{background:linear-gradient(150deg,rgba(138,132,245,.10),rgba(255,255,255,.04))}
.intro-card{background:linear-gradient(160deg,rgba(138,132,245,.09),rgba(255,255,255,.04))}
.panel{background:rgba(13,13,36,.88)}
input,select,textarea{background:rgba(255,255,255,.06)!important;color:var(--tx)!important;border-color:var(--bd)!important}
input::placeholder{color:rgba(220,218,234,.38)}
.pbtn,.settings-toggle,.brief-btn.secondary,.detail-btn,.chip,.kbadge{
  background:rgba(255,255,255,.06);color:var(--tx);border-color:var(--bd);transition:background .18s,border-color .18s}
.pbtn:hover,.settings-toggle:hover,.brief-btn.secondary:hover,.detail-btn:hover,.chip:hover{
  background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.2)}
.pbtn.on{background:var(--ac);border-color:var(--ac);color:#fff}
.chip{color:#b9b4ff}
/* 주 버튼 = 유리 버튼 — 짙은 칠 대신 반투명 틴트+보더 (눈부심 제거) */
.go-btn,.brief-btn,.talk-cta{
  background:rgba(138,132,245,.20);color:#e4e2f6;
  border:1px solid rgba(158,152,255,.38);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 4px 16px rgba(80,72,180,.18);
  transition:background .18s,border-color .18s}
.go-btn:hover,.brief-btn:hover,.talk-cta:hover{background:rgba(138,132,245,.32);border-color:rgba(170,164,255,.55)}
.brief-btn.secondary{background:rgba(255,255,255,.06);border-color:var(--bd);color:var(--tx)}
.talk-mode{background:rgba(255,255,255,.07);border-color:var(--bd);color:#b9b4ff}
.talk-line{background:rgba(255,255,255,.04);border-color:var(--bd)}
.mini-pill{background:var(--ac)}
.sig-chip,.ix-badge{background:var(--ac2);color:#c3beff}
.qa-warn{background:rgba(217,185,140,.08);color:var(--warn);border:1px solid rgba(217,185,140,.22)}
.err{color:#e8a9bd}
.brand-sub,.mode-note{color:var(--mut)}
a{color:#a49eff}
.brief-copy,.talk-body,.area-body{line-height:1.8;max-width:62ch}
/* 접근성: 포커스 표시 · 저자극 모션 */
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ac);outline-offset:2px}
/* 2026-07-19: 전역 차단에서 "화면 전환 크로스페이드"만 예외로 뺐다.
   이 규칙은 !important라 globals.css의 어떤 값보다 세서, 동작 줄이기가 켜진 사용자에게는 화면 전환이
   통째로 뚝뚝 끊겼다(제보로 확인). 동작 민감성이 문제 삼는 건 이동·확대·반복 같은 '움직임'이지
   불투명도 변화가 아니므로, 페이드만 하는 컨테이너는 예외로 둔다.
   (globals.css의 reduce 블록이 이들에게 translate/scale 없는 페이드 전용 애니메이션을 준다.) */
@media(prefers-reduced-motion:reduce){
  *:not(.screen):not(.match-overlay):not(.match-hub-grid):not(.match-head),
  *::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ══ v3.7 — Readability scale for engine-rendered fortune/detail content ══ */
body{font-size:var(--fs-body)}
.settings-bar h1{font-size:20px}
.brand-title h1{font-size:25px}
.brand-sub,.settings-toggle,.status-row{font-size:var(--fs-small)}
.kbadge,label,.pvdr-row span,.mode-note{font-size:var(--fs-caption)}
input.n,select{font-size:var(--fs-body-sm)}
.chip,.pbtn{font-size:var(--fs-small)}
.mode-toggle{font-size:var(--fs-body-sm)}
.go-btn{font-size:var(--fs-body)}
.intro-meta{font-size:var(--fs-caption)}
.intro-what,.intro-today{font-size:var(--fs-body-sm)}
.intro-you,.intro-summary{font-size:var(--fs-body)}
.intro-badge,.sig-chip,.ix-badge,.mini-pill{font-size:var(--fs-micro)}
.special-note,.qa-warn{font-size:var(--fs-caption)}
.area-title{font-size:var(--fs-body-sm)}
.area-body{font-size:var(--fs-body);line-height:var(--lh-report)}
.chat-hook{font-size:var(--fs-body-sm)}
.brief-kicker{font-size:var(--fs-caption)}
.brief-title{font-size:var(--fs-title);line-height:1.42}
.brief-copy{font-size:var(--fs-body);line-height:var(--lh-report)}
.brief-meta{font-size:var(--fs-small)}
.talk-mode{font-size:var(--fs-small)}
.talk-body{font-size:var(--fs-body);line-height:var(--lh-report)}
.talk-line{font-size:var(--fs-body-sm)}
.talk-cta,.brief-btn,.detail-btn{font-size:var(--fs-body-sm)}
.talk-status{font-size:var(--fs-small)}
.loading,.err{font-size:var(--fs-body-sm)}
.cmp-name{font-size:var(--fs-body-sm)}
.cmp-ms{font-size:var(--fs-caption)}
.cmp-body{font-size:var(--fs-body-sm)}
.cmp-err,.cmp-skip{font-size:var(--fs-small)}
.panel h2{font-size:19px}
.psec h3{font-size:var(--fs-body-sm)}
.psec .body{font-size:var(--fs-body-sm);line-height:var(--lh-report)}

