:root {
  --accent: #5b8ff9;
  --accent-soft: rgba(91, 143, 249, 0.14);
  --text: #1f2430;
  --muted: #7a8194;
  --line: rgba(31, 36, 48, 0.1);
  --panel: rgba(255, 255, 255, 0.84);
  --plate: rgba(255, 255, 255, 0.88);
  --danger: #e5484d;
  --done: #a3a9b8;
  --radius: 14px;
  --radius-card: 10px;
  --radius-pill: 26px;
  --shadow-float: 0 6px 24px rgba(30, 40, 80, 0.22);
  --font: 'Microsoft YaHei', 'PingFang SC', 'Noto Sans CJK SC', system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; overflow: hidden; }
body { font: 14px/1.5 var(--font); color: var(--text); background: #dfe7f5; }
button, input, select { font: inherit; color: inherit; }
button { cursor: pointer; border: 1px solid var(--line); background: #fff; border-radius: 8px; padding: 4px 10px; }
button:hover:not(:disabled) { border-color: var(--accent); color: var(--accent); }
button:disabled { cursor: default; opacity: 0.5; }
button.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
button.primary:hover:not(:disabled) { color: #fff; filter: brightness(1.08); }
button.danger:hover:not(:disabled) { border-color: var(--danger); color: var(--danger); }
button.ghost { border-color: transparent; background: transparent; }
input[type='text'], input[type='search'], input[type='datetime-local'], select {
  border: 1px solid var(--line); border-radius: 8px; padding: 5px 8px; background: #fff; min-width: 0;
}
input:focus, select:focus { outline: 2px solid var(--accent-soft); border-color: var(--accent); }
[hidden] { display: none !important; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.18); border-radius: 4px; }
