:root{--bg: #eef1f6;--surface: #ffffff;--surface-2: #f6f8fb;--border: #dde3ec;--border-strong: #c6cfdd;--text: #1a2231;--muted: #5d6a80;--faint: #8b96a8;--accent: #0e8f6a;--accent-soft: #d6f2e8;--accent-ink: #0a5a44;--amber: #c07d13;--amber-soft: #fbeecb;--red: #c0392b;--red-soft: #fbe1de;--blue: #2563a8;--blue-soft: #dbe8f7;--violet: #7c4dbb;--violet-soft: #ece1f8;--grey: #93a0b3;--grey-soft: #e7ecf3;--adv: #5a3ec8;--adv-soft: #e7e1fb;--fin: #c2410c;--fin-soft: #fbe4d5;--shadow: 0 1px 2px rgba(24, 39, 64, .06), 0 4px 16px rgba(24, 39, 64, .05);--grid-head: #eaf3ef;--mono: "JetBrains Mono", ui-monospace, monospace}:root[data-theme=dark]{--bg: #0d1219;--surface: #151c26;--surface-2: #1b232f;--border: #28323f;--border-strong: #3a4757;--text: #e6ebf2;--muted: #9aa7ba;--faint: #6b7889;--accent: #2dd4a0;--accent-soft: #123a2e;--accent-ink: #8ff0d2;--amber: #e2b04a;--amber-soft: #3a2f12;--red: #f0776a;--red-soft: #3a1c19;--blue: #6ba6e8;--blue-soft: #16283e;--violet: #b18ce0;--violet-soft: #241a36;--grey: #6b7889;--grey-soft: #232d3a;--adv: #a992f0;--adv-soft: #241a3a;--fin: #f0916b;--fin-soft: #3a2115;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .35);--grid-head: #16281f}*{box-sizing:border-box}html,body,#app{margin:0;padding:0;height:100%}body{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:Manrope,Inter,sans-serif;font-weight:700;margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.mono{font-family:var(--mono)}h1,h2,h3,h4{text-wrap:balance}.app{display:flex;flex-direction:column;min-height:100vh}.topbar{background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:9px 20px;position:sticky;top:0;z-index:30;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;flex:none}.brand .mark{width:34px;height:34px;border-radius:9px;overflow:hidden;line-height:0;flex:none;box-shadow:0 2px 6px #1827402e}.brand .mark svg{display:block;width:34px;height:34px}.brand b{font-family:Manrope;font-weight:800;font-size:15px;letter-spacing:-.2px}.brand span{display:block;font-size:11px;color:var(--faint);font-weight:500}.topnav{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.rolebox{display:flex;align-items:center;gap:7px}.rolebox .rl{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;white-space:nowrap}.rolebox select{font-size:13px;font-weight:600;padding:6px 8px;border:1px solid var(--border-strong);border-radius:7px;background:var(--surface);color:var(--text)}.navlbl{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);font-weight:600;padding:0 6px 0 10px;border-left:1px solid var(--border);align-self:center;white-space:nowrap}.nav{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:9px;cursor:pointer;color:var(--muted);font-size:13.5px;font-weight:500;border:1px solid transparent;transition:.12s;white-space:nowrap;text-decoration:none}.nav:hover{background:var(--surface-2);color:var(--text)}.nav.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.nav svg{width:17px;height:17px;flex:none}.nav.hidden,.navlbl.hidden{display:none}.topnav .navlbl:first-child{border-left:none;padding-left:0}.topright{margin-left:auto;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.who{display:flex;align-items:center;gap:9px}.avatar{width:28px;height:28px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:12px;font-weight:700}.iconbtn{border:1px solid var(--border-strong);background:var(--surface);color:var(--muted);cursor:pointer;width:34px;height:34px;border-radius:8px;display:grid;place-items:center;flex:none;transition:.12s}.iconbtn:hover{background:var(--surface-2);color:var(--text)}.iconbtn:disabled{opacity:.38;cursor:default;pointer-events:none}.iconbtn svg{width:17px;height:17px}.iconbtn.s2{width:32px;height:32px;border-radius:7px}.iconbtn.s2 svg{width:15px;height:15px}.main{padding:24px 30px 60px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{font-size:23px;letter-spacing:-.4px}.page-head p{margin:5px 0 0;color:var(--muted);font-size:13.5px;max-width:70ch}.panel{background:var(--surface);border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow)}.grid2{display:grid;grid-template-columns:1.55fr 1fr;gap:20px;align-items:start}.phead{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);gap:10px;flex-wrap:wrap}.phead h3{font-size:15px}.phead .sub{font-size:12px;color:var(--faint);font-weight:500}.phead.compact{padding:10px 14px}.phead.compact h3{font-size:14px}.btn{font:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.12s}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn:disabled{opacity:.4;cursor:default;pointer-events:none}.btn svg{width:15px;height:15px}.btn.sm{padding:6px 9px;font-size:12px}.btn.sm svg{width:14px;height:14px}.btn:focus-visible,.nav:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{font:inherit;font-size:13px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;background:var(--surface);color:var(--text);width:100%}label.fld{display:block;font-size:11.5px;font-weight:600;color:var(--muted);margin:0 0 5px}.hint{font-size:11.5px;color:var(--faint);padding:0 16px 12px}.x{color:var(--faint);cursor:pointer;text-align:center;font-size:16px;border:none;background:none}.x:hover{color:var(--red)}.formnote{background:var(--surface);border:1px solid var(--border);border-radius:11px;box-shadow:var(--shadow);padding:10px 16px;font-size:12.5px;color:var(--muted);line-height:1.55;margin-bottom:14px}.fields{padding:8px;min-height:60px}.field-row{display:grid;grid-template-columns:20px 1fr auto 28px;gap:10px;align-items:center;padding:10px;border-radius:9px;border:1px solid transparent}.field-row .fmodes{display:flex;gap:12px;flex-wrap:wrap}.field-row .fmodes label{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap}.field-row .fmodes input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.field-row:hover{background:var(--surface-2);border-color:var(--border)}.field-row .drag{color:var(--faint);cursor:grab;font-size:15px;text-align:center}.field-row.rowdrag{opacity:.45}.field-row.rowover{border-color:var(--accent);box-shadow:inset 0 2px 0 var(--accent)}.field-row .fname{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.field-row .fname small{display:block;color:var(--faint);font-weight:400;font-size:11.5px;width:100%}.field-row .width-input{width:64px}.field-row .width-wrap{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--muted)}.tag{font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap;display:inline-block}.tag.type{background:var(--blue-soft);color:var(--blue)}.tag.req{background:var(--red-soft);color:var(--red)}.tag.opt{background:var(--surface-2);color:var(--faint)}.ext{font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;display:inline-flex;gap:4px;align-items:center}.ext.adv{background:var(--adv-soft);color:var(--adv)}.ext.fin{background:var(--fin-soft);color:var(--fin)}.tree{padding:6px 8px 12px}.tnode .thead{display:flex;align-items:center;gap:8px;padding:8px}.tnode .obj-name{font-weight:700;font-size:13px;font-family:Manrope}.obj-badge{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--violet-soft);color:var(--violet)}.reqs{display:flex;flex-wrap:wrap;gap:6px;padding:2px 8px 6px 26px}.reqchip{font-size:11.5px;padding:4px 10px;border-radius:7px;border:1px dashed var(--border-strong);background:var(--surface);color:var(--muted);cursor:pointer;display:inline-flex;gap:6px;align-items:center;transition:.12s}.reqchip:hover{border-style:solid;border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}.reqchip .tt{font-family:var(--mono);font-size:10px;color:var(--faint)}.reqchip .plus{color:var(--accent);font-weight:700}.reqchip.adv{border-color:var(--adv);color:var(--adv)}.reqchip.fin{border-color:var(--fin);color:var(--fin)}.branch{border-left:2px solid var(--border);margin-left:15px;padding-left:6px}.formslist{padding:10px}.formitem{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;cursor:pointer;border:1px solid transparent}.formitem:hover{background:var(--surface-2)}.formitem.sel{background:var(--accent-soft)}.formitem .ic{width:34px;height:34px;border-radius:9px;background:var(--surface-2);display:grid;place-items:center;color:var(--accent);flex:none}.formitem.sel .ic{background:var(--surface)}.formitem b{font-size:13px;font-family:Manrope;font-weight:700}.formitem small{color:var(--faint);font-size:11.5px}.formitem .cnt{margin-left:auto;font-size:11px;color:var(--muted);font-family:var(--mono)}.dmgrouphd{font-family:Manrope;font-weight:800;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:14px 10px 6px}.dmtable{width:100%;border-collapse:collapse;font-size:13px}.dmtable th{text-align:left;font-size:11px;color:var(--faint);font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;border-bottom:1px solid var(--border)}.dmtable th.chk,.dmtable td.chk{text-align:center;width:150px;white-space:nowrap}.dmtable td{padding:8px 10px;border-bottom:1px solid var(--border)}.dmtable tr:hover td{background:var(--surface-2)}.dmtable .nm{font-weight:600;cursor:pointer}.dmtable .kind{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;margin-left:8px}.kind.obj{background:var(--violet-soft);color:var(--violet)}.kind.dir{background:var(--adv-soft);color:var(--adv)}.dmtable input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}.dmcount{font-family:var(--mono);color:var(--faint);font-size:11.5px}.dmtable tr.sel td{background:var(--accent-soft)}.dmtable td .linqbtn{margin-left:8px}.dmwrap{display:grid;grid-template-columns:1.25fr 1fr;gap:16px;align-items:start}.dmreqrow{display:flex;align-items:center;gap:10px;padding:7px 4px;border-bottom:1px solid var(--border);font-size:13px}.dmreqrow input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.dmreqrow .rn{flex:1;font-weight:500}.dmreqrow .rt{font-size:10.5px;color:var(--faint);font-family:var(--mono)}.dmreqrow .rref{font-size:10px;font-weight:600;color:var(--adv);background:var(--adv-soft);border-radius:999px;padding:1px 7px}.dmreqrow .linqbtn{margin-left:auto}.dmreqbar{display:flex;gap:8px;align-items:center;margin-bottom:6px}.linqbtn{font-size:11px;padding:2px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer;white-space:nowrap}.linqbtn:hover{border-color:var(--accent);color:var(--accent)}.linqov{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:none;align-items:center;justify-content:center;z-index:9999;padding:24px}.linqov.open{display:flex}.linqbox{background:var(--surface);border:1px solid var(--border);border-radius:14px;max-width:900px;width:100%;max-height:86vh;display:flex;flex-direction:column;box-shadow:0 18px 60px #0006}.linqhead{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);gap:10px}.linqhead h3{font-size:15px}.linqbody{padding:14px 18px;overflow:auto}.linqmeta{font-size:12.5px;color:var(--muted);margin-bottom:10px}.linqmeta code{background:var(--surface-2);padding:2px 6px;border-radius:5px;font-family:var(--mono)}.linqsec{font-size:12px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.4px;margin:16px 0 8px}.linqitem{border:1px solid var(--border);border-radius:10px;margin-bottom:10px;overflow:hidden}.linqih{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;background:var(--surface-2);font-size:13px;font-weight:600}.linqih .rref{font-size:10.5px;color:var(--accent);font-weight:600}.linqpre{margin:0;padding:12px;font-family:var(--mono);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;overflow:auto;max-height:220px}.linqcopy{font-size:11px;padding:3px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer}.linqcopy:hover{border-color:var(--accent);color:var(--accent)}.xlwrap{overflow-x:auto;border-radius:11px}table.xl{border-collapse:collapse;width:100%;font-size:13px;background:var(--surface)}table.xl th,table.xl td{border:1px solid var(--border);padding:0;text-align:left}table.xl thead th{background:var(--grid-head);color:var(--accent-ink);font-weight:600;font-size:11.5px;padding:8px 10px;position:sticky;top:0;white-space:nowrap}table.xl thead th .cloud.adv{color:var(--adv)}table.xl thead th .cloud.fin{color:var(--fin)}table.xl .rownum{background:var(--surface-2);color:var(--faint);font-family:var(--mono);font-size:11px;text-align:center;width:38px;padding:6px;font-weight:500}table.xl td.cell input,table.xl td.cell select{border:none;border-radius:0;background:transparent;padding:8px 10px;font-size:13px;min-width:120px}table.xl td.cell.extcell.adv{background:var(--adv-soft)}table.xl td.cell.extcell.adv input{color:var(--adv);font-family:var(--mono);font-size:12px}table.xl td.cell.extcell.fin{background:var(--fin-soft)}table.xl td.cell.extcell.fin input{color:var(--fin);font-family:var(--mono);font-size:12px}table.xl td.cell input:focus,table.xl td.cell select:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--surface)}table.xl td.cell.dirty input,table.xl td.cell.dirty select{outline:2px solid var(--amber);outline-offset:-2px}td.cell textarea{width:100%;border:0;background:transparent;font:inherit;color:inherit;padding:6px 8px;min-height:32px;box-sizing:border-box;resize:vertical}td.cell.wrapcol .rotxt{white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.35;padding:6px 8px;max-height:140px;overflow:auto}td.cell.wrapcol textarea{white-space:pre-wrap}td.cell.linkcell{padding:6px 8px}td.cell.linkcell a{color:var(--accent);font-weight:600;text-decoration:none}td.cell.linkcell a:hover{text-decoration:underline}td.cell.linkcell .lnkoff{color:var(--faint)}th{position:relative}.colres{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;z-index:2}.colres:hover,.colres.active{background:var(--accent);opacity:.55}.svsel{display:flex;align-items:center;gap:8px;padding:6px 10px}.svsel .dot{width:10px;height:10px;border-radius:50%;flex:none}.svsel select{padding:4px 6px;min-width:110px}.attach{display:flex;align-items:center;gap:6px;padding:6px 10px;font-size:12px;color:var(--muted);cursor:pointer}.attach:hover{color:var(--accent-ink)}.attach .fn{color:var(--accent-ink);font-weight:600}.xlbar{display:flex;gap:10px;align-items:center;padding:14px 18px;border-top:1px solid var(--border);flex-wrap:wrap}.status-note{font-size:12px;color:var(--faint);margin-left:auto}.banner{display:flex;gap:10px;align-items:center;background:var(--amber-soft);color:var(--amber);border-radius:10px;padding:11px 14px;font-size:13px;font-weight:500;margin-bottom:16px;flex-wrap:wrap}.filterbar{display:flex;gap:10px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--border);flex-wrap:wrap;font-size:13px}.pvmsg{display:inline-block;font-size:9.5px;font-weight:600;padding:1px 6px;border-radius:999px;margin:2px 6px 4px}.pvmsg.ok{background:var(--accent-soft);color:var(--accent-ink)}.pvmsg.err{background:var(--red-soft);color:var(--red)}.dbgrid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}.dbside,.dbform{display:flex;flex-direction:column;gap:14px;min-width:0}.dbmain{position:sticky;top:12px;align-self:start;display:flex;flex-direction:column;gap:12px;min-width:0}.dbmain .wcanvas{margin:0}.canvasscroll{max-height:calc(100vh - 148px);overflow:auto;border-radius:14px}.dbtoolbar{border-radius:11px;margin:0;gap:10px}.dbctl{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.dbtoolbar select#dashSelect,.dbtoolbar .dash-select{width:auto;min-width:180px;max-width:280px;font-weight:700;font-size:13.5px}.wform{padding:16px;display:flex;flex-direction:column;gap:13px}.wform.editing{background:var(--accent-soft);border-radius:0 0 13px 13px}.dbside .wform{padding:12px;gap:10px}.dbside .dashlist{padding:6px}.dbside .dashrow{padding:8px 10px;gap:9px}.dbside .dashrow .dn{font-size:12.5px}.dbside .gallery{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;padding:10px;max-height:300px;overflow:auto}.dbside .gcard{padding:8px 8px 7px;gap:6px}.dbside .gcard .gt{font-size:11px}.dbside .gcard .gp{height:52px}.wcanvas{display:grid;grid-template-columns:repeat(12,1fr);gap:12px;grid-auto-rows:38px;position:relative;padding:14px;border:1px dashed var(--border-strong);border-radius:14px;background:var(--surface-2);background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:var(--cw, 80px) var(--rh, 50px);background-origin:content-box;background-clip:content-box;background-position:0 0;min-height:340px}.widget{background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;position:relative;-webkit-user-select:none;user-select:none;min-width:0;min-height:0}.widget.dragging{opacity:.35}.widget.dragover{outline:2px dashed var(--accent);outline-offset:-3px}.widget .wh{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 14px 6px;gap:8px;cursor:grab}.widget .wh.grabbing{cursor:grabbing}.widget .rz{position:absolute;z-index:5;touch-action:none}.rz-n{top:0;left:12px;right:12px;height:6px;cursor:ns-resize}.rz-s{bottom:0;left:12px;right:12px;height:6px;cursor:ns-resize}.rz-e{right:0;top:12px;bottom:12px;width:6px;cursor:ew-resize}.rz-w{left:0;top:12px;bottom:12px;width:6px;cursor:ew-resize}.rz-ne{top:0;right:0;width:13px;height:13px;cursor:nesw-resize}.rz-nw{top:0;left:0;width:13px;height:13px;cursor:nwse-resize}.rz-se{bottom:0;right:0;width:15px;height:15px;cursor:nwse-resize}.rz-sw{bottom:0;left:0;width:13px;height:13px;cursor:nesw-resize}.rz-se:after{content:"";position:absolute;right:3px;bottom:3px;width:0;height:0;border-left:6px solid transparent;border-bottom:6px solid var(--faint);opacity:.45;transition:.12s}.widget:hover .rz-se:after{opacity:.9;border-bottom-color:var(--accent)}.widget .wt{font-family:Manrope;font-weight:700;font-size:13.5px;line-height:1.25}.widget .ws{font-size:10.5px;color:var(--faint);margin-top:3px}.widget .wtools{display:flex;gap:2px;flex:none}.widget .wtools button{border:none;background:none;color:var(--faint);cursor:pointer;font-size:14px;padding:2px 4px;border-radius:5px;display:grid;place-items:center}.widget .wtools button:hover{background:var(--surface-2);color:var(--text)}.widget .wtools .rm:hover{color:var(--red)}.widget .wbody{flex:1;min-height:0;overflow:hidden;padding:2px 12px 12px;display:flex;flex-direction:column;justify-content:center}.widget .wbody .widget-body-inner{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center}.widget .wbody .chartbox{position:relative;flex:1;min-height:0}.widget .wbody .chartbox canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.wnum{font-family:Manrope;font-weight:800;font-size:32px;letter-spacing:-1px;font-variant-numeric:tabular-nums;padding:2px 4px}.wnum small{font-size:13px;color:var(--faint);font-weight:600}.wdelta{font-size:12px;font-weight:600;margin-top:2px}.up{color:var(--accent)}.down{color:var(--red)}.canvas-empty{border:2px dashed var(--border);border-radius:12px;padding:36px;text-align:center;color:var(--faint);font-size:13px;grid-column:1 / -1}.srcbadge{font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;background:var(--violet-soft);color:var(--violet)}.srcbadge.fin{background:var(--fin-soft);color:var(--fin)}.srcbadge.adv{background:var(--adv-soft);color:var(--adv)}.wtable{width:100%;border-collapse:collapse;font-size:11.5px}.wtable th{text-align:left;color:var(--muted);font-weight:600;padding:4px 6px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface)}.wtable td{padding:4px 6px;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.wbarh{display:flex;flex-direction:column;gap:9px}.wbarh .r{display:grid;grid-template-columns:88px 1fr 34px;gap:8px;align-items:center;font-size:11.5px}.wbarh .nm{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wbarh .tr{height:9px;background:var(--surface-2);border-radius:5px;overflow:hidden}.wbarh .fl{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--accent),var(--blue))}.wbarh .vv{font-family:var(--mono);text-align:right;font-weight:600}.bars{padding:18px;display:flex;flex-direction:column;gap:15px}.bar-row{display:grid;grid-template-columns:150px 1fr 54px;gap:12px;align-items:center;font-size:12.5px}.bar-row .nm{color:var(--muted);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track{height:11px;background:var(--surface-2);border-radius:6px;overflow:hidden;display:flex}.seg{height:100%}.bar-row .pct{font-family:var(--mono);font-size:12px;text-align:right;font-weight:600}.legend{display:flex;gap:16px;padding:0 18px 16px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.dot{width:9px;height:9px;border-radius:50%;flex:none}.matrixwrap{overflow-x:auto;padding:6px 6px 12px}table.matrix{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}table.matrix th{font-weight:600;color:var(--muted);padding:8px 6px;text-align:center;font-size:10.5px;vertical-align:bottom;line-height:1.25}table.matrix th.rowh{text-align:left;font-weight:600;color:var(--text);min-width:180px}table.matrix td{text-align:center;padding:6px}table.matrix td.rh{text-align:left;font-weight:500;color:var(--text);font-size:12px;white-space:nowrap;padding-right:14px}.mcell{width:22px;height:22px;border-radius:6px;display:inline-block;position:relative}.mcell.na{background:var(--grey-soft)}.mcell.na:after{content:"–";color:var(--faint);position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:12px}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:12px;padding:16px}.gcard{border:1px solid var(--border);border-radius:11px;padding:11px 11px 9px;cursor:pointer;transition:.12s;background:var(--surface);display:flex;flex-direction:column;gap:8px}.gcard:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-2px)}.gcard .gt{font-size:12px;font-weight:700;font-family:Manrope;display:flex;justify-content:space-between;align-items:center}.gcard .gt .add{color:var(--accent);font-size:15px}.gcard .gp{height:82px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;pointer-events:none}.gcard .gp canvas{width:100%;height:100%}.dashtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.dashtab{font:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:9px;border:1px solid var(--border-strong);background:var(--surface);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:.12s}.dashtab:hover{background:var(--surface-2);color:var(--text)}.dashtab.on{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-ink)}.dashtab .c{font-family:var(--mono);font-size:11px;background:var(--surface-2);border-radius:999px;padding:1px 7px;color:var(--faint)}.dashtab.on .c{background:var(--surface)}.dashlist{padding:8px}.dashrow{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;border:1px solid transparent}.dashrow:hover{background:var(--surface-2)}.dashrow.active{background:var(--accent-soft);border-color:var(--accent-soft)}.dashrow .dn{font-weight:600;font-size:13.5px;cursor:pointer;flex:1;display:flex;align-items:center;gap:8px;min-width:0}.dashrow .dn span.nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashrow .meta{font-size:11.5px;color:var(--faint);font-family:var(--mono);white-space:nowrap}.dashrow .acts{display:flex;gap:2px;flex:none}.dashrow .acts button{border:none;background:none;color:var(--faint);cursor:pointer;padding:5px 7px;border-radius:6px;font-size:14px;display:grid;place-items:center}.dashrow .acts button:hover{background:var(--surface);color:var(--text)}.dashrow .acts button.del:hover{color:var(--red)}.badge-active{font-size:10px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--accent);color:#fff;flex:none}.switch{position:relative;display:inline-flex;align-items:center;gap:7px;flex:none;cursor:pointer;font-size:11px;color:var(--faint);font-weight:600}.switch input{position:absolute;opacity:0;width:0;height:0}.switch .sl{position:relative;width:38px;height:22px;background:var(--border-strong);border-radius:999px;transition:.15s;flex:none}.switch .sl:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s;box-shadow:0 1px 2px #0003}.switch input:checked+.sl{background:var(--accent)}.switch input:checked+.sl:before{transform:translate(16px)}.switch input:focus-visible+.sl{outline:2px solid var(--accent);outline-offset:2px}.toast-stack{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:50;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{background:var(--text);color:var(--bg);padding:11px 18px;border-radius:10px;font-size:13px;font-weight:600;opacity:1;animation:toast-in .22s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0f1680;z-index:100;display:none;flex-direction:column}.modal.open{display:flex;animation:fade .2s ease}@keyframes fade{0%{opacity:.4}to{opacity:1}}.modal-head{display:flex;align-items:center;gap:14px;padding:13px 24px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}.modal-head h3{font-size:16px}.modal-head .rolepill{font-size:12px;font-weight:600;color:var(--blue);background:var(--blue-soft);border-radius:999px;padding:4px 12px;display:inline-flex;align-items:center;gap:6px}.modal-body{flex:1;overflow:auto;padding:26px 30px 60px;background:var(--bg)}.roleinfo{font-size:12px;color:var(--faint);background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:6px 12px}.pv-canvas{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;grid-auto-rows:38px;max-width:1400px;margin:0 auto 36px}.pv-canvas .wtools,.pv-canvas .rz{display:none}.pv-canvas .wh,.pv-canvas .widget{cursor:default}.pv-empty{grid-column:1 / -1;text-align:center;color:var(--faint);padding:60px;font-size:14px}.pv-dash-title{max-width:1400px;margin:4px auto 14px;font-family:Manrope;font-weight:800;font-size:17px;letter-spacing:-.3px;display:flex;align-items:center;gap:10px}.pv-dash-title .cnt{font-size:12px;font-weight:600;color:var(--faint);font-family:var(--mono)}@media (max-width: 980px){.grid2,.dmwrap,.dbgrid{grid-template-columns:1fr}.dbmain{position:static}.canvasscroll{max-height:none;overflow:visible}.dbside .gallery{max-height:none}}
