.vnav{display:flex;align-items:center;gap:10px;flex:none}.vback{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 16px;border:1px solid #CBD8E3;border-radius:8px;background:#fff;color:var(--gn-color-brand);font:inherit;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer}.vback:hover{background:var(--gn-color-brand-soft);border-color:var(--gn-color-brand)}.vback:focus-visible{outline:2px solid var(--gn-color-brand);outline-offset:2px}.vback span{font-size:16px;line-height:1}.vtabs{display:flex;border:1px solid #CBD8E3;border-radius:8px;overflow:hidden;flex:none}.vtab{min-width:88px;min-height:44px;padding:10px 20px;border:0;background:#fff;font:inherit;font-size:16px;line-height:1.3;color:#35485a;cursor:pointer;white-space:nowrap}.vtab+.vtab{border-left:1px solid #CBD8E3}.vtab:hover{background:#f2f7fb}.vtab:focus-visible{outline:2px solid var(--gn-color-brand);outline-offset:-3px}.vtab--on{background:var(--gn-color-brand);color:#fff;font-weight:600}.vtab--on:hover{background:var(--gn-color-brand)}.ov{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--gn-elev-page)}.ov-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:none;padding:8px 12px;background:var(--gn-elev-card);border-bottom:1px solid var(--gn-line)}.ov-title{display:flex;align-items:baseline;gap:10px;font-size:16px;font-weight:700;color:var(--gn-ink-1)}.ov-sub{font-size:12px;font-weight:400;color:var(--gn-ink-3)}.ov-spacer{flex:1 1 auto}.ov-who{font-size:12px;color:var(--gn-ink-3);white-space:nowrap}.ov-btn{min-height:var(--gn-tap);padding:0 14px;font:inherit;font-size:14px;color:var(--gn-ink-2);background:var(--gn-elev-card);border:1px solid var(--gn-line);border-radius:var(--gn-r-md);cursor:pointer}.ov-btn:hover{border-color:var(--gn-brand-400);color:var(--gn-brand-600)}.ov-btn:focus-visible{outline:2px solid var(--gn-brand-500);outline-offset:2px}.ov-body{flex:1;min-height:0;overflow-y:auto;padding:16px}.ov-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.ov-kpi{display:flex;flex-direction:column;gap:4px;padding:12px 14px;background:var(--gn-elev-card);border:1px solid var(--gn-line);border-top:3px solid var(--gn-brand-500);border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card)}.ov-kpi__num{font-family:var(--gn-font-num);font-weight:900;font-size:30px;line-height:1.1;color:var(--gn-brand-700);font-variant-numeric:tabular-nums}.ov-kpi__label{font-size:12px;color:var(--gn-ink-3)}.ov-err,.ov-loading,.ov-empty{margin-bottom:14px;padding:12px 14px;font-size:14px;line-height:1.6;border-radius:var(--gn-r-md)}.ov-err{color:var(--gn-danger-deep);background:var(--gn-danger-soft);border:1px solid var(--gn-danger-line)}.ov-loading,.ov-empty{color:var(--gn-ink-3);background:var(--gn-elev-card);border:1px solid var(--gn-line)}.ov-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}.ov-track{position:relative;padding-left:22px;min-width:0}.ov-track:before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--gn-line)}.ov-group{margin-bottom:20px}.ov-group__title{position:relative;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding-bottom:8px;font-size:14px;font-weight:700;color:var(--gn-ink-1)}.ov-group__title:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--gn-brand-line);opacity:.85}.ov-group__hint{font-size:12px;font-weight:400;color:var(--gn-ink-3)}.ov-gate{position:relative;margin-bottom:10px;padding:12px 16px;background:var(--gn-elev-card);border:1px solid var(--gn-line);border-left:4px solid var(--gn-n-300);border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card)}.ov-gate--done{border-left-color:var(--gn-ok)}.ov-gate--idle{border-left-color:var(--gn-brand-500)}.ov-gate--check{border-left-color:var(--gn-warn)}.ov-node{position:absolute;left:-21px;top:20px;width:12px;height:12px;background:var(--gn-elev-card);border:2px solid var(--gn-brand-500);border-radius:50%}.ov-gate--done .ov-node{background:var(--gn-ok);border-color:var(--gn-ok);border-radius:2px}.ov-gate--check .ov-node{border-color:var(--gn-warn);border-radius:2px;transform:rotate(45deg)}.ov-gate__head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ov-gate__code{font-family:var(--gn-font-num);font-weight:900;font-size:20px;color:var(--gn-brand-700);font-variant-numeric:tabular-nums}.ov-gate__name{flex:1 1 220px;margin:0;font-size:14px;font-weight:600;color:var(--gn-ink-1)}.ov-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;border-radius:999px;border:1px solid transparent}.ov-chip--done{color:var(--gn-ok);background:var(--gn-ok-soft);border-color:var(--gn-ok-line)}.ov-chip--idle{color:var(--gn-brand-700);background:var(--gn-brand-50);border-color:var(--gn-brand-100)}.ov-chip--check{color:var(--gn-warn);background:var(--gn-warn-soft);border-color:var(--gn-warn-line)}.ov-chip__shape{width:8px;height:8px;border:2px solid currentColor;border-radius:50%}.ov-chip--done .ov-chip__shape{background:currentColor;border-radius:1px}.ov-chip--check .ov-chip__shape{border-radius:1px;transform:rotate(45deg)}.ov-gate__dates{display:flex;gap:18px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--gn-ink-3)}.ov-gate__dates b{color:var(--gn-ink-2);font-weight:600;font-variant-numeric:tabular-nums}.ov-gate__note{color:var(--gn-brand-700)}.ov-gate--check .ov-gate__note{color:var(--gn-warn)}.ov-gate__memo,.ov-gate__src{margin:8px 0 0;font-size:12px;line-height:1.6;color:var(--gn-ink-3)}.ov-gate__src{margin-top:4px}.ov-side{display:flex;flex-direction:column;gap:14px;min-width:0}.ov-panel{padding:14px;background:var(--gn-elev-card);border:1px solid var(--gn-line);border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card)}.ov-panel__title{margin:0;font-size:14px;font-weight:700;color:var(--gn-ink-1)}.ov-panel__hint,.ov-panel__src{margin:6px 0 10px;font-size:12px;line-height:1.6;color:var(--gn-ink-3)}.ov-panel__src{margin:10px 0 0}.ov-panel__warn{margin:10px 0 0;padding:8px 10px;font-size:12px;line-height:1.6;color:var(--gn-warn);background:var(--gn-warn-soft);border-radius:var(--gn-r-sm)}.ov-win{padding:10px 0;border-bottom:1px solid var(--gn-line-2)}.ov-win:last-of-type{border-bottom:0}.ov-win__pair{display:inline-block;margin-bottom:6px;font-size:12px;font-weight:700;color:var(--gn-brand-700)}.ov-win__row{display:flex;justify-content:space-between;gap:8px;font-size:12px;line-height:1.9;color:var(--gn-ink-3)}.ov-win__row b{color:var(--gn-ink-2);font-variant-numeric:tabular-nums}.ov-win__note{margin:6px 0 0;font-size:12px;line-height:1.6;color:var(--gn-ink-3)}@media (max-width: 1023px){.ov-grid{grid-template-columns:minmax(0,1fr)}.ov-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}.tb{display:flex;flex-direction:column;flex:1;min-height:0;background:#f4f7fa;font-family:var(--gn-font)}.tb-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--gn-line);flex-wrap:wrap;flex:none}.tb-window{display:flex;border:1px solid #CBD8E3;border-radius:6px;overflow:hidden}.tb-chip{border:0;background:#fff;font:inherit;font-size:12px;color:#5b6b7a;padding:4px 10px;cursor:pointer;white-space:nowrap}.tb-chip+.tb-chip{border-left:1px solid #CBD8E3}.tb-chip:hover{background:#f2f7fb}.tb-chip--on{background:var(--gn-color-brand-soft);color:var(--gn-color-brand);font-weight:600}.tb-refresh{border:1px solid var(--gn-line);background:#fff;border-radius:6px;font:inherit;font-size:12px;color:#5b6b7a;padding:4px 10px;cursor:pointer}.tb-refresh:hover{border-color:var(--gn-color-brand);color:var(--gn-color-brand)}.tb-who{margin-left:auto;display:flex;align-items:center;gap:8px}.tb-tag{font-size:12px;color:#5b6b7a;background:#f0f5fa;border-radius:10px;padding:3px 9px}.tb-logout{border:0;background:none;font:inherit;font-size:12px;color:var(--gn-n-600);cursor:pointer}.tb-logout:hover{color:var(--gn-color-danger)}.tb-body{flex:1;overflow:auto;padding:14px 16px 24px}.tb-sum{display:flex;gap:10px;flex-wrap:wrap;align-items:stretch}.tb-kpi{flex:none;min-width:120px;background:#fff;border:1px solid var(--gn-line);border-radius:8px;padding:10px 14px;display:flex;flex-direction:column;gap:2px}.tb-kpi b{font-size:22px;line-height:1.1;color:#1b2a38;font-variant-numeric:tabular-nums}.tb-kpi span{font-size:12px;color:var(--gn-n-600)}.tb-kpi--bad{border-color:var(--gn-danger-line);background:#fff8f8}.tb-kpi--bad b{color:var(--gn-color-danger)}.tb-kpi--warn{border-color:var(--gn-warn-line);background:#fffcf2}.tb-kpi--warn b{color:var(--gn-color-warn)}.tb-kpi--plain{background:#f8fafc}.tb-kpi--plain b{color:#35485a}.sk--kpi{display:block;height:38px;border-radius:4px}.tb-asof{margin:0 0 0 auto;align-self:flex-end;font-size:12px;color:var(--gn-n-600)}.tb-group{margin-top:18px}.tb-group-title{margin:0 0 6px;font-size:12px;font-weight:600;color:#5b6b7a;display:flex;align-items:center;gap:6px}.tb-group-title b{font-variant-numeric:tabular-nums;color:var(--gn-n-600);font-weight:600}.tb-group-title--overdue{color:var(--gn-color-danger)}.tb-group-title--today{color:var(--gn-color-warn)}.tb-item{width:100%;display:flex;align-items:center;gap:10px;text-align:left;min-height:var(--gn-tap);background:#fff;border:1px solid var(--gn-line-2);border-radius:7px;padding:8px 12px;margin-bottom:5px;font:inherit;cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.tb-item:hover{border-color:#bbd6ec;box-shadow:0 2px 10px #0f233712}.tb-item:focus-visible{outline:2px solid var(--gn-color-brand);outline-offset:1px}.tb-dot{width:7px;height:7px;border-radius:50%;flex:none}.tb-dot--overdue{background:var(--gn-color-danger)}.tb-dot--today{background:var(--gn-color-warn)}.tb-dot--soon{background:#8fa6ba}.tb-type{flex:none;font-size:12px;color:#5b6b7a;background:#f0f5fa;border-radius:4px;padding:2px 6px;white-space:nowrap}.tb-code{flex:none;font-size:12px;font-weight:600;color:#35485a;letter-spacing:.2px;min-width:62px}.tb-name{flex:0 1 260px;font-size:14px;color:#22303c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb-item-text{flex:1 1 auto;font-size:12px;color:var(--gn-n-600);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb-date{flex:none;font-size:12px;color:var(--gn-n-600);font-variant-numeric:tabular-nums;min-width:78px;text-align:right}.tb-days{flex:none;font-size:12px;font-weight:600;min-width:74px;text-align:right;font-variant-numeric:tabular-nums}.tb-days--overdue{color:var(--gn-color-danger)}.tb-days--today{color:var(--gn-color-warn)}.tb-days--soon{color:var(--gn-n-600)}.tb-go{flex:none;font-size:12px;font-weight:600;color:var(--gn-color-brand);white-space:nowrap}.tb-go:not(.tb-go--none):after{content:" →"}.tb-empty{margin-top:28px;padding:28px 24px;background:#fff;border:1px dashed #D8E3EC;border-radius:10px;text-align:center}.tb-empty-title{margin:0 0 6px;font-size:14px;font-weight:600;color:#35485a}.tb-empty-note{margin:0 auto 14px;max-width:600px;font-size:12px;color:var(--gn-n-600);line-height:1.75;text-wrap:pretty}.tb-err{margin-bottom:12px;padding:10px 12px;background:var(--gn-color-danger-soft);border:1px solid var(--gn-danger-line);border-radius:7px;font-size:12px;color:var(--gn-danger);display:flex;align-items:center;gap:10px}.tb-foot{display:flex;align-items:center;gap:12px;padding:5px 12px;background:#fff;border-top:1px solid var(--gn-line);font-size:12px;color:#6b7b8a;flex:none;flex-wrap:wrap}.tb-foot-right{margin-left:auto;color:var(--gn-n-600)}.tb-item--flat{cursor:default;background:#fbfcfd}.tb-item--flat:hover{border-color:var(--gn-line-2);box-shadow:none}.tb-go--none{color:var(--gn-n-600);margin-left:4px}.tb-chip,.tb-refresh,.tb-logout{display:inline-flex;align-items:center;justify-content:center;min-height:var(--gn-tap)}.tb-chip,.tb-refresh{padding:0 12px}.tb-logout{padding:0 8px}.sk{display:block;height:10px;border-radius:3px;background:#e7edf4;position:relative;overflow:hidden}.sk:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);animation:sk-sweep 1.15s ease-in-out infinite}@keyframes sk-sweep{to{transform:translate(100%)}}.pb{display:flex;flex-direction:column;flex:1;min-height:0;background:#f4f7fa;font-family:var(--gn-font)}.pb-loading{padding:48px;color:var(--gn-color-text-muted)}.pb-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--gn-line);flex-wrap:wrap;flex:none}.pb-pairs{display:flex;border:1px solid #CBD8E3;border-radius:6px;overflow:hidden}.pair{border:0;background:#fff;font:inherit;font-size:12px;color:#5b6b7a;padding:5px 11px;cursor:pointer;white-space:nowrap}.pair+.pair{border-left:1px solid #CBD8E3}.pair--on{background:var(--gn-color-brand);color:#fff;font-weight:600}.pb-owners{display:flex;gap:4px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--gn-line);background:#fff;font:inherit;font-size:12px;color:#5b6b7a;padding:4px 9px;border-radius:12px;cursor:pointer}.chip b{font-weight:600;color:#35485a;font-variant-numeric:tabular-nums}.chip i{width:7px;height:7px;border-radius:2px;display:inline-block}.chip--on{border-color:var(--gn-color-brand);background:var(--gn-color-brand-soft);color:var(--gn-color-brand)}.chip--on b{color:var(--gn-color-brand)}.pb-search{width:180px;height:28px;border:1px solid var(--gn-line);border-radius:6px;padding:0 9px;font:inherit;font-size:12px;outline:none}.pb-search:focus{border-color:var(--gn-color-brand);box-shadow:0 0 0 3px #0265ae1a}.pb-who{margin-left:auto;display:flex;align-items:center;gap:8px}.who-tag{font-size:12px;color:#5b6b7a;background:#f0f5fa;border-radius:10px;padding:3px 9px}.pb-logout{border:0;background:none;font:inherit;font-size:12px;color:var(--gn-n-600);cursor:pointer}.pb-logout:hover{color:var(--gn-color-danger)}.pb-board{flex:1;overflow:auto;background:#fff;position:relative}.pb-head{display:flex;position:sticky;top:0;z-index:6;background:#f7fafc;border-bottom:1px solid var(--gn-line);height:40px}.pb-hl{display:flex;align-items:stretch;position:sticky;left:0;z-index:7;background:#f7fafc;border-right:1px solid #CBD8E3;flex:none}.hc{display:flex;align-items:center;gap:3px;padding:0 6px;font-size:11px;color:#5b6b7a;border-right:1px solid var(--gn-line-2);font-weight:500;white-space:nowrap;overflow:hidden}.hc--num,.hc--readonly{justify-content:flex-end}.hc--ops{border-right:0}.hc--locked{color:var(--gn-n-600)}.hc svg{flex:none}.pb-hr{flex:none;display:flex;flex-direction:column}.hr-years{display:flex;height:16px}.hr-years div{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#3c5b75;background:#edf3f8;border-right:1px solid var(--gn-line)}.hr-months{display:flex;height:24px}.hr-months div{display:flex;align-items:center;justify-content:center;font-size:10px;color:#6b7b8a;border-right:1px solid var(--gn-line-2);font-variant-numeric:tabular-nums}.pb-rows{position:relative}.pb-row{display:flex}.pb-row:hover{--row-bg: #F7FBFE}.pb-row--open{--row-bg: #EDF5FC}.pb-rl{display:flex;align-items:stretch;position:sticky;left:0;z-index:3;background:var(--row-bg, #fff);border-right:1px solid var(--gn-line);flex:none}.row-lead{width:3px;flex:none}.cell{display:flex;align-items:center;padding:0 6px;font-size:12px;color:#22303c;border-right:1px solid #F0F4F8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell--num{justify-content:flex-end;font-variant-numeric:tabular-nums;color:#5b6b7a}.cell--code{font-weight:600;color:#35485a;cursor:pointer;letter-spacing:.2px}.cell--code:hover{color:var(--gn-color-brand);text-decoration:underline}.cell--edit{cursor:pointer}.cell--edit:hover{background:#eaf3fb;box-shadow:inset 0 0 0 1px #bbd6ec}.cell--lock,.cell--ro{color:var(--gn-n-600)}.cell--editing{padding:0;position:relative;border-right:1px solid var(--gn-color-brand);z-index:9}.cell--ops{justify-content:center;border-right:0}.cell-ph{color:var(--gn-n-500);font-size:11px}.cell-input{position:absolute;left:0;top:0;height:100%;width:132px;border:0;padding:0 5px;font:inherit;font-size:12px;outline:2px solid var(--gn-color-brand);outline-offset:-2px;background:#fff;color:#22303c;z-index:10;box-shadow:0 2px 8px #0f233724}.cell--editing.is-last .cell-input{left:auto;right:0}.dev{font-weight:600}.dev--late{color:var(--gn-color-danger)}.dev--early{color:var(--gn-color-ok)}.dev--ok{color:#5b6b7a}.dev--none{color:var(--gn-n-500)}.row-del{border:0;background:none;color:var(--gn-n-500);font-size:15px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:4px}.row-del:hover{color:#fff;background:var(--gn-color-danger)}.row-add{border:0;background:none;color:var(--gn-n-500);font-size:13px;line-height:1;cursor:pointer;padding:2px 4px;border-radius:4px}.row-add:hover{color:#fff;background:var(--gn-color-brand)}.dlg-pos{margin-left:8px;font-style:normal;font-size:12px;font-weight:400;color:var(--gn-n-600);background:#f0f5fa;border-radius:9px;padding:2px 8px}.pb-rr{position:relative;flex:none;height:100%}.g-plan{position:absolute;top:6px;height:8px;border-radius:2px;background:#c2d3e1}.g-act{position:absolute;top:17px;height:8px;border-radius:2px;background:var(--gn-color-brand)}.g-late{position:absolute;top:17px;height:8px;border-radius:0 2px 2px 0;background:var(--gn-danger)}.g-open{position:absolute;top:15px;width:2px;height:12px;background:var(--gn-color-brand);opacity:.45}.pb-svg{position:absolute;top:0;pointer-events:none;overflow:visible}.pb-empty{padding:40px;text-align:center;color:var(--gn-n-600);font-size:14px}.pb-foot{display:flex;align-items:center;gap:12px;padding:5px 12px;background:#fff;border-top:1px solid var(--gn-line);font-size:12px;color:#6b7b8a;flex:none;flex-wrap:wrap}.legend{display:inline-flex;align-items:center;gap:4px}.legend i{width:14px;height:7px;border-radius:2px;display:inline-block}.lg-plan{background:#c2d3e1}.lg-act{background:var(--gn-color-brand)}.lg-late{background:var(--gn-danger)}.lg-stop{background:#c93a3a29;border:1px solid rgba(201,58,58,.3)}.lg-today{width:0;height:10px;border-left:2px dashed var(--gn-danger);border-radius:0}.foot-sep{width:1px;height:12px;background:var(--gn-line)}.foot-num{font-variant-numeric:tabular-nums}.foot-num--bad{color:var(--gn-color-danger);font-weight:600}.foot-num--warn{color:var(--gn-color-warn)}.foot-right{margin-left:auto;color:var(--gn-n-600)}.dlg-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#14263757;display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}.dlg{width:480px;max-width:100%;max-height:88vh;overflow:auto;background:#fff;border-radius:10px;box-shadow:0 18px 50px #0f233742;padding:16px 18px 14px}.dlg--wide{width:620px}.dlg--danger{border-top:3px solid var(--gn-color-danger)}.dlg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.dlg-head h3{margin:0;font-size:14px;color:#1b2a38}.dlg-x{border:0;background:none;font:inherit;font-size:12px;color:var(--gn-n-600);cursor:pointer}.dlg-x:hover{color:var(--gn-color-text)}.dlg-lines{margin:0 0 10px;font-size:12px}.dlg-lines div{display:flex;gap:10px;padding:4px 0;border-bottom:1px dashed var(--gn-line-2)}.dlg-lines dt{flex:none;width:64px;color:var(--gn-n-600)}.dlg-lines dd{margin:0;color:#22303c;font-weight:500;word-break:break-word}.dlg-hint{margin:8px 0 10px;padding:8px 10px;background:#fffcf0;border:1px solid var(--gn-warn-line);border-radius:6px;font-size:12px;color:var(--gn-warn);line-height:1.55}.dlg-field{display:grid;gap:4px;margin-bottom:10px;font-size:12px;color:var(--gn-n-600)}.dlg-field input,.dlg-field select{height:30px;border:1px solid var(--gn-line);border-radius:6px;padding:0 8px;font:inherit;font-size:14px;color:#22303c;outline:none}.dlg-field input:focus,.dlg-field select:focus{border-color:var(--gn-color-brand)}.dlg-field--row{grid-template-columns:64px 1fr;align-items:center}.dlg-field--row>span{padding-top:0}.dlg-force{display:flex;gap:7px;align-items:flex-start;font-size:12px;color:var(--gn-warn);background:#fff7f7;border:1px solid var(--gn-danger-line);border-radius:6px;padding:7px 9px;margin-bottom:10px}.dlg-foot{display:flex;align-items:center;gap:8px;justify-content:flex-end}.dlg-note{margin-right:auto;font-size:12px;color:var(--gn-n-600)}.dlg-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:4px}.dlg-grid label{display:grid;gap:3px;font-size:12px;color:var(--gn-n-600)}.dlg-grid label.span2{grid-column:1 / -1}.dlg-grid input,.dlg-grid select{height:30px;border:1px solid var(--gn-line);border-radius:6px;padding:0 8px;font:inherit;font-size:14px;color:#22303c;outline:none}.dlg-grid input:focus,.dlg-grid select:focus{border-color:var(--gn-color-brand)}.dlg-grid em{font-style:normal;font-size:12px;color:var(--gn-n-600)}.dlg-grid em.bad{color:var(--gn-color-danger)}.req{margin-left:4px;color:var(--gn-color-danger);font-size:12px}.stale-now{color:var(--gn-color-danger);font-weight:600}.dlg-ev{display:grid;grid-template-columns:1fr 150px;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--gn-line-2)}.dlg-ev .dlg-field{margin-bottom:0}.btn--sm{padding:4px 10px;font-size:12px}.btn--danger{background:var(--gn-color-danger);border-color:var(--gn-color-danger)}.btn--danger:hover{filter:brightness(.94)}.drawer{position:fixed;top:0;right:0;bottom:0;width:360px;max-width:92vw;background:#fff;border-left:1px solid var(--gn-line);box-shadow:-8px 0 28px #0f23371f;z-index:40;display:flex;flex-direction:column}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 16px 10px;border-bottom:1px solid var(--gn-line-2)}.drawer-code{font-size:12px;color:var(--gn-n-600);letter-spacing:.4px}.drawer-name{font-size:14px;font-weight:600;color:#1b2a38;margin-top:2px}.drawer-facts{display:grid;grid-template-columns:1fr;gap:6px;padding:12px 16px;border-bottom:1px solid var(--gn-line-2);font-size:12px}.drawer-facts div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.drawer-facts span{color:var(--gn-n-600)}.drawer-facts b{font-weight:600;color:#35485a;font-variant-numeric:tabular-nums;white-space:nowrap}.drawer-memo{padding:12px 16px;border-bottom:1px solid var(--gn-line-2);display:grid;gap:6px}.drawer-owner{padding:10px 16px;border-bottom:1px solid var(--gn-line-2);display:grid;gap:3px}.drawer-owner label{display:grid;gap:4px;font-size:12px;color:var(--gn-n-600)}.drawer-owner select{height:28px;border:1px solid var(--gn-line);border-radius:6px;padding:0 6px;font:inherit;font-size:12px;color:#22303c;background:#fff;outline:none}.drawer-owner select:disabled{background:#f7fafc;color:var(--gn-n-600)}.drawer-owner-hint{margin:0;font-size:12px;color:var(--gn-n-600)}.drawer-memo label{display:grid;gap:4px;font-size:12px;color:var(--gn-n-600)}.drawer-memo textarea{border:1px solid var(--gn-line);border-radius:6px;padding:6px 8px;font:inherit;font-size:12px;resize:vertical;outline:none;color:#22303c}.drawer-memo textarea:focus{border-color:var(--gn-color-brand)}.drawer-memo button{justify-self:start}.drawer-memo-hint{font-style:normal;font-size:12px;color:var(--gn-n-600)}.drawer-body{flex:1;overflow:auto;padding:12px 16px 20px}.drawer-empty{color:var(--gn-n-600);font-size:12px;line-height:1.7}.tl{list-style:none;margin:0;padding:0 0 0 12px;border-left:1px solid var(--gn-line-2)}.tl li{position:relative;padding:0 0 14px 12px}.tl li:before{content:"";position:absolute;left:-17px;top:5px;width:7px;height:7px;border-radius:50%;background:#c2d3e1;border:2px solid #fff;box-shadow:0 0 0 1px #c2d3e1}.tl li.tl--danger:before{background:var(--gn-color-danger);box-shadow:0 0 0 1px var(--gn-color-danger)}.tl-top{display:flex;justify-content:space-between;gap:8px;font-size:12px}.tl-top b{color:#35485a}.tl-top time{color:var(--gn-n-600);font-variant-numeric:tabular-nums}.tl-change{margin-top:3px;font-size:12px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}.tl-old{color:var(--gn-n-600);text-decoration:line-through}.tl-arrow{color:var(--gn-n-300);font-size:12px}.tl-new{color:#1b2a38;font-weight:600}.tl-meta{margin-top:3px;font-size:12px;color:var(--gn-n-600);line-height:1.5}.tl-meta--sub{color:var(--gn-n-600)}.toast{position:fixed;left:50%;bottom:42px;transform:translate(-50%);padding:8px 16px;border-radius:18px;font-size:14px;z-index:60;box-shadow:0 6px 22px #0f23372e}.toast--ok{background:#17324a;color:#fff}.toast--err{background:var(--gn-danger-deep);color:#fff}.pb-hr{position:relative}.hr-today{position:absolute;bottom:24px;transform:translate(-50%);z-index:2;font-size:12px;line-height:1;color:#fff;background:var(--gn-color-danger);padding:2px 5px;border-radius:7px;white-space:nowrap;letter-spacing:.3px;box-shadow:0 1px 3px #c93a3a59}.pb-row[data-state=late]{--row-tint: #FDF3F3}.pb-row[data-state=doing]{--row-tint: #F3F9FE}.pb-row[data-state=done]{--row-tint: #F4FAF6}.pb-row[data-state=idle]{--row-tint: #ffffff}.pb-rl{background:var(--row-bg, var(--row-tint, #fff))}.pb-row[data-state=late] .row-lead{box-shadow:inset 0 0 0 1px #c93a3a80}.pb-row[data-state=late] .cell--code{color:var(--gn-danger)}.pb-row[data-state=done] .g-act{background:var(--gn-color-ok)}.pb-row[data-state=done] .cell--code{color:#4a6b58}.pb--skeleton .sk-row{display:flex;align-items:center;border-bottom:1px solid #F5F8FB}.sk--pill{height:24px;border-radius:6px}.sk--head{height:40px;border-radius:0;background:#edf2f8;width:100%}.sk--bar{height:8px}.sk-rl{display:flex;align-items:center;padding:0 10px;flex:none;border-right:1px solid var(--gn-line)}.sk-rr{flex:1;display:flex;align-items:center;padding-left:8px}.pair,.chip,.pb-logout,.dlg-x{display:inline-flex;align-items:center;justify-content:center;min-height:var(--gn-tap)}.pair{padding:0 14px}.chip{padding:0 12px;border-radius:var(--gn-tap)}.pb-logout,.dlg-x{padding:0 10px}.pb-search{height:36px}.db{display:flex;flex-direction:column;flex:1;min-height:0;background:#f4f7fa;font-family:var(--gn-font)}.db-loading,.db-empty{padding:40px 18px;color:var(--gn-color-text-muted);font-size:14px}.db-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--gn-line);flex-wrap:wrap;flex:none}.db-chips{display:flex;gap:4px;flex-wrap:wrap}.db-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--gn-line);background:#fff;font:inherit;font-size:12px;color:#5b6b7a;padding:4px 9px;border-radius:12px;cursor:pointer}.db-chip b{font-weight:600;color:#35485a;font-variant-numeric:tabular-nums}.db-chip i{width:7px;height:7px;border-radius:2px;display:inline-block}.db-chip--on{border-color:var(--gn-color-brand);background:var(--gn-color-brand-soft);color:var(--gn-color-brand)}.db-chip--on b{color:var(--gn-color-brand)}.db-select{height:28px;border:1px solid var(--gn-line);border-radius:6px;padding:0 6px;font:inherit;font-size:12px;color:#35485a;background:#fff}.db-search{width:190px;height:28px;border:1px solid var(--gn-line);border-radius:6px;padding:0 9px;font:inherit;font-size:12px;outline:none}.db-search:focus{border-color:var(--gn-color-brand);box-shadow:0 0 0 3px #0265ae1a}.db-who{margin-left:auto;display:flex;align-items:center;gap:8px}.db-tag{font-size:12px;color:#5b6b7a;background:#f0f5fa;border-radius:10px;padding:3px 9px}.db-logout{border:0;background:none;font:inherit;font-size:12px;color:var(--gn-n-600);cursor:pointer}.db-logout:hover{color:var(--gn-color-danger)}.db-btn{border:1px solid var(--gn-line);background:#fff;font:inherit;font-size:12px;color:#35485a;padding:6px 12px;border-radius:6px;cursor:pointer}.db-btn:hover{border-color:var(--gn-color-brand);color:var(--gn-color-brand)}.db-btn--sm{padding:5px 10px}.db-btn--primary{background:var(--gn-color-brand);border-color:var(--gn-color-brand);color:#fff;font-weight:600}.db-btn--primary:disabled{opacity:.45;cursor:not-allowed}.db-board{flex:1;overflow:auto;background:#fff}.db-head{display:flex;position:sticky;top:0;z-index:6;background:#f7fafc;border-bottom:1px solid var(--gn-line);height:34px}.db-hc{display:flex;align-items:center;padding:0 6px;font-size:11px;color:#5b6b7a;border-right:1px solid var(--gn-line-2);font-weight:500;white-space:nowrap;overflow:hidden;flex:none}.db-hc--num{justify-content:flex-end}.db-hc--locked{color:var(--gn-n-600)}.db-hc--ops{border-right:0}.db-row{display:flex;height:30px}.db-row:hover{background:#f7fbfe}.db-cell{display:flex;align-items:center;gap:5px;padding:0 6px;font-size:12px;color:#22303c;border-right:1px solid var(--gn-line-2);border-bottom:1px solid #F4F7FA;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none}.db-cell--num{justify-content:flex-end;font-variant-numeric:tabular-nums;color:#5b6b7a}.db-cell--code{font-weight:600;color:#35485a;cursor:pointer}.db-cell--code:hover{color:var(--gn-color-brand);text-decoration:underline}.db-dot{width:5px;height:5px;border-radius:2px;flex:none}.db-cell--edit{cursor:pointer}.db-cell--edit:hover{background:#eaf3fb;box-shadow:inset 0 0 0 1px #bbd6ec}.db-cell--empty{color:var(--gn-n-500)}.db-ph{font-size:11px;color:var(--gn-n-500)}.db-cell--editing{padding:0;position:relative;border-right:1px solid var(--gn-color-brand);z-index:9}.db-cell--ops{justify-content:center;gap:2px;border-right:0}.db-cell-input{position:absolute;left:0;top:0;height:100%;width:150px;border:0;padding:0 5px;font:inherit;font-size:12px;outline:2px solid var(--gn-color-brand);outline-offset:-2px;background:#fff;color:#22303c;z-index:10;box-shadow:0 2px 8px #0f233724}.db-cell--editing.is-last .db-cell-input{left:auto;right:0}.db-op{width:18px;height:18px;line-height:1;border:0;background:transparent;color:var(--gn-n-500);font-size:14px;cursor:pointer;border-radius:3px;padding:0}.db-op:hover{background:#eaf3fb;color:var(--gn-color-brand)}.db-op--del:hover{background:#fbecec;color:var(--gn-color-danger)}.db-dev{font-variant-numeric:tabular-nums}.db-dev--none{color:var(--gn-n-500)}.db-dev--late{color:var(--gn-color-danger);font-weight:600}.db-dev--early{color:#1f7a46}.db-dev--ok{color:#5b6b7a}.db-status{display:flex;align-items:center;gap:16px;padding:6px 12px;background:#fff;border-top:1px solid var(--gn-line);font-size:12px;color:#6b7b8a;flex:none}.db-status b{color:#35485a;font-variant-numeric:tabular-nums}.db-status-note{margin-left:auto;color:var(--gn-n-500)}.db-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1020306b;display:flex;align-items:center;justify-content:center;z-index:40}.db-modal{width:720px;max-height:86vh;overflow:auto;background:#fff;border-radius:10px;box-shadow:0 18px 48px #0c1e3047}.db-modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--gn-line-2)}.db-modal-head h2{margin:0;font-size:14px;color:#22303c;font-weight:600}.db-x{border:0;background:none;font:inherit;font-size:12px;color:var(--gn-n-600);cursor:pointer}.db-x:hover{color:var(--gn-color-danger)}.db-form{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:16px 18px 4px}.db-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#5b6b7a}.db-form label span b{color:var(--gn-color-danger);font-weight:600}.db-form input,.db-form select{height:30px;border:1px solid var(--gn-line);border-radius:6px;padding:0 9px;font:inherit;font-size:12px;color:#22303c;outline:none;background:#fff}.db-form input:focus,.db-form select:focus{border-color:var(--gn-color-brand);box-shadow:0 0 0 3px #0265ae1a}.db-form-wide{grid-column:1 / -1}.db-warn{color:var(--gn-color-danger);font-size:12px;font-style:normal}.db-hint{margin:10px 18px 0;font-size:12px;color:var(--gn-n-600);line-height:1.6}.db-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 18px}.db-mute{color:var(--gn-n-600);font-size:12px}.db-drawer{position:fixed;right:0;top:0;bottom:0;width:420px;background:#fff;box-shadow:-14px 0 36px #0c1e3033;z-index:45;display:flex;flex-direction:column}.db-drawer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--gn-line-2)}.db-drawer-head h3{margin:0 0 4px;font-size:14px;color:#22303c}.db-drawer-head p{margin:0;font-size:12px;color:#6b7b8a;line-height:1.5}.db-drawer-body{flex:1;overflow:auto;padding:12px 16px 20px}.db-ev{padding:9px 0;border-bottom:1px dashed var(--gn-line-2)}.db-ev-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#22303c}.db-ev-top span{font-size:12px;color:var(--gn-n-600)}.db-ev-val{margin-top:3px;font-size:12px;color:#35485a}.db-ev-val i{color:var(--gn-n-500);font-style:normal}.db-ev-meta{margin-top:3px;font-size:12px;color:var(--gn-n-500)}.db-toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%);z-index:60;font-size:14px;padding:9px 16px;border-radius:8px;box-shadow:0 8px 24px #0c1e3033}.db-toast--ok{background:#1f7a46;color:#fff}.db-toast--err{background:var(--gn-danger-deep);color:#fff}.pr{display:flex;flex-direction:column;flex:1;min-height:0;background:#f4f7fa;font-family:var(--gn-font)}.pr-loading{padding:48px;color:var(--gn-color-text-muted)}.pr-bar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--gn-line);flex-wrap:wrap;flex:none}.pr-title{font-size:16px;font-weight:700;color:#20303f;display:flex;flex-direction:column;line-height:1.25}.pr-sub{font-size:12px;font-weight:400;color:var(--gn-color-text-muted)}.pr-spacer{flex:1}.pr-tog,.pr-btn{font:inherit;font-size:14px;padding:7px 13px;border-radius:6px;border:1px solid #CBD8E3;background:#fff;color:#35485a;cursor:pointer;white-space:nowrap}.pr-tog:hover,.pr-btn:hover{background:#f2f7fb;border-color:var(--gn-color-brand);color:var(--gn-color-brand)}.pr-tog--on{background:var(--gn-color-brand);border-color:var(--gn-color-brand);color:#fff;font-weight:600}.pr-btn--danger{background:var(--gn-color-danger);border-color:var(--gn-color-danger);color:#fff}.pr-btn--danger:hover{background:var(--gn-danger);color:#fff}.pr-btn--ghost{color:var(--gn-color-text-muted)}.pr-sum{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--gn-line-2);flex-wrap:wrap;flex:none}.pr-chip{display:inline-flex;align-items:baseline;gap:5px;font-size:12px;color:#5b6b7a;padding:4px 10px;border-radius:12px;background:#f2f5f9;border:1px solid #E2E9F1}.pr-chip b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.pr-chip--ok b{color:var(--gn-color-ok)}.pr-chip--active b{color:var(--gn-color-brand)}.pr-chip--danger b{color:var(--gn-color-danger)}.pr-chip--warn b{color:var(--gn-color-warn)}.pr-chip--idle b{color:var(--gn-n-600)}.pr-sum-note{font-size:12px;color:var(--gn-n-600);margin-left:4px}.pr-err{margin:8px 12px;padding:9px 12px;background:var(--gn-color-danger-soft);color:var(--gn-danger);border:1px solid var(--gn-danger-line);border-radius:6px;font-size:14px}.pr-wrap{flex:1;overflow:auto;padding:0 12px 12px;min-height:0}.pr-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1180px;background:#fff;border:1px solid var(--gn-line);border-radius:8px;overflow:hidden}.pr-table thead th{position:sticky;top:0;z-index:2;background:#f7fafd;border-bottom:1px solid var(--gn-line);font-size:11.5px;font-weight:600;color:#4b5c6b;padding:8px 6px;text-align:center;white-space:nowrap}.pr-table thead th b{display:block;font-size:12px;color:#35485a}.pr-table thead th i{display:block;font-style:normal;font-size:10.5px;color:var(--gn-n-600)}.pr-th--off{opacity:.55}.pr-th-pack{width:190px;text-align:left;padding-left:12px!important;position:sticky;left:0;z-index:3}.pr-table tbody tr:hover .pr-pack{background:#f4f9fd}.pr-pack{position:sticky;left:0;z-index:1;background:#fff;border-bottom:1px solid #EEF3F8;padding:6px 10px 6px 12px;text-align:left;font-weight:400;vertical-align:middle}.pr-pack b{font-size:12.5px;color:var(--gn-color-brand);margin-right:6px}.pr-pack span{font-size:12px;color:#35485a;display:block;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:160px}.pr-pack em{font-style:normal;font-size:10.5px;color:var(--gn-n-600);font-variant-numeric:tabular-nums}.pr-td{padding:3px;border-bottom:1px solid #EEF3F8;vertical-align:middle}.pr-cell{width:100%;min-height:42px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:5px 7px 5px 16px;border:1px solid transparent;border-radius:5px;background:#fbfcfe;font:inherit;text-align:left;cursor:pointer;position:relative}.pr-cell:hover{border-color:var(--gn-color-brand);background:#fff}.pr-cell:focus-visible{outline:2px solid var(--gn-color-brand);outline-offset:1px}.pr-cell b{font-size:11.5px;font-weight:600;color:#35485a;line-height:1.25;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pr-cell i{font-style:normal;font-size:10.5px;color:var(--gn-n-600);font-variant-numeric:tabular-nums}.pr-dot{position:absolute;left:6px;top:11px;width:6px;height:6px;border-radius:2px;background:#c9d6e2}.pr-cell--done{background:var(--gn-color-ok-soft)}.pr-cell--done .pr-dot{background:var(--gn-color-ok)}.pr-cell--done b{color:var(--gn-ok)}.pr-cell--active{background:#eff7fe}.pr-cell--active .pr-dot{background:var(--gn-color-brand)}.pr-cell--active b{color:var(--gn-color-brand)}.pr-cell--overdue{background:var(--gn-color-danger-soft)}.pr-cell--overdue .pr-dot{background:var(--gn-color-danger)}.pr-cell--overdue b{color:var(--gn-danger)}.pr-cell--warn{background:var(--gn-color-warn-soft)}.pr-cell--warn .pr-dot{background:var(--gn-color-warn)}.pr-cell--warn b{color:var(--gn-warn)}.pr-cell--off{cursor:not-allowed;opacity:.6;background:#f7f8fa}.pr-empty{padding:24px;text-align:center;color:var(--gn-n-600);font-size:12.5px}.pr-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e2a6b;display:flex;align-items:center;justify-content:center;z-index:60;padding:16px}.pr-dlg{width:min(720px,96vw);max-height:92vh;background:#fff;border-radius:10px;box-shadow:0 12px 40px #141e2a47;display:flex;flex-direction:column;overflow:hidden}.pr-dlg-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--gn-line-2)}.pr-dlg-head h2{margin:0;font-size:16px;color:#20303f}.pr-x{margin-left:auto;font:inherit;font-size:14px;padding:5px 11px;border-radius:6px;border:1px solid #CBD8E3;background:#fff;color:#5b6b7a;cursor:pointer}.pr-x:hover{border-color:var(--gn-color-brand);color:var(--gn-color-brand)}.pr-pill{font-size:12px;padding:2px 9px;border-radius:10px;background:#f2f5f9;color:#5b6b7a}.pr-pill--done{background:var(--gn-color-ok-soft);color:var(--gn-ok)}.pr-pill--active{background:var(--gn-color-brand-soft);color:var(--gn-color-brand)}.pr-pill--warn{background:var(--gn-color-warn-soft);color:var(--gn-warn)}.pr-pill--overdue{background:var(--gn-color-danger-soft);color:var(--gn-danger)}.pr-dlg-body{padding:14px 16px 18px;overflow:auto}.pr-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin-bottom:12px;background:#f7fafd;border:1px solid var(--gn-line-2);border-radius:8px;padding:10px 12px}.pr-facts div{display:flex;flex-direction:column;gap:2px}.pr-facts span{font-size:12px;color:var(--gn-n-600)}.pr-facts b{font-size:12px;font-weight:500;color:#35485a;line-height:1.45}.pr-note{font-size:12px;line-height:1.55;padding:8px 11px;border-radius:6px;margin-bottom:10px;background:#f2f7fb;color:#35485a;border:1px solid #DCE9F4}.pr-note--err{background:var(--gn-color-danger-soft);border-color:var(--gn-danger-line);color:var(--gn-danger)}.pr-note--warn{background:var(--gn-color-warn-soft);border-color:#f0dfbe;color:var(--gn-warn)}.pr-note--ok{background:var(--gn-color-ok-soft);border-color:#c8e6d6;color:var(--gn-ok)}.pr-hint{font-size:12px;color:var(--gn-n-600);line-height:1.6;margin:-4px 0 10px}.pr-form{display:flex;flex-direction:column;gap:9px;margin-bottom:12px}.pr-row{display:flex;align-items:center;gap:10px}.pr-row>span{width:86px;flex:none;font-size:12px;color:#5b6b7a}.pr-row-in{flex:1;display:flex;align-items:center;gap:8px}.pr-row-in input,.pr-row-in select{flex:1;min-width:0;font:inherit;font-size:14px;padding:7px 9px;border:1px solid #CBD8E3;border-radius:6px;background:#fff;color:#20303f}.pr-row-in input:focus,.pr-row-in select:focus{outline:none;border-color:var(--gn-color-brand);box-shadow:0 0 0 3px #0265ae1f}.pr-row-in input:disabled,.pr-row-in select:disabled{background:#f4f6f9;color:var(--gn-n-600)}.pr-row-in select{max-width:132px}.pr-save{flex:none;font:inherit;font-size:12px;padding:7px 13px;border-radius:6px;border:1px solid var(--gn-color-brand);background:var(--gn-color-brand);color:#fff;cursor:pointer}.pr-save:disabled{background:#c9d6e2;border-color:#c9d6e2;cursor:not-allowed}.pr-static{font-size:12px;color:var(--gn-n-600);flex:none}.pr-tog,.pr-btn,.pr-save{display:inline-flex;align-items:center;justify-content:center;min-height:var(--gn-tap)}:root{--cf-red: var(--gn-danger);--cf-amber: var(--gn-warn);--cf-line: var(--gn-line);--cf-ink: #31404E;--cf-muted: #77889A}.cf-banner{flex:none;border-bottom:1px solid var(--cf-line);background:#f7fafd;font-family:var(--gn-font);font-size:12px;color:var(--cf-ink);max-height:210px;overflow-y:auto}.cf-head{display:flex;align-items:center;gap:8px;padding:7px 16px;border-bottom:1px solid var(--cf-line)}.cf-dot{width:7px;height:7px;border-radius:50%;background:var(--gn-color-brand);flex:none}.cf-title{font-weight:600}.cf-red{color:var(--cf-red);font-style:normal;font-weight:600;margin-left:8px}.cf-toggle{margin-left:auto;border:0;background:transparent;color:var(--cf-muted);font:inherit;cursor:pointer;padding:2px 6px}.cf-toggle:hover{color:var(--gn-color-brand)}.cf-list{padding:4px 16px 9px}.cf-item{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:5px 0;border-bottom:1px dashed var(--cf-line)}.cf-item:last-of-type{border-bottom:0}.cf-item--baseline .cf-who{color:var(--cf-red);font-weight:600}.cf-who{white-space:nowrap}.cf-what{color:var(--cf-muted)}.cf-now{color:var(--cf-ink)}.cf-go{margin-left:auto;border:1px solid var(--cf-line);border-radius:4px;background:#fff;color:var(--gn-color-brand);font:inherit;padding:2px 9px;cursor:pointer}.cf-go:hover{border-color:var(--gn-color-brand)}.cf-affected{display:flex;flex-wrap:wrap;gap:4px;padding:6px 0 0;color:var(--cf-amber)}.cf-affected-note{color:var(--cf-muted)}.pb-row[data-touched],.db-row[data-touched]{box-shadow:inset 3px 0 0 var(--cf-amber)}.pb-row[data-touched=baseline],.db-row[data-touched=baseline]{box-shadow:inset 3px 0 0 var(--cf-red)}.cf-toggle,.cf-go{display:inline-flex;align-items:center;min-height:32px;padding:0 10px}.dpb{display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;flex:none;padding:7px 14px;background:#fff;border-bottom:1px solid var(--gn-line);font-family:var(--gn-font);font-size:12px;color:#5b6b7a}.dpb--idle,.dpb--err{min-height:38px}.dpb--err{color:var(--gn-color-danger)}.dpb-head{display:flex;align-items:baseline;gap:8px;flex:none}.dpb-head strong{font-size:14px;font-weight:600;color:#1b2a38}.dpb-sub{font-size:12px;color:var(--gn-n-600);font-variant-numeric:tabular-nums}.dpb-state{flex:1 1 220px;min-width:190px;color:#35485a}.dpb-gauge{display:flex;align-items:center;gap:8px;flex:0 1 300px;min-width:220px}.dpb-track{position:relative;flex:1;min-width:90px;height:10px;border-radius:6px;background:#edf2f7;overflow:hidden}.dpb-fill{height:100%;border-radius:6px;background:var(--gn-color-brand);transition:width .2s ease}.dpb-pct{flex:none;font-weight:600;color:var(--gn-color-brand);font-variant-numeric:tabular-nums;white-space:nowrap}.dpb-count{flex:none;color:#35485a;font-variant-numeric:tabular-nums;white-space:nowrap}.dpb-lights{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.dpb-light{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.dpb-light i{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none}.dpb-light b{font-weight:600;color:#35485a;font-variant-numeric:tabular-nums}.dpb-light--late i{background:var(--gn-color-danger)}.dpb-light--warn i{background:var(--gn-color-warn)}.dpb-light--ready i{background:#8fa6ba}.dpb-light--done i{background:var(--gn-color-ok)}.dpb-eta{color:var(--gn-n-600);font-variant-numeric:tabular-nums}.dpb-note{flex:0 1 auto;margin:0 0 0 auto;font-size:12px;color:var(--gn-n-600)}.dpb-retry{margin-left:10px;border:1px solid var(--gn-line);background:#fff;border-radius:6px;font:inherit;font-size:12px;padding:2px 9px;cursor:pointer;color:#5b6b7a}.dpb-retry:hover{border-color:var(--gn-color-brand);color:var(--gn-color-brand)}@media (max-width: 900px){.dpb-note{flex:1 1 100%;margin-left:0}.dpb-gauge{flex:1 1 240px}}.dpb-retry{display:inline-flex;align-items:center;min-height:32px;padding:0 10px}:root{--gn-brand-50: #EAF3FB;--gn-brand-100: #D3E7F7;--gn-brand-200: #A6CDEF;--gn-brand-300: #6FAEE3;--gn-brand-400: #3B8CCB;--gn-brand-500: #0265AE;--gn-brand-600: #025494;--gn-brand-700: #01437A;--gn-brand-800: #01325C;--gn-brand-900: #0B223D;--gn-n-0: #FFFFFF;--gn-n-50: #F5F7FA;--gn-n-100: #EDF1F6;--gn-n-200: #DCE4ED;--gn-n-300: #C3CEDA;--gn-n-400: #97A5B2;--gn-n-500: #6B7B8A;--gn-n-600: #5B6B7A;--gn-n-700: #35485A;--gn-n-800: #1B2A38;--gn-n-900: #0F1D2B;--gn-danger: #B3261E;--gn-danger-soft: #FDECEA;--gn-danger-line: #EFC9C9;--gn-danger-deep: #7E1A15;--gn-warn: #8A5A00;--gn-warn-soft: #FFF4DC;--gn-warn-line: #EBDCA8;--gn-ok: #1B6E4A;--gn-ok-soft: #E7F5EE;--gn-ok-line: #BFE3D0;--gn-ink-1: #1B2A38;--gn-ink-2: #35485A;--gn-ink-3: #5B6B7A;--gn-line: #DCE4ED;--gn-line-2: #E7EEF4;--gn-s-1: 4px;--gn-s-2: 8px;--gn-s-3: 12px;--gn-s-4: 16px;--gn-s-6: 24px;--gn-s-8: 32px;--gn-s-12: 48px;--gn-r-sm: 6px;--gn-r-md: 8px;--gn-r-lg: 12px;--gn-tap: 44px;--gn-font: "Microsoft YaHei", "PingFang SC", -apple-system, BlinkMacSystemFont, "Noto Sans SC", sans-serif;--gn-font-num: "Inter", var(--gn-font);--gn-fs-caption: 12px;--gn-fs-sm: 14px;--gn-fs-body: 16px;--gn-fs-h4: 20px;--gn-fs-h3: 24px;--gn-fs-h2: 32px;--gn-fs-h1: 40px;--gn-shadow: 0 1px 3px rgba(28, 37, 54, .08);--gn-elev-page: #F5F7FA;--gn-elev-card: #FFFFFF;--gn-shadow-card: 0 1px 3px rgba(11, 34, 61, .06);--gn-shadow-lift: 0 4px 16px rgba(11, 34, 61, .1);--gn-glass: rgba(255, 255, 255, .82);--gn-r-card: 12px;--gn-r-btn: 8px;--gn-r-pill: 999px;--gn-brand-grad: linear-gradient(135deg, #0265AE 0%, #01325C 100%);--gn-brand-grad-deep: linear-gradient(150deg, #01325C 0%, #0B223D 100%);--gn-brand-line: linear-gradient(90deg, #14CD68 0%, #1E6EFF 100%);--gn-color-brand: var(--gn-brand-500);--gn-color-brand-soft: var(--gn-brand-50);--gn-color-danger: var(--gn-danger);--gn-color-danger-soft: var(--gn-danger-soft);--gn-color-warn: var(--gn-warn);--gn-color-warn-soft: var(--gn-warn-soft);--gn-color-ok: var(--gn-ok);--gn-color-ok-soft: var(--gn-ok-soft);--gn-color-text: var(--gn-ink-1);--gn-color-text-muted: var(--gn-ink-3);--gn-color-bg: var(--gn-n-50);--gn-color-surface: var(--gn-n-0);--gn-color-border: var(--gn-line);--gn-space-1: var(--gn-s-2);--gn-space-2: var(--gn-s-4);--gn-space-3: var(--gn-s-6);--gn-space-4: var(--gn-s-8);--gn-radius: var(--gn-r-sm)}*{box-sizing:border-box}body{margin:0;background:var(--gn-color-bg);color:var(--gn-color-text);font-family:var(--gn-font);font-size:var(--gn-fs-sm);line-height:1.6}.num,time,.foot-num,.drawer-facts b{font-variant-numeric:tabular-nums}@font-face{font-family:Inter;src:url(/fonts/InterVariable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}.kpi-number,.tb-kpi b,.gn-hero__figure{font-family:var(--gn-font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;font-weight:900}.login-wrap{position:relative;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) 380px;align-items:center;gap:56px;padding:0 8vw;overflow:hidden;background:var(--gn-brand-grad-deep);color:#fff;font-family:var(--gn-font)}.login-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(166,205,239,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(166,205,239,.055) 1px,transparent 1px);background-size:32px 32px;-webkit-mask-image:linear-gradient(120deg,rgba(0,0,0,.9),transparent 78%);mask-image:linear-gradient(120deg,rgba(0,0,0,.9),transparent 78%)}.login-wrap:after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--gn-brand-line)}.gn-hero{position:relative;z-index:1;padding:40px 0}.gn-hero__logo{display:block;width:auto;height:54px;margin:0 0 48px}.gn-hero__crumb{margin:0 0 12px;font-size:12px;letter-spacing:.08em;color:#a6cdef}.gn-hero__title{margin:0;font-size:40px;line-height:1.2;font-weight:700;letter-spacing:-.5px;color:#fff}.gn-hero__sub{margin:14px 0 0;font-size:16px;line-height:1.5;color:#d3e7f7}.gn-hero__rule{width:56px;height:3px;margin:32px 0 20px;border-radius:2px;background:var(--gn-brand-line)}.gn-hero__note{margin:0;max-width:34em;font-size:12px;line-height:1.75;color:#a6cdef}.login-card{position:relative;z-index:1;background:var(--gn-elev-card);border:0;border-radius:var(--gn-r-card);padding:28px 26px;box-shadow:0 16px 48px #00000038;display:grid;gap:14px;color:var(--gn-ink-1)}.login-card h2{margin:0;font-size:20px;font-weight:700;color:var(--gn-ink-1)}.login-sub{margin:-6px 0 2px;font-size:12px;color:var(--gn-ink-3);line-height:1.6}.login-card label{display:grid;gap:6px;font-size:12px;color:var(--gn-ink-2)}.login-card input{height:44px;border:1px solid var(--gn-line);border-radius:var(--gn-r-btn);padding:0 12px;font:inherit;font-size:14px;color:var(--gn-ink-1);background:#fff;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.login-card input:focus{border-color:var(--gn-color-brand);box-shadow:0 0 0 3px #0265ae29}.login-card .login-btn{height:44px;font:inherit;font-size:14px;font-weight:700;color:#fff;background:var(--gn-color-brand);border:0;border-radius:var(--gn-r-btn);cursor:pointer;transition:transform .2s ease,background .2s ease}.login-card .login-btn:hover:not(:disabled){background:var(--gn-brand-600);transform:translateY(-1px)}.login-card .login-btn:active:not(:disabled){transform:translateY(0) scale(.98)}.login-card .login-btn:disabled{background:var(--gn-n-200);color:var(--gn-n-600);cursor:not-allowed}.login-card .inline-error{margin:0;font-size:12px;color:var(--gn-danger)}.login-hint{margin:0;font-size:12px;color:var(--gn-ink-3);line-height:1.7}.login-hint code{background:var(--gn-n-100);padding:1px 5px;border-radius:3px;font-size:12px}@media (max-width: 860px){.login-wrap{grid-template-columns:1fr;gap:24px;padding:40px 20px;align-content:center}.gn-hero{padding:0}.gn-hero__logo{height:34px;margin-bottom:24px}.gn-hero__title{font-size:28px}.gn-hero__sub{font-size:14px}.gn-hero__rule{margin:20px 0 14px}.login-card{padding:22px 20px}}.gn-brandbar{flex:none;position:relative;z-index:5;display:flex;align-items:center;gap:12px;height:48px;padding:0 16px;background:var(--gn-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--gn-line-2)}.gn-brandbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gn-brand-line);opacity:.85}.gn-brandbar__logo{display:block;width:auto;height:26px;flex:none}.gn-brandbar__sep{width:1px;height:20px;background:var(--gn-line);flex:none}.gn-brandbar__title{font-size:14px;font-weight:700;color:var(--gn-ink-1);white-space:nowrap}.gn-brandbar__crumb{font-size:12px;color:var(--gn-ink-3);white-space:nowrap}.gn-brandbar__spacer{flex:1}.gn-brandbar__view{flex:none;font-size:12px;font-weight:700;color:var(--gn-color-brand);background:var(--gn-color-brand-soft);border-radius:var(--gn-r-pill);padding:4px 12px;white-space:nowrap}@media (max-width: 575px){.gn-brandbar{height:44px;padding:0 12px;gap:10px}.gn-brandbar__sep,.gn-brandbar__crumb{display:none}.gn-brandbar__logo{height:24px}.gn-brandbar__title{font-size:14px}}.tb .tb-kpi{border-radius:var(--gn-r-card);border-top:3px solid var(--gn-brand-500);box-shadow:var(--gn-shadow-card);transition:transform .2s ease,box-shadow .2s ease}.tb .tb-kpi:hover{transform:translateY(-2px);box-shadow:var(--gn-shadow-lift)}.tb .tb-kpi b{font-size:32px;line-height:1.1}.tb .tb-kpi--bad{border-top-color:var(--gn-danger)}.tb .tb-kpi--warn{border-top-color:var(--gn-warn)}.tb .tb-kpi--plain{border-top-color:var(--gn-n-300)}.tb .tb-item{border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.tb .tb-item:hover{transform:translateY(-1px);border-color:var(--gn-brand-200);box-shadow:inset 4px 0 0 var(--gn-brand-500),var(--gn-shadow-lift)}.tb .tb-chip--on{box-shadow:inset 3px 0 0 var(--gn-brand-500)}.tb .tb-empty{position:relative;overflow:hidden;border-radius:var(--gn-r-card);background:var(--gn-elev-card);box-shadow:var(--gn-shadow-card);padding:24px}.tb .tb-empty:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.08;background-image:linear-gradient(var(--gn-brand-500) 1px,transparent 1px),linear-gradient(90deg,var(--gn-brand-500) 1px,transparent 1px);background-size:24px 24px}.tb .tb-empty>*{position:relative}.app-shell .dlg,.app-shell .drawer{border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-lift)}.app-shell .btn{border-radius:var(--gn-r-btn)}@media (prefers-reduced-motion: reduce){.tb .tb-kpi,.tb .tb-item,.login-card input,.login-card .login-btn{transition:none}.tb .tb-kpi:hover,.tb .tb-item:hover,.login-card .login-btn:hover:not(:disabled),.login-card .login-btn:active:not(:disabled){transform:none}}.app-shell{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.gn-brandbar__ov{display:none;align-items:center;justify-content:center;flex:none;min-width:44px;height:32px;padding:0 8px;font:inherit;font-size:12px;font-weight:700;white-space:nowrap;color:var(--gn-brand-700);background:var(--gn-brand-50);border:1px solid var(--gn-brand-100);border-radius:var(--gn-r-sm);cursor:pointer}.gn-brandbar__ov:focus-visible{outline:2px solid var(--gn-brand-500);outline-offset:2px}.vtab-ico{display:none}@media (max-width: 767px){.app-shell .vnav{position:fixed;left:0;right:0;bottom:0;z-index:45;display:block;gap:0;padding:0 0 env(safe-area-inset-bottom);background:var(--gn-glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--gn-line-2);box-shadow:0 -4px 16px #0b223d14}.app-shell .vnav:before{content:"";position:absolute;top:-2px;left:0;right:0;height:2px;background:var(--gn-brand-line);opacity:.9}.app-shell .vback{display:none}.app-shell .vtabs{display:grid;grid-template-columns:repeat(4,1fr);border:0;border-radius:0;overflow:visible;background:transparent}.app-shell .vtab,.app-shell .vtab+.vtab{min-width:0;width:100%;min-height:56px;padding:6px 2px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-left:0;background:transparent;font-size:12px;line-height:1.2;color:var(--gn-n-600);white-space:nowrap;position:relative}.app-shell .vtab:hover{background:transparent}.app-shell .vtab-ico{display:block;flex:none}.app-shell .vtab--on,.app-shell .vtab--on:hover{background:transparent;color:var(--gn-brand-500)}.app-shell .vtab--on .vtab-label{font-weight:700}.app-shell .vtab--on:before{content:"";position:absolute;top:0;left:18%;right:18%;height:3px;border-radius:0 0 3px 3px;background:var(--gn-brand-500)}.app-shell .vtab:focus-visible{outline-offset:-2px}.app-shell .tb-body,.app-shell .pb-board,.app-shell .db-board,.app-shell .pr-wrap{padding-bottom:calc(72px + env(safe-area-inset-bottom))}.app-shell .tb-foot,.app-shell .pb-foot,.app-shell .db-status{display:none}.app-shell .gn-brandbar{height:44px;padding:0 12px;gap:8px}.app-shell .gn-brandbar__sep,.app-shell .gn-brandbar__crumb{display:none}.app-shell .gn-brandbar__logo{height:24px}.app-shell .gn-brandbar__title{font-size:14px}.app-shell .gn-brandbar__view{font-size:12px;padding:4px 9px}.app-shell .tb-bar,.app-shell .pb-bar,.app-shell .db-bar,.app-shell .pr-bar{gap:6px;padding:6px 8px;flex-wrap:wrap}.app-shell .pb-search,.app-shell .db-search{width:132px}.app-shell .tb-who,.app-shell .pb-who,.app-shell .db-who{margin-left:auto}.app-shell .pr-title{font-size:14px}.app-shell .pr-sub{display:none}.app-shell .tb-body{padding:12px 10px 0}.app-shell .tb-sum{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-shell .tb-kpi{min-width:0;padding:10px 12px}.app-shell .tb-kpi b{font-size:28px}.app-shell .tb-asof{grid-column:1 / -1;margin:0;text-align:right}.app-shell .tb-item{display:grid;grid-template-columns:8px auto auto minmax(0,1fr) auto;grid-template-areas:"dot  type  code  name name" "text text  text  text text" "date date  date  days go";gap:6px 8px;align-items:center;min-height:0;padding:12px;margin-bottom:10px;text-align:left}.app-shell .tb-dot{grid-area:dot}.app-shell .tb-type{grid-area:type}.app-shell .tb-code{grid-area:code;min-width:0;font-size:14px}.app-shell .tb-name{grid-area:name;min-width:0;flex:none;font-size:14px;font-weight:600;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.4}.app-shell .tb-item-text{grid-area:text;display:block;min-width:0;font-size:12px;line-height:1.5;color:var(--gn-n-600);white-space:normal;overflow:visible;text-overflow:clip}.app-shell .tb-date{grid-area:date;min-width:0;text-align:left;font-size:12px}.app-shell .tb-days{grid-area:days;min-width:0;text-align:right;font-size:12px}.app-shell .tb-go{grid-area:go;justify-self:end;min-height:36px;display:inline-flex;align-items:center;font-size:14px}.app-shell .pb-head,.app-shell .db-head,.app-shell .pb-rr,.app-shell .pb-svg{display:none!important}.app-shell .pb-board,.app-shell .db-board{background:var(--gn-elev-page)}.app-shell .pb-rows,.app-shell .db-rows{min-width:0!important;display:grid;gap:10px;padding:12px}.app-shell .pb-row,.app-shell .db-row{height:auto!important;display:block;background:var(--gn-elev-card);border:1px solid var(--gn-line-2);border-left:4px solid var(--gn-brand-500);border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card);padding:10px 12px}.app-shell .pb-row[data-state=late],.app-shell .db-row[data-touched=baseline]{border-left-color:var(--gn-danger)}.app-shell .pb-row[data-state=done]{border-left-color:var(--gn-ok)}.app-shell .pb-rl{width:100%!important;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;position:static;border:0;background:transparent}.app-shell .db-row{width:100%!important;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}.app-shell .db-row [data-key=code]{order:-2}.app-shell .db-row [data-key=name]{order:-1}.app-shell .pb-rl .cell,.app-shell .db-row .db-cell{width:auto!important;min-width:0;display:block;padding:3px 0 5px;border:0;border-bottom:1px dashed var(--gn-line-2);background:transparent!important;white-space:normal;overflow:visible;text-overflow:clip;font-size:14px;line-height:1.45;text-align:left!important}.app-shell .pb-rl .cell:before,.app-shell .db-row .db-cell:before{content:attr(data-label);display:block;margin-bottom:2px;font-size:12px;font-weight:500;color:var(--gn-n-600)}.app-shell .pb-rl [data-key=code],.app-shell .pb-rl [data-key=name],.app-shell .db-row [data-key=code],.app-shell .db-row [data-key=name]{grid-column:1 / -1;border-bottom:0}.app-shell .pb-rl [data-key=code]:before,.app-shell .db-row [data-key=code]:before{display:none}.app-shell .pb-rl [data-key=code],.app-shell .db-row [data-key=code]{font-size:16px;font-weight:700;color:var(--gn-brand-500);padding-top:0}.app-shell .pb-rl [data-key=name],.app-shell .db-row [data-key=name]{font-size:14px;font-weight:600;color:var(--gn-ink-1)}.app-shell .pb-rl .row-lead,.app-shell .pb-rl .cell--ops,.app-shell .db-row .db-cell--ops,.app-shell .db-row .db-dot{display:none}.app-shell .cell-input,.app-shell .db-cell-input{position:static;width:100%!important;height:40px;outline-offset:0;box-shadow:none;border:1px solid var(--gn-brand-500);border-radius:6px}.app-shell .cell--editing,.app-shell .db-cell--editing{border-right:0;padding:0}.app-shell .pb-empty,.app-shell .db-empty{padding:24px 12px}.app-shell .pr-wrap{padding:12px 12px 0}.app-shell .pr-table{min-width:0!important;width:100%;display:block;border:0;border-radius:0;background:transparent;overflow:visible}.app-shell .pr-table thead{display:none}.app-shell .pr-table tbody{display:grid;gap:10px}.app-shell .pr-table tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;background:var(--gn-elev-card);border:1px solid var(--gn-line-2);border-left:4px solid var(--gn-brand-500);border-radius:var(--gn-r-card);box-shadow:var(--gn-shadow-card);padding:10px}.app-shell .pr-table tbody tr:hover .pr-pack{background:transparent}.app-shell .pr-pack{grid-column:1 / -1;position:static;padding:0 0 6px;border:0;border-bottom:1px solid var(--gn-line-2);background:transparent}.app-shell .pr-td{display:block;min-width:0;padding:0;border:0}.app-shell .pr-td:before{content:attr(data-label);display:block;font-size:12px;color:var(--gn-n-600);line-height:1.3}.app-shell .pr-cell{min-height:52px;padding:5px 6px 5px 14px}.app-shell .pr-cell b{max-width:none;font-size:12px}.app-shell .pr-empty{display:block}.app-shell .dlg-mask,.app-shell .db-mask,.app-shell .pr-mask{align-items:flex-end;padding:0;z-index:70}.app-shell .dlg,.app-shell .db-modal,.app-shell .pr-dlg{width:100%!important;max-width:100%;max-height:88dvh;border-radius:var(--gn-r-card) var(--gn-r-card) 0 0;padding-bottom:calc(10px + env(safe-area-inset-bottom));box-shadow:0 -12px 40px #0b223d38}.app-shell .dlg--wide{width:100%!important}.app-shell .dlg-grid,.app-shell .db-form,.app-shell .pr-facts,.app-shell .dlg-ev,.app-shell .dlg-field--row{grid-template-columns:1fr}.app-shell .dlg-grid label.span2,.app-shell .db-form-wide{grid-column:auto}.app-shell .dlg-grid input,.app-shell .dlg-grid select,.app-shell .dlg-field input,.app-shell .dlg-field select,.app-shell .db-form input,.app-shell .db-form select{height:44px;font-size:16px}.app-shell .pr-row{flex-wrap:wrap}.app-shell .pr-row>span{width:100%}.app-shell .pr-row-in input,.app-shell .pr-row-in select{font-size:16px;min-height:44px}.app-shell .pr-row-in select{max-width:none}.app-shell .dlg-foot,.app-shell .db-modal-foot{position:sticky;bottom:0;z-index:2;background:#fff;padding:10px 0 calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 12px #ffffffe6}.app-shell .dlg-foot .btn,.app-shell .db-modal-foot .db-btn,.app-shell .pr-save,.app-shell .pr-x{min-height:44px}.app-shell .dlg-x,.app-shell .db-x{min-height:44px;min-width:44px}.app-shell .drawer,.app-shell .db-drawer{position:fixed;top:0;right:0;bottom:0;left:0;width:100%!important;max-width:100%;border:0;border-radius:0;box-shadow:none;z-index:75}.app-shell .toast,.app-shell .db-toast{bottom:calc(72px + env(safe-area-inset-bottom));z-index:80}.app-shell .vtab[data-tab=overview]{display:none}.app-shell .gn-brandbar__ov{display:inline-flex}.app-shell .ov-bar{gap:6px;padding:6px 8px}.app-shell .ov-title{flex:1 1 auto;min-width:0;font-size:14px;white-space:nowrap}.app-shell .ov-sub{order:10;flex:1 1 100%;min-width:0;font-size:12px;line-height:1.4}.app-shell .ov-spacer{display:none}.app-shell .ov-btn{flex:none;padding:0 10px}.app-shell .ov-who{display:none}.app-shell .ov-body{padding:12px 10px calc(72px + env(safe-area-inset-bottom))}.app-shell .ov-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-shell .ov-kpi{padding:10px 12px}.app-shell .ov-kpi__num{font-size:26px}.app-shell .ov-grid{grid-template-columns:minmax(0,1fr);gap:12px}.app-shell .ov-side{display:flex;flex-direction:column}.app-shell .ov-track{padding-left:18px}.app-shell .ov-track:before{left:5px}.app-shell .ov-node{left:-19px}.app-shell .ov-gate__dates{flex-direction:column;gap:2px}}@media (max-width: 374px){.app-shell .tb-sum{grid-template-columns:1fr}.app-shell .pr-table tbody tr{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (hover: none){.tb .tb-item:hover,.tb .tb-kpi:hover{transform:none;box-shadow:var(--gn-shadow-card)}}@media (prefers-reduced-motion: reduce){.app-shell .vtab,.app-shell .tb-item{transition:none}}
