/* tokens.css — 設計 tokens、reset、body / modal-open 基礎規則
 * Split from product-mvp/styles.css on 2026-05-15.
 */
@layer base, auth, public, builder, quotes;

@layer base {
:root {
  /* 工作台（中性礦物紙色）*/
  --bg: #F2F2EE;
  --panel: rgba(255, 255, 255, 0.80);
  --line: rgba(26, 26, 26, 0.10);
  --text: #1a1c1c;
  --muted: #5f5e5e;
  --brand: #BF3F2F;
  --brand-deep: #9E3024;
  --brand-subtle: rgba(191, 63, 47, 0.10);
  --mint: #58605f;
  --sky: #9ca3a2;
  --sun: #dde4e3;
  --shadow-soft: 0 8px 24px rgba(25, 29, 28, 0.06);
  --shadow-strong: 0 16px 42px rgba(25, 29, 28, 0.12);
  --danger: #E05454;
  /* 正向狀態文字（就緒 / 啟用 / 成交 / 可詢問）：於中性底達 WCAG AA 正文 4.5:1 */
  --status-positive-text: #166534;
  --touch-target: 44px;
  --touch-gap-min: 0.5rem;
  --touch-gap-recommended: 0.75rem;
  --serif: "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Helvetica Neue", sans-serif;
  --sans: "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Helvetica Neue", Arial, sans-serif;
  --display: "PingFang TC", "Noto Sans TC", "Helvetica Neue", sans-serif;
  --topbar-offset: 58px;
  --sticky-search-height: 0px;

  /* 公開名錄頁（淺灰極簡）*/
  --pub-bg: #f8f8f8;
  --pub-bg-subtle: #ededed;
  --pub-surface: #ffffff;
  --pub-border: #ededed;
  --pub-text: #222222;
  --pub-text-2: #666666;
  --pub-text-3: #999999;
  --pub-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
  --pub-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.10);
  --pub-transition: 0.3s ease-in-out;
  --pub-radius: 8px;

  /* 用戶端 Mineral Editorial Marketplace tokens（scoped by component usage，不覆寫 --brand）*/
  --client-bg: #F2F2EE;
  --client-bg-paper: #E8E8E2;
  --client-surface: #FAFAF7;
  --client-surface-raised: #FFFFFF;
  --client-line: rgba(35, 39, 36, 0.13);
  --client-line-strong: rgba(35, 39, 36, 0.22);
  --client-text: #191D1C;
  --client-text-muted: #555D5A;
  --client-text-soft: #68706D;
  --client-primary: #BF3F2F;
  --client-primary-hover: #9E3024;
  --client-primary-soft: rgba(191, 63, 47, 0.12);
  --client-trust: #3F6B55;
  --client-trust-soft: rgba(63, 107, 85, 0.14);
  --client-info: #45606B;
  --client-info-soft: rgba(69, 96, 107, 0.12);
  --client-radius-sm: 8px;
  --client-radius-card: 14px;
  --client-radius-panel: 20px;
  --client-shadow-card: none;
  --client-shadow-lift: 0 16px 42px rgba(25, 29, 28, 0.13);
}

* {
  box-sizing: border-box;
}

:focus-visible {
  outline: 2px solid var(--client-primary);
  outline-offset: 3px;
  border-radius: 4px;
}

[hidden] {
  display: none !important;
}

body {
  margin: 0;
  color: var(--text);
  background: var(--bg);
  font-family: var(--sans);
  overscroll-behavior-y: contain;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  -webkit-tap-highlight-color: transparent;
}

body[data-dragging-sort="true"] {
  user-select: none;
  -webkit-user-select: none;
  cursor: grabbing;
}

body[data-editor-modal-open="true"] {
  overflow: hidden;
}

body[data-create-page-modal-open="true"] {
  overflow: hidden;
}

body[data-signup-consent-modal-open="true"] {
  overflow: hidden;
}
}
