:root {
  --teal:       #285F51;
  --teal-d:     #1F4A40;
  --teal-dd:    #163A32;
  --teal-l:     #E4F4EE;   /* v1.4 대표님 선호 라이트민트 — was #E6FAF8 */
  --teal-m:     #B3EFE9;
  --white:      #FFFFFF;
  --bg:         #EDF6F1;   /* v1.4 mint (B안 9/2) — was #F8F5F1 */
  --surface:    #FFFFFF;
  --dark:       #1E3A31;   /* v1.4 deep-green ink 11.2:1 AAA — was #2C2C2C */
  --mid:        #3E564B;   /* v1.4 green-mid 7.96:1 AAA — was #4A4540 */
  --muted:      #666666;
  --border:     #B0CCBE;   /* v1.4.1 mint line 1.72:1 on white (§46 지적 시정 — 기존 1.37보다 개선, was #CFE2D8 1.35) */
  --border-strong: #66937F; /* v1.4.2 인터랙티브 경계 전용 — 3.47:1 on white·3.15:1 on bg (WCAG 1.4.11 3:1 충족, §46 r2 지적) */
  --red:        #C5221F;
  --orange:     #FA903E;
  --yellow:     #FBBC04;
  --green:      #00C896;       /* Phase 2-C: 역할 축소 → success only (toast/check/일시 강조) */
  --wellness:   #6EBA80;       /* Phase 2-C NEW: gentle wellness primary (Apple Health 카테고리)
                                  HSL (134°, 36%, 58%)
                                  Rule A: 검정 텍스트 강제 (vs --dark 9.00:1 AAA)
                                  Rule B: 흰 텍스트 필요 시 --teal 페어 (NOT --wellness, vs white 2.33:1) */
  --wellness-d: #1E5530;       /* Phase 2-C NEW: 동반 다크 (다크 모드 + 흰 텍스트 페어)
                                  HSL (134°, 47%, 22%)
                                  vs white 8.76:1 ✅ AAA */
  --shadow-sm:  0 2px 16px rgba(0,0,0,0.04);
  --shadow:     0 4px 20px rgba(0,0,0,0.06), 0 1px 4px rgba(0,0,0,0.03);
  --shadow-md:  0 4px 16px rgba(0,0,0,0.08);
  --shadow-lg:  0 12px 40px rgba(0,0,0,0.10), 0 4px 12px rgba(0,0,0,0.04);
  --shadow-hover: 0 6px 24px rgba(40,95,81,0.15);
  --r:          16px;
  --r-sm:       12px;
  --r-xs:       10px;
  --r-lg:       20px;

  /* ── iPad Phase 1 토큰 (Day 16, 2026-04-28, β shared.css 인계, DESIGN_SYSTEM v1.1 정합) ── */
  /* Breakpoint — iPhone 600px 보존 + iPad 1024px+ 신규 */
  --bp-tablet:    768px;       /* iPad mini / 큰 iPhone landscape (Phase 2 백로그) */
  --bp-large:    1024px;       /* iPad Pro 11" / Air 13" / 큰 데스크톱 (Phase 1 주 타겟) */
  --bp-xlarge:   1366px;       /* iPad Pro 13" landscape (Phase 1 보조) */

  /* iPad 시니어 UI 가속 v1.2 (1024px+, 2026-04-28 Day 16 PM 14:35 PDT, 대표님 명령 ipad-1-splash 시각 검증 후) */
  --pad-font-base:        28px;     /* v1.1 20 → v1.2 28 (시니어 floor 강화) */
  --pad-font-h1:          56px;     /* NEW v1.2 — h1 (Dashboard / Results 제목) */
  --pad-font-h2:          44px;     /* NEW v1.2 — h2 (섹션 제목) */
  --pad-font-heading:     44px;     /* h2 동기 */
  --pad-font-display:     88px;     /* v1.1 64 → v1.2 88 (splash-brand iPad lock) */
  --pad-font-body:        28px;     /* NEW v1.2 — body 본문 */
  --pad-font-body-lg:     32px;     /* NEW v1.2 — chip / pill / 강조 */
  --pad-font-caption:     24px;     /* NEW v1.2 — 부제 / caption / muted */
  --pad-font-disclaimer:  22px;     /* NEW v1.2 — FDA / legal / footer */
  --pad-line-height:       1.7;
  --pad-touch:            48px;     /* Apple HIG iPad */
  --pad-touch-lg:         64px;     /* v1.1 56 → v1.2 64 (시니어 큰 버튼 확장) */

  /* iPad 컴포넌트 max-width 확장 */
  --pad-bottom-sheet:    700px;     /* iPhone 420 → iPad 700 */
  --pad-test-progress:   480px;
  --pad-maze-grid:       600px;
  --pad-modal:           700px;

  /* ── γ Premium Medical (Track 5 Phase B Step 2-1, 2026-05-09 PM) ──
     NeuroMapDx 시그니처 — Deep Teal + Cadet Blue + Copper. paywall γ (PR #197) 정합.
     사용처: §3.0 Tier Badge / §4 Subscription Management / §5 Welcome screen.
     WCAG AA: --color-primary on white = ~12:1 ✅ / white on Copper Premium badge ~3.5:1 (large-text exception). */
  --color-primary:      #0F4C5C;    /* Deep Teal (NeuroMapDx primary) */
  --color-secondary:    #5F9EA0;    /* Cadet Blue (gradient pair) */
  --color-accent:       #B87333;    /* Copper (Premium tier accent) */
  --color-accent-soft:  #D4A574;    /* Copper soft (gradient pair) */
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}

/* ═══════════════════════════════════════════════════════════
   Track 5 Phase B Step 2-2 (PR #205, 2026-05-10) — Tier Badge Widget
   SPEC v2.0 §3.0.5. PR #202 :root γ tokens 정합.
   시니어 UI: min-height 48px, font 16px, WCAG AA contrast.
   ─────────────────────────────────────────────────────────── */
.tier-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;       /* 시니어 UI Apple HIG */
  padding: 8px 16px;
  border: none;
  border-radius: 24px;
  font-size: 16px;        /* 시니어 UI 최소 */
  font-weight: 600;
  cursor: pointer;
  transition: all 250ms cubic-bezier(0.4, 0, 0.2, 1);
  /* font reset (button default 무효화) */
  font-family: inherit;
  line-height: 1.2;
  /* lang-toggle-group 옆 wrap 방지 — .hdr flex 환경에서 단일 줄 유지 */
  white-space: nowrap;
  flex-shrink: 0;
}
.tier-badge:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(15,76,92,0.15); }
.tier-badge:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.tier-badge:active { transform: translateY(0); }

/* 4 Tier 변형 (PR #202 TIER_META 정합) */
.tier-badge--free      { background: #F0F0F0; color: #64748B; }
.tier-badge--plus      { background: rgba(95,158,160,0.15); color: var(--color-primary); }
.tier-badge--premium   { background: linear-gradient(135deg, var(--color-accent), var(--color-accent-soft)); color: white; }
.tier-badge--precision { background: linear-gradient(135deg, var(--color-primary), var(--color-secondary)); color: white; }

/* status label visibility — Free 는 숨김 (TIER_META.free.status === '') */
.tier-badge--free .tier-status { display: none; }
.tier-badge .tier-status { font-size: 12px; opacity: 0.85; font-weight: 500; }

/* Tier 변경 시 부드러운 전환 — refreshTierBadge() 가 is-transitioning class toggle */
.tier-badge.is-transitioning { animation: tier-pulse 600ms ease-out; }
@keyframes tier-pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); box-shadow: 0 0 0 8px rgba(95,158,160,0.3); }
  100% { transform: scale(1); }
}

/* prefers-reduced-motion 접근성 (시니어 어지럼증 방지) */
@media (prefers-reduced-motion: reduce) {
  .tier-badge { transition: none; }
  .tier-badge.is-transitioning { animation: none; }
}

/* ═══════════════════════════════════════════════════════════
   PR #208 §5.A Subscription Mgmt — s-profile 확장 (2026-05-11)
   SPEC v2.0 §5.A.3. PR #205 :root γ tokens 정합. 시니어 UI 48px+/16px+/AA contrast.
   ─────────────────────────────────────────────────────────── */
.settings-section {
  margin: 0 0 24px 0;
}
.settings-section__title {
  font-size: 18px;
  font-weight: 700;
  color: var(--dark);
  margin: 0 0 12px 0;
}
.subscription-card {
  border-radius: 12px;
  padding: 16px;
  box-shadow: var(--shadow-sm);
  background: var(--white);
  border: 1px solid var(--border);
}
.subscription-card--free      { background: #F8F9FA; border-color: #E5E7EB; }
.subscription-card--plus      { background: rgba(95,158,160,0.08); border-color: rgba(95,158,160,0.3); }
.subscription-card--premium   { background: linear-gradient(135deg, rgba(184,115,51,0.06), rgba(212,165,116,0.10)); border-color: rgba(184,115,51,0.3); }
.subscription-card--precision { background: linear-gradient(135deg, rgba(15,76,92,0.06), rgba(95,158,160,0.10)); border-color: rgba(15,76,92,0.3); }
.subscription-card__header {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 12px;
}
.subscription-card__header .tier-icon { font-size: 32px; }
.subscription-card__title-group { display: flex; flex-direction: column; }
.subscription-card__tier-name {
  font-size: 20px; font-weight: 700;
  margin: 0; color: var(--dark);
}
.subscription-card__status {
  font-size: 13px; color: var(--muted); margin-top: 2px;
}
.subscription-card__free-msg {
  font-size: 16px; color: var(--mid);
  margin: 0 0 12px 0;
}
.subscription-card__details {
  margin: 0 0 16px 0; padding: 0;
  display: grid; grid-template-columns: 1fr; gap: 8px;
}
.subscription-card__details > div {
  display: flex; justify-content: center; gap: 10px;
  padding: 8px 0; border-bottom: 1px solid var(--border);
  font-size: 15px; text-align: center;
}
.subscription-card__details > div:last-child { border-bottom: none; }
.subscription-card__details dt { color: var(--muted); font-weight: 500; }
.subscription-card__details dd { color: var(--dark); font-weight: 600; margin: 0; }
.subscription-card__actions {
  display: flex; flex-direction: column; gap: 8px;
  margin-top: 16px;
}
.subscription-card__actions .btn {
  width: 100%;
  min-height: 48px;       /* 시니어 UI */
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 200ms ease;
  font-family: inherit;
}
.subscription-card__actions .btn--primary {
  background: var(--color-primary); color: white;
}
.subscription-card__actions .btn--primary:hover { background: #093843; }
.subscription-card__actions .btn--secondary {
  background: rgba(15,76,92,0.10); color: var(--color-primary);
}
.subscription-card__actions .btn--secondary:hover { background: rgba(15,76,92,0.18); }
.subscription-card__actions .btn--ghost {
  background: transparent; color: var(--muted);
  border: 1px solid var(--border-strong);
}
.subscription-card__actions .btn--ghost:hover { background: var(--bg); }
.subscription-card__actions .btn:active { transform: scale(0.98); }
.subscription-card__actions .btn:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }

/* ═══════════════════════════════════════════════════════════
   PR #209 §5.B Post-purchase Welcome Screen — overlay (2026-05-11)
   SPEC v2.0 §5.B.3 + §5.B.6 시니어 UI / ARIA dialog focus trap.
   ─────────────────────────────────────────────────────────── */
.welcome-screen {
  position: fixed;
  inset: 0;
  z-index: 9998;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.welcome-screen[hidden] { display: none; }
.welcome-screen__backdrop {
  position: absolute; inset: 0;
  background: rgba(15, 76, 92, 0.78);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.welcome-screen__content {
  position: relative;
  background: var(--white);
  border-radius: 20px;
  padding: 32px 24px;
  max-width: 480px;
  width: 100%;
  box-shadow: var(--shadow-lg);
  text-align: center;
  max-height: 90vh;
  overflow-y: auto;
}
.welcome-screen__icon {
  font-size: 64px;
  line-height: 1;
  margin-bottom: 16px;
}
.welcome-screen__title {
  font-size: 24px;     /* 시니어 UI */
  font-weight: 700;
  color: var(--color-primary);
  margin: 0 0 8px 0;
  line-height: 1.3;
}
.welcome-screen__subtitle {
  font-size: 16px;
  color: var(--muted);
  margin: 0 0 20px 0;
}
.welcome-screen__features {
  list-style: none;
  padding: 0;
  margin: 0 0 28px 0;
  text-align: left;
}
.welcome-screen__features li {
  font-size: 17px;     /* 시니어 UI 16-18px */
  color: var(--dark);
  padding: 12px 0 12px 32px;
  position: relative;
  border-bottom: 1px solid var(--border);
  line-height: 1.4;
}
.welcome-screen__features li:last-child { border-bottom: none; }
.welcome-screen__features li::before {
  content: "✓";
  position: absolute;
  left: 4px; top: 12px;
  color: var(--color-primary);
  font-size: 18px;
  font-weight: 700;
}
.welcome-screen__cta {
  width: 100%;
  min-height: 56px;     /* 시니어 UI large */
  padding: 14px 24px;
  font-size: 18px;
  font-weight: 700;
  border-radius: 12px;
  background: var(--color-primary);
  color: white;
  border: none;
  cursor: pointer;
  transition: all 200ms ease;
  font-family: inherit;
}
.welcome-screen__cta:hover  { background: #093843; }
.welcome-screen__cta:active { transform: scale(0.98); }
.welcome-screen__cta:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }

/* Animations */
.welcome-screen.is-entering .welcome-screen__content {
  animation: welcome-enter 350ms cubic-bezier(0.16, 1, 0.3, 1) both;
}
.welcome-screen.is-leaving .welcome-screen__content {
  animation: welcome-leave 250ms ease-in both;
}
@keyframes welcome-enter {
  0%   { transform: scale(0.85) translateY(20px); opacity: 0; }
  100% { transform: scale(1) translateY(0); opacity: 1; }
}
@keyframes welcome-leave {
  0%   { transform: scale(1); opacity: 1; }
  100% { transform: scale(0.92); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .welcome-screen.is-entering .welcome-screen__content,
  .welcome-screen.is-leaving .welcome-screen__content {
    animation: none;
  }
}

/* ══════════════════════════════════════════════
   DESIGN B-2 (2026-04-19, TASK-DSN001):
   WCAG 2.4.7 Focus Visible (AA) — keyboard-only focus ring
   ══════════════════════════════════════════════ */
:focus { outline: none; }
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.chip:focus-visible,
.role-tab:focus-visible,
.btn:focus-visible,
.pbs-cta:focus-visible,
.pbs-skip:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
  border-radius: var(--r-sm);
}
input[type="checkbox"],input[type="radio"]{accent-color:var(--teal);}
html,body{height:100%;overflow:hidden;background:var(--bg);-webkit-text-size-adjust:100%;}
body{font-family:'Noto Sans','Noto Sans KR',sans-serif;color:var(--dark);font-size:18px;line-height:1.6;}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}}

/* ══════════════════════════════
   PATHOBRAINSEQ POPUP MODAL
══════════════════════════════ */
.pbs-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(8px);
  z-index:5000;display:flex;align-items:flex-end;justify-content:center;
  animation:fadeOv .3s ease;
}
@keyframes fadeOv{from{opacity:0;}to{opacity:1;}}
.pbs-modal{
  background:rgba(255,255,255,.92);border-radius:24px 24px 0 0;width:100%;max-width:420px;
  padding:32px 28px 44px;animation:slideUp .35s cubic-bezier(.34,1.3,.64,1);
  position:relative;overflow:hidden;backdrop-filter:blur(24px);
  box-shadow:0 -4px 30px rgba(0,0,0,.08);
}
@keyframes slideUp{from{transform:translateY(100%);}to{transform:translateY(0);}}
.pbs-modal::before{
  content:'';position:absolute;top:-60px;right:-60px;
  width:200px;height:200px;border-radius:50%;
  background:linear-gradient(135deg,rgba(46,107,90,.12),rgba(46,107,90,.04));
}
.pbs-close{
  position:absolute;top:16px;right:16px;width:32px;height:32px;
  border-radius:50%;border:none;background:rgba(0,0,0,.06);
  cursor:pointer;font-size:15px;color:var(--muted);display:flex;align-items:center;justify-content:center;
  transition:.15s;z-index:1;
}
.pbs-close:hover{background:rgba(0,0,0,.12);}
.pbs-dna{font-size:52px;margin-bottom:14px;display:block;text-align:center;}
.pbs-modal-title{
  font-size:22px;font-weight:800;color:var(--dark);text-align:center;
  margin-bottom:6px;line-height:1.25;
}
.pbs-modal-sub{
  font-size:14px;color:var(--muted);text-align:center;line-height:1.65;
  margin-bottom:22px;
}
.pbs-features{
  background:var(--teal-l);border-radius:16px;padding:16px 18px;
  margin-bottom:22px;display:flex;flex-direction:column;gap:10px;
}
.pbs-feat{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--mid);line-height:1.5;}
.pbs-feat-ico{font-size:18px;flex-shrink:0;margin-top:1px;}
.pbs-feat strong{display:block;font-weight:700;color:var(--dark);font-size:14px;}
.pbs-cta{
  display:block;width:100%;padding:17px;
  background:linear-gradient(135deg,var(--teal-dd),var(--teal));
  color:white;border:none;border-radius:24px;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:16px;font-weight:800;
  cursor:pointer;text-align:center;text-decoration:none;
  box-shadow:0 4px 14px rgba(46,107,90,.25);transition:all .2s;
  margin-bottom:10px;min-height:52px;
}
.pbs-cta:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(46,107,90,.45);}
.pbs-skip{
  display:block;width:100%;padding:12px;background:transparent;
  border:none;font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:14px;
  color:var(--muted);cursor:pointer;transition:.15s;
}
.pbs-skip:hover{color:var(--dark);}

/* ── SHELL ── */
/* PR #229 (Build 27, fix v11) — Safe-area top fallback (v10 누적).
   v10 (Build 25): max() fallback 44px → Image 7 status bar 시정.
   v11 (Build 27, Day 32): iPhone 16 Pro Max + TestFlight overlay 환경에서 44px 부족.
     - iPhone 16 Pro Max status bar ≈ 59pt
     - TestFlight overlay 추가 ~15-30pt
   Fix: minimum 44px → 47px (real status bar 보장).
   추가 보호: @capacitor/status-bar plugin 으로 overlaysWebView=false 적용 (mnm_app.js init). */
.shell{
  position:relative;
  width:100vw;height:100vh;height:100dvh;
  display:flex;flex-direction:column;
  overflow:hidden;
  background:var(--bg);
  padding-top:max(env(safe-area-inset-top,0px), 47px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  padding-left:env(safe-area-inset-left,0px);
  padding-right:env(safe-area-inset-right,0px);
}
@media(min-width:600px){
  body{display:flex;align-items:center;justify-content:center;}
  .shell{width:420px;height:820px;border-radius:32px;box-shadow:0 24px 80px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.04);}
}

/* ── SCREENS ── */
.screen{display:none;flex-direction:column;height:100%;overflow:hidden;}
.screen.active{display:flex;animation:screenIn .32s cubic-bezier(.4,0,.2,1);}
@keyframes screenIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}

.scrollable{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;}
.scrollable::-webkit-scrollbar{width:3px;}
.scrollable::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;transition:background .3s;}
.scrollable:hover::-webkit-scrollbar-thumb{background:var(--teal-m);}
.scrollable{scrollbar-width:thin;scrollbar-color:transparent transparent;}
.scrollable:hover{scrollbar-color:var(--teal-m) transparent;}

/* ── HEADER ── */
.hdr{
  display:flex;align-items:center;gap:14px;
  padding:18px 22px 16px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
  flex-shrink:0;
  position:relative;
  z-index:10;
  /* PR #216 Issue 8 (P1) — mobile portrait wrap 허용 (avatar+title+lang-toggle+tier-badge 가로 합산 우려) */
  flex-wrap:wrap;
  row-gap:8px;
}
/* PR #216 Issue 8 — iPhone SE / 14 mini portrait 좁은 viewport 대응 */
@media (max-width: 420px) {
  .hdr { gap: 8px; padding: 14px 16px; }
  .hdr .lang-toggle-group { order: 99; }
  .hdr .tier-badge {
    order: 100;
    margin-left: auto;
    padding: 6px 10px;
    font-size: 14px;
    min-height: 40px;
  }
  .hdr .tier-badge .tier-status { display: none; }  /* 좁은 화면 status 숨김 */
}
.hdr::after{
  content:'';position:absolute;bottom:-1px;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--teal-m),transparent);opacity:.5;
}
.hdr-back{
  width:42px;height:42px;border-radius:12px;border:none;
  background:var(--teal-l);color:var(--teal-d);
  font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all .15s;flex-shrink:0;
}
.hdr-back:hover{background:var(--teal);color:white;}
.hdr-title{font-size:20px;font-weight:800;flex:1;color:var(--dark);letter-spacing:-.01em;}
.hdr-badge{
  font-family:'DM Mono',monospace;font-size:14px;font-weight:500;
  color:var(--teal);background:var(--teal-l);padding:5px 12px;border-radius:24px;
}

/* ── BUTTONS ── */
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:16px 24px;border:none;border-radius:16px;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:16px;font-weight:700;
  cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;
  min-height:52px;
}
.btn-primary{background:var(--teal);color:white;box-shadow:0 2px 8px rgba(46,107,90,.2);}
.btn-primary:hover{background:var(--teal-d);transform:translateY(-2px);box-shadow:0 6px 20px rgba(46,107,90,.28);}
.btn-primary:active{transform:translateY(0);box-shadow:0 2px 8px rgba(46,107,90,.2);}
.btn-logout{margin-top:20px;background:white;color:#D32F2F;border:2px solid #D32F2F;}
.btn-logout:hover{background:#FFF0F0;transform:translateY(-2px);box-shadow:0 4px 14px rgba(211,47,47,.12);}
.btn-logout:active{transform:none;background:#FFEBEE;}
.btn-delete{margin-top:12px;background:transparent;color:var(--red);border:2px solid var(--red);font-weight:800;min-height:56px;}
.btn-delete:hover{background:var(--red);color:white;transform:translateY(-2px);box-shadow:0 4px 14px rgba(197,34,31,.25);}
.btn-delete:active{transform:none;background:var(--red);color:white;}
.btn-outline{background:rgba(255,255,255,.85);color:var(--teal);border:1.5px solid var(--border-strong);}
.btn-outline:hover{border-color:var(--teal);background:var(--teal-l);transform:translateY(-2px);box-shadow:var(--shadow);}
.btn-ghost{background:transparent;color:var(--muted);font-size:14px;padding:12px;min-height:48px;}
.btn-danger{background:var(--red);color:white;}
.btn-green{background:var(--green);color:white;box-shadow:0 2px 8px rgba(52,168,83,.2);}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;background:#D0CCC6;box-shadow:none;}

/* ── INPUTS ── */
.inp-group{margin-bottom:18px;}
.inp-label{font-size:14px;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:8px;display:block;}
.inp{
  width:100%;padding:15px 18px;
  border:1.5px solid var(--border-strong);border-radius:var(--r-sm);
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:16px;color:var(--dark);
  background:#FAFAF8;outline:none;transition:border .2s,box-shadow .2s,background .2s;
}
.inp:hover{border-color:#C8C4BE;}
.inp:focus{background:white;border-color:var(--teal);box-shadow:0 0 0 3px rgba(46,107,90,.12);}
.inp-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

/* ── CHIP SELECTOR ── */
.chip-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;}
.chip{
  padding:10px 18px;border:1.5px solid var(--border-strong);border-radius:30px;
  font-size:14px;font-weight:600;color:var(--muted);cursor:pointer;
  background:white;transition:all .15s;min-height:48px;
  display:inline-flex;align-items:center;
}
.chip.sel,.chip:hover{border-color:var(--teal);background:var(--teal-l);color:var(--teal-d);}

/* ── CARDS ── */
.card{
  background:rgba(255,255,255,.85);border-radius:var(--r);
  box-shadow:var(--shadow-sm);
  border:1px solid rgba(255,255,255,.6);
  backdrop-filter:blur(20px);
  overflow:hidden;
}
.card-body{padding:22px;}
.card-header{
  padding:16px 22px;border-bottom:1px solid var(--border);
  font-size:14px;font-weight:600;color:var(--muted);
  letter-spacing:.04em;text-transform:uppercase;
}

/* ── PROGRESS BAR ── */
.prog-wrap{margin-bottom:4px;}
.prog-top{display:flex;justify-content:space-between;font-size:14px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.prog-bar{height:8px;background:var(--teal-l);border-radius:4px;overflow:hidden;}
.prog-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--teal),var(--teal-d));transition:width .6s cubic-bezier(.4,0,.2,1);}

/* ── SECTION TITLE ── */
.sec-title{font-size:14px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px;margin-top:24px;}
.sec-title:first-child{margin-top:0;}


/* ══════════════════════════════
   PROFILE PHOTO UPLOAD
══════════════════════════════ */
.profile-photo-wrap{
  display:flex;flex-direction:column;align-items:center;
  margin-bottom:22px;gap:10px;
}
.profile-photo-circle{
  width:96px;height:96px;border-radius:50%;
  background:linear-gradient(135deg,var(--teal),var(--teal-d));
  border:3px solid var(--teal);
  display:flex;align-items:center;justify-content:center;
  font-size:42px;color:white;font-weight:700;
  overflow:hidden;cursor:pointer;transition:.2s;
  position:relative;
}
.profile-photo-circle img{width:100%;height:100%;object-fit:cover;border-radius:50%;}
.profile-photo-circle:hover::after{
  content:'📷';position:absolute;inset:0;
  background:rgba(0,0,0,.38);border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:28px;
}
.photo-change-lbl{
  font-size:14px;font-weight:700;color:var(--teal);cursor:pointer;
  background:var(--teal-l);padding:8px 18px;border-radius:20px;border:none;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;transition:.15s;
}
.photo-change-lbl:hover{background:var(--teal-m);}
#photo-file-input{display:none;}

/* PBSeq Logo inline SVG sizing */
.pbseq-logo-svg{
  width:26px;height:26px;flex-shrink:0;overflow:hidden;
}
.pbseq-logo-svg svg{width:100%;height:100%;}
.quick-logo-svg{
  width:28px;height:28px;flex-shrink:0;
}
.quick-logo-svg svg{width:100%;height:100%;}
.pbs-logo-svg{
  width:56px;height:56px;display:block;margin:0 auto 14px;
}
.pbs-logo-svg svg{width:100%;height:100%;}

/* ── AVATAR ── */
.avatar{
  width:52px;height:52px;border-radius:16px;
  background:linear-gradient(135deg,var(--teal),var(--teal-d));
  display:flex;align-items:center;justify-content:center;
  font-size:22px;color:white;font-weight:700;flex-shrink:0;
}
.dash-avatar-link{cursor:pointer;transition:transform .15s,box-shadow .15s;}
.dash-avatar-link:hover{transform:scale(1.08);box-shadow:0 0 0 3px rgba(46,107,90,.35);}
.dash-avatar-link:active{transform:scale(.96);}
#dr-note-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(46,107,90,.12);outline:none;}
#patient-dr-notes .dr-note-item{animation:fadeInUp .3s ease;}
@keyframes fadeInUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

/* ══════════════════════════════
   SCREEN: SPLASH
══════════════════════════════ */
/* Phase 2-C (2026-04-25 Day 7): Splash hero --wellness 적용
   - 배경: 다크 teal gradient → --wellness #6EBA80 단색 (gentle, 대표님 "어둡다" 피드백 해소)
   - 텍스트: white → --dark (Rule A: 검정 텍스트 강제, AAA 9.00:1)
   - CTA primary: white bg + teal-d text → --teal bg + white text (Rule B: AAA 7.38:1)
   - CTA secondary: 흰 outline+text → 검정 outline+text */
#s-splash{
  background:var(--wellness);
  justify-content:space-between;padding:clamp(44px,9vh,64px) 28px clamp(36px,6vh,52px);color:var(--dark);
}
.splash-top{text-align:center;}
.splash-brand{font-size:clamp(36px,13vw,52px);font-weight:900;letter-spacing:-2px;line-height:1;}
.splash-brand em{font-style:normal;opacity:.5;}
.splash-sub{font-size:14px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;opacity:.7;margin-top:8px;}
.splash-visual{display:flex;justify-content:center;align-items:center;flex:1;position:relative;}
.brain-ring{
  width:180px;height:180px;border-radius:50%;
  border:2px dashed rgba(0,0,0,.15);
  position:absolute;
  animation:rotRing 25s linear infinite;
}
.brain-ring:nth-child(2){width:220px;height:220px;animation-direction:reverse;animation-duration:18s;border-style:solid;border-color:rgba(0,0,0,.10);}
@keyframes rotRing{to{transform:rotate(360deg);}}
.brain-core{
  width:130px;height:130px;border-radius:50%;
  background:rgba(255,255,255,.5);backdrop-filter:blur(8px);
  border:2px solid rgba(255,255,255,.7);
  display:flex;align-items:center;justify-content:center;
  font-size:64px;position:relative;z-index:1;
}
.splash-pills{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:28px;}
.s-pill{
  padding:7px 16px;border-radius:30px;font-size:14px;font-weight:700;
  background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,1);
  color:var(--dark);
}
.splash-btns{display:flex;flex-direction:column;gap:10px;}
.btn-splash-main{
  padding:18px;background:var(--teal);color:white;
  border:none;border-radius:28px;font-family:'Noto Sans','Noto Sans KR',sans-serif;
  font-size:17px;font-weight:800;cursor:pointer;
  box-shadow:0 4px 16px rgba(0,0,0,.18);transition:all .2s;
  min-height:56px;
}
.btn-splash-main:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.22);}
.btn-splash-sec{
  padding:14px;background:transparent;color:var(--dark);
  border:1.5px solid var(--dark);border-radius:28px;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:15px;font-weight:600;cursor:pointer;transition:.2s;
  min-height:50px;
}
.btn-splash-sec:hover{background:rgba(0,0,0,.05);}

/* ══════════════════════════════
   SCREEN: LOGIN
══════════════════════════════ */
.login-hero{
  background:linear-gradient(160deg,var(--teal-dd),var(--teal));
  padding:clamp(28px,7vh,40px) 24px clamp(32px,7vh,48px);color:white;
  border-radius:0 0 32px 32px;margin-bottom:28px;flex-shrink:0;
}
.login-hero-title{font-size:28px;font-weight:800;margin-bottom:6px;line-height:1.2;}
.login-hero-sub{font-size:15px;opacity:.8;line-height:1.5;}
#s-login .scrollable{padding:0 24px 32px;}
.divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--muted);font-size:14px;font-weight:500;}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--border);}

/* ── ROLE TABS (login) ── */
.role-tab{
  flex:1;padding:11px;border:none;border-radius:10px;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:14px;font-weight:700;
  background:transparent;color:var(--muted);cursor:pointer;transition:.18s;
  min-height:48px;
}
.role-tab.active{background:white;color:var(--teal-d);box-shadow:0 2px 8px rgba(46,107,90,.15);}

/* ── DOCTOR CARD (search results) ── */
.doc-card{
  background:rgba(255,255,255,.85);border-radius:18px;border:1.5px solid rgba(255,255,255,.6);
  padding:18px 20px;display:flex;align-items:center;gap:14px;
  cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);min-height:72px;
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.doc-card:hover{border-color:var(--teal);box-shadow:var(--shadow);transform:translateY(-2px);}
.doc-avatar{
  width:46px;height:46px;border-radius:12px;
  background:linear-gradient(135deg,#2244AA,#4A90E2);
  display:flex;align-items:center;justify-content:center;
  font-size:20px;color:white;flex-shrink:0;
}
.doc-info{flex:1;}
.doc-name{font-size:15px;font-weight:700;color:var(--dark);}
.doc-meta{font-size:14px;color:var(--muted);margin-top:2px;}
.doc-code{font-family:'DM Mono',monospace;font-size:14px;color:var(--teal);font-weight:600;margin-top:3px;}

/* ── USER CARD (doctor portal) ── */
.pt-card{
  background:rgba(255,255,255,.85);border-radius:18px;border:1px solid rgba(255,255,255,.6);
  padding:18px 20px;display:flex;align-items:center;gap:14px;
  cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.pt-card:hover{border-color:var(--teal);box-shadow:var(--shadow);transform:translateY(-2px);}
.pt-card.alert-pt{border-left:4px solid var(--red);}
.pt-avatar{
  width:44px;height:44px;border-radius:12px;
  background:linear-gradient(135deg,var(--teal),var(--teal-d));
  display:flex;align-items:center;justify-content:center;
  font-size:18px;color:white;font-weight:700;flex-shrink:0;overflow:hidden;
}
.pt-info{flex:1;min-width:0;}
.pt-name{font-size:15px;font-weight:700;color:var(--dark);}
.pt-meta{font-size:14px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pt-score-pill{
  padding:5px 12px;border-radius:20px;font-size:14px;font-weight:800;
  flex-shrink:0;font-family:'DM Mono',monospace;
}
.alert-banner-sm{
  background:#FEF7F7;border-left:4px solid var(--red);border-radius:var(--r-sm);
  padding:14px 18px;display:flex;gap:12px;align-items:flex-start;margin-bottom:10px;
  font-size:14px;line-height:1.55;
}
.social-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;}
.social-btn{
  padding:14px;border:1.5px solid var(--border-strong);border-radius:var(--r-sm);
  background:rgba(255,255,255,.85);font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:14px;font-weight:600;
  color:var(--dark);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;backdrop-filter:blur(12px);
}
.social-btn:hover{border-color:var(--teal);background:var(--teal-l);transform:translateY(-2px);box-shadow:var(--shadow);}

/* ══════════════════════════════
   SCREEN: DASHBOARD
══════════════════════════════ */
#s-dash .scrollable{padding:20px;}
.dash-hero{
  background:linear-gradient(135deg,var(--teal-dd),var(--teal));
  border-radius:24px;padding:24px;color:white;margin-bottom:20px;
  position:relative;overflow:hidden;box-shadow:0 4px 24px rgba(46,107,90,.18);
}
.dash-hero::after{
  content:'🧠';position:absolute;right:-10px;bottom:-16px;
  font-size:88px;opacity:.08;line-height:1;
}
.dash-score-row{display:flex;align-items:flex-end;gap:6px;margin:8px 0;}
.dash-score-big{font-size:48px;font-weight:900;line-height:1;}
.dash-score-max{font-size:16px;opacity:.6;font-weight:600;padding-bottom:6px;}
.dash-score-label{
  margin-left:auto;background:rgba(255,255,255,.18);
  border-radius:20px;padding:6px 14px;font-size:14px;font-weight:700;
}
/* Bento Grid: 1 featured row + 2-col secondary cells */
.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;}
.quick-card{
  background:rgba(255,255,255,.85);border-radius:18px;padding:22px 20px;
  border:1px solid rgba(255,255,255,.6);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;gap:10px;min-height:104px;
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.quick-card:hover{border-color:var(--teal);box-shadow:var(--shadow);transform:translateY(-2px);}
.quick-icon{font-size:30px;}
.quick-label{font-size:18px;font-weight:800;color:var(--dark);line-height:1.3;}
.quick-sub{font-size:15px;color:var(--muted);line-height:1.45;}
/* Featured (primary CTA) — spans full width, teal gradient Bento hero */
.quick-card--featured{
  grid-column:1 / -1;
  background:linear-gradient(135deg,var(--teal-dd),var(--teal));
  border-color:rgba(255,255,255,.18);
  padding:24px 22px;min-height:116px;
  box-shadow:0 6px 22px rgba(40,95,81,.22);
}
.quick-card--featured .quick-icon{font-size:38px;}
.quick-card--featured .quick-label{color:#fff;font-size:22px;font-weight:900;letter-spacing:-.01em;}
.quick-card--featured .quick-sub{color:rgba(255,255,255,.82);font-size:15px;}
.quick-card--featured:hover{
  border-color:rgba(255,255,255,.38);
  transform:translateY(-3px);
  box-shadow:0 10px 32px rgba(40,95,81,.32);
}
.history-mini{
  background:rgba(255,255,255,.85);border-radius:18px;border:1px solid rgba(255,255,255,.6);
  padding:20px 22px;margin-bottom:20px;
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.history-chart{display:flex;align-items:flex-end;gap:6px;height:70px;margin-top:14px;}
.hc-bar-w{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;height:100%;justify-content:flex-end;}
.hc-bar{width:100%;border-radius:4px 4px 0 0;min-height:4px;}
.hc-lbl{font-size:14px;color:var(--muted);font-weight:600;}
.streak-card{
  background:linear-gradient(135deg,#FBBC04,#FA903E);
  border-radius:var(--r-sm);padding:16px 18px;
  display:flex;align-items:center;gap:14px;margin-bottom:20px;
}
.streak-num{font-size:32px;font-weight:900;color:white;}
.streak-info{color:white;}
.streak-label{font-size:14px;font-weight:700;}
.streak-sub{font-size:14px;opacity:.8;margin-top:2px;}

/* ══════════════════════════════
   SCREEN: DISEASE SELECT
══════════════════════════════ */
#s-disease .scrollable{padding:16px 20px 24px;}
.disease-desc-box{
  background:var(--teal-l);border-radius:var(--r-sm);padding:14px 16px;
  font-size:14px;color:var(--mid);line-height:1.6;margin-bottom:20px;
}
.disease-cards{display:flex;flex-direction:column;gap:12px;}
.d-card{
  background:rgba(255,255,255,.85);border-radius:18px;border:1.5px solid rgba(255,255,255,.6);
  padding:20px 22px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);
  display:flex;align-items:center;gap:16px;
  min-height:80px;backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
/* UI-001: hover effect only on pointer devices to prevent sticky touch states */
@media(hover:hover){.d-card:hover{border-color:var(--teal);box-shadow:var(--shadow);transform:translateY(-2px);}}
.d-card.sel{border-color:var(--teal);background:var(--teal-l);}
.d-card-icon{
  width:54px;height:54px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  font-size:26px;flex-shrink:0;
}
.d-card-body{flex:1;}
.d-card-name{font-size:17px;font-weight:700;color:var(--dark);margin-bottom:4px;}
.d-card-abbr{
  display:inline-block;font-size:14px;font-weight:700;
  padding:2px 10px;border-radius:20px;margin-bottom:5px;
}
.d-card-desc{font-size:14px;color:var(--muted);line-height:1.5;}
.d-card-check{
  width:28px;height:28px;border-radius:50%;border:2px solid var(--border-strong);
  display:flex;align-items:center;justify-content:center;font-size:14px;
  flex-shrink:0;transition:.2s;
}
.d-card.sel .d-card-check{background:var(--teal);border-color:var(--teal);color:white;transform:scale(1.15);box-shadow:0 0 0 3px rgba(46,107,90,.25);}
.d-card-status-dot{
  display:inline-block;width:7px;height:7px;border-radius:50%;
  margin-right:4px;vertical-align:middle;
}


/* ══════════════════════════════
   SCREEN: TEST OVERVIEW
══════════════════════════════ */
#s-overview .scrollable{padding:16px 20px 28px;}
.cat-cards{display:flex;flex-direction:column;gap:10px;}
.cat-card{
  background:rgba(255,255,255,.85);border-radius:18px;border:1.5px solid rgba(255,255,255,.6);
  padding:18px 20px;display:flex;align-items:center;gap:14px;
  cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);min-height:72px;
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.cat-card.done{border-color:var(--green);background:#F0FFF9;}
.cat-card.next-up{border-color:var(--teal);background:var(--teal-l);}
.cat-icon-box{
  width:48px;height:48px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;
  font-size:22px;flex-shrink:0;
}
.cat-info{flex:1;}
.cat-name{font-size:16px;font-weight:700;margin-bottom:4px;}
.cat-meta{font-size:14px;color:var(--muted);}
.cat-status{font-size:22px;flex-shrink:0;}

/* ══════════════════════════════
   SCREEN: TEST
══════════════════════════════ */
.test-hdr{
  background:white;padding:14px 22px;flex-shrink:0;
  border-bottom:1px solid var(--border);
}
.test-hdr-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.test-tag{
  font-size:14px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  padding:4px 12px;border-radius:20px;
}
.test-qnum{font-size:14px;font-weight:600;color:var(--muted);margin-left:auto;}
.test-timer-badge{
  display:flex;align-items:center;gap:5px;
  font-family:'DM Mono',monospace;font-size:14px;font-weight:500;
  color:var(--teal);background:var(--teal-l);padding:4px 12px;border-radius:20px;
}
.test-body{flex:1;padding:24px 22px;overflow-y:auto;}
.test-q{font-size:22px;font-weight:700;line-height:1.4;color:var(--dark);margin-bottom:10px;}
.test-instr{font-size:14px;color:var(--muted);line-height:1.7;margin-bottom:24px;}
.answers{display:flex;flex-direction:column;gap:10px;}
.ans-btn{
  width:100%;padding:16px 18px;border:1.5px solid var(--border-strong);
  border-radius:var(--r-sm);background:rgba(255,255,255,.85);
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:16px;font-weight:600;
  color:var(--dark);cursor:pointer;text-align:left;
  display:flex;align-items:center;gap:14px;transition:all .2s cubic-bezier(.4,0,.2,1);
  min-height:54px;backdrop-filter:blur(12px);
}
.ans-btn:hover{border-color:var(--teal);background:var(--teal-l);}
.ans-btn.correct{border-color:var(--green);background:#F0FFF9;color:#1B7E34;}
.ans-btn.selected{border-color:var(--teal);background:var(--teal-l);opacity:.85;}
.ans-btn.wrong{border-color:var(--red);background:#FEF7F7;color:#C5221F;}
.ans-letter{
  width:30px;height:30px;border-radius:50%;background:var(--teal-l);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;color:var(--teal-d);flex-shrink:0;
}
.ans-btn.correct .ans-letter{background:var(--green);color:white;}
.ans-btn.wrong .ans-letter{background:var(--red);color:white;}

/* word recall */
.word-stage{
  background:linear-gradient(145deg,var(--teal-dd),var(--teal));
  border-radius:var(--r);padding:36px 24px;text-align:center;
  margin-bottom:20px;position:relative;overflow:hidden;
}
.word-stage::before{
  content:'';position:absolute;top:-40px;right:-40px;
  width:150px;height:150px;border-radius:50%;
  background:rgba(255,255,255,.06);
}
.word-num{font-size:14px;font-weight:600;color:rgba(255,255,255,.6);letter-spacing:.1em;text-transform:uppercase;margin-bottom:10px;}
.word-big{font-size:38px;font-weight:900;color:white;letter-spacing:5px;}
.word-countdown{font-size:clamp(36px,12vw,52px);font-weight:900;color:white;margin-top:14px;font-variant-numeric:tabular-nums;}
.recall-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;}
.r-chip{
  padding:8px 16px;background:var(--teal-l);color:var(--teal-d);
  border-radius:20px;font-size:14px;font-weight:700;
  animation:popIn .2s ease;
}
@keyframes popIn{from{transform:scale(.7);opacity:0;}to{transform:scale(1);opacity:1;}}
.recall-row{display:flex;gap:10px;}
.recall-inp{
  flex:1;padding:15px 18px;border:1.5px solid var(--border-strong);border-radius:var(--r-sm);
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:17px;outline:none;transition:.15s;
  text-align:center;letter-spacing:2px;text-transform:uppercase;
}
.recall-inp:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(46,107,90,.12);}
.btn-sm-teal{
  padding:14px 18px;background:var(--teal);color:white;
  border:none;border-radius:var(--r-sm);font-family:'Noto Sans',sans-serif;
  font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap;transition:.15s;
  flex-shrink:0;
}
.btn-sm-teal:hover{background:var(--teal-d);}

/* stroop */
.stroop-word{
  text-align:center;margin:16px 0 24px;
  font-size:56px;font-weight:900;line-height:1;
  text-shadow:0 3px 10px rgba(0,0,0,.1);
}
.color-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.color-btn{
  padding:24px 8px;border:3px solid transparent;
  border-radius:14px;font-family:'Noto Sans','Noto Sans KR',sans-serif;
  font-size:18px;font-weight:800;color:white;cursor:pointer;
  transition:all .15s;text-shadow:0 1px 3px rgba(0,0,0,.2);
  min-height:60px;
}
.color-btn:hover{transform:scale(1.03);box-shadow:0 5px 18px rgba(0,0,0,.2);}
.color-btn:active{transform:scale(.98);}

/* finger tap */
.tap-ring{
  width:200px;height:200px;border-radius:50%;
  background:linear-gradient(145deg,var(--teal-l),white);
  border:4px dashed var(--teal);margin:0 auto 18px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;user-select:none;transition:all .08s;
  box-shadow:var(--shadow);
}
.tap-ring:active{transform:scale(.95);background:var(--teal-l);}
.tap-ring.running{border-style:solid;border-color:var(--teal);animation:tapPulse 1s ease-in-out infinite;}
@keyframes tapPulse{0%,100%{box-shadow:0 0 0 0 rgba(46,107,90,.3);}50%{box-shadow:0 0 0 16px rgba(46,107,90,.0);}}
.tap-n{font-size:60px;font-weight:900;color:var(--teal);line-height:1;font-variant-numeric:tabular-nums;}
.tap-lbl{font-size:14px;font-weight:600;color:var(--muted);margin-top:4px;}
.tap-timer-row{display:flex;justify-content:center;gap:24px;margin-bottom:16px;}
.tap-stat{text-align:center;}
.tap-stat-v{font-family:'DM Mono',monospace;font-size:22px;font-weight:500;color:var(--dark);}
.tap-stat-l{font-size:14px;color:var(--muted);font-weight:600;text-transform:uppercase;margin-top:2px;}

/* serial 7 */
.serial-display{
  background:var(--teal-l);border-radius:var(--r);padding:clamp(16px,5vw,28px);
  text-align:center;margin-bottom:20px;
}
.serial-n{font-size:clamp(36px,12vw,52px);font-weight:900;color:var(--teal);font-variant-numeric:tabular-nums;}
/* word-stage(dark bg) 안에서는 white — BUG-032-color */
.word-stage .serial-n{color:white;}
.serial-sub{font-size:14px;color:var(--mid);margin-top:6px;font-weight:600;}
.num-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.num-key{
  padding:20px 8px;border:1.5px solid var(--border-strong);border-radius:var(--r-sm);
  font-size:24px;font-weight:700;cursor:pointer;background:rgba(255,255,255,.85);
  font-family:'Noto Sans','Noto Sans KR',sans-serif;transition:all .15s;
  min-height:60px;backdrop-filter:blur(12px);
}
.num-key:hover{border-color:var(--teal);background:var(--teal-l);transform:translateY(-1px);}
.num-key.del{color:var(--red);}
.inp-display{
  border:2px solid var(--border-strong);border-radius:var(--r-sm);
  padding:16px;text-align:center;font-size:28px;font-weight:700;
  font-variant-numeric:tabular-nums;background:white;margin-bottom:14px;
  min-height:64px;color:var(--dark);
}

/* PBWA Orientation */
.or-grid{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:8px 0;}
.or-grid-compact .or-opt{min-width:70px;padding:12px 14px;font-size:14px;}
.or-opt{
  padding:14px 20px;border-radius:var(--r-sm);border:2px solid var(--border-strong);
  background:white;font-size:16px;font-weight:600;cursor:pointer;
  min-width:90px;text-align:center;transition:all .2s;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;color:var(--dark);
}
.or-opt:hover{border-color:var(--teal);background:var(--teal-l);}
.or-opt.selected{border-color:var(--teal);background:var(--teal);color:white;}
.or-input-wrap{display:flex;flex-direction:column;align-items:center;padding:24px 0;}
.or-input{
  width:100%;max-width:320px;padding:16px;border-radius:var(--r-sm);
  border:2px solid var(--border-strong);font-size:22px;text-align:center;
  font-weight:600;outline:none;transition:border-color .2s;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;color:var(--dark);
}
.or-input:focus{border-color:var(--teal);}

/* PBWA Memory */
.mem-grid{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;padding:8px 0;}
.mem-word{
  padding:12px 16px;border-radius:var(--r-sm);border:2px solid var(--border-strong);
  background:white;font-size:15px;font-weight:600;cursor:pointer;
  min-width:80px;text-align:center;transition:all .2s;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;color:var(--dark);
}
.mem-word:hover{border-color:var(--teal);background:var(--teal-l);}
.mem-word.active{border-color:var(--teal);background:var(--teal);color:white;}
.mem-img-big{font-size:72px;line-height:1.2;margin:8px 0;}
.mem-img-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:8px 0;}
.mem-img-btn{
  padding:20px 8px;border-radius:var(--r-sm);border:2px solid var(--border-strong);
  background:white;font-size:40px;cursor:pointer;transition:all .2s;text-align:center;
}
.mem-img-btn:hover{border-color:var(--teal);background:var(--teal-l);}
.mem-img-btn.active{border-color:var(--teal);background:var(--teal);}
.mem-hint{
  background:var(--teal-l);border-radius:var(--r-sm);padding:14px 18px;
  font-size:16px;font-weight:600;color:var(--teal-d);margin-bottom:16px;text-align:center;
}

/* ── Attention: Digit Span ── */
.att-digit-display{
  font-size:36px;font-weight:700;letter-spacing:12px;text-align:center;
  padding:18px 0;font-family:'Courier New',monospace;color:var(--dark);
  min-height:60px;
}

/* ── Visuospatial: Trail Making ── */
.trail-area{position:relative;width:100%;height:300px;background:#FAF8F5;border-radius:var(--r);border:2px solid var(--border-strong);margin:12px 0;overflow:hidden;}
.trail-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;}
.trail-node{
  position:absolute;width:44px;height:44px;border-radius:50%;border:2px solid var(--teal);
  background:white;font-weight:700;font-size:16px;cursor:pointer;z-index:2;
  display:flex;align-items:center;justify-content:center;
  transform:translate(-50%,-50%);transition:all .2s;
}
.trail-node.done{background:var(--teal);color:white;border-color:var(--teal-d);}
.trail-node.error{background:var(--red);color:white;border-color:var(--red);animation:shake .3s;}
.trail-node.hint{border-color:var(--orange);box-shadow:0 0 0 3px rgba(250,144,62,.35);animation:trailPulse 0.8s ease-in-out infinite;}
@keyframes trailPulse{0%,100%{transform:translate(-50%,-50%) scale(1);}50%{transform:translate(-50%,-50%) scale(1.12);}}
.trail-status-row{display:flex;justify-content:space-between;align-items:center;margin-top:8px;}
.trail-error-count{font-size:14px;font-weight:700;color:var(--red);}
@keyframes shake{0%,100%{transform:translate(-50%,-50%);}25%{transform:translate(-46%,-50%);}75%{transform:translate(-54%,-50%);};}

/* ── Visuospatial: Clock Drawing ── */
.clock-wrap{text-align:center;margin:12px 0;}
.clock-wrap canvas{border-radius:50%;border:2px solid var(--border-strong);touch-action:none;cursor:crosshair;}

/* ── Visuospatial: Shape Rotation ── */
.shape-grid{display:inline-grid;gap:2px;}
.shape-cell{width:100%;aspect-ratio:1;border-radius:3px;background:#E0DCD6;}
.shape-cell.filled{background:var(--teal);}
.shape-opts{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:16px;}
.shape-opt{padding:16px;border-radius:var(--r-sm);border:2px solid var(--border-strong);background:white;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.shape-opt:hover{border-color:var(--teal);}
.shape-opt.correct{border-color:var(--green);background:#EDFFF8;}
.shape-opt.wrong{border-color:var(--red);background:#FFF0F3;}

/* ── Visuospatial: Maze ── */
.maze-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;max-width:320px;margin:12px auto;}
.maze-cell{aspect-ratio:1;border-radius:4px;background:#F5F2EF;cursor:pointer;transition:all .2s;position:relative;}
.maze-cell.wall{background:#4A4540;cursor:default;}
.maze-cell.current{background:var(--teal);box-shadow:0 0 8px rgba(46,107,90,.5);}
.maze-cell.visited{background:var(--teal-l);}
.maze-cell.start::after{content:'S';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--teal-d);}
.maze-cell.end::after{content:'E';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--red);}
.maze-cell.error{background:var(--red)!important;animation:shake .3s;}
.maze-timer-row{display:flex;align-items:center;justify-content:center;gap:8px;margin:6px 0 4px;font-size:14px;color:var(--muted);}
.maze-timer-num{font-size:20px;font-weight:900;color:var(--teal-d);min-width:28px;text-align:center;transition:color .3s;}
.maze-timer-num.urgent{color:var(--red);animation:timerPulse .5s ease-in-out infinite;}
@keyframes timerPulse{0%,100%{opacity:1;}50%{opacity:.4;}}
.maze-status-row{display:flex;justify-content:space-between;align-items:center;margin-top:6px;}

/* ── Motor: Alternative Tapping ── */
.alt-tap-row{display:flex;justify-content:center;gap:120px;margin:32px 0}
.alt-tap-circle{width:80px;height:80px;border-radius:50%;border:3px solid var(--teal);
  display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;
  cursor:pointer;transition:all .1s;user-select:none;-webkit-user-select:none}
.alt-tap-circle:active{transform:scale(.9);background:var(--teal);color:white}
.alt-tap-circle.wrong{border-color:var(--red);animation:shake .3s}
.alt-tap-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:16px 0;text-align:center}
.alt-tap-stat{background:#FAF8F5;border-radius:12px;padding:12px 8px}
.alt-tap-stat-v{font-size:24px;font-weight:700;color:var(--teal)}
.alt-tap-stat-l{font-size:14px;color:var(--muted);margin-top:4px}

/* ── Visuospatial: Pattern Completion ── */
.pattern-seq{text-align:center;font-size:32px;letter-spacing:8px;padding:20px 0;font-weight:600;}
.pattern-blank{color:var(--teal);font-weight:900;}

/* ── Voice Biomarker ── */
.vb-consent-box{background:#FAF8F5;border-radius:16px;padding:24px;margin:16px 0;text-align:left;line-height:1.6}
.vb-consent-btns{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}
.vb-consent-btn{padding:16px 24px;border-radius:12px;font-size:16px;font-weight:600;border:2px solid var(--teal);cursor:pointer;text-align:center}
.vb-consent-btn.agree{background:var(--teal);color:white}
.vb-consent-btn.skip{background:white;color:var(--teal)}
.vb-sentence{font-size:20px;line-height:1.6;padding:24px;background:var(--teal-l);border-radius:16px;margin:16px 0;text-align:center;font-style:italic}
.vb-canvas{width:100%;height:80px;border-radius:12px;background:#EDE8E3;margin:16px 0}
.vb-timer{font-size:48px;font-weight:700;text-align:center;color:var(--teal);margin:16px 0}
.vb-metrics{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}
.vb-metric{background:#FAF8F5;border-radius:12px;padding:16px;text-align:center}
.vb-metric-v{font-size:20px;font-weight:700;color:var(--teal)}
.vb-metric-l{font-size:14px;color:var(--muted);margin-top:4px}

/* ── Language: Sentence & Fluency ── */
.lg-sentence{
  background:var(--teal-l);border-radius:var(--r-sm);padding:20px;
  font-size:18px;line-height:1.7;text-align:center;margin:16px 0;
  font-weight:500;color:var(--dark);
}
.lg-textarea{
  width:100%;border:2px solid var(--border-strong);border-radius:var(--r-sm);
  padding:14px;font-size:16px;font-family:inherit;resize:vertical;
  line-height:1.6;transition:border-color .2s;
}
.lg-textarea:focus{border-color:var(--teal);outline:none;}
.lg-pair{text-align:center;font-size:24px;font-weight:700;padding:20px 0;color:var(--dark);}
.lg-pair-word{color:var(--teal-d);background:var(--teal-l);padding:4px 12px;border-radius:8px;}
.lg-word-list{
  margin-top:12px;padding:12px;background:#FAF8F5;border-radius:var(--r-sm);
  font-size:14px;color:var(--mid);min-height:40px;word-break:break-word;
}
.lg-timer-big{font-size:36px;font-weight:700;color:var(--teal);}

/* ══════════════════════════════
   SCREEN: RESULTS
══════════════════════════════ */
#s-results .scrollable{padding:20px 20px 32px;}
.res-hero{
  background:linear-gradient(135deg,var(--teal-dd),var(--teal));
  border-radius:24px;padding:28px;color:white;margin-bottom:20px;
  text-align:center;position:relative;overflow:hidden;box-shadow:0 4px 24px rgba(46,107,90,.18);
}
.res-hero::after{content:'📊';position:absolute;right:10px;bottom:-10px;font-size:80px;opacity:.06;}
.res-score-num{font-size:72px;font-weight:900;line-height:1;}
.res-score-sub{font-size:15px;opacity:.75;font-weight:500;}
.r-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:700;margin-right:8px;cursor:pointer;border:2px solid var(--border-strong);background:white;color:var(--mid);transition:.2s;white-space:nowrap;flex-shrink:0;}
.r-tab.active{border-color:var(--teal);background:var(--teal-l);color:var(--teal-d);}
.r-tab .r-tab-score{font-size:14px;opacity:.65;font-weight:600;}
.r-swipe-hint{text-align:center;padding:6px;font-size:14px;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:8px;}
.swipe-nav-btn{background:var(--teal-l);border:1px solid var(--border-strong);border-radius:8px;padding:6px 14px;font-size:16px;cursor:pointer;color:var(--teal-d);font-weight:700;min-height:36px;min-width:36px;touch-action:manipulation;}
.swipe-nav-btn:disabled{opacity:.3;cursor:default;}
.res-band{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.2);border-radius:20px;
  padding:7px 18px;font-size:14px;font-weight:700;margin-top:10px;
}
.scores-wrap{margin-bottom:20px;}
.score-item{
  display:flex;align-items:center;gap:12px;
  padding:12px 0;border-bottom:1px solid var(--border);
}
.score-item:last-child{border:none;}
.score-ico{font-size:20px;width:28px;text-align:center;flex-shrink:0;}
.score-data{flex:1;}
.score-name{font-size:14px;font-weight:700;margin-bottom:5px;}
.score-bar-w{height:7px;background:var(--teal-l);border-radius:4px;overflow:hidden;}
.score-bar-f{height:100%;border-radius:4px;transition:width 1.2s ease;}
.score-pct{font-family:'DM Mono',monospace;font-size:14px;font-weight:500;width:40px;text-align:right;}
.radar-box{background:rgba(255,255,255,.85);border-radius:var(--r);border:1px solid rgba(255,255,255,.6);padding:18px;margin-bottom:20px;backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);}
.box-title{font-size:14px;font-weight:700;margin-bottom:14px;color:var(--dark);}
.reco-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
.reco-item{
  background:rgba(255,255,255,.85);border-radius:18px;padding:16px 18px;
  display:flex;gap:14px;border:1px solid rgba(255,255,255,.6);
  border-left:4px solid var(--teal);
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.reco-item.warn{border-left-color:var(--orange);}
.reco-item.good{border-left-color:var(--green);}
.reco-ico{font-size:22px;flex-shrink:0;margin-top:1px;}
.reco-body{font-size:14px;line-height:1.65;color:var(--dark);}
.reco-body strong{display:block;font-weight:700;margin-bottom:3px;}
.pbseq-card{
  background:linear-gradient(135deg,#2E4A42,#3A5E52);
  border-radius:16px;padding:22px 24px;
  display:flex;align-items:center;gap:16px;margin-bottom:20px;color:white;
}
.pbseq-ico{font-size:34px;}
.pbseq-txt .n{font-size:14px;font-weight:700;color:var(--teal);}
.pbseq-txt .d{font-size:14px;opacity:.65;margin-top:3px;line-height:1.5;}
.pbseq-btn{
  margin-left:auto;padding:10px 16px;background:var(--teal);
  color:white;border:none;border-radius:10px;font-weight:700;font-size:14px;
  cursor:pointer;white-space:nowrap;flex-shrink:0;
}
.print-btn{
  width:100%;padding:16px;background:rgba(255,255,255,.85);color:var(--teal);
  border:1.5px solid var(--border-strong);border-radius:16px;
  font-family:'Noto Sans','Noto Sans KR',sans-serif;font-size:15px;font-weight:700;
  cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);margin-bottom:10px;
  display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:52px;backdrop-filter:blur(12px);
}
.print-btn:hover{border-color:var(--teal);background:var(--teal-l);transform:translateY(-2px);box-shadow:var(--shadow);}

/* ══════════════════════════════
   TOAST
══════════════════════════════ */
.toast{
  position:fixed;top:0;left:50%;transform:translateX(-50%) translateY(-80px);
  background:var(--dark);color:white;
  padding:14px 28px;border-radius:28px;
  font-size:14px;font-weight:600;z-index:9999;
  transition:transform .3s cubic-bezier(.34,1.56,.64,1);
  white-space:nowrap;pointer-events:none;
  box-shadow:0 6px 20px rgba(0,0,0,.18);
}
/* PR #229 (Build 27, fix v11) — Day 32 toast safe-area fallback.
   Image 6/10: toast 'Family member added' / 'Switched to Mom' 이 'Hi, ...' 위 status bar 영역 침범.
   Root cause: env(safe-area-inset-top, 0px) fallback 0 — .shell v10 동일 패턴.
   Fix: max() 강제 minimum 44px (iPhone 12+ status bar 보장). */
.toast.show{transform:translateX(-50%) translateY(calc(20px + max(env(safe-area-inset-top,0px), 44px)));}

/* ══════════════════════════════
   PRINT REPORT STYLES
══════════════════════════════ */
@media print{
  body,html{overflow:visible!important;height:auto!important;}
  .shell{width:100%!important;height:auto!important;border-radius:0!important;box-shadow:none!important;}
  .screen{display:none!important;}
  #print-report{display:block!important;position:static!important;padding:20px!important;}
  .pr-close{display:none!important;}
  /* BUG-009: ensure print-friendly rendering */
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;}
}
#print-report{
  display:none;
  position:fixed;inset:0;background:white;z-index:10000;
  overflow-y:auto;padding:40px;
}
.pr-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:32px;}
.pr-logo{font-size:28px;font-weight:800;color:var(--teal);}
.pr-logo em{font-style:normal;opacity:.5;color:var(--dark);}
.pr-meta{text-align:right;font-size:14px;color:var(--muted);}
.pr-title{font-size:22px;font-weight:800;color:var(--dark);margin-bottom:4px;}
.pr-subtitle{font-size:14px;color:var(--muted);margin-bottom:28px;}
.pr-section{margin-bottom:24px;}
.pr-sec-title{font-size:14px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border-bottom:2px solid var(--teal-l);padding-bottom:6px;margin-bottom:14px;}
.pr-score-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:24px;}
@media(max-width:600px){
  .pr-score-grid{grid-template-columns:repeat(2,1fr);}
  #print-report{padding:16px;}
  .pr-header{flex-direction:column;gap:8px;}
  .pr-meta{text-align:left;}
  .pr-title{font-size:18px;}
}
.pr-score-box{background:var(--teal-l);border-radius:12px;padding:14px;text-align:center;}
.pr-score-v{font-size:26px;font-weight:900;color:var(--teal);}
.pr-score-l{font-size:14px;color:var(--mid);font-weight:600;margin-top:3px;}
.pr-close{
  position:sticky;top:20px;float:right;
  padding:10px 20px;background:var(--red);color:white;
  border:none;border-radius:10px;cursor:pointer;font-weight:700;font-size:14px;
}

/* ── LANG TOGGLE BUTTON ── */
.lang-toggle{
  background:rgba(255,255,255,.95);backdrop-filter:blur(10px);
  border:1px solid var(--border-strong);border-radius:16px;
  padding:4px 10px;font-size:14px;font-weight:700;
  color:var(--teal-d);cursor:pointer;font-family:'Noto Sans','Noto Sans KR',sans-serif;
  box-shadow:var(--shadow-sm);transition:.15s;display:none;
  margin-left:auto;flex-shrink:0;white-space:nowrap;
}
.lang-toggle:hover{background:var(--teal-l);}
.lang-toggle.visible{display:inline-block;}

/* ── CHART CUTOFF LINE ── */
.history-mini{position:relative;}

/* ══════════════════════════════
   FULL HISTORY (MNM-022)
══════════════════════════════ */
#history-full-section{
  background:rgba(255,255,255,.85);border-radius:var(--r);border:1px solid rgba(255,255,255,.6);
  padding:20px 22px;overflow:hidden;
  backdrop-filter:blur(20px);box-shadow:var(--shadow-sm);
}
.hist-presets{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;}
.hist-preset{
  padding:7px 16px;border:1.5px solid var(--border-strong);border-radius:30px;
  font-size:14px;font-weight:700;color:var(--muted);background:white;
  cursor:pointer;transition:all .15s;font-family:'Noto Sans','Noto Sans KR',sans-serif;
}
.hist-preset:hover{border-color:var(--teal);color:var(--teal-d);}
.hist-preset.active{border-color:var(--teal);background:var(--teal-l);color:var(--teal-d);}
.hist-filters{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;max-width:100%;overflow:hidden;}
@media(max-width:360px){
  .hist-date-row{flex-direction:column;align-items:stretch;}
  .hist-date-inp{width:100%;}
}
.hist-date-row{display:flex;align-items:center;gap:8px;max-width:100%;overflow:hidden;flex-wrap:wrap;}
.hist-label{font-size:14px;font-weight:600;color:var(--muted);white-space:nowrap;}
.hist-date-inp{flex:1;padding:10px 12px;font-size:16px;min-height:40px;min-width:0;max-width:100%;box-sizing:border-box;}
.hist-select{padding:10px 12px;font-size:16px;min-height:40px;}
.hist-count{font-size:14px;color:var(--muted);font-weight:600;margin-bottom:10px;}
.hist-entry{
  display:flex;align-items:center;gap:12px;
  padding:14px 0;border-bottom:1px solid var(--border-strong);
  cursor:pointer;transition:background .12s;
}
.hist-entry:last-child{border-bottom:none;}
.hist-entry:active{background:var(--teal-l);border-radius:var(--r-xs);}
.hist-entry-icon{font-size:20px;flex-shrink:0;width:28px;text-align:center;}
.hist-entry-info{flex:1;min-width:0;}
.hist-entry-disease{font-size:14px;font-weight:700;color:var(--dark);}
.hist-entry-date{font-size:14px;color:var(--muted);margin-top:2px;}
.hist-entry-score{
  font-family:'DM Mono',monospace;font-size:15px;font-weight:700;
  flex-shrink:0;padding:5px 12px;border-radius:20px;
}
.hist-empty{
  text-align:center;padding:24px 16px;color:var(--muted);font-size:14px;
}

/* ══════════════════════════════
   BETA ONBOARDING (MNM-025)
══════════════════════════════ */
#s-beta-onboard .scrollable{padding:24px 24px 32px;}
.beta-step{animation:screenIn .32s cubic-bezier(.4,0,.2,1);}
.beta-hero{text-align:center;margin-bottom:24px;}
.beta-hero-icon{font-size:80px;margin-bottom:14px;line-height:1;}
.beta-hero-title{font-size:24px;font-weight:800;color:var(--dark);line-height:1.3;}
.beta-desc{font-size:17px;line-height:1.8;color:var(--mid);margin-bottom:24px;text-align:center;}
.beta-what-list{display:flex;flex-direction:column;gap:14px;margin-bottom:28px;}
.beta-what-item{
  display:flex;align-items:center;gap:14px;
  background:var(--teal-l);border-radius:14px;padding:16px 18px;
  font-size:16px;color:var(--dark);line-height:1.5;
}
.beta-what-num{
  width:36px;height:36px;border-radius:50%;
  background:var(--teal);color:white;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:800;flex-shrink:0;
}
.beta-consent-box{
  max-height:240px;overflow-y:auto;
  background:var(--teal-l);border-radius:14px;padding:18px 20px;
  font-size:15px;line-height:1.8;color:var(--mid);margin-bottom:20px;
  border:1px solid var(--border);
}
.beta-check-row{margin-bottom:14px;}
.beta-check-label{
  display:flex;align-items:flex-start;gap:12px;
  font-size:16px;color:var(--dark);cursor:pointer;
  padding:12px 16px;background:white;border-radius:12px;
  border:1.5px solid var(--border-strong);transition:.15s;
  min-height:48px;
}
.beta-check-label:has(input:checked){border-color:var(--teal);background:var(--teal-l);}
.beta-cb{
  width:22px;height:22px;accent-color:var(--teal);
  flex-shrink:0;margin-top:2px;cursor:pointer;
}
.beta-inp{font-size:18px!important;padding:16px 18px!important;}
.beta-btn{height:56px;font-size:18px!important;margin-top:8px;}

/* ══════════════════════════════
   FAMILY TEST (Phase 4)
══════════════════════════════ */
.family-card{
  display:flex;align-items:center;gap:14px;
  background:rgba(255,255,255,.85);border-radius:18px;padding:18px 20px;
  border:1px solid rgba(255,255,255,.6);cursor:pointer;transition:all .2s;
  margin-bottom:12px;backdrop-filter:blur(12px);
  box-shadow:var(--shadow-sm);
}
.family-card:hover{border-color:var(--teal);box-shadow:var(--shadow);transform:translateY(-2px);}
.family-card-icon{
  width:48px;height:48px;border-radius:14px;
  background:var(--teal-l);display:flex;align-items:center;justify-content:center;
  font-size:24px;flex-shrink:0;
}
.family-card-info{flex:1;min-width:0;}
.family-card-name{font-size:15px;font-weight:700;color:var(--dark);}
.family-card-sub{font-size:14px;color:var(--muted);margin-top:2px;}
.family-card-arrow{font-size:18px;color:var(--muted);flex-shrink:0;}
.family-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.family-delete-btn{
  width:32px;height:32px;border-radius:50%;border:none;
  background:rgba(234,67,53,.08);color:var(--red);cursor:pointer;
  font-size:14px;display:flex;align-items:center;justify-content:center;
  transition:.15s;
}
.family-delete-btn:hover{background:rgba(234,67,53,.18);}

.family-relation-grid{
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;
}
.family-relation-btn{
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:20px 12px;border-radius:16px;border:1.5px solid var(--border-strong);
  background:rgba(255,255,255,.85);cursor:pointer;transition:.2s;
  font-family:inherit;
}
.family-relation-btn:hover{border-color:var(--teal-m);background:var(--teal-l);}
.family-relation-btn.selected{border-color:var(--teal);background:var(--teal-l);box-shadow:0 0 0 2px rgba(46,107,90,.15);}
.family-rel-icon{font-size:32px;}
.family-rel-text{font-size:14px;font-weight:600;color:var(--dark);}

.family-upgrade-banner{
  display:flex;align-items:center;gap:12px;
  background:#FFF5E6;
  border:1.5px solid rgba(251,188,4,.35);border-radius:16px;
  padding:14px 16px;margin-top:20px;
}
.family-upgrade-icon{font-size:22px;flex-shrink:0;line-height:1;}
.family-upgrade-text{flex:1;min-width:0;overflow:hidden;}
.family-upgrade-text>div:first-child{font-size:14px;font-weight:700;color:var(--dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.family-upgrade-text>div:last-child{font-size:14px;color:var(--muted);margin-top:2px;line-height:1.3;}
.family-upgrade-btn{
  flex-shrink:0;background:var(--teal);color:white;border:none;border-radius:10px;
  padding:8px 16px;font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap;
  font-family:inherit;
}
.family-self{border-left:3px solid var(--teal);}

/* ══════════════════════════════
   M007: 모바일 반응형 보강
   — iPhone SE(375), mini(360) 대응
══════════════════════════════ */
@media(max-width:390px){
  /* Splash */
  #s-splash{ padding:clamp(36px,8vh,56px) 20px clamp(28px,5vh,44px); }
  .brain-ring:first-child{ width:150px;height:150px; }
  .brain-ring:nth-child(2){ width:188px;height:188px; }
  .brain-core{ width:110px;height:110px;font-size:52px; }
  .btn-splash-main{ font-size:15px;padding:16px; }
  .btn-splash-sec{ font-size:14px;padding:12px; }

  /* Login */
  .login-hero-title{ font-size:24px; }
  .login-hero-sub{ font-size:14px; }

  /* 옵션 버튼 — 좁은 화면에서 wrap 되도록 */
  .or-opt{ min-width:70px;padding:12px 14px;font-size:14px; }
  .or-grid-compact .or-opt{ min-width:60px;padding:10px 12px;font-size:14px; }
  .mem-word{ min-width:65px;padding:10px 12px;font-size:14px; }

  /* 숫자 패드 */
  .num-key{ padding:16px 8px;font-size:20px;min-height:52px; }

  /* 테스트 본문 패딩 */
  .test-body{ padding:18px 16px; }

  /* 대시보드 카드 */
  .d-card{ padding:16px; }

  /* 단어 표시 */
  .word-big{ font-size:clamp(28px,9vw,38px);letter-spacing:3px; }
}

@media(max-width:360px){
  /* 추가 축소 — Galaxy S8(360), iPhone 4(320) */
  .splash-brand{ font-size:clamp(30px,11vw,42px); }
  .or-opt{ min-width:60px;padding:10px 12px;font-size:14px; }
}

/* ══════════════════════════════
   READY SCREEN (준비 화면)
   Inserted before Memory / Voice / Clock / AltTap
══════════════════════════════ */
.ready-screen{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:calc(100vh - 120px);
  padding:32px 24px;text-align:center;
  animation:fadeInUp .3s ease;
}
@keyframes fadeInUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
.ready-icon{
  font-size:64px;margin-bottom:20px;
  animation:iconPop .4s cubic-bezier(.34,1.56,.64,1);
}
@keyframes iconPop{from{transform:scale(.5);opacity:0;}to{transform:scale(1);opacity:1;}}
.ready-label{
  font-size:14px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--teal);background:var(--teal-l);
  padding:4px 14px;border-radius:20px;margin-bottom:16px;
}
.ready-instr{
  font-size:clamp(18px,5vw,22px);font-weight:700;color:var(--dark);
  line-height:1.45;margin-bottom:40px;
  max-width:280px;
}
.ready-btn-wrap{ width:100%;max-width:320px; }

/* ══════════════════════════════════════════════════════════════════
   iPad Mid-Tier — @media(min-width:768px) and (max-width:1023px)
   Build 5 (CMD-D21-A017, Day 21 2026-05-04 PDT, Apple reject ec80baba 시정)
   Apple Build 4 reject 사유 #2 (Guideline 4): iPad Air 11" (M3) not optimized
   - iPad Air 11" portrait (820 × 1180 pt) 의 600~1023 dead zone 시정
   - iPhone (default 18px) → iPad mid (22px) → iPad large (28px) 3-tier scaling
   - Touch target: iPhone (44) → iPad mid (56) → iPad large (64)
   ⚠️ DESIGN agent 후속 review 의무 (per-screen layout 정합, DESIGN_SYSTEM v1.4 백로그 P0 격상)
   ⚠️ baseline scale only — Phase 2 백로그 (TASK-DESIGN-IPAD-MID-V2) 에서 per-screen 시각 검증
   ══════════════════════════════════════════════════════════════════ */
@media(min-width:768px) and (max-width:1023px){
  /* Shell — iPad portrait 820pt 활용 (iPhone .shell 420×820 보존 ❌, 풀스크린 전환) */
  body{
    display:block;
    align-items:initial;
    justify-content:initial;
    font-size:22px;            /* 18 → 22 → 28 (3-tier mid) */
    line-height:1.65;
  }
  .shell{
    width:100%;
    height:100vh;
    border-radius:0;
    box-shadow:none;
    max-width:none;
  }

  /* Splash — mid-tier 가속 (시니어 가독성 floor 22px) */
  .splash-brand{ font-size:64px; }                                 /* 40 → 64 → 88 */
  .splash-sub{ font-size:18px !important; letter-spacing:3px; }    /* 14 → 18 → 24 */
  .splash-pills{ gap:14px; max-width:760px; margin:0 auto 28px; }
  .s-pill,.splash-pills .s-pill{ font-size:24px !important; padding:12px 22px !important; min-height:48px; }
  .btn-splash-main,.btn-splash-sec{
    font-size:24px !important;
    min-height:56px !important;            /* 44 → 56 → 64 */
    padding:18px 28px !important;
  }
  #splash-lang-btn{ font-size:18px !important; padding:14px 26px !important; min-height:48px !important; }
  .splash-hipaa-notice{ font-size:18px !important; padding:16px 22px !important; max-width:720px; margin-left:auto !important; margin-right:auto !important; }
  .splash-hipaa-notice span{ font-size:18px !important; line-height:1.6 !important; }
  .legal-links{ font-size:18px !important; }
  .legal-links a{ font-size:18px !important; }

  /* Modal / bottom-sheet — iPad portrait max-width */
  .bottom-sheet{ max-width:560px; }                                 /* 420 → 560 → 700 */

  /* Test screens — mid-tier 시니어 가독성 */
  .test-progress{ max-width:400px; }                                /* 320 → 400 → 480 */
  .maze-grid{ max-width:480px; }                                    /* 320 → 480 → 600 */

  /* Touch targets — iPad mid (56px primary) */
  .chip,.role-tab{ min-height:48px; font-size:22px; }
  .pbs-cta,.btn{ min-height:56px; font-size:22px; }

  /* Header — mid-tier 가속 (모든 화면 공통) */
  .hdr{ padding:18px 28px 16px; }
  .hdr-back{ width:56px; height:56px; font-size:26px; }
  .hdr-title{ font-size:32px !important; }                          /* 20 → 32 → 44 */
  .hdr-badge{ font-size:18px; padding:12px 22px; min-height:48px; }
}

/* ══════════════════════════════════════════════════════════════════
   iPad Phase 1 — @media(min-width:1024px) v1.2 (시니어 UI 가속)
   Day 16 (2026-04-28 14:35 PDT), DESIGN_SYSTEM v1.2 정합
   대표님 명령 (ipad-1-splash.png 시각 검증 후 부제/disclaimer/footer 작음 발견)
   iPhone 600~767px 데스크톱 환경 보존 (변경 ❌, strict)
   ══════════════════════════════════════════════════════════════════ */
@media(min-width:1024px){
  /* Shell — iPad 풀스크린 활용 (iPhone 600~767px .shell 420×820 보존) */
  body{
    display:block;
    align-items:initial;
    justify-content:initial;
    font-size:var(--pad-font-base);          /* v1.2 28px (시니어 floor) */
    line-height:var(--pad-line-height);      /* 1.7 */
  }
  .shell{
    width:100%;
    height:100vh;
    border-radius:0;
    box-shadow:none;
    max-width:none;
  }

  /* Splash — v1.2 시니어 UI 강화 가속 */
  .splash-brand{ font-size:var(--pad-font-display); }                            /* 88px lock */
  .splash-sub{ font-size:var(--pad-font-caption) !important; letter-spacing:4px; }/* 24px */
  .splash-pills{ gap:18px; max-width:1000px; margin:0 auto 36px; }
  .s-pill,.splash-pills .s-pill{ font-size:var(--pad-font-body-lg) !important; padding:14px 28px !important; min-height:var(--pad-touch); } /* 32px chip */
  .btn-splash-main,.btn-splash-sec{
    font-size:var(--pad-font-body-lg) !important;        /* 32px CTA */
    min-height:var(--pad-touch-lg) !important;            /* 64px 시니어 touch */
    padding:22px 36px !important;
  }
  /* Splash inline-styled elements (HTML inline → !important override) */
  #splash-lang-btn{ font-size:var(--pad-font-disclaimer) !important; padding:16px 32px !important; min-height:var(--pad-touch) !important; }
  .splash-hipaa-notice{ font-size:var(--pad-font-disclaimer) !important; padding:18px 24px !important; max-width:900px; margin-left:auto !important; margin-right:auto !important; }
  .splash-hipaa-notice span{ font-size:var(--pad-font-disclaimer) !important; line-height:1.6 !important; }
  .legal-links{ font-size:var(--pad-font-disclaimer) !important; }
  .legal-links a{ font-size:var(--pad-font-disclaimer) !important; }

  /* Modal / bottom-sheet — iPad max-width 확장 */
  .bottom-sheet{ max-width:var(--pad-bottom-sheet); }   /* 700px */

  /* Test screens — 시니어 가독성 + 컴포넌트 확장 */
  .test-progress{ max-width:var(--pad-test-progress); } /* 480px */
  .maze-grid{ max-width:var(--pad-maze-grid); }         /* 600px */

  /* Touch targets — iPad 48 / 64px (시니어 v1.2 가속) */
  .chip,.role-tab{ min-height:var(--pad-touch); font-size:var(--pad-font-body-lg); }    /* 48px / 32px */
  .pbs-cta,.btn{ min-height:var(--pad-touch-lg); font-size:var(--pad-font-body-lg); }   /* 64px / 32px */

  /* Header — iPad 가속 (모든 화면 공통) */
  .hdr{ padding:22px 36px 20px; }
  .hdr-back{ width:64px; height:64px; font-size:32px; }                            /* v1.2 시니어 touch 64 */
  .hdr-title{ font-size:var(--pad-font-h2) !important; }                           /* 44px (전 20px) */
  .hdr-badge{ font-size:var(--pad-font-disclaimer); padding:14px 28px; min-height:var(--pad-touch); }

  /* Card — iPad 가속 padding + 본문 폰트 */
  .card-body{ padding:32px; font-size:var(--pad-font-body); line-height:1.7; }     /* 28px */

  /* Headings — iPad scale (Dashboard / Results 화면) */
  h1,.h1{ font-size:var(--pad-font-h1); }       /* 56px */
  h2,.h2{ font-size:var(--pad-font-h2); }       /* 44px */
  h3,.h3{ font-size:32px; }

  /* ════════════════════════════════════════════════════════════════
     🔴 룰 #29 통합 가속 (2026-04-28 Day 16 PM 15:30 PDT)
     B안: 글로벌 selector + ID prefix + 14px 클래스 그룹 매핑
     P0+P1 188건 일괄 (CSV 정본: agents/DEV/audits/SENIOR_UI_AUDIT_v1.csv)
     iPad 1024px+ scope only — iPhone (440pt) / desktop 영향 ❌
     ════════════════════════════════════════════════════════════════ */

  /* ── L1. body inherit 28px floor (95% block, 보조 수단) ───── */
  /* (이미 line 1259에서 body font-size:var(--pad-font-base) 28px 적용) */

  /* ── L2. ID prefix 일괄 강제 (inline 56건 위반 처리) ──────── */
  /* iPad scope only — !important 필수 (inline specificity 1000 dominate) */
  [id^="t-"]:not(.icon),
  [id^="dash-"]:not(.icon),
  [id^="dr-"]:not(.icon),
  [id^="ld-"]:not(.icon),
  [id^="r-"]:not(.icon),
  [id^="family-"]:not(.icon),
  [id^="hist-"]:not(.icon),
  [id^="beta-"]:not(.icon),
  [id^="admin-"]:not(.icon),
  #google-signin-btn{
    font-size:var(--pad-font-body) !important;                                     /* 28px floor */
  }
  /* ID suffix 패턴 — caption/label/meta/date/count → 24px */
  [id$="-lbl"]:not(.icon),
  [id$="-label"]:not(.icon),
  [id$="-hint"]:not(.icon),
  [id$="-meta"]:not(.icon),
  [id$="-date"]:not(.icon),
  [id$="-count"]:not(.icon),
  [id$="-band"]:not(.icon),
  [id$="-stat-l"]:not(.icon),
  [id$="-stat-v"]:not(.icon),
  [id$="-sub"]:not(.icon),
  [id*="-disclaimer"]:not(.icon){
    font-size:var(--pad-font-caption) !important;                                  /* 24px floor */
  }
  /* Disclaimer 패턴 (line-height + padding 동시) */
  [id$="-disclaimer"],[id*="disclaimer"]{
    font-size:var(--pad-font-disclaimer) !important;                               /* 22px */
    line-height:1.6 !important;
    padding:18px 24px !important;
  }

  /* ── L3. Welcome / Login (P1) ──────────────────────────────── */
  .login-hero-title{ font-size:var(--pad-font-h1) !important; }                    /* 56px (전 28px) */
  .login-hero-sub{ font-size:var(--pad-font-body) !important; line-height:1.6; }   /* 28px (전 15px) */

  /* ── L4. Dashboard quick-card (P1) ─────────────────────────── */
  .quick-card{ padding:32px 28px; min-height:140px; }
  .quick-icon{ font-size:56px; }                                                   /* 30 → 56 (icon 명시 보존) */
  .quick-label{ font-size:var(--pad-font-body-lg); }                               /* 18 → 32 */
  .quick-sub{ font-size:var(--pad-font-caption); line-height:1.55; }               /* 15 → 24 */
  .quick-card--featured .quick-icon{ font-size:64px; }
  .quick-card--featured .quick-label{ font-size:36px; }
  .quick-card--featured .quick-sub{ font-size:var(--pad-font-caption); }
  .dash-score-max{ font-size:var(--pad-font-body); }                               /* 16 → 28 */

  /* ── L5. Results 화면 특화 (실제 클래스 매핑) ─────────────── */
  .res-hero{ padding:48px 32px; }
  .res-score-num{ font-size:var(--pad-font-score) !important; line-height:1; }     /* 72 → 120 */
  .res-score-sub{ font-size:var(--pad-font-body-lg) !important; }                  /* 15 → 32 */
  .res-band{ font-size:var(--pad-font-body) !important; padding:14px 32px; min-height:var(--pad-touch); }
  .res-hero::after{ font-size:140px !important; }                                  /* 80 → 140 (deco) */
  #r-disease-lbl{ font-size:36px !important; letter-spacing:1.2px !important; font-weight:700 !important; opacity:.9 !important; }
  #r-date{ font-size:var(--pad-font-caption) !important; opacity:.85 !important; }

  /* Domain Breakdown */
  .scores-wrap{ padding:0 32px !important; margin-bottom:32px; }
  .score-item{ padding:24px 0; gap:24px; }
  .score-name{ font-size:var(--pad-font-body-lg) !important; margin-bottom:10px; } /* 14 → 32 */
  .score-bar-w{ height:14px; }                                                     /* 7 → 14 */
  .score-pct{ font-size:var(--pad-font-body) !important; width:80px !important; } /* 14 → 28 */
  .box-title{ font-size:36px !important; margin-bottom:24px !important; font-weight:700 !important; }   /* 14 → 36 */
  .radar-box{ padding:28px !important; margin:0 32px 28px !important; }

  /* Recommendations */
  .reco-list{ gap:16px; margin-bottom:28px; }
  .reco-item{ padding:24px; gap:18px; }
  .reco-body{ font-size:var(--pad-font-body) !important; line-height:1.65; }       /* 14 → 28 */

  /* Print / Action 버튼 */
  .print-btn{ font-size:var(--pad-font-body) !important; min-height:var(--pad-touch-lg); padding:18px 32px !important; }

  /* PBSeq Card */
  .pbseq-card{ padding:32px !important; }
  .pbseq-card .n,.pbseq-txt .n{ font-size:var(--pad-font-body-lg) !important; }    /* 32px */
  .pbseq-card .d,.pbseq-txt .d{ font-size:var(--pad-font-body) !important; line-height:1.6; }   /* 28px */
  .pbseq-btn{ font-size:var(--pad-font-disclaimer) !important; padding:14px 28px !important; min-height:var(--pad-touch); }

  /* ── L6. 14px CSS class 그룹 매핑 (87건 일괄) ─────────────── */
  /* Caption 그룹 (34건 → 24px) */
  .pbs-modal-sub,.hdr-badge,.inp-label,.sec-title,.photo-change-lbl,.splash-sub,
  .divider,.doc-meta,.doc-code,.pt-meta,.dash-score-label,.hc-lbl,
  .streak-label,.streak-sub,.cat-meta,.test-tag,.test-timer-badge,
  .tap-lbl,.serial-sub,.trail-error-count,.maze-timer-row,.r-swipe-hint,
  .toast,.pr-meta,.pr-subtitle,.hist-label,.hist-count,.hist-empty,
  .hist-entry-date,.beta-desc,.beta-check-label,.family-card-sub,
  .family-rel-text,.alt-tap-stat-l{
    font-size:var(--pad-font-caption);                                             /* 24px */
  }

  /* Body 그룹 (43건 → 28px) */
  .pbs-feat,.pbs-skip,.btn-ghost,.prog-top,.pt-score-pill,
  .alert-banner-sm,.social-btn,.disease-desc-box,.d-card-name,.d-card-abbr,
  .d-card-desc,.d-card-check,.test-qnum,.test-instr,.ans-btn,.ans-letter,
  .word-num,.r-chip,.recall-inp,.btn-sm-teal,.tap-stat-l,.tap-stat-v,
  .tap-lbl + *,.or-grid-compact,.or-opt,.or-input,.mem-word,.mem-hint,
  .trail-node,.maze-cell,.maze-timer-num,.vb-consent-btn,.vb-sentence,
  .vb-metric-v,.lg-sentence,.lg-textarea,.beta-what-num,.beta-what-item,
  .beta-consent-box,.beta-inp,.beta-btn,.family-card-name,.family-delete-btn,
  .family-upgrade-text,.family-upgrade-btn,.family-self,.ready-label,
  .reco-ico,.score-ico,.r-tab,.swipe-nav-btn,.color-btn,.cat-icon-box,
  .cat-name,.cat-status,.test-q,.pr-title,.pr-sec-title,.pr-score-l,
  .hist-preset,.hist-date-inp,.hist-select,.hist-entry-disease,.hist-entry-score,
  .lang-toggle,.family-upgrade-icon{
    font-size:var(--pad-font-body);                                                /* 28px */
  }

  /* Section 그룹 (4건 → 36px) */
  .card-header,.vb-metric-l,.lg-word-list,.box-title{
    font-size:36px;
  }

  /* ── L7. 18-22px borderline (P1 보강) ────────────────────── */
  /* doc-name / pt-name 15px / 17px → 28px */
  .doc-name,.pt-name{ font-size:var(--pad-font-body); }                            /* 28px */

  /* ── L7-2. Inline-style override (위반 #16 recur 시정, 2026-04-29) ───── */
  /* #t-longitudinal: HTML inline font-size:14px 제거 후 명시 28px floor 보장 */
  #t-longitudinal{ font-size:var(--pad-font-body); }                                /* 28px (시니어 floor) */

  /* ── L7-3. Inline-style 16-ID batch override (위반 #16 stage 1, 2026-04-29) ─ */
  /* 시니어 가독성 floor 28px uniform — 각 element는 다른 inline rule (color/opacity/weight) 보존 */
  #dash-date, #dash-last-date, #dash-ma-count, #dash-ma-band,
  #dash-at-count, #dash-at-band, #dash-disclaimer,
  #dr-code-display, #dr-code-big, #dr-pf-email, #dr-pf-code,
  #ld-hospital, #ld-phone-btn, #ld-email-btn,
  #r-disease-lbl, #r-date{
    font-size:var(--pad-font-body);                                                /* 28px */
  }

  /* ── L7-4. Inline-style Dashboard t-* 8-ID batch (위반 #16 stage 2, 2026-04-29) ── */
  /* Dashboard 메트릭 라벨 + Wait-list 영역 + Support btn — uniform 28px floor */
  #t-last-score-lbl, #t-monthly-avg-lbl, #t-alltime-lbl,
  #t-waitlist-banner-desc, #t-waitlist-cta, #t-waitlist-form-title,
  #t-waitlist-disclaimer, #t-contact-support-btn{
    font-size:var(--pad-font-body);                                                /* 28px */
  }

  /* ── L8. ICON 예외 — body inherit 차단 (revert → 명시 보존) ─── */
  /* 참고: ICON 클래스 대부분 자체 font-size 명시 보유 (예: .brain-core 64px,
     .quick-icon 30→56px, .score-ico 20→48px). body 28px inherit은 explicit
     class rule을 못 이김 (specificity). 본 L8은 plain emoji span 등 unclassed
     element 보호용 — `revert` 키워드 ❌ (UA default 16px 강제 위험) */
  .splash-pills .s-pill > .icon,
  .tab-bar .tab > .icon,
  .reco-ico,.score-ico,.quick-icon,.brain-core,
  i[class*="fa-"]{
    /* 명시 폰트 유지 — 별도 가속 ❌ */
  }

  /* ── L9. 안전망 — small / muted ───────────────────────── */
  .muted,small{ font-size:var(--pad-font-caption); }                               /* 24px */

  /* ── Phase F-1 (Apple reject 4 Design, ec80baba) — Login + Dashboard iPad ── */
  #s-login .login-card{ max-width:600px; margin:0 auto; }
  .quick-grid{ grid-template-columns:repeat(3,1fr); }
}

/* iPad Pro 13" landscape / 큰 데스크톱 (1366px+) — Phase 1 보조 */
@media(min-width:1366px){
  /* 추가 layout 가속 (Phase 2 백로그 — 2-col / 3-col grid 확장) */
  /* Phase 1 = portrait only (대표님 5건 컨펌 #5) → landscape Phase 2 */
}
