/* base.css — 設計 token（採 vms-web/shadcn 語意化變數架構，值沿用現有青色品牌）
   集中管理顏色/圓角；style.css 與日後 utilities.css 一律引用這些變數，品牌調色一處即可改。 */
:root {
  /* ── 品牌主色（青） ── */
  --primary:            #00AFEC;
  --primary-hover:      #008DC0;
  --primary-light:      #33C2F0;
  --primary-soft:       #E6F5FB;
  --primary-foreground: #ffffff;
  --ring:               rgba(0,175,236,.12);

  /* ── 表面 / 背景 ── */
  --background:   #F0F6FA;
  --card:         #ffffff;
  --card-border:  #F0F0F0;
  --muted:        #F9FAFB;
  --muted-hover:  #FAFAFA;

  /* ── 文字 ── */
  --foreground:       #111827;
  --muted-foreground: #6B7280;

  /* ── 邊框 ── */
  --border:        #E5E7EB;
  --border-strong: #D1D5DB;

  /* ── 狀態色 ── */
  --success:       #16a34a;
  --success-soft:  #DCFCE7;
  --danger:        #DC2626;
  --danger-border: #FCA5A5;
  --danger-soft:   #FFF5F5;
  --danger-hover:  #FEE2E2;

  /* ── 側邊欄漸層 ── */
  --sidebar-from: #005780;
  --sidebar-to:   #0099CC;

  /* ── 圓角 scale ── */
  --radius:      10px;
  --radius-sm:   8px;
  --radius-lg:   16px;
  --radius-xl:   14px;
  --radius-full: 999px;
}

/* ════════════════════════════════════════════════════════════
   Preflight reset — 取代 Tailwind Play CDN 內建的 preflight。
   忠實移植 Tailwind v3 preflight 子集：box-sizing、margin 歸零、
   button/input/img/list reset、預設 Plus Jakarta Sans 字體。
   （移除 Tailwind 後全站佈局都依賴這些預設，缺一即破版）
   ════════════════════════════════════════════════════════════ */
*, ::before, ::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: currentColor; }
::before, ::after { --tw-content: ''; }
html {
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
  -moz-tab-size: 4; tab-size: 4;
  font-family: 'Plus Jakarta Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
body { margin: 0; line-height: inherit; }
hr { height: 0; color: inherit; border-top-width: 1px; }
h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; }
a { color: inherit; text-decoration: inherit; }
b, strong { font-weight: bolder; }
code, kbd, samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1em; }
small { font-size: 80%; }
table { text-indent: 0; border-color: inherit; border-collapse: collapse; }
button, input, optgroup, select, textarea { font-family: inherit; font-size: 100%; font-weight: inherit; line-height: inherit; color: inherit; margin: 0; padding: 0; }
button, select { text-transform: none; }
button, [type='button'], [type='reset'], [type='submit'] { -webkit-appearance: button; background-color: transparent; background-image: none; }
:-moz-focusring { outline: auto; }
progress { vertical-align: baseline; }
::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; }
[type='search'] { -webkit-appearance: textfield; outline-offset: -2px; }
::-webkit-search-decoration { -webkit-appearance: none; }
summary { display: list-item; }
blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre { margin: 0; }
fieldset { margin: 0; padding: 0; }
legend { padding: 0; }
ol, ul, menu { list-style: none; margin: 0; padding: 0; }
textarea { resize: vertical; }
input::placeholder, textarea::placeholder { opacity: 1; color: #9ca3af; }
button, [role='button'] { cursor: pointer; }
:disabled { cursor: default; }
img, svg, video, canvas, audio, iframe, embed, object { display: block; vertical-align: middle; }
img, video { max-width: 100%; height: auto; }
[hidden] { display: none; }
