:root{--c-primary-600: #0f766e;--c-primary-500: #14857b;--c-primary-100: #ccede9;--c-primary-50: #f0f9f8;--c-bg: #f5f7f7;--c-surface: #ffffff;--c-surface-alt: #fafcfb;--c-border: #e3e9e8;--c-divider: #eef2f1;--c-text: #0e2422;--c-text-2: #3f5c58;--c-text-3: #5c7773;--c-safe: #15803d;--c-safe-bg: #eff8f1;--c-caution: #b45309;--c-caution-bg: #fdf6e9;--c-danger: #b91c1c;--c-danger-bg: #fef1f1;--c-info: #1d4ed8;--c-info-bg: #eef2fe;--c-scrim: rgba(14, 36, 34, .45);--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-num: "SF Mono", "DIN Alternate", Menlo, Consolas, monospace;--fs-display: 28px;--fs-h1: 20px;--fs-h2: 16px;--fs-body: 14px;--fs-label: 14px;--fs-caption: 12px;--lh-body: 1.6;--lh-heading: 1.35;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--sh-sm: 0 1px 2px rgba(14, 36, 34, .06);--sh-md: 0 2px 8px rgba(14, 36, 34, .06);--sh-lg: 0 8px 24px rgba(14, 36, 34, .1);--dur-enter: .16s;--dur-exit: .12s;--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-in: cubic-bezier(.55, .06, .68, .19);--sidebar-w: 224px;--header-h: 56px;--content-max: 1440px;--c-sidebar-bg: #0e2422;--c-sidebar-bg-2: #143230;--c-sidebar-text: #cfe0dd;--c-sidebar-text-dim: #8fada9;--c-sidebar-active: #14857b;--grad-profile-hero: linear-gradient(120deg, #0e2422 0%, #10635b 46%, #14857b 100%);--c-hero-ink: #ffffff;--c-hero-ink-2: rgba(255, 255, 255, .75);--c-hero-ink-3: rgba(255, 255, 255, .52);--c-hero-line: rgba(255, 255, 255, .18);--c-hero-fill: rgba(255, 255, 255, .11);--c-group-behavior: #12988a;--c-group-sleep: #5468e7;--c-group-quality: #d99527;--c-dim-rhythm: #0a6b62;--c-dim-steps: #12988a;--c-dim-adherence: #17b0a0;--c-dim-outing: #3fc7b8;--c-dim-screen: #0a6b62;--c-dim-sleep: #4c6ef5;--c-dim-night: #7c5cf0;--c-dim-vitality: #d99527;--c-dim-archive: #b8791a;--c-hero-arc-1: #7ee0b8;--c-hero-arc-2: #f2b47e}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{height:100%}html,body{margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;line-height:var(--lh-heading);font-weight:600}a{color:var(--c-primary-600);text-decoration:none}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--c-primary-600);outline-offset:2px;border-radius:var(--r-sm)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--sh-sm)}.page-title{font-size:var(--fs-h1);margin-bottom:var(--sp-1)}.page-desc{color:var(--c-text-3);font-size:var(--fs-caption);margin-bottom:var(--sp-5)}.toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--sp-3);padding:var(--sp-4);margin-bottom:var(--sp-4)}.toolbar .field{margin:0}.toolbar .spacer{flex:1}.field{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-4)}.field>label{font-size:var(--fs-caption);color:var(--c-text-2)}.field .hint{font-size:var(--fs-caption);color:var(--c-text-3)}.field .err{font-size:var(--fs-caption);color:var(--c-danger)}.input,.select,.textarea{font:inherit;color:var(--c-text);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-sm);padding:7px 10px;min-width:160px;width:100%;transition:border-color var(--dur-enter) var(--ease-out)}.textarea{min-height:84px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--c-primary-600);outline:none}.input:disabled,.select:disabled{background:var(--c-surface-alt);color:var(--c-text-3);cursor:not-allowed}.input-sm{min-width:120px;width:120px}.check{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-body);color:var(--c-text-2);cursor:pointer;-webkit-user-select:none;user-select:none}.btn{font:inherit;display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:7px 14px;border-radius:var(--r-sm);border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text);cursor:pointer;white-space:nowrap;transition:background var(--dur-enter) var(--ease-out),border-color var(--dur-enter) var(--ease-out),opacity var(--dur-enter) var(--ease-out)}.btn:hover:not(:disabled){background:var(--c-surface-alt);border-color:var(--c-primary-100)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--c-primary-600);border-color:var(--c-primary-600);color:#fff}.btn-primary:hover:not(:disabled){background:var(--c-primary-500);border-color:var(--c-primary-500)}.btn-danger{color:var(--c-danger);border-color:#f3cccc}.btn-danger:hover:not(:disabled){background:var(--c-danger-bg);border-color:#e8b4b4}.btn-link{border-color:transparent;background:transparent;color:var(--c-primary-600);padding:4px 6px}.btn-link:hover:not(:disabled){background:var(--c-primary-50);border-color:transparent}.btn-sm{padding:4px 10px;font-size:var(--fs-caption)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--fs-body)}.table th,.table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--c-divider);vertical-align:middle}.table th{background:var(--c-surface-alt);color:var(--c-text-2);font-weight:600;font-size:var(--fs-caption);white-space:nowrap}.table tbody tr:hover{background:var(--c-primary-50)}.table .nowrap{white-space:nowrap}.table .ops{display:flex;gap:var(--sp-1);white-space:nowrap}.empty{padding:var(--sp-8);text-align:center;color:var(--c-text-3)}.tag{display:inline-flex;align-items:center;padding:1px 8px;border-radius:var(--r-pill);font-size:var(--fs-caption);line-height:1.7;background:var(--c-surface-alt);border:1px solid var(--c-border);color:var(--c-text-2);white-space:nowrap}.tag-ok{background:var(--c-safe-bg);border-color:#cfe8d6;color:var(--c-safe)}.tag-warn{background:var(--c-caution-bg);border-color:#f0dfbd;color:var(--c-caution)}.tag-danger{background:var(--c-danger-bg);border-color:#f3cccc;color:var(--c-danger)}.tag-info{background:var(--c-info-bg);border-color:#cfdafb;color:var(--c-info)}.alert{padding:10px 12px;border-radius:var(--r-sm);font-size:var(--fs-body);margin-bottom:var(--sp-4)}.alert-error{background:var(--c-danger-bg);border:1px solid #f3cccc;color:var(--c-danger)}.alert-warn{background:var(--c-caution-bg);border:1px solid #f0dfbd;color:var(--c-caution)}.alert-info{background:var(--c-info-bg);border:1px solid #cfdafb;color:var(--c-info)}.swatch{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid var(--c-border);vertical-align:-2px;margin-right:var(--sp-2)}.muted{color:var(--c-text-3)}.caption{font-size:var(--fs-caption)}
