:root{--bg:#f4f2ed;--surface:#fff;--line:#e6e1d6;--line-soft:#efebe2;--text:#1a2433;--muted:#6e7685;--navy-900:#0b192c;--navy-800:#112540;--navy-700:#17325a;--primary:#17325a;--primary-hover:#1f4278;--gold:#b28b4a;--gold-light:#d9bf8c;--gold-soft:#f6efe0;--red:#a8362f;--red-soft:#fbedeb;--amber:#99620a;--amber-soft:#fbf1dc;--green:#2b7355;--green-soft:#e6f2ec;--blue:#2d5a94;--blue-soft:#e8eff8;--gray-soft:#eeece6;--radius:12px;--shadow:0 1px 2px #0b192c0d, 0 8px 24px #0b192c0d;--serif:Georgia, "Songti SC", "Noto Serif SC", "STSong", serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:14px/1.6 -apple-system,PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,input,select,textarea{font:inherit;color:inherit}b{font-weight:600}small{color:var(--muted)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.neg{color:var(--red)}.muted{color:var(--muted)}kbd{border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:4px;padding:0 5px;font:11px ui-monospace,Menlo,monospace}.shell{grid-template-columns:236px 1fr;height:100%;display:grid}.sidebar{background:linear-gradient(180deg, var(--navy-800) 0%, var(--navy-900) 100%);color:#c4cfdd;flex-direction:column;padding:22px 14px 14px;display:flex;overflow-y:auto}.brand{border-bottom:1px solid #d9bf8c2e;align-items:center;gap:12px;margin-bottom:8px;padding:0 8px 20px;display:flex}.mark{width:38px;height:38px;font-family:var(--serif);color:var(--navy-900);background:linear-gradient(135deg,#e7d3a6,#b28b4a);border-radius:10px;flex:none;place-items:center;font-size:18px;font-weight:700;display:grid;box-shadow:0 2px 8px #b28b4a59}.mark.lg{border-radius:14px;width:56px;height:56px;font-size:26px}.brand h1{font-family:var(--serif);letter-spacing:.01em;color:#fff;white-space:nowrap;margin:0;font-size:14.5px;font-weight:600}.brand small{color:#8fa1b8;letter-spacing:.02em;white-space:nowrap;font-size:11px}.nav-label{letter-spacing:.18em;color:var(--gold-light);opacity:.75;padding:18px 12px 6px;font-size:11px}.nav button{color:#c4cfdd;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;width:100%;padding:9px 12px;transition:background .15s;display:flex;position:relative}.nav button:hover{color:#fff;background:#ffffff0f}.nav button.active{color:#fff;background:#d9bf8c1f;font-weight:600}.nav button.active:before{content:"";background:var(--gold);border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:-14px}.nav .badge{background:var(--gold);color:var(--navy-900);border-radius:10px;margin-left:auto;padding:0 7px;font-size:11px;font-weight:700}.side-foot{color:#6f8199;letter-spacing:.04em;margin-top:auto;padding:16px 12px 4px;font-size:11.5px}.main{overflow-y:auto}.topbar{z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#ffffffe6;align-items:center;gap:14px;height:58px;padding:10px 32px;display:flex;position:sticky;top:0}.topbar .crumb{color:var(--muted);letter-spacing:.06em;font-size:13px}.topbar .crumb b{color:var(--text);font-weight:600}.topbar .grow{flex:1}.ask{background:var(--bg);border:1px solid var(--line);cursor:pointer;min-width:280px;color:var(--muted);border-radius:20px;align-items:center;gap:24px;padding:6px 8px 6px 16px;font-size:13px;display:flex}.ask:hover{border-color:var(--gold)}.ask kbd{margin-left:auto}.user{position:relative}.user-btn{cursor:pointer;background:0 0;border:0;border-radius:22px;align-items:center;gap:10px;padding:3px 6px;display:flex}.user-btn:hover{background:var(--gray-soft)}.avatar{background:var(--navy-700);color:#fff;width:32px;height:32px;font-weight:600;font-family:var(--serif);box-shadow:0 0 0 2px #fff, 0 0 0 3px var(--gold-light);border-radius:50%;place-items:center;display:grid}.user-t{text-align:left;line-height:1.25}.user-t b{font-size:13px;display:block}.user-t small{font-size:11.5px}.menu{border:1px solid var(--line);z-index:20;background:#fff;border-radius:10px;min-width:150px;padding:6px;position:absolute;top:44px;right:0;box-shadow:0 12px 32px #0b192c24}.menu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;width:100%;padding:8px 12px;display:block}.menu button:hover{background:var(--gray-soft)}.content{max-width:1440px;padding:26px 32px 64px}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-head h2{font-family:var(--serif);letter-spacing:.03em;margin:0;font-size:24px;font-weight:600}.page-head p{color:var(--muted);margin:4px 0 0}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.btn{cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #d9d4c7;border-radius:8px;padding:7px 16px;transition:all .15s}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn.primary{background:linear-gradient(180deg, var(--primary-hover), var(--primary));border-color:var(--primary);color:#fff;box-shadow:0 1px 2px #0b192c33}.btn.primary:hover{filter:brightness(1.1);color:#fff}.btn.danger{color:var(--red);border-color:#e8c4c0}.btn.small{padding:3px 11px;font-size:13px}.btn.lg{letter-spacing:.3em;padding:11px 16px;font-size:15px}.btn[disabled]{opacity:.55;cursor:not-allowed}:focus-visible{outline:2px solid var(--gold-light);outline-offset:1px}.link{color:var(--primary);cursor:pointer;background:0 0;border:0;padding:0}.link:hover{text-decoration:underline}.tag{white-space:nowrap;background:var(--gray-soft);color:#55606f;border-radius:4px;padding:0 9px;font-size:12px;line-height:20px;display:inline-block}.tag.red{background:var(--red-soft);color:var(--red)}.tag.amber{background:var(--amber-soft);color:var(--amber)}.tag.green{background:var(--green-soft);color:var(--green)}.tag.blue{background:var(--blue-soft);color:var(--blue)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px}.card-h{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.card-h h3{font-family:var(--serif);letter-spacing:.03em;margin:0;font-size:15px;font-weight:600}.pad{padding:16px 18px}.kpis{grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:14px;margin-bottom:18px;display:grid}.kpi{border:1px solid var(--line);border-top:2px solid var(--gold);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;padding:14px 18px 12px}.kpi span{color:var(--muted);letter-spacing:.04em;font-size:12.5px}.kpi b{font-family:var(--serif);font-variant-numeric:tabular-nums;letter-spacing:.01em;margin:4px 0 2px;font-size:26px;font-weight:600;display:block}.kpi small{font-size:12px;display:block}.kpi.red{border-top-color:var(--red)}.kpi.red b{color:var(--red)}.cols{grid-template-columns:2fr 1fr;align-items:start;gap:18px;display:grid}.cols.even{grid-template-columns:1fr 1fr}@media (width<=1100px){.cols,.cols.even{grid-template-columns:1fr}.shell{grid-template-columns:200px 1fr}}.empty{text-align:center;color:var(--muted);padding:40px 20px}.empty b{color:var(--text);font-family:var(--serif);margin-bottom:6px;font-size:15px;display:block}.empty p{margin:4px 0 12px}.empty .btn{margin-top:10px}.tbl-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%}.tbl th{text-align:left;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;background:#faf8f4;padding:10px 14px;font-size:12px;font-weight:600}.tbl td{border-bottom:1px solid var(--line-soft);vertical-align:top;padding:11px 14px}.tbl tbody tr:hover{background:#fbf9f4}.tbl tr.click{cursor:pointer}.tbl td.num,.tbl th.num{text-align:right}.tbl tfoot td{border-top:1px solid var(--line);background:#faf8f4;border-bottom:0}.toolbar{border-bottom:1px solid var(--line-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:14px 18px;display:flex}.toolbar input,.toolbar select{background:#fff;border:1px solid #d9d4c7;border-radius:8px;padding:6px 11px}.toolbar .grow{flex:1}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{cursor:pointer;background:#fff;border:1px solid #d9d4c7;border-radius:16px;padding:2px 13px;font-size:13px}.chip:hover{border-color:var(--gold)}.chip.on{background:var(--navy-700);border-color:var(--navy-700);color:#fff}.todo{border-bottom:1px solid var(--line-soft);grid-template-columns:3px 1fr auto;align-items:center;gap:14px;padding:14px 18px;display:grid}.todo:last-child{border-bottom:0}.todo .bar{background:#cfc9bb;border-radius:2px;align-self:stretch}.todo.urgent .bar{background:var(--red)}.todo.warn .bar{background:#d29a2c}.todo.todo .bar{background:var(--navy-700)}.todo h4{margin:0;font-size:14px;font-weight:600}.todo p{color:var(--muted);margin:3px 0 0;font-size:13px}.todo .who{color:#98a0ad;font-size:12px}.lanes{padding:4px 0}.lane{border-bottom:1px solid var(--line-soft);grid-template-columns:110px 1fr;align-items:center;display:grid}.lane:last-child{border-bottom:0}.lane-name{padding:6px 18px}.lane-name b{font-family:var(--serif);letter-spacing:.08em;color:var(--navy-700)}.stepper{scrollbar-width:none;gap:4px;margin:0;padding:12px 16px;list-style:none;display:flex;overflow-x:auto}.stepper::-webkit-scrollbar{display:none}.stepper li{min-width:86px;color:var(--muted);text-align:center;flex-direction:column;flex:0 170px;align-items:center;gap:2px;display:flex;position:relative}.stepper li:after{content:"";background:var(--line);height:1px;position:absolute;top:14px;left:calc(50% + 18px);right:calc(18px - 50%)}.stepper li:last-child:after{display:none}.stepper .dot{z-index:1;width:28px;height:28px;color:var(--muted);background:#fff;border:1px solid #d3cdbd;border-radius:50%;place-items:center;font-size:12.5px;display:grid}.stepper li.s-done .dot{background:var(--navy-700);border-color:var(--navy-700);color:#fff}.stepper li.s-done:after{background:var(--navy-700)}.stepper li.s-done{color:var(--text)}.stepper li.s-skipped{opacity:.45}.stepper li.s-void .dot{background:var(--red);border-color:var(--red);color:#fff}.stepper small{min-height:16px;font-size:11.5px}.tabs{border-bottom:1px solid var(--line);gap:2px;margin-bottom:18px;display:flex;overflow-x:auto}.tabs button{cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 18px}.tabs button:hover{color:var(--text)}.tabs button.on{color:var(--navy-700);border-color:var(--gold);font-weight:600}.kv{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px 28px;padding:16px 18px;display:grid}.kv div span{color:var(--muted);letter-spacing:.04em;font-size:12px;display:block}.kv div b{font-weight:500}.legend{color:var(--muted);flex-wrap:wrap;gap:16px;font-size:12.5px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:6px;display:inline-block}.bld{margin-bottom:20px}.bld h4{font-family:var(--serif);letter-spacing:.04em;margin:0 0 10px}.cells{grid-template-columns:repeat(auto-fill,minmax(156px,1fr));gap:10px;display:grid}.cell{border:1px solid var(--line);cursor:pointer;text-align:left;background:#fff;border-radius:10px;padding:10px 12px;transition:box-shadow .15s,transform .15s;position:relative}.cell:hover{transform:translateY(-1px);box-shadow:0 6px 18px #0b192c1a}.cell b{font-family:var(--serif);display:block}.cell small{line-height:1.4;display:block}.cell.AVAILABLE{background:#f6fbf8;border-color:#c4dfd0}.cell.RELEASED{background:#f6fbf8;border-style:dashed;border-color:#c4dfd0}.cell.LOCKED{background:#fffaee;border-color:#ecd49b}.cell.SOLD{background:#f1f4f9;border-color:#cdd7e6}.cell.SOLD.nominee{background:#f6f1fa;border-color:#dccbea}.cell .st{position:absolute;top:10px;right:10px}.timeline{margin:0;padding:8px 18px 14px;list-style:none}.timeline li{border-bottom:1px dashed var(--line);grid-template-columns:124px 1fr;gap:10px;padding:8px 0;display:grid}.timeline li:last-child{border:0}.timeline time{color:var(--muted);font-size:12.5px}.mgroup{padding:4px 18px 14px}.mgroup h4{color:var(--navy-700);letter-spacing:.08em;font-size:12.5px;font-family:var(--serif);margin:14px 0 6px}.metric{border-bottom:1px solid var(--line-soft);cursor:pointer;grid-template-columns:56px 1fr auto;align-items:baseline;gap:10px;padding:8px 0;display:grid}.metric:hover{background:#fbf9f4}.metric .col{color:var(--gold);background:var(--gold-soft);text-align:center;border-radius:4px;padding:0 4px;font-size:11px}.metric .v{font-variant-numeric:tabular-nums;font-weight:600}.explain{border:1px solid var(--line);cursor:default;background:#faf8f4;border-radius:8px;grid-column:1/-1;padding:12px 14px;font-size:13px}.explain .eq{border:1px solid var(--line);word-break:break-all;background:#fff;border-radius:6px;margin:6px 0;padding:7px 9px;font-family:ui-monospace,Menlo,monospace}.explain table{border-collapse:collapse}.explain td{padding:1px 14px 1px 0}.bar-row{grid-template-columns:56px 1fr 44px;align-items:center;gap:10px;padding:6px 0;display:grid}.bar-track{background:#ece9e1;border-radius:6px;height:8px;overflow:hidden}.bar-track i{background:linear-gradient(90deg, var(--navy-700), var(--gold));height:100%;display:block}.backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#0b192c80;place-items:start center;padding:6vh 16px;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{border-top:3px solid var(--gold);background:#fff;border-radius:14px;width:min(620px,100%);box-shadow:0 24px 70px #0b192c59}.modal.wide{width:min(900px,100%)}.modal header{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:16px 22px;display:flex}.modal header h3{font-family:var(--serif);margin:0;font-size:17px}.modal .x{cursor:pointer;color:var(--muted);background:0 0;border:0;font-size:22px}.modal-b{padding:18px 22px 22px}.intro{background:var(--gold-soft);color:#5f4b25;border-radius:8px;margin-bottom:16px;padding:9px 13px;font-size:13px}.form-grid{grid-template-columns:1fr 1fr;gap:14px 16px;display:grid}.field{flex-direction:column;gap:5px;display:flex}.field.wide{grid-column:1/-1}.field>span{color:#4d5766;letter-spacing:.02em;font-size:12.5px}.field i{color:var(--red);margin-left:2px;font-style:normal}.field input,.field select,.field textarea{background:#fff;border:1px solid #d3cdbd;border-radius:8px;width:100%;padding:8px 11px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #b28b4a2e}.field .check{align-items:center;gap:6px;padding-top:6px;display:flex}.field .check input{width:auto}.hint-s{color:var(--muted);font-size:12px}.money-echo{color:var(--gold);font-variant-numeric:tabular-nums;font-size:12.5px}.form-err{background:var(--red-soft);color:var(--red);border-radius:8px;margin-top:12px;padding:8px 12px}.form-foot{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.file{flex-direction:column;gap:4px;display:flex}.plan table{border-collapse:collapse;width:100%}.plan th{text-align:left;color:var(--muted);padding:4px 6px;font-size:12px}.plan td{padding:3px 6px}.plan select{min-width:108px}.plan input,.plan select{border:1px solid #d3cdbd;border-radius:6px;width:100%;padding:5px 8px}.plan .pct{color:var(--muted);white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;padding-right:10px}.plan .bank-row input,.plan .bank-row select{background:var(--blue-soft)}.plan-sum{text-align:right;line-height:1.8}.plan-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.plan-foot .ok{color:var(--green);font-style:normal}.plan-foot .bad{color:var(--red);font-style:normal}.warnbox{border-radius:8px;margin-top:12px;padding:9px 13px;font-size:13px}.warnbox.warn{background:var(--amber-soft);color:#7a4f00}.warnbox.tip{background:var(--blue-soft);color:#234a7d}.warnbox ul{margin:0;padding-left:18px}.toaster{z-index:100;flex-direction:column;gap:10px;max-width:380px;display:flex;position:fixed;bottom:22px;right:22px}.toast{background:var(--navy-800);color:#fff;cursor:pointer;border-left:3px solid var(--gold);border-radius:10px;padding:11px 16px;box-shadow:0 10px 28px #00000047}.toast.err{background:#6e1f1a;border-left-color:#e08a83}.toast.warn{background:#6b4708;border-left-color:#e6b655}.toast small{color:#bccadb;margin-top:2px;display:block}.toast.err small{color:#f1c9c5}.toast.warn small{color:#f6dfae}.palette .modal{width:min(640px,100%)}.palette input.q{border:0;border-bottom:1px solid var(--line);border-radius:12px 12px 0 0;outline:none;width:100%;padding:16px 20px;font-size:16px}.palette ul{max-height:56vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.palette li{cursor:pointer;border-radius:8px;align-items:center;gap:12px;padding:9px 14px;display:flex}.palette li.sel,.palette li:hover{background:var(--gold-soft)}.palette h5{color:var(--muted);margin:8px 14px 2px;font-size:12px;font-weight:500}.split{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.callout{border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.callout.info{background:var(--gray-soft)}.callout b{display:block}.callout p{color:#55606f;margin:2px 0 0;font-size:13px}.login{background:var(--bg);grid-template-columns:1.1fr 1fr;min-height:100%;display:grid}.login-hero{color:#fff;background:radial-gradient(120% 90% at 20% 10%,#1b3a66 0%,#0f2342 45%,#0a1830 100%);place-items:center;display:grid;position:relative;overflow:hidden}.skyline{width:100%;height:52%;position:absolute;inset:auto 0 0}.login-hero-t{text-align:center;padding:0 40px 220px;position:relative}.login-hero-t .logo{filter:drop-shadow(0 6px 18px #b28b4a73);margin:0 auto 22px;display:block}.logo{border-radius:11px;flex:none;box-shadow:0 2px 8px #b28b4a59}.login-hero-t h1{font-family:var(--serif);letter-spacing:.14em;margin:0;font-size:34px;font-weight:600}.login-hero-t p{letter-spacing:.3em;color:var(--gold-light);margin:10px 0 0;font-size:14px}.login-hero-t .rule{background:var(--gold);width:56px;height:1px;margin:22px auto 14px}.login-hero-t small{color:#8fa4c0;letter-spacing:.2em}.login-pane{place-items:center;padding:32px;display:grid}.login-card{flex-direction:column;gap:16px;width:min(380px,100%);display:flex}.login-card h2{font-family:var(--serif);letter-spacing:.2em;margin:0 0 6px;font-size:26px}.demo-accounts{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;padding-top:14px;display:flex}@media (width<=860px){.login{grid-template-columns:1fr}.login-hero{min-height:220px}.login-hero-t{padding-bottom:40px}}
