:root{--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--ink: #1B211F;--ink2: #5A635F;--ink3: #8E9793;--canvas: #F2F4F2;--surface: #FFFFFF;--surface2: #F8FAF8;--line: #DFE4E1;--line2: #EBEEEB;--brand: #245247;--brand-ink: #17372F;--brand-weak: #E4EDE9;--on-brand: #FFFFFF;--panel-dark: #16201D;--panel-line: #2C3B36;--panel-line2: #41564E;--panel-ink: #DCE8E3;--panel-ink2: #BFD4CC;--panel-accent: #7FB3A1;--success: #245247;--success-weak: #E4EDE9;--warn: #A2712C;--warn-weak: #F5EDDF;--danger: #A9453A;--danger-weak: #F7E8E5;--radius: 5px;--radius-lg: 9px;--shadow: 0 1px 2px rgba(27, 33, 31, .05);--shadow-pop: 0 8px 26px -8px rgba(27, 33, 31, .22);--shadow-modal: 0 24px 60px -18px rgba(20, 30, 27, .4);--scrim: rgba(20, 27, 25, .4);--glass: rgba(255, 255, 255, .94);font-family:var(--font-sans)}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--canvas);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--brand);text-decoration:none}a:hover{color:var(--brand-ink)}.container{max-width:1100px;margin:0 auto;padding:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px;margin-bottom:16px;box-shadow:var(--shadow)}button{cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:8px 14px;font:inherit;font-size:13px}button:hover{border-color:var(--brand);color:var(--brand-ink);background:var(--surface)}button:disabled{opacity:.5;cursor:not-allowed}button:disabled:hover{border-color:var(--line);color:var(--ink);background:var(--surface)}button.primary:disabled:hover{border-color:var(--brand);color:var(--on-brand);background:var(--brand)}button.primary{background:var(--brand);color:var(--on-brand);border-color:var(--brand);font-weight:550}button.primary:hover{background:var(--brand-ink);border-color:var(--brand-ink);color:var(--on-brand)}button.danger{color:var(--danger);border-color:var(--danger);background:var(--surface)}button.danger:hover{background:var(--danger-weak);color:var(--danger);border-color:var(--danger)}button.sm{padding:6px 12px;font-size:12.5px}input,textarea,select{padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);width:100%;color:var(--ink);background:var(--surface);font:inherit;font-size:13.5px}textarea{resize:vertical}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--brand)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-weak)}:focus-visible{outline:2px solid var(--brand);outline-offset:1px}table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}th,td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;font-size:14px}th{color:var(--ink2);font-weight:600}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media(max-width:640px){.stat-cards{grid-template-columns:repeat(2,1fr)}}.muted{color:var(--ink3);font-size:13px}.err{color:var(--danger);font-size:13px}.ok{color:var(--success);font-size:13px}.input-error{border-color:var(--danger)!important;background:var(--danger-weak)!important;color:var(--danger)!important}.head{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;padding-bottom:16px;margin-bottom:22px;border-bottom:1px solid var(--line)}.head .grow{flex:1 1 260px;min-width:0}.h1{margin:0;font-size:21px;font-weight:660;letter-spacing:-.025em;text-wrap:balance}.sub{margin:4px 0 0;color:var(--ink2);font-size:13px}.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}button.on{border-color:var(--brand);color:var(--brand-ink);background:var(--brand-weak)}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--brand);text-transform:uppercase}.sec-head{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}.sec-head>h2{font-size:13px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);margin:0}.sec-head .rule{height:1px;flex:1;background:var(--line)}.icon-btn{border:none;background:none;color:var(--ink2);padding:6px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.icon-btn:hover{background:var(--brand-weak);color:var(--brand-ink)}.icon-btn.danger{color:var(--ink3)}.icon-btn.danger:hover{background:var(--danger-weak);color:var(--danger)}.icon-btn:disabled{opacity:.4;cursor:not-allowed;background:none}.icon-btn:disabled:hover{background:none;color:var(--ink2)}.icon-btn.danger:disabled:hover{color:var(--ink3)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:3px 9px;border-radius:20px;font-weight:500;white-space:nowrap;line-height:1.4}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}.pill.neutral{background:var(--line2);color:var(--ink2)}.pill.prog{background:var(--warn-weak);color:var(--warn)}.pill.done{background:var(--success-weak);color:var(--success)}.pill.brand{background:var(--brand-weak);color:var(--brand-ink)}.pill.danger{background:var(--danger-weak);color:var(--danger)}.pill.ghost{background:var(--surface);border:1px solid var(--line);color:var(--ink3);font-family:var(--mono)}.bar{height:7px;background:var(--line2);border-radius:20px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--brand);border-radius:20px;transition:width .25s ease}.bar.success>i{background:var(--success)}.bar-note{font-family:var(--mono);font-size:11px;color:var(--ink2);font-variant-numeric:tabular-nums;margin-top:5px}.finger{display:flex;align-items:flex-end;gap:3px;height:26px}.finger>i{display:block;width:7px;border-radius:1.5px;background:var(--success);min-height:2px}.finger>i.mid{background:var(--warn)}.finger>i.low{background:var(--danger)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;box-shadow:var(--shadow)}.stat .k{font-size:12px;color:var(--ink2);margin-bottom:8px}.stat .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1}.stat .v.success{color:var(--success)}.stat .v.warn{color:var(--warn)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}.panel .scroll{overflow-x:auto}table.grid{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}table.grid thead tr{background:var(--surface2)}table.grid th{text-align:left;padding:11px 14px;font-weight:600;color:var(--ink2);font-size:12px;border-bottom:1px solid var(--line);white-space:nowrap}table.grid td{padding:12px 14px;border-bottom:1px solid var(--line2);vertical-align:middle}table.grid tbody tr:last-child td{border-bottom:none}table.grid tbody tr:hover{background:var(--surface2)}table.grid .num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.panel-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 15px;border-bottom:1px solid var(--line)}.panel-head>h2{margin:0;font-size:13px;font-weight:640;letter-spacing:.04em;text-transform:uppercase}.panel-foot{padding:9px 15px;background:var(--surface2);border-top:1px solid var(--line);font-size:11.5px;color:var(--ink3)}.mono{font-family:var(--mono)}.emp{font-family:var(--mono);font-size:12px;color:var(--ink2)}.rank{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 6px;border-radius:6px;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700;background:var(--surface2);color:var(--ink2)}.rank.top{background:var(--brand-weak);color:var(--brand-ink)}.tie{display:block;font-size:9.5px;color:var(--brand);margin-top:2px;letter-spacing:.05em}.switch{display:inline-flex;align-items:center;gap:9px;cursor:pointer}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .track{width:36px;height:20px;border-radius:20px;background:var(--line);position:relative;flex:none;transition:background .15s}.switch .track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000026;transition:left .15s}.switch input:checked+.track{background:var(--brand)}.switch input:checked+.track:after{left:18px}.switch.success input:checked+.track{background:var(--success)}.switch input:focus-visible+.track{box-shadow:0 0 0 3px var(--brand-weak)}.switch .txt{font-size:12.5px;color:var(--ink2)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;overflow-y:hidden}.tabs button,.tabs a{border:none;background:none;border-radius:0;padding:9px 14px;color:var(--ink2);font-size:13.5px;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap}.tabs button:hover,.tabs a:hover{color:var(--ink)}.tabs button.on,.tabs a.on{color:var(--brand-ink);border-bottom-color:var(--brand);font-weight:600}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}.segmented button{border:none;border-radius:0;background:var(--surface);color:var(--ink2);padding:7px 12px;font-size:12px;font-weight:500;border-right:1px solid var(--line)}.segmented button:last-child{border-right:none}.segmented button:hover{color:var(--brand-ink);background:var(--surface)}.segmented button.on,.segmented button.on:hover{background:var(--brand);color:var(--on-brand)}.empty{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:56px 24px;text-align:center}.empty .ico{width:48px;height:48px;border-radius:9px;background:var(--surface2);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;color:var(--ink3)}.empty .t{font-weight:600;font-size:15px;margin-bottom:6px}.empty .d{color:var(--ink2);font-size:13px;margin:0 auto 18px;max-width:340px}.add-dashed{background:var(--surface);border:1px dashed var(--line);color:var(--brand);padding:8px 13px;border-radius:var(--radius);font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.add-dashed:hover{border-color:var(--brand);color:var(--brand-ink);background:var(--surface)}.add-dashed.block{width:100%;justify-content:center;padding:12px;font-size:13px}.add-dashed:disabled{color:var(--ink3);border-color:var(--line);cursor:not-allowed;opacity:1}.warnbar{display:flex;align-items:flex-start;gap:10px;background:var(--warn-weak);border:1px solid var(--warn);border-radius:var(--radius);padding:11px 15px;color:var(--warn);font-size:12.5px;line-height:1.5}.warnbar>svg{flex:none;margin-top:1px}.inline-edit{width:100%;border:1px solid transparent;background:none;padding:6px 8px;border-radius:5px;outline:none;color:var(--ink);font:inherit}.inline-edit:hover{background:var(--surface2)}.inline-edit:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-weak)}.num-input{width:58px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;padding:5px 8px}.grip{border:none;background:none;padding:2px;border-radius:4px;color:var(--ink3);cursor:grab;display:inline-flex;align-items:center;flex:none}.grip:hover{color:var(--brand-ink);background:var(--brand-weak);border-color:transparent}.grip:active{cursor:grabbing}.is-dragging{opacity:.4}.drop-active{outline:2px dashed var(--brand);outline-offset:-3px;background:var(--brand-weak)}@keyframes ov-fade{0%{opacity:0}to{opacity:1}}@keyframes ov-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
