:root{--bg: #f5f6f8;--panel: #ffffff;--panel-2: #fafbfc;--border: #e3e6eb;--border-strong: #d3d8e0;--text: #131722;--text-2: #5d6675;--text-3: #8b94a3;--up: #e0342b;--down: #0aa05a;--flat: #6b7280;--accent: #2f6feb;--accent-soft: #eaf1ff;--hover: #f2f5fa;--flash-up: #fae2e1;--flash-down: #dcf1e8;--fin-good: #0aa05a;--fin-warn: #c77700;--fin-bad: #e0342b;--zone-bear: #0d9488;--zone-mid: #2f6feb;--zone-bull: #c77700;--nat-central: #7c3aed;--nat-local: #1e56c8;--nat-private: #5b6b85;--shadow: 0 6px 24px rgba(19, 23, 34, .1);--radius: 8px}html[data-theme=dark]{--bg: #131722;--panel: #1a1f2b;--panel-2: #212736;--border: #2a3142;--border-strong: #39415a;--text: #e7eaf0;--text-2: #a3adbf;--text-3: #78839a;--up: #ff5b52;--down: #26c281;--flat: #9aa4b5;--accent: #4c8dff;--accent-soft: #1d2a45;--hover: #232a3a;--flash-up: #432a32;--flash-down: #1c3c3a;--fin-good: #26c281;--fin-warn: #e0a33c;--fin-bad: #ff5b52;--zone-bear: #2dd4bf;--zone-mid: #4c8dff;--zone-bull: #e0a33c;--nat-central: #b18cff;--nat-local: #7aa8ff;--nat-private: #9aa8bf;--shadow: 0 8px 28px rgba(0, 0, 0, .45)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;font-size:13px;-webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}button,input,select{font-family:inherit;font-size:inherit;color:inherit}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.topbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.brand{display:flex;align-items:center;gap:8px;margin-right:4px}.brand .logo{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,var(--accent),#7aa7ff);display:grid;place-items:center;color:#fff;font-weight:700;font-size:13px}.brand h1{font-size:15px;margin:0;font-weight:650;letter-spacing:.2px}.brand .sub{font-size:11px;color:var(--text-3);margin-top:1px}.spacer{flex:1 1 auto}.btn{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 11px;background:var(--panel);border:1px solid var(--border-strong);border-radius:6px;cursor:pointer;color:var(--text-2);transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn:hover{background:var(--hover);color:var(--text)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.07)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--hover)}.btn.sm{height:26px;padding:0 8px;font-size:12px}.themebtn{gap:6px}.themebtn .themeico{flex:0 0 auto;display:block;transition:transform .25s ease}.themebtn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.themebtn:hover .themeico{transform:rotate(-20deg) scale(1.1)}.app.mobile .themebtn{padding:0 10px}.app.mobile .themebtn .themeico{width:17px;height:17px}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:6px;overflow:hidden}.seg button{height:28px;padding:0 10px;background:transparent;border:0;cursor:pointer;color:var(--text-2)}.seg button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.seg button+button{border-left:1px solid var(--border)}select.mini{height:30px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel);padding:0 6px}.combo{position:relative;width:300px}.combo input{width:100%;height:30px;padding:0 10px 0 30px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel)}.combo input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.combo .icon{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text-3)}.combo .drop{position:absolute;top:34px;left:0;right:0;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);max-height:320px;overflow:auto;z-index:50}.combo .item{display:flex;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--border)}.combo .item:last-child{border-bottom:0}.combo .item:hover,.combo .item.active{background:var(--hover)}.combo .item .c{font-variant-numeric:tabular-nums;color:var(--text-2);width:56px}.combo .item .n{flex:1}.combo .item .tag{font-size:11px;color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:0 5px}.combo .item .own{font-size:11px;color:var(--text-3)}.combo .hint{padding:9px 10px;color:var(--text-3)}.combo .err{padding:9px 10px;color:var(--up)}.stats{display:flex;gap:14px;align-items:center;color:var(--text-2);font-size:12px}.stats b{font-variant-numeric:tabular-nums;font-weight:650;color:var(--text)}.stats .up b{color:var(--up)}.stats .down b{color:var(--down)}.listsw{position:relative;flex:0 1 auto;min-width:0}.listsw-btn{display:inline-flex;align-items:center;gap:6px;height:30px;max-width:190px;padding:0 9px;background:var(--panel);border:1px solid var(--border-strong);border-radius:6px;color:var(--text);cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s}.listsw-btn:hover{background:var(--hover)}.listsw-btn.open{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.listsw-btn .lb-ico{color:var(--accent);font-size:12px;flex:0 0 auto}.listsw-btn .lb-name{font-weight:600;min-width:0;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.listsw-btn .lb-cnt{flex:0 0 auto;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums;border:1px solid var(--border);border-radius:999px;padding:0 5px;line-height:15px}.listsw-btn .lb-caret{flex:0 0 auto;color:var(--text-3);font-size:10px}.listsw-pop{position:absolute;top:calc(100% + 6px);left:0;width:296px;max-width:calc(100vw - 20px);background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);z-index:60;overflow:hidden}.listsw-pop.flip{left:auto;right:0}.lsp-head{display:flex;align-items:center;gap:6px;padding:8px 12px;font-size:11.5px;color:var(--text-3);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em}.lsp-head .lsp-headn{margin-left:auto;letter-spacing:0;font-variant-numeric:tabular-nums;border:1px solid var(--border);border-radius:999px;padding:0 5px;line-height:15px}.lsp-body{max-height:264px;overflow:auto;padding:4px}.lsp-row{display:flex;align-items:center;border-radius:7px}.lsp-row:hover{background:var(--hover)}.lsp-row.on{background:var(--accent-soft)}.lsp-row.editing{padding:3px}.lsp-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;padding:7px 8px;background:transparent;border:0;border-radius:7px;color:var(--text);cursor:pointer;text-align:left}.lsp-tick{flex:0 0 auto;width:12px;font-size:11px;color:var(--accent)}.lsp-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lsp-row.on .lsp-name{font-weight:600}.lsp-cnt{flex:0 0 auto;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.lsp-ops{flex:0 0 auto;display:flex;gap:2px;padding-right:5px}.lsp-op{width:24px;height:24px;padding:0;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--text-3);cursor:pointer}.lsp-op:hover{color:var(--accent);border-color:var(--border-strong);background:var(--panel)}.lsp-op.del:hover{color:var(--up)}.lsp-op:disabled{opacity:.3;cursor:not-allowed}.lsp-op:disabled:hover{color:var(--text-3);border-color:transparent;background:transparent}.lsp-input{width:100%;height:28px;padding:0 8px;border:1px solid var(--accent);border-radius:6px;background:var(--panel);color:var(--text)}.lsp-input:focus{outline:none;box-shadow:0 0 0 2px var(--accent-soft)}.lsp-err{margin:0 8px 6px;padding:5px 8px;border-radius:6px;font-size:12px;background:color-mix(in srgb,var(--up) 12%,transparent);color:var(--up)}.lsp-foot{padding:4px;border-top:1px solid var(--border)}.lsp-add{width:100%;height:32px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--accent);cursor:pointer;font-size:12.5px;font-weight:600;text-align:left}.lsp-add:hover{background:var(--accent-soft)}.tablewrap{flex:1 1 auto;overflow:auto;padding:0;overscroll-behavior:contain;touch-action:pan-y}.tablepad{padding:10px 16px 40px}table.grid{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius)}table.grid thead th:first-child{border-top-left-radius:var(--radius)}table.grid thead th:last-child{border-top-right-radius:var(--radius)}table.grid tbody tr:last-child td:first-child{border-bottom-left-radius:var(--radius)}table.grid tbody tr:last-child td:last-child{border-bottom-right-radius:var(--radius)}table.grid th,table.grid td{padding:7px 10px;border-bottom:1px solid var(--border);white-space:nowrap;font-variant-numeric:tabular-nums}table.grid thead th{position:sticky;top:0;z-index:10;background:var(--panel-2);color:var(--text-2);font-weight:600;font-size:12px;border-bottom:1px solid var(--border-strong);-webkit-user-select:none;user-select:none}table.grid thead th.sortable{cursor:pointer}table.grid thead th.sortable:hover{color:var(--text);background:var(--hover)}table.grid thead th .arrow{margin-left:4px;color:var(--accent);font-size:10px}table.grid thead th.draggable-col{cursor:grab}table.grid thead th.draggable-col:active{cursor:grabbing}table.grid thead th.draggable-col:after{content:"⋮⋮";position:absolute;left:1px;top:50%;transform:translateY(-50%);font-size:8px;line-height:1;letter-spacing:-1px;color:var(--text-3);opacity:0;transition:opacity .12s;pointer-events:none}table.grid thead th.draggable-col:hover:after{opacity:.7}table.grid thead th.drag-src{opacity:.4}table.grid thead th.drop-before{box-shadow:inset 2px 0 0 var(--accent)}table.grid thead th.drop-after{box-shadow:inset -2px 0 0 var(--accent)}table.grid tbody td.name{border-left:4px solid transparent}table.grid tbody tr.has-color td.name{border-left-color:var(--row-color)}table.grid tbody tr.drag-src{opacity:.4}table.grid tbody tr.drop-before{box-shadow:inset 0 2px 0 var(--accent)}table.grid tbody tr.drop-after{box-shadow:inset 0 -2px 0 var(--accent)}table.grid tbody tr:hover td{background:var(--hover)}table.grid tbody tr:last-child td{border-bottom:0}table.grid th.sticky,table.grid td.sticky{position:sticky;z-index:5;background:var(--panel)}table.grid thead th.sticky{z-index:12;background:var(--panel-2)}table.grid tbody tr:hover td.sticky{background:var(--hover)}table.grid th.sticky-edge,table.grid td.sticky-edge{border-right:1px solid var(--border-strong)}table.grid th.sticky:before,table.grid td.sticky:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--panel);z-index:-1;pointer-events:none}table.grid thead th.sticky:before{background:var(--panel-2)}table.grid tbody tr:hover td.sticky:before{background:var(--hover)}th.al-right,td.al-right{text-align:right}th.al-left,td.al-left{text-align:left}td.code{color:var(--text-2)}td.name{font-weight:600}td.actions{white-space:nowrap}td.actions .rowbtn+.rowbtn{margin-left:4px}.c-up{color:var(--up)}.c-down{color:var(--down)}.c-flat{color:var(--flat)}.c-none{color:var(--text-3)}td.fin-good{color:var(--fin-good);font-weight:600}td.fin-warn{color:var(--fin-warn);font-weight:600}td.fin-bad{color:var(--fin-bad);font-weight:600}td.fin-na{color:var(--text-3)}td .scplabel{display:inline-block;margin-right:5px;padding:0 4px;font-size:11px;font-weight:400;line-height:16px;border:1px solid currentColor;border-radius:3px;opacity:.8}td.yield strong{color:var(--accent);font-weight:650}td.valrange{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:600}table.grid td.val-hit{background:color-mix(in srgb,var(--zone) 20%,transparent)!important;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--zone) 50%,transparent);color:var(--zone)}table.grid td.val-hit-bear{--zone: var(--zone-bear)}table.grid td.val-hit-mid{--zone: var(--zone-mid)}table.grid td.val-hit-bull{--zone: var(--zone-bull)}td.years .yc{display:inline-flex;align-items:center;gap:4px}td.years .dot{width:6px;height:6px;border-radius:50%;background:var(--accent)}td.cost{cursor:text}td.cost .ph{color:var(--text-3)}td.cost:hover{background:var(--accent-soft)!important}td.cost input{width:78px;text-align:right;height:24px;padding:0 6px;border:1px solid var(--accent);border-radius:4px;background:var(--panel)}td.cost input:focus{outline:none}.flash-up{animation:fu .9s ease-out}.flash-down{animation:fd .9s ease-out}@keyframes fu{0%{background:var(--flash-up)}to{background:var(--panel)}}@keyframes fd{0%{background:var(--flash-down)}to{background:var(--panel)}}.rowbtn{border:1px solid transparent;background:transparent;color:var(--text-3);cursor:pointer;border-radius:5px;height:24px;padding:0 7px}.rowbtn:hover{color:var(--up);border-color:var(--border-strong);background:var(--panel)}.rowbtn.neutral:hover{color:var(--accent)}.rowbtn.colorbtn{width:24px;padding:0;display:inline-grid;place-items:center;color:var(--row-color, var(--text-3))}.rowbtn.colorbtn .dot{width:12px;height:12px;border-radius:50%;background:transparent;border:1.5px solid var(--text-3);box-sizing:border-box}.rowbtn.colorbtn.on .dot{border-color:transparent;background:var(--row-color, var(--text-3))}td.actions .rowbtn.movebtn{width:24px;padding:0;margin-left:8px;display:inline-grid;place-items:center;color:var(--text-3);cursor:grab}td.actions .rowbtn.movebtn:active{cursor:grabbing}td.actions .rowbtn.movebtn:hover{color:var(--accent);border-color:var(--border-strong);background:var(--panel)}.rowbtn.movebtn .moveicon{width:12px;height:12px;display:block;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}.rowbtn.movebtn[aria-disabled=true]{opacity:.35;cursor:not-allowed}.colorpop{z-index:60;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:10px 10px 6px;width:240px}.colorpop .cpswatches{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-bottom:4px}.colorpop .cpsw{width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(0,0,0,.08);cursor:pointer;padding:0;transition:transform .1s ease}.colorpop .cpsw:hover{transform:scale(1.12)}.colorpop .cpsw.on{outline:2px solid var(--accent);outline-offset:1px}.colorpop .cplabels{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-bottom:6px}.colorpop .cpl{font-size:10px;text-align:center;color:var(--text-3)}.colorpop .cpl.on{color:var(--accent);font-weight:600}.colorpop .cpfoot{display:flex;justify-content:flex-end;border-top:1px dashed var(--border);padding-top:6px}.colorpop .cpclr{background:transparent;border:0;color:var(--text-3);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px}.colorpop .cpclr:hover{color:var(--up);background:var(--hover)}.empty{background:var(--panel);border:1px dashed var(--border-strong);border-radius:var(--radius);padding:56px 20px;text-align:center;color:var(--text-3)}.empty h3{margin:0 0 6px;color:var(--text);font-size:15px}.empty p{margin:0;font-size:12.5px}.skeleton{background:var(--panel);border-radius:var(--radius);padding:20px;color:var(--text-3)}.filtergroup{display:inline-flex;align-items:center;gap:6px}.filterinput{height:30px;width:150px;padding:0 10px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel);color:var(--text)}.filterinput:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.btn.advbtn{height:30px;padding:0 10px;font-size:12.5px}.btn.advbtn.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:600}.advbody{padding:14px 16px 4px}.advblk{margin-bottom:14px}.advblk .advk{font-size:11.5px;color:var(--text-3);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.advhint{font-size:12px;color:var(--text-3)}.advrow{display:flex;align-items:center;gap:6px}.advrow .advinp{flex:1 1 auto;min-width:0}.advdash{color:var(--text-3);padding:0 4px}.advinp{display:block;width:100%;min-width:0;height:30px;padding:0 10px;border:1px solid var(--border-strong);border-radius:6px;background:var(--panel);color:var(--text);font-variant-numeric:tabular-nums}.advinp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.adv2col{display:flex;gap:14px;flex-wrap:wrap}.adv2col .advblk{flex:1 1 180px;min-width:0}.advgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 12px}.advcell{min-width:0}.advcellk{display:block;margin-top:5px;font-size:11.5px;color:var(--text-3);line-height:1.45}.advcellk em{display:block;font-style:normal;font-size:11px;color:var(--text-3);opacity:.8}.advsub{margin-top:8px;font-size:11.5px;color:var(--text-3);line-height:1.55}.advchips{display:flex;flex-wrap:wrap;gap:6px}.advchips.sm{gap:4px}.chip{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;font-size:12px;border:1px solid var(--border-strong);border-radius:999px;background:var(--panel-2);color:var(--text-2);cursor:pointer;white-space:nowrap}.chip:hover{background:var(--hover);color:var(--text)}.chip.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:600}.chip.on.orphan{border-style:dashed}.chip.orphan .chip-x{font-size:12px;line-height:1;opacity:.65;margin-left:1px}.chip.clr .cdot{width:10px;height:10px;border-radius:50%;display:inline-block}.banner{margin:10px 16px 0;padding:8px 12px;border-radius:6px;background:#fff4e5;color:#8a5300;border:1px solid #ffd9a8;font-size:12.5px}html[data-theme=dark] .banner{background:#3a2c14;color:#ffd390;border-color:#5a4420}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c101880;display:flex;align-items:flex-start;justify-content:center;overflow-y:auto;overscroll-behavior:contain;z-index:100;padding:20px;-webkit-overflow-scrolling:touch}.modal{background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);width:100%;max-width:560px;max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);margin:auto 0;display:flex;flex-direction:column}.modal.wide{max-width:720px}.modal header{display:flex;align-items:center;padding:13px 16px;border-bottom:1px solid var(--border);flex:0 0 auto}.modal header h2{margin:0;font-size:14px;font-weight:650}.modal header .x{margin-left:auto}.modal .body{padding:14px 16px;flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch}.modal footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;flex:0 0 auto;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}.colgroup{margin-bottom:14px}.colgroup h4{margin:0 0 7px;font-size:11.5px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.collist{display:flex;flex-direction:column;gap:4px}.colrow{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--panel-2)}.colrow.on{border-color:var(--accent);background:var(--accent-soft)}.colrow label{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer}.colrow .hint{font-size:11px;color:var(--text-3)}.dtable{width:100%;border-collapse:collapse}.dtable th,.dtable td{text-align:right;padding:6px 8px;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums}.dtable th:first-child,.dtable td:first-child{text-align:left}.dtable thead th{color:var(--text-3);font-weight:600;font-size:11.5px}.kpis{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}.kpi{flex:1 1 120px;border:1px solid var(--border);border-radius:8px;padding:9px 11px;background:var(--panel-2)}.kpi .k{font-size:11.5px;color:var(--text-3)}.kpi .v{font-size:17px;font-weight:680;margin-top:2px;font-variant-numeric:tabular-nums}.kpi .v.accent{color:var(--accent)}.footnote{padding:8px 16px 14px;color:var(--text-3);font-size:11.5px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(18px + env(safe-area-inset-bottom,0px));max-width:88vw;background:var(--text);color:var(--panel);padding:8px 14px;border-radius:999px;font-size:12.5px;box-shadow:var(--shadow);z-index:200;pointer-events:none;animation:toastin .18s ease-out}@keyframes toastin{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.mspacer{flex:1 1 auto}.topbar.compact{flex-wrap:nowrap;flex-direction:column;align-items:stretch;gap:6px;padding:8px 10px}.topbar.compact .mrow{display:flex;align-items:center;gap:6px;min-width:0}.topbar.compact .mtitle{font-size:14px;font-weight:650;color:var(--text)}.topbar.compact .mstats{font-size:11.5px;color:var(--text-3)}.topbar.compact .mstats b{font-variant-numeric:tabular-nums;color:var(--text)}.topbar.compact .mstats b.up{color:var(--up)}.topbar.compact .mstats b.down{color:var(--down)}.topbar.compact .combo{flex:1 1 auto;width:auto;min-width:0}.topbar.compact .combo input{height:32px;font-size:13px}.mbtn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 11px;flex:0 0 auto;background:var(--panel);border:1px solid var(--border-strong);border-radius:8px;color:var(--text-2);cursor:pointer;white-space:nowrap}.mbtn:active{background:var(--hover)}.mbtn:disabled{opacity:.5}.mbtn.ghost{border-color:transparent;background:transparent}.mbtn.danger{color:var(--up)}.mbtn.advbtn.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:600}.sortwrap{position:relative;flex:0 0 auto;min-width:0}.sortbtn{max-width:118px;padding:0 8px;gap:3px}.app.mobile .sortbtn{max-width:96px}.sortbtn.open{border-color:var(--accent);color:var(--accent)}.sortbtn-lb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sortbtn .caret{flex:0 0 auto;font-size:9px;color:var(--text-3)}.sortpop{position:absolute;top:calc(100% + 6px);left:0;z-index:60;width:186px;max-height:calc(100vh - 140px);max-height:min(52dvh,320px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:4px;display:flex;flex-direction:column;gap:1px}.sortopt{flex:0 0 auto;text-align:left;border:0;background:transparent;color:var(--text-2);padding:9px 10px;border-radius:7px;font-size:13px;white-space:nowrap;cursor:pointer}.sortopt:active{background:var(--hover)}.sortopt:hover{background:var(--hover);color:var(--text)}.sortopt.on{color:var(--accent);background:var(--accent-soft);font-weight:600}.mlist{display:flex;flex-direction:column;gap:6px}.mcard{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden}.mcard.open{border-color:var(--accent)}.mcard-main{padding:8px 10px;cursor:pointer}.mline1{display:flex;align-items:baseline;gap:6px;min-width:0}.mline1 .mname{font-size:14.5px;font-weight:650;color:var(--text);max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mline1 .mcode{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}.mline1 .mind{font-size:10.5px;color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:0 4px}.mline1 .mprice{margin-left:auto;font-size:17px;font-weight:650;font-variant-numeric:tabular-nums;padding:1px 4px;border-radius:4px}.mline1 .mchg{font-size:12px;font-variant-numeric:tabular-nums;min-width:52px;text-align:right}.mline2{display:flex;align-items:baseline;gap:10px;margin-top:4px;flex-wrap:nowrap;overflow:hidden}.mmetric{display:inline-flex;align-items:baseline;gap:3px;white-space:nowrap}.mmetric i{font-style:normal;font-size:10.5px;color:var(--text-3)}.mmetric b{font-weight:500;font-size:11.5px;color:var(--text-2);font-variant-numeric:tabular-nums}.mmetric.muted i{color:var(--text-3)}.mexp{font-size:11px;color:var(--accent);flex:0 0 auto}.mexp-body{border-top:1px solid var(--border);padding:10px;background:var(--panel-2)}.mgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}.mfield{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.mfield .k{font-size:11px;color:var(--text-3);flex:0 0 auto}.mfield .v{font-size:12px;color:var(--text);font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mcost{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--text-2)}.mcost input{flex:1 1 auto;min-width:0;height:34px;padding:0 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--panel);font-variant-numeric:tabular-nums}.mcost input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.mactions{display:flex;gap:6px;margin-top:10px}.mactions .mbtn{height:36px}.colrow .pin{font-size:10px;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:0 4px;margin-left:2px}.colrow label input:disabled{cursor:not-allowed}.app.mobile .tablepad{padding:8px 10px calc(28px + env(safe-area-inset-bottom,0px))}.app.mobile .footnote{padding:4px 12px calc(8px + env(safe-area-inset-bottom,0px));font-size:11px}.app.mobile .banner{margin:8px 10px 0}.app.mobile .listsw-btn{height:32px;max-width:140px}.app.mobile .listsw-btn .lb-name{max-width:76px}.app.mobile .listsw-btn .lb-cnt{display:none}.app.mobile .listsw-pop{width:min(296px,calc(100vw - 20px));top:calc(100% + 8px)}.app.mobile .topbar.compact .mstats{min-width:0;overflow:hidden}.app.mobile .overlay{padding:8px}.app.mobile .modal{max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);border-radius:12px}.app.mobile .modal footer .btn{height:38px;padding:0 16px;font-size:13.5px}.app.mobile .advinp{height:38px}.app.mobile .advbody{padding:12px 12px 4px}.app.mobile .advblk{margin-bottom:12px}.app.mobile .advchips .chip{height:30px;padding:0 11px}.app.mobile .adv2col{gap:10px 12px}.app.mobile .adv2col .advblk{flex:1 1 150px;min-width:0}.app.mobile .colrow{padding:8px 10px}.app.mobile .combo .drop{max-height:min(52dvh,320px)}.app.mobile .seg button{height:32px}.app.mobile .kpis{gap:8px}.app.mobile table.grid th,.app.mobile table.grid td{padding:8px 9px}.app.mobile table.grid thead th{font-size:12px}@supports (height: 100svh){html,body,#root{height:100svh}}@media(max-width:767px){html{-webkit-text-size-adjust:100%}body,*{-webkit-tap-highlight-color:transparent}body{overscroll-behavior-y:none}}.tabbar{display:flex;align-items:center;gap:10px;padding:0 2px 8px;min-width:0}.tabs{display:flex;align-items:flex-end;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;padding-bottom:1px}.tabs::-webkit-scrollbar{height:6px}.tabs::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.ltab{display:inline-flex;align-items:center;flex:0 0 auto;position:relative;border:1px solid var(--border);border-bottom:none;border-radius:8px 8px 0 0;background:var(--panel-2)}.ltab.on{background:var(--panel);border-color:var(--border-strong);box-shadow:inset 0 2px 0 var(--accent)}.ltab-main{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;max-width:190px;border:0;background:transparent;cursor:pointer;color:var(--text-2);font-size:12.5px;font-weight:500}.ltab.on .ltab-main{color:var(--text);font-weight:600}.ltab-main:hover{color:var(--text)}.ltab-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:130px}.ltab-cnt{font-size:11px;line-height:1;padding:2px 5px;border-radius:8px;background:var(--hover);color:var(--text-3);font-variant-numeric:tabular-nums}.ltab.on .ltab-cnt{background:var(--accent-soft);color:var(--accent)}.ltab-cnt.filtered{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);display:inline-flex;align-items:baseline;gap:1px}.ltab-cnt-of{font-size:10px;opacity:.65;font-weight:400}.ltab-x{border:0;background:transparent;cursor:pointer;color:var(--text-3);font-size:10px;line-height:1;padding:4px 6px 4px 0;opacity:0;transition:opacity .12s}.ltab:hover .ltab-x{opacity:.75}.ltab-x:hover{color:var(--up);opacity:1}.ltab-x:disabled{display:none}.ltab.editing{display:inline-flex;align-items:center;height:30px;padding:0 6px}.ltab-input{height:22px;width:120px;padding:0 6px;font-size:12.5px;outline:none;border:1px solid var(--accent);border-radius:5px;background:var(--panel);color:var(--text)}.ltab-add{flex:0 0 auto;height:30px;min-width:30px;border:1px dashed var(--border-strong);border-radius:8px 8px 0 0;background:transparent;color:var(--text-3);cursor:pointer;font-size:14px;line-height:1}.ltab-add:hover{color:var(--accent);border-color:var(--accent)}.tabbar-hint{flex:0 0 auto;font-size:11.5px;color:var(--text-3);white-space:nowrap}.tabbar-err{flex:0 0 auto;font-size:11.5px;color:var(--up)}.ltab.screen .ltab-name{display:inline-flex;align-items:center;gap:5px}.ltab-screen-ico{display:inline-flex;color:var(--text-3);transition:color .12s}.ltab.screen.on .ltab-screen-ico{color:var(--accent)}.ltab.screen:not(.on):hover .ltab-screen-ico{color:var(--text-2)}.screenbar{display:flex;align-items:center;gap:8px;flex:0 0 auto;flex-wrap:wrap;padding:8px 16px;border-bottom:1px solid var(--border);background:var(--panel)}.sbar-title{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--text);white-space:nowrap}.sbar-ico{color:var(--accent);flex:0 0 auto}.sbar-conds{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:0}.sbar-chip{font-size:11.5px;padding:2px 7px;border-radius:999px;white-space:nowrap;background:var(--accent-soft);color:var(--accent);border:0;font-family:inherit;line-height:1.5;cursor:pointer;transition:box-shadow .12s,color .12s}.sbar-chip:hover{box-shadow:inset 0 0 0 1px var(--accent)}.sbar-chip:active{transform:translateY(1px)}.sbar-spacer{flex:1 1 auto}.sbar-status{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-3);white-space:nowrap}.sbar-status.ok{color:var(--text-2);font-weight:500}.sbar-status.busy{color:var(--accent)}.sbar-status.warn{color:var(--text);background:var(--hover);border:1px solid var(--border-strong);border-radius:999px;padding:1px 7px;font-weight:500}.sbar-spin{width:11px;height:11px;border-radius:50%;flex:0 0 auto;border:1.8px solid var(--accent-soft);border-top-color:var(--accent);animation:sbarspin .8s linear infinite}@keyframes sbarspin{to{transform:rotate(360deg)}}.sbar-time{font-size:11.5px;color:var(--text-3);white-space:nowrap}.scr-sortwrap{flex:0 0 auto}.scr-sort{height:26px;padding:0 6px;border-radius:6px;font-size:12px;background:var(--panel);border:1px solid var(--border-strong);color:var(--text-2)}.scr-modal{width:min(560px,calc(100vw - 32px))}.scr-body{padding:14px 16px 4px}.scr-note{margin:0 0 14px;font-size:12.5px;color:var(--text-3);line-height:1.6}.scr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px 14px;margin-bottom:16px}.scr-field{min-width:0}.scr-label{font-size:11.5px;color:var(--text-3);margin-bottom:5px}.scr-input{display:flex;align-items:center;gap:6px}.scr-input .advinp{flex:1 1 auto;min-width:0}.scr-suffix{font-size:12px;color:var(--text-3);flex:0 0 auto}.scr-switches{display:flex;flex-direction:column;gap:9px;margin-bottom:14px}.scr-switch{display:inline-flex;align-items:center;gap:8px;text-align:left;background:transparent;border:0;padding:0;cursor:pointer;font-size:13px;color:var(--text-2)}.scr-knob{flex:0 0 auto;width:34px;height:20px;border-radius:999px;position:relative;background:var(--border-strong);transition:background .15s}.scr-knob:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}.scr-switch.on{color:var(--text)}.scr-switch.on .scr-knob{background:var(--accent)}.scr-switch.on .scr-knob:after{transform:translate(14px)}.scr-switch-label{line-height:1.4}.scr-hint{margin:0;font-size:11.5px;color:var(--text-3);line-height:1.6}.scr-fspacer{flex:1 1 auto}.scr-field.scr-hi,.scr-switch.scr-hi{padding:5px;margin:-5px;border-radius:9px;box-shadow:0 0 0 2px var(--accent-soft),inset 0 0 0 1px var(--accent);animation:scrflash 1.8s ease-out}@keyframes scrflash{0%,55%{background:var(--accent-soft)}to{background:transparent}}.rowbtn.addbtn{color:var(--accent);border-color:var(--border-strong)}.rowbtn.addbtn:hover{color:#fff;background:var(--accent);border-color:var(--accent)}.app.mobile .screenbar{padding:6px 10px;gap:6px;flex-wrap:nowrap}.app.mobile .sbar-spacer,.app.mobile .sbar-title,.app.mobile .sbar-conds,.app.mobile .sbar-status,.app.mobile .sbar-time,.app.mobile .scr-sortwrap,.app.mobile .sbar-scan{display:none}.scr-extra{display:flex;flex-direction:column;gap:10px;padding:12px;margin-bottom:14px;border:1px dashed var(--border-strong);border-radius:8px;background:var(--panel-2)}.scr-sort.wide{width:100%;height:34px;font-size:13px}.scr-rescan{align-self:flex-start}.cpl-lead{margin:0 0 12px;font-size:13px;color:var(--text-2);line-height:1.6}.cpl-lead b{color:var(--accent)}.cpl-modes{display:flex;gap:8px;margin-bottom:14px}.cpl-modes .chip:disabled{opacity:.45;cursor:not-allowed}.cpl-blk{margin-bottom:14px}.cpl-k{font-size:11.5px;color:var(--text-3);margin-bottom:6px}.cpl-sel{width:100%;height:34px;padding:0 8px;border-radius:6px;font-size:13px;background:var(--panel);border:1px solid var(--border-strong);color:var(--text)}.cpl-hint{margin-top:7px;font-size:11.5px;color:var(--text-3);line-height:1.6}.cpl-hint b{color:var(--text-2)}.cpl-err{margin-top:4px;font-size:12px;color:var(--up)}.nameslot{display:inline-flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}.evbs{display:flex;flex-direction:column;align-items:flex-start;gap:3px}.evb{flex:0 0 auto;font-size:10.5px;line-height:1;padding:2.5px 5px;border-radius:4px;white-space:nowrap;cursor:pointer;border:1px solid transparent}.evb-ex{color:#b45309;background:#fdf1e0;border-color:#f3d9b0}.evb-report{color:#1d4ed8;background:#e8efff;border-color:#cdd9f7}.evb-plan{color:#0a7d4b;background:#e6f5ee;border-color:#c3e6d5}.evb-lock{color:#6d3fd4;background:#f2ecff;border-color:#ded0fb}html[data-theme=dark] .evb-ex{color:#f0b165;background:#3a2c18;border-color:#5a4526}html[data-theme=dark] .evb-report{color:#8ab4ff;background:#1c2740;border-color:#2c3d5e}html[data-theme=dark] .evb-plan{color:#5fd39a;background:#16301f;border-color:#23492f}html[data-theme=dark] .evb-lock{color:#b79bff;background:#262047;border-color:#3d3268}.tiplayer{position:fixed;left:-9999px;top:0;z-index:300;max-width:min(78vw,340px);max-height:58vh;overflow:auto;padding:8px 10px;border-radius:8px;background:var(--panel);color:var(--text-2);border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:12px;line-height:1.65;white-space:pre-line;overscroll-behavior:contain}.rowbtn.danger{margin-left:10px}.rowbtn.danger:hover{color:#fff;background:var(--up);border-color:var(--up)}.app.mobile .tabbar{padding-bottom:6px;gap:6px}.app.mobile .ltab-main{height:28px;padding:0 8px;font-size:12px;max-width:150px}.app.mobile .ltab-name{max-width:92px}.app.mobile .ltab-add{height:28px;min-width:28px}.app.mobile .tabbar-hint{display:none}.app.mobile .nameslot,.app.mobile .evbs{gap:2px}.app.mobile .evb{font-size:10px;padding:2px 4px}.natb{display:inline-block;flex:0 0 auto;font-size:10.5px;line-height:1;padding:2.5px 5px;border-radius:4px;white-space:nowrap;font-weight:500;cursor:pointer;color:var(--nat-c);background:color-mix(in srgb,var(--nat-c) 13%,transparent);border:1px solid color-mix(in srgb,var(--nat-c) 30%,transparent)}.natb.nat-central{--nat-c: var(--nat-central)}.natb.nat-local{--nat-c: var(--nat-local)}.natb.nat-private{--nat-c: var(--nat-private)}.bdb{display:inline-block;font-size:10.5px;line-height:1;padding:2.5px 5px;border-radius:4px;white-space:nowrap;font-weight:500;color:var(--text-2);background:var(--hover);border:1px solid var(--border)}html[data-theme=dark] .bdb{color:var(--text-3)}table.grid tbody td.name.has-nat{color:var(--nat)}table.grid tbody td.name.has-nat a{color:inherit}@media(hover:none){table.grid thead th.sortable:hover{color:var(--text-2);background:var(--panel-2)}table.grid thead th.draggable-col:hover:after{opacity:0}table.grid tbody tr:hover td,table.grid tbody tr:hover td.sticky{background:var(--panel)}table.grid tbody tr:hover td.sticky:before{background:var(--panel)}table.grid tbody tr:hover td.cost{background:transparent!important}.rowbtn:hover{color:var(--text-3);border-color:transparent;background:transparent}.rowbtn.neutral:hover{color:var(--text-3)}.rowbtn.colorbtn:hover{color:var(--row-color, var(--text-3))}.rowbtn.danger:hover{color:var(--text-3);background:transparent;border-color:transparent}}.loginbtn{white-space:nowrap}.userbox{position:relative}.userbtn{display:flex;align-items:center;gap:6px;padding-left:5px}.userbtn.open{border-color:var(--accent)}.uavatar{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-size:11px;font-weight:650;flex:none}.uname{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.umenu{position:absolute;right:0;top:calc(100% + 6px);z-index:60;min-width:180px;padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow)}.umenu-hd{padding:6px 8px 8px;font-size:11px;color:var(--text-3);border-bottom:1px solid var(--border);margin-bottom:4px;display:flex;flex-direction:column;gap:2px}.umenu-item{display:block;width:100%;text-align:left;padding:7px 8px;border:0;border-radius:6px;background:transparent;color:var(--text);font-size:12.5px;cursor:pointer}.umenu-item:hover{background:var(--hover)}.logindlg{max-width:360px}.qrbox{position:relative;display:flex;align-items:center;justify-content:center;width:208px;height:208px;margin:4px auto 14px;background:#fff;border:1px solid var(--border);border-radius:10px}.qrimg{width:200px;height:200px;display:block}.qrph{color:#8a8f98;font-size:12px;width:200px;height:200px;display:flex;align-items:center;justify-content:center}.qrrefresh{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:100px;height:32px;border-radius:16px;border:0;background:var(--accent);color:#fff;font-size:12.5px;cursor:pointer}.login-steps{margin:0 0 12px;padding-left:18px;color:var(--text-2);font-size:12px;line-height:1.9}.login-foot{text-align:center;font-size:11.5px;color:var(--text-3)}.login-err{color:var(--warn, #b26a12)}.login-note{padding:10px 12px;border-radius:8px;font-size:12px;line-height:1.7;background:var(--panel-2);color:var(--text-2)}.login-note.warn{border-left:3px solid #b26a12}@media(max-width:767px){.uname{display:none}.qrbox{width:180px;height:180px}.qrimg,.qrph{width:172px;height:172px}}.login-code{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:var(--panel-2);border:1px dashed var(--border-strong);display:flex;flex-direction:column;align-items:center;gap:4px}.lc-label{font-size:11px;color:var(--text-3)}.lc-val{font-size:17px;letter-spacing:2px;font-variant-numeric:tabular-nums;color:var(--text);-webkit-user-select:all;user-select:all}.lc-tip{font-size:10.5px;color:var(--text-3);text-align:center;line-height:1.5}.lockwrap{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:24px 16px 40px;overflow:auto;overscroll-behavior:contain}.lockcard{width:100%;max-width:420px;padding:32px 30px 26px;text-align:center;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.locklogo{width:46px;height:46px;margin:0 auto 14px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-size:20px;font-weight:700}.locktitle{margin:0 0 8px;font-size:17px;color:var(--text);letter-spacing:.2px}.lockdesc{margin:0 auto 20px;max-width:320px;font-size:12.5px;line-height:1.7;color:var(--text-2)}.lockbtn{width:100%;height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:9px;background:var(--accent);color:#fff;font-size:14px;font-weight:600;letter-spacing:.3px;cursor:pointer;transition:filter .15s ease,transform .1s ease}.lockbtn:hover{filter:brightness(1.07)}.lockbtn:active{transform:translateY(1px)}.locksteps{margin:20px 0 0;padding:0 0 0 18px;text-align:left;color:var(--text-3);font-size:11.5px;line-height:1.9}.locksteps li{margin:0}.lockwarn{margin:14px 0 0;padding:8px 10px;border-radius:7px;background:var(--panel-2);border:1px dashed var(--border-strong);color:var(--text-3);font-size:11.5px;line-height:1.6;text-align:left}.lockpend{display:inline-flex;align-items:center;gap:9px;color:var(--text-3);font-size:13px}.lockpend .spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:lockspin .8s linear infinite}@keyframes lockspin{to{transform:rotate(360deg)}}.app.mobile .lockcard{padding:26px 20px 22px;border-radius:12px}.app.mobile .locktitle{font-size:16px}.lockwarn.lockerr{border-style:solid;border-color:color-mix(in srgb,var(--fin-warn) 45%,transparent);background:color-mix(in srgb,var(--fin-warn) 8%,transparent);color:var(--fin-warn)}
