:root{--bg: #efe9dd;--bg-sunken: #e8e1d2;--surface: #fffdf8;--surface-2: #faf6ec;--surface-hi: #ffffff;--ink: #20302b;--ink-2: #44504a;--muted: #6f6d63;--faint: #9a978c;--primary: #1f6f63;--primary-dk: #165046;--primary-lt: #34a596;--primary-ink: #123b34;--primary-soft: #dceae4;--primary-100: #b9d4ca;--sage: #6f8f84;--sage-dk: #52706a;--sage-soft: #e7ede9;--line: #e6dfd1;--line-soft: rgba(230,223,209,.55);--line-strong: #d8cfbc;--accent: #d98c3f;--danger: #c2543f;--warn: #b5852f;--good: #3f8a5b;--accent-viv: #e09a45;--danger-viv: #e2674e;--warn-viv: #d99a2e;--good-viv: #45a570;--accent-ink: #97591a;--danger-ink: #b0432f;--warn-ink: #8a6315;--good-ink: #2c6543;--font-ui: "Hanken Grotesk", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--font-num: "Fraunces", "Songti SC", serif}:root{--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--s-8: 32px;--s-10: 40px;--s-12: 48px;--s-16: 64px;--s-20: 80px;--r-pill: 999px;--r-lg: 18px;--r-md: 16px;--r-sm: 10px;--r-xs: 7px;--sh-1: 0 1px 1px rgba(33,48,44,.04), 0 2px 4px rgba(33,48,44,.045);--sh-2: 0 1px 2px rgba(33,48,44,.05), 0 4px 10px rgba(33,48,44,.06), 0 10px 22px rgba(33,48,44,.05);--sh-3: 0 2px 4px rgba(33,48,44,.06), 0 10px 24px rgba(33,48,44,.09), 0 24px 56px rgba(33,48,44,.1);--hi-top: inset 0 1px 0 rgba(255,255,255,.9);--sh-focus: 0 0 0 3px rgba(31,111,99,.2);--danger-soft: rgba(194,84,63,.1);--warn-soft: rgba(181,133,47,.13);--accent-soft: rgba(217,140,63,.14);--good-soft: rgba(63,138,91,.12);--row-hover: #faf7ef;--chip-bg: #f1ebdd}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:14px;line-height:1.55;letter-spacing:.005em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.brand{font-family:var(--font-num);letter-spacing:-.01em}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}.num-xl{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:40px;line-height:1;font-weight:600;letter-spacing:-.02em}.num-lg{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:30px;line-height:1;font-weight:600;letter-spacing:-.015em}.num-md{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:22px;line-height:1;font-weight:600;letter-spacing:-.01em}.num .unit,.num-xl .unit,.num-lg .unit,.num-md .unit{font-family:var(--font-ui);font-size:.5em;color:var(--muted);font-weight:600;margin-left:3px;letter-spacing:0}.h1{font-size:25px;line-height:31px;font-weight:650;letter-spacing:-.3px;color:var(--ink);margin:0}.h2{font-size:17px;line-height:22px;font-weight:600;letter-spacing:-.15px;color:var(--ink);margin:0}.h3{font-size:15px;line-height:20px;font-weight:600;color:var(--ink);margin:0}.label{font-size:11.5px;line-height:16px;font-weight:650;letter-spacing:.6px;text-transform:uppercase;color:var(--muted)}.cap{font-size:11px;line-height:14px;color:var(--muted)}.eyebrow{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--sage-dk)}.card{background:var(--surface);background-image:linear-gradient(177deg,#ffffff 0%,var(--surface) 46%,#fdf9f0 100%);border:1px solid var(--line-strong);border-radius:var(--r-md);box-shadow:var(--hi-top),var(--sh-1)}.card-hover{cursor:pointer;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.card-hover:hover{box-shadow:var(--hi-top),var(--sh-2);border-color:var(--primary-100);transform:translateY(-2px)}.panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm)}.card-inset{background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--r-sm)}.card-accent{position:relative;overflow:hidden}.card-accent:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--bar, var(--primary))}.btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--r-sm);font-size:14px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;white-space:nowrap}.btn:focus-visible{outline:none;box-shadow:var(--sh-focus)}.btn:disabled{opacity:.45;cursor:default}.btn-pri{background:linear-gradient(180deg,#25786b 0%,var(--primary) 55%,#1c6457 100%);color:#fffdf8;box-shadow:var(--hi-top),0 2px 6px #16504647}.btn-pri:hover:not(:disabled){background:linear-gradient(180deg,var(--primary),var(--primary-dk))}.btn-pri:active{transform:translateY(1px);box-shadow:0 1px 3px #1650464d}.btn-sec{background:linear-gradient(180deg,#fffdf8 0%,var(--surface-2) 100%);border-color:var(--line-strong);color:var(--ink);box-shadow:var(--sh-1)}.btn-sec:hover{background:#fffdf8;border-color:var(--primary-100)}.btn-ghost{background:transparent;color:var(--primary-dk)}.btn-ghost:hover{background:var(--primary-soft)}.btn-sm{height:30px;padding:0 12px;font-size:13px}.icon-btn{width:32px;height:32px;display:grid;place-items:center;border-radius:var(--r-sm);background:transparent;border:none;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.icon-btn:hover{background:var(--chip-bg);color:var(--ink)}.pill{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 10px;border-radius:var(--r-pill);font-size:11px;font-weight:600;line-height:1;white-space:nowrap}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.pill-danger{background:var(--danger-soft);color:var(--danger-ink);box-shadow:inset 0 0 0 1px #c2543f2e}.pill-warn{background:var(--warn-soft);color:var(--warn-ink);box-shadow:inset 0 0 0 1px #b5852f33}.pill-good{background:var(--good-soft);color:var(--good-ink);box-shadow:inset 0 0 0 1px #3f8a5b2e}.pill-accent{background:var(--accent-soft);color:var(--accent-ink);box-shadow:inset 0 0 0 1px #d98c3f33}.pill-soft{background:var(--primary-soft);color:var(--primary-ink);box-shadow:inset 0 0 0 1px #1f6f6329}.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--r-pill);font-size:12px;color:var(--ink-2);background:var(--chip-bg);border:1px solid transparent;cursor:pointer;transition:border-color .15s,background .15s}.chip:hover{border-color:var(--line-strong)}.chip.active{background:var(--primary-soft);color:var(--primary-ink)}.seg{display:inline-flex;background:var(--bg-sunken);border-radius:var(--r-sm);padding:3px;height:32px;box-shadow:inset 0 1px 2px #21302c0f}.seg button{border:none;background:transparent;border-radius:var(--r-xs);padding:0 12px;font-size:13px;color:var(--muted);cursor:pointer;font-weight:500}.seg button.on{background:linear-gradient(180deg,#fff,var(--surface));color:var(--ink);box-shadow:var(--hi-top),var(--sh-1);font-weight:600}.tbl-head{display:grid;height:42px;align-items:center;background:var(--surface-2);border-bottom:1px solid var(--line-strong);font-size:11.5px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}.tbl-row{display:grid;min-height:52px;align-items:center;border-bottom:1px solid var(--line-soft);font-size:14px;transition:background .12s}.tbl-row:hover{background:var(--row-hover)}.tbl-row:last-child{border-bottom:0}.tbl-cell{padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tbl-cell.right{text-align:right}.hero-primary{position:relative;background:radial-gradient(120% 90% at 12% 0%,#ffffff29,#fff0 42%),linear-gradient(155deg,#235f55 0%,var(--primary-dk) 52%,#103b33 100%);color:#fbf8f1;border-radius:var(--r-lg);box-shadow:inset 0 1px #ffffff24,var(--sh-3);overflow:hidden}.hero-primary .h1,.hero-primary .h2,.hero-primary .h3{color:#fbf8f1}.hero-primary .cap,.hero-primary .label{color:#f3efe6b8}.hero-primary .panel{background:#fffdf8f5;color:var(--ink);border-color:transparent}@keyframes pulse{0%{transform:scale(1);opacity:.4}to{transform:scale(1.7);opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.fade-in{animation:fadeIn .28s ease both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}button,input,select,textarea{font-family:inherit}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-thumb{background:#21302c29;border-radius:8px;border:4px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#21302c42}
