:root {
  --color-bg: #f5f7fa;
  --color-surface: #ffffff;
  --color-surface-2: #fafbfc;
  --color-border: #e5e7eb;
  --color-text: #1f2937;
  --color-text-muted: #6b7280;
  --color-text-soft: #9ca3af;
  --color-primary: #305496;
  --color-primary-hover: #25437b;
  --color-primary-soft: #e8eef9;
  --color-accent: #0ea5e9;
  --color-success: #10b981;
  --color-warning: #f59e0b;
  --color-danger: #ef4444;
  --color-sidebar-bg: #1f2937;
  --color-sidebar-text: #e5e7eb;
  --color-sidebar-text-muted: #9ca3af;
  --color-sidebar-hover: #374151;
  --color-sidebar-active: #305496;

  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;

  --shadow-sm: 0 1px 2px rgba(0,0,0,.05);
  --shadow-md: 0 4px 12px rgba(0,0,0,.06);
  --shadow-lg: 0 8px 24px rgba(0,0,0,.08);

  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo",
               "Malgun Gothic", "맑은 고딕", Roboto, sans-serif;
  --font-mono: "SF Mono", Menlo, Consolas, monospace;

  --sidebar-width: 240px;
  --dock-width: 420px;
  --dock-width-plus-gap: 444px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font-sans);
  background: var(--color-bg);
  color: var(--color-text);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
button { font-family: inherit; cursor: pointer; }
.hidden { display: none !important; }
