/* 語意設計變數：功能模組不可另定品牌色。 */
:root {
  --color-canvas:#faf8f5; --color-surface:#fff; --color-text:#342e29; --color-muted:#756b62;
  --color-border:#e5dfd7; --color-primary:#a84c21; --color-primary-hover:#753517;
  --color-primary-soft:#f7ebe1; --color-hero:#f0e2d3;
  --color-danger:#a8322d; --color-success:#28704a; --color-warning:#85641d;
  --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:24px; --space-6:32px; --space-7:48px;
  --text-xs:11px; --text-sm:13px; --text-base:15px; --text-lg:20px; --text-xl:28px; --text-display:40px;
  --radius-sm:6px; --radius-md:10px; --radius-lg:16px;
  --shadow-raised:0 18px 55px #4f301a09; --motion-quick:160ms; --motion-page:240ms;
  --bg:var(--color-canvas); --panel:var(--color-surface); --ink:var(--color-text); --muted:var(--color-muted);
  --line:var(--color-border); --accent:var(--color-primary); --accent-dark:var(--color-primary-hover);
  --soft:var(--color-primary-soft); --hero:var(--color-hero); --shadow:var(--shadow-raised);
  font-family:Inter,"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;font-size:14px;color:var(--ink);background:var(--bg);
}
html[data-theme=blue]{--color-canvas:#f6f8fc;--color-text:#253249;--color-muted:#626e82;--color-border:#dfe5ef;--color-primary:#2855ad;--color-primary-soft:#eaf0fc;--color-hero:#e0e8f5;--color-primary-hover:#1f4080}
html[data-theme=graphite]{--color-canvas:#f7f8f9;--color-text:#2e3742;--color-muted:#64707d;--color-border:#dfe3e8;--color-primary:#344153;--color-primary-soft:#eaeef2;--color-hero:#e0e5ea;--color-primary-hover:#222c39}
.ds-btn{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-2);min-height:40px;padding:10px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);font:inherit;font-size:var(--text-sm);color:var(--ink);cursor:pointer;white-space:nowrap;text-decoration:none}
.ds-btn:hover{border-color:var(--accent);background:var(--soft)}.ds-btn--primary{background:var(--accent);border-color:var(--accent);color:white}.ds-btn--primary:hover{background:var(--accent-dark);color:white}.ds-btn--danger{color:var(--color-danger)}.ds-btn:disabled{opacity:.5;cursor:not-allowed}
.ds-field{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-sm);font-weight:550;margin:var(--space-4) 0}.ds-field input,.ds-field textarea,.ds-field select{margin:0;font:inherit;font-weight:400;line-height:1.6;color:var(--ink);background:var(--panel);padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;min-width:0}.ds-field textarea{resize:vertical;min-height:110px}.ds-field small{color:var(--muted);font-size:var(--text-xs);font-weight:400}
.ds-stack{display:flex;flex-direction:column;gap:var(--space-4)}.ds-row{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.ds-between{justify-content:space-between}.ds-card{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);padding:var(--space-5)}.ds-badge{display:inline-block;padding:4px 8px;border-radius:var(--radius-sm);background:var(--soft);color:var(--accent);font-size:var(--text-xs)}.ds-error{color:var(--color-danger);font-size:var(--text-sm);line-height:1.6;min-height:20px}.ds-note{color:var(--muted);font-size:var(--text-sm);line-height:1.7}.ds-status{font-size:var(--text-xs);color:var(--muted)}.ds-dialog{width:min(640px,calc(100vw - 32px));max-height:90dvh;overflow:auto}.ds-dialog--wide{width:min(900px,calc(100vw - 32px))}.ds-dialog .ds-dialog-body{margin-bottom:var(--space-5)}.ds-dialog pre{white-space:pre-wrap;word-break:break-word;font-family:inherit}.ds-dialog h2{padding-right:28px}.ds-notification{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 22px;box-shadow:var(--shadow);z-index:100;color:var(--accent);max-width:90vw;font-size:var(--text-sm)}
.ds-btn:focus-visible,.ds-field input:focus-visible,.ds-field textarea:focus-visible,.ds-field select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.ds-empty{padding:var(--space-7);border:1px dashed var(--line);border-radius:var(--radius-md);text-align:center;color:var(--muted);line-height:1.8}.ds-danger-text{color:var(--color-danger)}
@media(prefers-reduced-motion:reduce){:root{--motion-quick:0ms;--motion-page:0ms}*{scroll-behavior:auto!important}}
