/* 집 저울 · spec-003
   Canonical contract: BRAND.md -> DESIGN.md -> tokens + typography.
   The four legacy --token-accent-* provider names are compatibility aliases
   only; product components MUST use --poly-*, --risk-* and --price-* names.
   Theme on a root or subtree must supply semantic aliases at that same scope. */
:root,
html[data-theme="light"] {
  
  --token-bg-base: #FAFAFA;
  --token-bg-surface: #FFFFFF;
  --token-bg-elevated: #F4F4F5;
  --token-bg-glass: rgba(255, 255, 255, 0.86);
  --border-specular: rgba(255, 255, 255, 0.78);

  --surface-canvas: var(--token-bg-base);
  --solid-surface: var(--token-bg-base);
  --surface-card: var(--token-bg-surface);
  --surface-sheet: var(--token-bg-elevated);
  --surface-inset: #F4F4F5;

  
  --token-text-primary: #09090B;
  --token-text-secondary: #3F3F46;
  --token-text-muted: #62626B;

  --text-primary: var(--token-text-primary);
  --text-secondary: var(--token-text-secondary);
  --text-muted: var(--token-text-muted);

  
  --token-border-subtle: rgba(9, 9, 11, 0.08);
  --token-border-strong: rgba(9, 9, 11, 0.15);
  --border-subtle: var(--token-border-subtle);
  --border-strong: var(--token-border-strong);

  --shadow-card: 0 1px 2px rgba(9, 9, 11, 0.04), 0 4px 12px rgba(9, 9, 11, 0.03);
  --shadow-sheet: 0 12px 32px -4px rgba(9, 9, 11, 0.10), 0 2px 6px rgba(9, 9, 11, 0.04);

  
  --token-accent-primary: #18181B;
  /* Official logo C1 처마와 주춧돌 (BRAND.md §로고): mark ink on light, paper on dark. */
  --token-brand-mark-ink: #18181B;
  --token-brand-mark-paper: #FAF9F6;
  --brand-mark-fill: var(--token-brand-mark-ink);
  --token-accent-claude: var(--poly-moa-stroke);
  --token-accent-codex: var(--poly-shintong-stroke);
  --token-accent-gemini: var(--poly-union-stroke);
  --token-accent-muse: var(--poly-initial-stroke);
  --token-status-success: var(--risk-safe);
  --token-status-warning: var(--risk-caution);
  --token-status-danger: var(--risk-danger);

  
  --token-radius-sm: 6px;
  --token-radius-md: 10px;
  --token-radius-lg: 14px;
  --token-radius-full: 9999px;

  --radius-sm: var(--token-radius-sm);
  --radius-md: var(--token-radius-md);
  --radius-lg: var(--token-radius-lg);

  
  --font-caption: 12px;
  --font-body: 14px;
  --font-title: 16px;
  --font-display: 28px;

  --text-xs: var(--font-caption);
  --text-sm: var(--font-body);
  --text-base: var(--font-title);
  --text-lg: var(--font-display);

  
  --font-sans: var(--font-brand-hybrid, "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif);
  --font-mono: "JetBrains Mono", "SF Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  
  --ease-spring: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-micro: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  --dur-instant: 90ms;
  --dur-fast: 150ms;
  --dur-normal: 220ms;
  --dur-sheet: 300ms;

  --press-scale: 0.97;
  --hover-lift: -1px;

  --touch-target-min: 44px;
}

.dark, html[data-theme="dark"] {
  --token-bg-base: #09090B;
  --token-bg-surface: #121215;
  --token-bg-elevated: #18181C;
  --token-bg-glass: rgba(18, 18, 21, 0.86);
  --border-specular: rgba(255, 255, 255, 0.14);

  --surface-canvas: var(--token-bg-base);
  --solid-surface: var(--token-bg-base);
  --surface-card: var(--token-bg-surface);
  --surface-sheet: var(--token-bg-elevated);
  --surface-inset: #18181C;

  --token-text-primary: #FAFAFA;
  --token-text-secondary: #A1A1AA;
  --token-text-muted: #A1A1AA;

  --token-border-subtle: rgba(255, 255, 255, 0.08);
  --token-border-strong: rgba(255, 255, 255, 0.15);

  --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.36), 0 0 0 1px rgba(255, 255, 255, 0.06);
  --shadow-sheet: 0 16px 40px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.08);

  --token-accent-primary: #FAFAFA;
  --token-brand-mark-ink: #18181B;
  --token-brand-mark-paper: #FAF9F6;
  --brand-mark-fill: var(--token-brand-mark-paper);
  --token-accent-claude: var(--poly-moa-stroke);
  --token-accent-codex: var(--poly-shintong-stroke);
  --token-accent-gemini: var(--poly-union-stroke);
  --token-accent-muse: var(--poly-initial-stroke);
}


:root, html[data-theme="light"] {
  color-scheme: light;
  --surface-glass: var(--token-bg-glass);
  --glass-sheet: var(--surface-glass);
  --bg: var(--surface-canvas); --card: var(--surface-card); --bg-elev: var(--surface-sheet);
  --border: var(--border-subtle);
  --brand-accent: #047857; --on-accent: #FFFFFF;
  --control-border: #73737D; --focus-ring: #1D4ED8;
  --selected-surface: #18181B; --selected-text: #FFFFFF;
  --risk-safe: #047857; --risk-caution: #92400E;
  --risk-danger: #BE123C; --risk-unknown: #475569;
  --price-up: #E11D48; --price-down: #2563EB; --price-flat: #475569;
  --map-land: #F1F5F9; --map-water: #BFDBFE; --map-park: #DCFCE7;
  --map-road: #FFFFFF; --map-road-casing: #CBD5E1; --map-label: #334155;
  --map-gu-boundary: #64748B; --map-label-halo: #FFFFFF;
  --poly-unknown-stroke: #475569; --poly-unknown-fill: rgba(100,116,139,.12);
  --poly-halo: #FFFFFF;
  --poly-fill-opacity: .24; --poly-hover-opacity: .40; --poly-selected-opacity: .52;
  --poly-stroke-width: 1.5px; --poly-halo-width: 2.5px; --poly-inner-width: 1.5px;
  --poly-selected-halo-width: 4px; --poly-selected-inner-width: 2px;
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-6: 24px; --space-8: 32px; --space-12: 48px;
  --content-max: 1440px; --module-gap: 16px;
  --line-caption: 16px; --line-body: 22px; --line-title: 24px; --line-display: 36px;
}
:root, html[data-theme="light"] {
  --poly-shintong-base: #10B981; --poly-shintong-stroke: #047857;
  --poly-shintong-fill: rgba(16,185,129,0.24);
  --poly-shintong-hover-fill: rgba(16,185,129,.40); --poly-shintong-selected-fill: rgba(16,185,129,.52);
  --poly-shintong-halo: var(--poly-halo); --poly-shintong-text: #065F46;
  --poly-moa-base: #F43F5E; --poly-moa-stroke: #E11D48;
  --poly-moa-fill: rgba(244,63,94,0.24);
  --poly-moa-hover-fill: rgba(244,63,94,.40); --poly-moa-selected-fill: rgba(244,63,94,.52);
  --poly-moa-halo: var(--poly-halo); --poly-moa-text: #9F1239;
  --poly-union-base: #6366F1; --poly-union-stroke: #4338CA;
  --poly-union-fill: rgba(99,102,241,0.28);
  --poly-union-hover-fill: rgba(99,102,241,.40); --poly-union-selected-fill: rgba(99,102,241,.52);
  --poly-union-halo: var(--poly-halo); --poly-union-text: #3730A3;
  --poly-initial-base: #64748B; --poly-initial-stroke: #475569;
  --poly-initial-fill: rgba(100,116,139,0.22);
  --poly-initial-hover-fill: rgba(100,116,139,.40); --poly-initial-selected-fill: rgba(100,116,139,.52);
  --poly-initial-halo: var(--poly-halo); --poly-initial-text: #334155;
}
.dark, html[data-theme="dark"] {
  color-scheme: dark;
  --surface-glass: var(--token-bg-glass); --glass-sheet: var(--surface-glass);
  --text-primary: var(--token-text-primary); --text-secondary: var(--token-text-secondary);
  --text-muted: var(--token-text-muted); --border-subtle: var(--token-border-subtle);
  --border-strong: var(--token-border-strong);
  --bg: var(--surface-canvas); --card: var(--surface-card); --bg-elev: var(--surface-sheet);
  --border: var(--border-subtle);
  --brand-accent: #6EE7B7; --on-accent: #052E16;
  --control-border: #A1A1AA; --focus-ring: #93C5FD;
  --selected-surface: #FAFAFA; --selected-text: #18181B;
  --risk-safe: #6EE7B7; --risk-caution: #FBBF24;
  --risk-danger: #FDA4AF; --risk-unknown: #CBD5E1;
  --price-up: #FB7185; --price-down: #60A5FA; --price-flat: #CBD5E1;
  --map-land: #171E29; --map-water: #193C58; --map-park: #193D32;
  --map-road: #334155; --map-road-casing: #0F172A; --map-label: #E2E8F0;
  --map-gu-boundary: #94A3B8; --map-label-halo: #0F172A;
  --poly-halo: #0F172A;
  --poly-unknown-stroke: #CBD5E1; --poly-unknown-fill: rgba(148,163,184,.18);
  --token-status-success: var(--risk-safe); --token-status-warning: var(--risk-caution);
  --token-status-danger: var(--risk-danger);
  --poly-shintong-base: #10B981; --poly-shintong-stroke: #34D399;
  --poly-shintong-fill: rgba(16,185,129,0.24); --poly-shintong-hover-fill: rgba(16,185,129,.40);
  --poly-shintong-selected-fill: rgba(16,185,129,.52); --poly-shintong-halo: var(--poly-halo);
  --poly-shintong-text: #6EE7B7;
  --poly-moa-base: #F43F5E; --poly-moa-stroke: #FDA4AF;
  --poly-moa-fill: rgba(244,63,94,0.24); --poly-moa-hover-fill: rgba(244,63,94,.40);
  --poly-moa-selected-fill: rgba(244,63,94,.52); --poly-moa-halo: var(--poly-halo);
  --poly-moa-text: #FDA4AF;
  --poly-union-base: #6366F1; --poly-union-stroke: #A5B4FC;
  --poly-union-fill: rgba(99,102,241,0.28); --poly-union-hover-fill: rgba(99,102,241,.40);
  --poly-union-selected-fill: rgba(99,102,241,.52); --poly-union-halo: var(--poly-halo);
  --poly-union-text: #C7D2FE;
  --poly-initial-base: #64748B; --poly-initial-stroke: #CBD5E1;
  --poly-initial-fill: rgba(100,116,139,0.22); --poly-initial-hover-fill: rgba(100,116,139,.40);
  --poly-initial-selected-fill: rgba(100,116,139,.52); --poly-initial-halo: var(--poly-halo);
  --poly-initial-text: #CBD5E1;
}
.status-dot-sm {
  display: inline-block; width: 6px; height: 6px; flex-shrink: 0;
  border-radius: var(--token-radius-full); background: var(--text-muted);
}
.status-dot-sm.active, .status-dot-sm.safe { background: var(--risk-safe); }
.status-dot-sm.warning { background: var(--risk-caution); }
.status-dot-sm.danger { background: var(--risk-danger); }
.status-dot-sm.unknown { background: var(--risk-unknown); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
@media (max-width: 767px) {
  :root, .dark, html[data-theme] { --font-display: 20px; --line-display: 28px; }
}
@media (min-width: 1280px) {
  :root, .dark, html[data-theme] { --font-display: 36px; --line-display: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  :root, .dark, html[data-theme] {
    --dur-instant: 0ms; --dur-fast: 0ms; --dur-normal: 0ms; --dur-sheet: 0ms;
    --press-scale: 1; --hover-lift: 0px;
  }
  *, *::before, *::after {
    animation: none !important; transition: none !important; scroll-behavior: auto !important;
  }
}
