.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.rp-page{display:grid;grid-template-columns:232px 1fr;min-height:calc(100vh - 65px)}.rp-rail{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:65px;height:calc(100vh - 65px);overflow-y:auto}.rp-rail-group{margin-top:10px}.rp-rail-group:first-child{margin-top:0}.rp-rail-group h5{margin:0 8px 6px;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-4);font-weight:800;display:flex;align-items:center;gap:6px}.rp-rail-group h5 svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}.rp-rail a,.rp-rail button.rp-rail-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:9px;color:var(--ink-2);text-decoration:none;font-size:13px;font-weight:500;cursor:pointer;border:0;background:transparent;width:100%;text-align:left;font-family:inherit;outline:0}.rp-rail a:hover,.rp-rail button.rp-rail-item:hover{background:var(--surface-2, #f8faff);color:var(--ink)}.rp-rail a.on,.rp-rail button.rp-rail-item.on{background:var(--brand-soft);color:var(--brand);font-weight:700}.rp-rail a .ic,.rp-rail button.rp-rail-item .ic{width:16px;height:16px;flex:0 0 auto;color:var(--ink-3);display:grid;place-items:center}.rp-rail a.on .ic,.rp-rail button.rp-rail-item.on .ic{color:var(--brand)}.rp-rail a .ic svg,.rp-rail button.rp-rail-item .ic svg{width:16px;height:16px;stroke:currentColor;stroke-width:1.8;fill:none;stroke-linecap:round;stroke-linejoin:round}.rp-rail-pinned{margin:6px 0 10px}.rp-rail-pinned .pin{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:9px;font-size:12.5px;color:var(--ink-3)}.rp-rail-pinned .pin .pstar{color:var(--amber-new, #f5a524)}.rp-rail-pinned .pin .pstar svg{width:12px;height:12px;fill:currentColor;stroke:none}.rp-main{padding:22px 28px 60px;max-width:1440px;width:100%;margin:0 auto}.rp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.rp-head-left{display:flex;align-items:flex-start;gap:12px;min-width:0}.rp-head-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;color:#fff;background:linear-gradient(135deg,var(--brand),var(--violet))}.rp-head-icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.rp-head-icon.mint{background:linear-gradient(135deg,var(--mint),var(--brand))}.rp-head-icon.coral{background:linear-gradient(135deg,var(--coral),var(--amber-new, #f5a524))}.rp-head-icon.amber{background:linear-gradient(135deg,var(--amber-new, #f5a524),var(--coral))}.rp-head-icon.violet{background:linear-gradient(135deg,var(--violet),var(--brand))}.rp-head-icon.navy{background:linear-gradient(135deg,var(--ink),var(--ink-2))}.rp-head h1{margin:0;font-size:24px;font-weight:800;letter-spacing:-.025em;display:flex;align-items:center;gap:10px;color:var(--ink)}.rp-head .rsub{color:var(--ink-3);margin-top:2px;font-size:13px}.rp-head-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rp-range{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:3px}.rp-range button{background:transparent;border:0;padding:6px 12px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-3);cursor:pointer;border-radius:7px}.rp-range button.on{background:var(--ink);color:#fff}.rp-range button:not(.on):hover{color:var(--ink)}.rp-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:10px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);text-decoration:none}.rp-btn:hover{background:var(--bg)}.rp-btn.brand{background:linear-gradient(135deg,var(--brand),var(--violet));border-color:transparent;color:#fff;box-shadow:0 4px 14px #3b5bff59}.rp-btn.ghost{background:transparent}.rp-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.rp-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;color:var(--ink-3);font-size:12.5px}.rp-meta .sep{opacity:.4}.rp-meta .cmp{display:inline-flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-weight:600;color:var(--ink-2)}.rp-meta .cmp .d{width:6px;height:6px;border-radius:50%;background:var(--ink-4)}.rp-kpis{display:grid;gap:12px;margin-bottom:14px}.rp-kpis.k3{grid-template-columns:repeat(3,1fr)}.rp-kpis.k4{grid-template-columns:repeat(4,1fr)}.rp-kpis.k5{grid-template-columns:repeat(5,1fr)}.rp-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg,16px);padding:16px;box-shadow:var(--shadow-card);position:relative;overflow:hidden;min-height:118px;display:flex;flex-direction:column;gap:6px;cursor:default;transition:transform .16s,box-shadow .16s,border-color .16s}.rp-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop);border-color:transparent}.rp-kpi-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:2px}.rp-kpi-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--ink-3)}.rp-kpi-ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}.rp-kpi-ic svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.rp-kpi.mint .rp-kpi-ic{background:#dcf7ef;color:#16a674}.rp-kpi.coral .rp-kpi-ic{background:#ffe4df;color:var(--coral)}.rp-kpi.amber .rp-kpi-ic{background:#fff1d6;color:#c47c0a}.rp-kpi.violet .rp-kpi-ic{background:#ede4ff;color:var(--violet)}.rp-kpi.navy .rp-kpi-ic{background:var(--ink);color:#fff}.rp-kpi-val{font-size:28px;font-weight:800;letter-spacing:-.025em;line-height:1.05;display:flex;align-items:baseline;gap:2px;color:var(--ink);font-variant-numeric:tabular-nums}.rp-kpi-val.money{color:#16a674}.rp-kpi-val.coral{color:var(--coral)}.rp-kpi-val.amber{color:#c47c0a}.rp-kpi-val.brand{color:var(--brand)}.rp-kpi-val.violet{color:var(--violet)}.rp-kpi-val .cur{font-size:16px;color:var(--ink-3);font-weight:700;margin-right:1px}.rp-kpi-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--ink-3);margin-top:auto;position:relative;z-index:2}.rp-kpi-foot>span:last-child{max-width:55%;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-delta{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:700}.rp-delta.up{background:#dcf7ef;color:#16a674}.rp-delta.dn{background:#ffe4df;color:var(--coral)}.rp-delta.flat{background:var(--line-2);color:var(--ink-3)}.rp-kpi .rp-spark{position:absolute;right:0;bottom:0;width:55%;height:46px;opacity:.35;pointer-events:none;z-index:1}.rp-chart{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg,16px);padding:18px 20px;box-shadow:var(--shadow-card);margin-bottom:14px}.rp-chart-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.rp-chart-title{font-size:15px;font-weight:700;letter-spacing:-.01em;margin:0;color:var(--ink)}.rp-chart-sub{font-size:12px;color:var(--ink-3);margin-top:2px}.rp-chart-legend{display:flex;gap:12px;align-items:center;font-size:12px;color:var(--ink-3)}.rp-chart-legend .lg{display:inline-flex;align-items:center;gap:6px;font-weight:600}.rp-chart-legend .lg .d{width:10px;height:10px;border-radius:3px}.rp-chart svg.chart{width:100%;aspect-ratio:900/260;height:auto;display:block;overflow:visible}.rp-chart-axis{fill:var(--ink-4);font-size:10.5px;font-weight:600}.rp-row-2{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-bottom:14px}.rp-row-2b{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.rp-aging{display:flex;flex-direction:column;gap:12px}.rp-age{display:grid;grid-template-columns:90px 1fr 50px 90px;gap:12px;align-items:center}.rp-age .lbl{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px;color:var(--ink)}.rp-age .lbl .d{width:8px;height:8px;border-radius:3px}.rp-age .track{height:10px;background:var(--line-2);border-radius:99px;overflow:hidden}.rp-age .track>div{height:100%;border-radius:99px}.rp-age .ct{font-size:12px;color:var(--ink-3);text-align:right;font-variant-numeric:tabular-nums}.rp-age .am{font-weight:700;font-size:13.5px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.rp-donut{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center}.rp-donut-wrap{position:relative;width:160px;height:160px}.rp-donut-wrap svg{width:100%;height:100%;transform:rotate(-90deg)}.rp-donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center}.rp-donut-center .n{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--ink)}.rp-donut-center .l{font-size:11px;color:var(--ink-3);font-weight:600;margin-top:3px}.rp-breakdown{display:flex;flex-direction:column;gap:4px}.rp-br{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;padding:6px 0;font-size:13px;border-bottom:1px dashed var(--line-2)}.rp-br:last-child{border-bottom:0}.rp-br .dot{width:10px;height:10px;border-radius:3px}.rp-br .nm{font-weight:600;color:var(--ink)}.rp-br .ct{font-size:11px;color:var(--ink-3);margin-left:6px;font-variant-numeric:tabular-nums}.rp-br .am{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.rp-staff{display:flex;flex-direction:column;gap:10px}.rp-staff .row{display:grid;grid-template-columns:140px 1fr 90px;gap:12px;align-items:center}.rp-staff .row .nm{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rp-staff .row .av{width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff;display:grid;place-items:center;font-weight:700;font-size:10.5px;flex:0 0 auto}.rp-staff .row .track{height:18px;background:var(--line-2);border-radius:6px;overflow:hidden}.rp-staff .row .track>div{height:100%;background:linear-gradient(90deg,var(--brand),var(--violet));border-radius:6px}.rp-staff .row .am{text-align:right;font-weight:700;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}.rp-top{display:flex;flex-direction:column;gap:10px}.rp-top .row{display:grid;grid-template-columns:180px 1fr 80px;gap:12px;align-items:center;font-size:13px}.rp-top .row .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}.rp-top .row .track{height:14px;background:var(--line-2);border-radius:6px;overflow:hidden}.rp-top .row .track>div{height:100%;background:var(--brand);border-radius:6px}.rp-top .row .am{text-align:right;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.rp-funnel{display:flex;flex-direction:column;gap:10px}.rp-funnel .row{display:grid;grid-template-columns:130px 1fr 70px;gap:12px;align-items:center}.rp-funnel .row .nm{font-weight:600;font-size:13px;color:var(--ink)}.rp-funnel .row .bar{height:34px;background:var(--line-2);border-radius:8px;position:relative;overflow:hidden}.rp-funnel .row .bar>div{height:100%;border-radius:8px;display:flex;align-items:center;padding-left:12px;color:#fff;font-weight:700;font-size:13px}.rp-funnel .row .conv{font-size:12px;color:var(--ink-3);font-weight:600;text-align:right}.rp-heatmap{display:grid;grid-template-columns:40px repeat(24,1fr);gap:2px;font-size:10px}.rp-heatmap .hh{color:var(--ink-4);text-align:center;font-weight:600}.rp-heatmap .dd{color:var(--ink-3);font-size:10.5px;font-weight:700;padding-right:6px;text-align:right}.rp-heatmap .cell{aspect-ratio:1;border-radius:3px;background:var(--line-2)}.rp-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg,16px);box-shadow:var(--shadow-card)}.rp-panel-head{border-top-left-radius:var(--r-lg,16px);border-top-right-radius:var(--r-lg,16px)}.rp-tfoot{border-bottom-left-radius:var(--r-lg,16px);border-bottom-right-radius:var(--r-lg,16px)}.rp-tools{position:relative;z-index:1}.rp-panel-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}.rp-tabs{display:flex;gap:2px;flex:1;flex-wrap:wrap}.rp-tabs .tab{padding:8px 14px;border-radius:9px;color:var(--ink-3);font-weight:600;font-size:13px;cursor:pointer;border:1px solid transparent;background:transparent;font-family:inherit}.rp-tabs .tab:hover:not(.on){background:var(--surface-2,#f8faff);color:var(--ink-2)}.rp-tabs .tab.on{background:var(--brand-soft);color:var(--brand)}.rp-tabs .tab .ct{font-size:11px;background:var(--surface);padding:1px 7px;border-radius:99px;margin-left:6px;font-weight:700;border:1px solid var(--line)}.rp-tabs .tab.on .ct{background:var(--brand);color:#fff;border-color:transparent}.rp-tools{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface-2,#f8faff);flex-wrap:wrap}.rp-search{flex:1;min-width:220px;max-width:380px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:7px 11px}.rp-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.rp-search svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;color:var(--ink-3)}.rp-search input{border:0;background:transparent;outline:0;flex:1;font:inherit;color:var(--ink)}.rp-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:99px;border:1px solid var(--line);background:var(--surface);font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;font-family:inherit}.rp-chip:hover{border-color:var(--brand);color:var(--brand)}.rp-chip.on{background:var(--brand-soft);border-color:var(--brand-soft);color:var(--brand)}.rp-chip.dash{border-style:dashed}.rp-tbl-wrap{overflow-x:auto}.rp-tbl{width:100%;border-collapse:collapse;font-size:13px}.rp-tbl thead th{padding:11px 16px;text-align:left;font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3);font-weight:800;background:var(--surface-2,#f8faff);border-bottom:1px solid var(--line);white-space:nowrap}.rp-tbl thead th.num{text-align:right}.rp-tbl tbody tr{border-bottom:1px solid var(--line-2);transition:background .1s}.rp-tbl tbody tr:hover{background:var(--surface-2,#f8faff)}.rp-tbl tbody td{padding:12px 16px;vertical-align:middle;color:var(--ink)}.rp-tbl tbody td.num{text-align:right;font-variant-numeric:tabular-nums}.rp-tbl tbody td.muted{color:var(--ink-3)}.rp-id{color:var(--brand);font-weight:700}.rp-amt{font-weight:700}.rp-amt.paid{color:#16a674}.rp-amt.out{color:var(--coral)}.rp-amt.zero{color:var(--ink-4)}.rp-status{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700}.rp-status .d{width:6px;height:6px;border-radius:50%}.rp-status.paid{background:#dcf7ef;color:#16a674}.rp-status.paid .d{background:#16a674}.rp-status.draft{background:var(--line-2);color:var(--ink-3)}.rp-status.draft .d{background:var(--ink-4)}.rp-status.sent{background:var(--brand-soft);color:var(--brand)}.rp-status.sent .d{background:var(--brand)}.rp-status.overdue{background:#ffe4df;color:var(--coral)}.rp-status.overdue .d{background:var(--coral)}.rp-status.partial{background:#fff1d6;color:#c47c0a}.rp-status.partial .d{background:var(--amber-new,#f5a524)}.rp-status.active{background:#dcf7ef;color:#16a674}.rp-status.active .d{background:#16a674}.rp-status.won{background:#dcf7ef;color:#16a674}.rp-status.won .d{background:#16a674}.rp-status.lost{background:#ffe4df;color:var(--coral)}.rp-status.lost .d{background:var(--coral)}.rp-status.pending{background:#fff1d6;color:#c47c0a}.rp-status.pending .d{background:var(--amber-new,#f5a524)}.rp-status.settled{background:#dcf7ef;color:#16a674}.rp-status.settled .d{background:#16a674}.rp-status.owe{background:#fff1d6;color:#c47c0a}.rp-status.owe .d{background:var(--amber-new,#f5a524)}.rp-status.advance{background:#ffe4df;color:var(--coral)}.rp-status.advance .d{background:var(--coral)}.rp-status.in_progress{background:var(--brand-soft);color:var(--brand)}.rp-status.in_progress .d{background:var(--brand)}.rp-status.completed,.rp-status.invoiced{background:#dcf7ef;color:#16a674}.rp-status.completed .d,.rp-status.invoiced .d{background:#16a674}.rp-status.scheduled,.rp-status.new{background:#fff1d6;color:#c47c0a}.rp-status.scheduled .d,.rp-status.new .d{background:var(--amber-new,#f5a524)}.rp-cust{display:flex;align-items:center;gap:10px}.rp-av{width:28px;height:28px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-weight:700;font-size:11px;flex:0 0 auto}.rp-av.v1{background:linear-gradient(135deg,var(--coral),var(--amber-new,#f5a524));color:#fff}.rp-av.v2{background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff}.rp-av.v3{background:linear-gradient(135deg,var(--mint),var(--brand));color:#fff}.rp-av.v4{background:linear-gradient(135deg,var(--violet),var(--coral));color:#fff}.rp-av.v5{background:linear-gradient(135deg,var(--amber-new,#f5a524),var(--mint));color:#fff}.rp-tfoot{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line);color:var(--ink-3);font-size:12.5px;background:var(--surface-2,#f8faff)}.rp-tfoot .right{margin-left:auto;display:flex;gap:4px}.rp-pbtn{width:28px;height:28px;border-radius:7px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;display:grid;place-items:center;font:inherit;font-size:12px;font-weight:600}.rp-pbtn:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.rp-pbtn:disabled{opacity:.4;cursor:not-allowed}.rp-pbtn.on{background:var(--brand);color:#fff;border-color:var(--brand)}.rp-pbtn svg{width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2}.rp-empty{text-align:center;padding:48px 20px;color:var(--ink-3)}.rp-empty h3{margin:0 0 6px;font-size:15px;color:var(--ink);font-weight:700}.rp-empty p{margin:0;font-size:13px}.rp-modal-bk{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f173073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;z-index:100;align-items:center;justify-content:center}.rp-modal{background:var(--surface);border-radius:16px;box-shadow:0 24px 60px #0f173040;width:480px;max-width:92vw;max-height:92vh;overflow:auto;animation:rpMIn .18s ease}@keyframes rpMIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.rp-mhead{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 22px 6px;gap:12px}.rp-mhead h3{margin:0;font-size:17px;font-weight:800;letter-spacing:-.015em;line-height:1.25;color:var(--ink)}.rp-msub{font-size:12.5px;color:var(--ink-3);margin-top:5px;line-height:1.3}.rp-mbody{padding:14px 22px 4px}.rp-mfoot{display:flex;justify-content:flex-end;gap:8px;padding:14px 22px 18px;border-top:1px solid var(--line-2);margin-top:12px}.rp-mxbtn{width:32px;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;display:grid;place-items:center;padding:0}.rp-mxbtn:hover{background:var(--bg)}.rp-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(135deg,#fff1d6,#ffe4df);border:1px solid #fff1d6;border-radius:12px;padding:14px 16px;margin-bottom:14px}.rp-banner.co{background:linear-gradient(135deg,var(--brand-soft),#ede4ff);border-color:var(--brand-soft)}.rp-banner.zero{background:#dcf7ef;border-color:#dcf7ef}.rp-bb-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--ink-3)}.rp-bb-amt{font-size:24px;font-weight:800;letter-spacing:-.02em;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}.rp-bb-arrow{font-size:13px;font-weight:700;color:var(--ink-2);background:var(--surface);padding:6px 12px;border-radius:8px;border:1px solid var(--line)}.rp-frow{display:grid;grid-template-columns:100px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--line-2)}.rp-frow:first-of-type{border-top:0}.rp-frow label{font-size:12.5px;font-weight:600;color:var(--ink-2)}.rp-frow input,.rp-frow select{font:inherit;font-size:13px;padding:8px 11px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink);outline:0;width:100%}.rp-frow input:focus,.rp-frow select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.rp-seg{display:flex;background:var(--bg);border-radius:9px;padding:3px;gap:2px}.rp-seg button{background:transparent;border:0;padding:7px 12px;font:inherit;font-size:12.5px;font-weight:600;color:var(--ink-3);border-radius:7px;cursor:pointer;flex:1;font-family:inherit}.rp-seg button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0f173014}.rp-money{position:relative;width:100%}.rp-money span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-weight:700;font-size:13px;pointer-events:none}.rp-money input{padding-left:26px;font-weight:700;font-variant-numeric:tabular-nums}.rp-link{background:transparent;border:0;color:var(--brand);font:inherit;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;padding:0;font-family:inherit}.rp-pc{background:var(--surface-2,#f8faff);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:10px}.rp-pc-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--ink-3);margin-bottom:8px}.rp-pc-row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px;color:var(--ink-3)}.rp-pc-row strong{color:var(--ink);font-variant-numeric:tabular-nums}.rp-pc-row.result{border-top:1px dashed var(--line);margin-top:4px;padding-top:8px;color:var(--ink)}.rp-pc-row.result strong{color:#16a674;font-size:15px}.rp-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-pop);padding:10px;min-width:240px;max-height:360px;overflow-y:auto;animation:rpPop .14s ease}@keyframes rpPop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.rp-popover-head{font-size:11px;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--ink-3);padding:4px 6px 8px;border-bottom:1px solid var(--line-2);margin-bottom:6px}.rp-popover-section{padding:4px 0}.rp-popover-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--ink-4);padding:6px 6px 4px}.rp-popover-row{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;cursor:pointer;font-size:13px;color:var(--ink-2);font-weight:500}.rp-popover-row:hover{background:var(--surface-2,#f8faff);color:var(--ink)}.rp-popover-row input{margin:0;cursor:pointer;accent-color:var(--brand)}.rp-popover-clear{background:transparent;border:0;color:var(--brand);font:inherit;font-size:12px;font-weight:600;cursor:pointer;padding:6px 8px;border-radius:7px;font-family:inherit}.rp-popover-clear:hover{background:var(--brand-soft)}.rp-popover-empty{padding:14px 6px;font-size:12.5px;color:var(--ink-3);text-align:center}.rp-tbl tbody tr[style*=pointer]:hover{background:var(--brand-soft)}.rp-tooltip{position:absolute;top:8px;transform:translate(-50%);background:var(--ink);color:#fff;padding:8px 12px;border-radius:8px;font-size:12px;font-weight:600;pointer-events:none;white-space:nowrap;box-shadow:0 6px 20px #0f173040;z-index:5;min-width:140px}.rp-tooltip:before{content:"";position:absolute;bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg);width:10px;height:10px;background:var(--ink)}.rp-tt-date{font-size:11px;font-weight:700;color:#cfd6ee;margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.rp-tt-row{display:flex;align-items:center;gap:8px;margin-top:3px;font-weight:500;color:#e5e9f5}.rp-tt-row .d{width:8px;height:8px;border-radius:2px}.rp-tt-row strong{margin-left:auto;color:#fff;font-variant-numeric:tabular-nums}.rp-spinner{display:inline-block;width:13px;height:13px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:rpSpin .7s linear infinite;flex:0 0 auto;margin-right:2px}@keyframes rpSpin{to{transform:rotate(360deg)}}.rp-btn:disabled{opacity:.7;cursor:wait}@media print{.jd-side,.jd-topbar{display:none!important}.jd-app{display:block!important;grid-template-columns:none!important}.jd-main{display:block!important}.jd-content{padding:0!important;gap:0!important}.rp-rail,.rp-head-right,.rp-meta,.rp-panel-head,.rp-tools,.rp-tfoot,.rp-modal-bk,.rp-toast,.rp-spark{display:none!important}.rp-page{display:block!important;grid-template-columns:none!important}.rp-main{padding:18px!important;max-width:none!important;margin:0!important}.rp-head{border-bottom:1px solid #ccc;padding-bottom:12px;margin-bottom:16px}.rp-chart,.rp-kpi{box-shadow:none!important;border:1px solid #ddd!important;page-break-inside:avoid}.rp-tbl-wrap{overflow:visible!important}.rp-tbl{border:1px solid #ddd!important}.rp-tbl thead th{background:#f5f5f5!important}.rp-panel{box-shadow:none!important;border:1px solid #ddd!important;page-break-inside:auto}.rp-tbl tbody tr{page-break-inside:avoid}body{background:#fff!important}@page{size:landscape;margin:12mm}}.rp-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:11px 18px;border-radius:10px;font-size:13px;font-weight:600;box-shadow:0 8px 24px #0f173040;z-index:200;display:flex;align-items:center;gap:8px;animation:rpToast .2s ease}@keyframes rpToast{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.rp-toast svg{width:16px;height:16px;color:var(--mint);stroke:currentColor;fill:none;stroke-width:2.5}.rp-skel{background:linear-gradient(90deg,var(--line-2),var(--bg),var(--line-2));background-size:200% 100%;animation:rpSkel 1.2s infinite;border-radius:8px}@keyframes rpSkel{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 900px){.rp-page{grid-template-columns:1fr}.rp-rail{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}.rp-kpis.k5,.rp-kpis.k4,.rp-kpis.k3{grid-template-columns:repeat(2,1fr)}.rp-row-2,.rp-row-2b{grid-template-columns:1fr}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--bg: #f4f6fb;--surface: #ffffff;--surface-2: #f8faff;--ink: #0f1730;--ink-2: #2b3559;--ink-3: #5b6788;--ink-4: #97a0bd;--line: #e6eaf4;--line-2: #eef1f8;--side: #111b3a;--side-2: #0b1430;--side-ink: #c7cde3;--side-ink-2: #7f88a8;--side-accent: #ffffff;--brand: #3b5bff;--brand-2: #7a8dff;--brand-soft: #e6ecff;--mint: #22c9a2;--mint-soft: #dcf7ef;--coral: #ff6a5b;--coral-soft: #ffe4df;--amber-new: #f5a524;--amber-soft: #fff1d6;--violet: #8b5cf6;--violet-soft: #ede4ff;--good: #16a674;--bad: #ef4444;--warn: #f59e0b;--r-sm: 8px;--r-md: 14px;--r-lg: 20px;--r-xl: 28px;--shadow-card: 0 1px 0 rgba(15,23,48,.02), 0 1px 2px rgba(15,23,48,.04);--shadow-pop: 0 8px 24px rgba(15,23,48,.08);--sidebar-bg: #1a3a6b;--sidebar-text: rgba(255,255,255,.65);--sidebar-text-active: #ffffff;--sidebar-active-bg: rgba(255,255,255,.15);--sidebar-logo: #ffffff;--sidebar-border: rgba(255,255,255,.08);--page-bg: #f0f4ff;--card-bg: #ffffff;--card-border: #e2e8f0;--text-primary: #1a3a6b;--text-secondary: #64748b;--text-muted: #94a3b8;--accent: #1a3a6b;--accent-light: #E6F1FB;--green: #0F6E56;--green-bg: #E1F5EE;--blue: #185FA5;--blue-bg: #E6F1FB;--purple: #534AB7;--purple-bg: #EEEDFE;--amber: #854F0B;--amber-bg: #FAEEDA;--red: #A32D2D;--red-bg: #FCEBEB;--border-radius: 10px;--border-radius-sm: 6px;--topbar-height: 56px;--sidebar-width: 220px}body[data-theme=ocean]{--brand: #3b5bff;--brand-2: #7a8dff;--brand-soft: #e6ecff;--violet: #8b5cf6;--violet-soft: #ede4ff}body[data-theme=sunset]{--brand: #ff6a5b;--brand-2: #ff9a8f;--brand-soft: #ffe4df;--violet: #f5a524;--violet-soft: #fff1d6;--coral: #ff3366;--coral-soft: #ffd6e1}body[data-theme=forest]{--brand: #16a674;--brand-2: #4dd4a4;--brand-soft: #dcf7ef;--violet: #3b5bff;--violet-soft: #e6ecff;--mint: #22c9a2}body[data-theme=mono]{--brand: #0f1730;--brand-2: #2b3559;--brand-soft: #eef1f8;--violet: #5b6788;--violet-soft: #eef1f8;--mint: #16a674}body[data-mode=dark]{--bg: #0b1023;--surface: #121932;--surface-2: #0e1529;--ink: #e9edfb;--ink-2: #c6cbe4;--ink-3: #8a92b5;--ink-4: #5b6388;--line: #1e2546;--line-2: #182047;--shadow-card: 0 1px 2px rgba(0,0,0,.2);--shadow-pop: 0 10px 30px rgba(0,0,0,.4);--brand-soft: rgba(59,91,255,.18);--mint-soft: rgba(34,201,162,.16);--coral-soft: rgba(255,106,91,.18);--amber-soft: rgba(245,165,36,.18);--violet-soft: rgba(139,92,246,.2);--side: #070b1c}body[data-radius=sharp]{--r-sm: 4px;--r-md: 6px;--r-lg: 8px;--r-xl: 10px}body[data-radius=round]{--r-sm: 12px;--r-md: 18px;--r-lg: 24px;--r-xl: 32px}.tab-nums,.mono{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}body.dark{--sidebar-bg: #0f1117;--sidebar-text: rgba(255,255,255,.5);--sidebar-text-active: #ffffff;--sidebar-active-bg: rgba(255,255,255,.1);--sidebar-logo: #ffffff;--sidebar-border: rgba(255,255,255,.06);--page-bg: #13141a;--card-bg: #1e1f2a;--card-border: #2a2b38;--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #64748b;--accent: #7F77DD;--accent-light: #2a2045;--green: #1D9E75;--green-bg: #0a2a1f;--blue: #378ADD;--blue-bg: #0c2040;--purple: #AFA9EC;--purple-bg: #2a2045;--amber: #EF9F27;--amber-bg: #2a1f0a;--red: #E24B4A;--red-bg: #2a0f0f}body{font-family:var(--font);background:var(--page-bg);color:var(--text-primary);font-size:16px;transition:background .2s,color .2s}.app-shell{display:flex;height:100vh;overflow:hidden}.sidebar{display:flex;flex-direction:column;flex-shrink:0}.sidebar-logo{display:flex;align-items:center}.sidebar-nav{flex:1;display:flex;flex-direction:column}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--border-radius-sm);color:var(--sidebar-text);font-size:15px;font-weight:400;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.nav-item:hover{background:var(--sidebar-active-bg);color:var(--sidebar-text-active)}.nav-item.active{background:var(--sidebar-active-bg);color:var(--sidebar-text-active);font-weight:600}.nav-icon{font-size:18px;width:20px;text-align:center}.sidebar-bottom{padding:12px 10px;border-top:1px solid var(--sidebar-border)}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.topbar{height:var(--topbar-height);background:var(--card-bg);border-bottom:1px solid var(--card-border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;flex-shrink:0}.topbar-title{font-size:18px;font-weight:600;color:var(--text-primary)}.topbar-right{display:flex;align-items:center;gap:12px}.page-content{flex:1;overflow-y:auto;padding:24px}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--border-radius);padding:20px;transition:background .2s,border-color .2s}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-title{font-size:16px;font-weight:600;color:var(--text-primary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--border-radius);padding:16px 20px}.stat-label{font-size:13px;color:var(--text-secondary);margin-bottom:6px;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.stat-value{font-size:28px;font-weight:600;color:var(--text-primary)}.stat-value.green{color:var(--green)}.stat-value.blue{color:var(--blue)}.stat-sub{font-size:13px;color:var(--text-muted);margin-top:4px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--border-radius-sm);font-size:15px;font-weight:500;cursor:pointer;border:none;transition:opacity .15s,transform .1s;font-family:var(--font)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{opacity:.9}.btn-secondary{background:var(--card-bg);color:var(--text-primary);border:1px solid var(--card-border)}.btn-secondary:hover{background:var(--page-bg)}.btn-sm{padding:5px 12px;font-size:14px}.btn-danger{background:var(--red-bg);color:var(--red)}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:500}.badge-new{background:var(--green-bg);color:var(--green)}.badge-scheduled{background:var(--purple-bg);color:var(--purple)}.badge-en_route{background:var(--blue-bg);color:var(--blue)}.badge-in_progress{background:var(--amber-bg);color:var(--amber)}.badge-completed{background:var(--green-bg);color:var(--green)}.badge-cancelled{background:var(--red-bg);color:var(--red)}.badge-invoiced{background:var(--blue-bg);color:var(--blue)}.badge-paid{background:var(--green-bg);color:var(--green)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:15px}th{text-align:left;padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;border-bottom:none;background:#1e293b;color:#fff}td{padding:11px 14px;border-bottom:1px solid var(--card-border);color:var(--text-primary)}tr:last-child td{border-bottom:none}tr:hover td{background:#f8fafc}tbody tr{cursor:pointer}.form-group{margin-bottom:16px}.form-label{display:block;font-size:14px;font-weight:500;color:var(--text-secondary);margin-bottom:6px}.form-input{width:100%;padding:9px 12px;border:1px solid var(--card-border);border-radius:var(--border-radius-sm);font-size:15px;font-family:var(--font);background:var(--card-bg);color:var(--text-primary);transition:border-color .15s;outline:none}.form-input:focus{border-color:var(--blue)}.form-select{width:100%;padding:9px 12px;border:1px solid var(--card-border);border-radius:var(--border-radius-sm);font-size:15px;font-family:var(--font);background:var(--card-bg);color:var(--text-primary);outline:none;cursor:pointer}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal{background:var(--card-bg);border-radius:var(--border-radius);padding:24px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-title{font-size:17px;font-weight:600}.modal-close{background:none;border:none;font-size:22px;cursor:pointer;color:var(--text-muted);padding:4px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.dark-toggle{background:var(--sidebar-active-bg);border:1px solid var(--sidebar-border);color:var(--sidebar-text-active);padding:6px 12px;border-radius:var(--border-radius-sm);cursor:pointer;font-size:14px;font-family:var(--font);display:flex;align-items:center;gap:6px}.empty-state{text-align:center;padding:48px 20px;color:var(--text-muted)}.empty-state-icon{font-size:42px;margin-bottom:12px}.empty-state-text{font-size:15px}.loading{text-align:center;padding:40px;color:var(--text-muted);font-size:15px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}@media (max-width: 768px){.two-col,.three-col,.form-row,.form-row-3{grid-template-columns:1fr}:root{--sidebar-width: 200px}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.jd-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px;box-shadow:var(--shadow-card);color:var(--ink);font-family:var(--font)}.jd-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.jd-card-title{font-size:16px;font-weight:700;letter-spacing:-.015em;margin:0;display:flex;align-items:center;gap:8px;color:var(--ink);line-height:1.3}.jd-card-sub{font-size:12.5px;color:var(--ink-3);margin-top:2px}.jd-card-action{display:flex;gap:6px;align-items:center;flex-shrink:0}.jd-pill-tabs{display:flex;background:var(--bg);border-radius:10px;padding:3px;gap:2px}.jd-pill-tabs button{background:transparent;border:0;padding:5px 11px;font:inherit;font-family:var(--font);font-size:12px;font-weight:600;color:var(--ink-3);border-radius:7px;cursor:pointer;transition:background .12s,color .12s}.jd-pill-tabs button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0f17300f}.jd-pill-tabs button:not(.on):hover{color:var(--ink-2)}.jd-ghost-btn{background:transparent;border:0;color:var(--ink-3);font:inherit;font-family:var(--font);font-size:12.5px;font-weight:600;cursor:pointer;padding:6px 10px;border-radius:8px;display:inline-flex;align-items:center;gap:4px;transition:background .12s,color .12s}.jd-ghost-btn:hover{background:var(--bg);color:var(--ink)}.jd-icon-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;cursor:pointer;position:relative;color:var(--ink-2);padding:0;transition:background .12s,border-color .12s}.jd-icon-btn:hover{background:var(--bg)}.jd-icon-btn-badge{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--coral);border:2px solid var(--surface)}.jd-delta{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:600;font-family:var(--font)}.jd-delta.up{background:var(--mint-soft);color:var(--good)}.jd-delta.dn{background:var(--coral-soft);color:var(--coral)}.jd-delta.flat{background:var(--line-2);color:var(--ink-3)}.jd-tag{font-size:10.5px;font-weight:700;padding:4px 9px;border-radius:99px;letter-spacing:.02em;text-transform:uppercase;display:inline-flex;align-items:center;font-family:var(--font);line-height:1}.jd-tag.paid{background:var(--mint-soft);color:var(--good)}.jd-tag.quote{background:var(--violet-soft);color:var(--violet)}.jd-tag.unpaid{background:var(--amber-soft);color:#c47c0a}.jd-tag.onsite{background:var(--brand-soft);color:var(--brand)}.jd-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:700;letter-spacing:.01em}.jd-chip-mint{background:var(--mint-soft);color:var(--good)}.jd-chip-coral{background:var(--coral-soft);color:var(--coral)}.jd-chip-amber{background:var(--amber-soft);color:#c47c0a}.jd-chip-violet{background:var(--violet-soft);color:var(--violet)}.jd-chip-brand{background:var(--brand-soft);color:var(--brand)}.jd-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.jd-grid>.jd-card{display:flex;flex-direction:column}@media (max-width: 1100px){.jd-grid>[style*=grid-column]{grid-column:span 12!important}}.jd-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px 20px;position:relative;overflow:hidden;cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s;box-shadow:var(--shadow-card);font-family:var(--font);color:var(--ink)}.jd-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop);border-color:transparent}.jd-kpi .k-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.jd-kpi .k-lbl{font-size:12px;font-weight:600;color:var(--ink-3);letter-spacing:-.005em}.jd-kpi .k-icon{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand)}.jd-kpi.c-mint .k-icon{background:var(--mint-soft);color:var(--good)}.jd-kpi.c-coral .k-icon{background:var(--coral-soft);color:var(--coral)}.jd-kpi.c-amber .k-icon{background:var(--amber-soft);color:#c47c0a}.jd-kpi.c-violet .k-icon{background:var(--violet-soft);color:var(--violet)}.jd-kpi .k-val{font-size:30px;font-weight:700;letter-spacing:-.03em;line-height:1.05;display:flex;align-items:baseline;gap:4px;color:var(--ink);font-variant-numeric:tabular-nums}.jd-kpi .k-val .cur{font-size:18px;font-weight:600;color:var(--ink-3);letter-spacing:-.01em}.jd-kpi .k-val .dec{font-size:18px;color:var(--ink-4);font-weight:600}.jd-kpi .k-foot{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;color:var(--ink-3)}.jd-kpi .k-body{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.jd-kpi .spark{position:absolute;right:14px;bottom:12px;width:86px;height:28px;opacity:.9}.jd-forecast-headline{display:flex;gap:24px;align-items:flex-start;justify-content:space-between;margin-bottom:6px}.jd-forecast .big{display:flex;flex-direction:column}.jd-forecast .big .label{font-size:12px;color:var(--ink-3);font-weight:600}.jd-forecast .big .val{font-size:42px;font-weight:800;letter-spacing:-.035em;margin-top:4px;line-height:1;color:var(--ink)}.jd-forecast .big .val .cur{font-size:22px;color:var(--ink-3);font-weight:700;margin-right:2px}.jd-forecast .big .sub{color:var(--ink-3);font-size:13px;margin-top:8px;max-width:46ch}.jd-f-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.jd-fseg{background:var(--surface-2);border:1px solid var(--line-2);border-radius:14px;padding:14px 16px;position:relative;overflow:hidden;transition:all .16s;cursor:pointer}.jd-fseg:hover{border-color:var(--line);transform:translateY(-1px)}.jd-fseg .dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:8px}.jd-fseg .flbl{font-size:12px;color:var(--ink-3);font-weight:600}.jd-fseg .fval{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:6px;color:var(--ink);font-variant-numeric:tabular-nums}.jd-fseg .fmeta{font-size:11.5px;color:var(--ink-3);margin-top:4px}.jd-fseg.pipeline{background:linear-gradient(180deg,var(--brand-soft) 0%,rgba(230,236,255,0) 100%)}.jd-fseg.estimates{background:linear-gradient(180deg,var(--violet-soft) 0%,rgba(237,228,255,0) 100%)}.jd-fseg.outstanding{background:linear-gradient(180deg,var(--amber-soft) 0%,rgba(255,241,214,0) 100%)}.jd-f-chart{margin-top:16px;position:relative;min-height:150px}.jd-ribbon{background:linear-gradient(135deg,#0f1730,#1e2e66);color:#fff;border-radius:16px;padding:16px 18px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px;position:relative;overflow:hidden}.jd-ribbon:after{content:"";position:absolute;right:-30px;top:-30px;width:140px;height:140px;background:radial-gradient(circle at 30% 30%,rgba(122,141,255,.35),transparent 60%);pointer-events:none}.jd-ribbon .r-top{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:#aab3d6;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.jd-ribbon .big{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1}.jd-ribbon .small{font-size:13px;color:#b6bddb}.jd-ribbon .mono{font-family:var(--font-mono)}.jd-ribbon .bar{display:flex;height:6px;border-radius:99px;overflow:hidden;gap:3px;margin-top:2px}.jd-ribbon .bar>div{background:#ffffff2e;flex:1;border-radius:99px}.jd-ribbon .bar>div.done{background:var(--mint)}.jd-ribbon .bar>div.now{background:var(--brand-2);box-shadow:0 0 0 3px #7a8dff40}.jd-sched{display:flex;flex-direction:column;gap:6px}.jd-job{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:10px;border-radius:12px;cursor:pointer;transition:background .12s}.jd-job:hover{background:var(--bg)}.jd-job .time{font-weight:700;font-size:13px;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.jd-job .time .dur{display:block;font-weight:500;font-size:10.5px;color:var(--ink-4);margin-top:2px;font-family:var(--font-mono)}.jd-job .body .t1{font-size:13.5px;font-weight:600;color:var(--ink)}.jd-job .body .t2{font-size:12px;color:var(--ink-3);margin-top:2px;display:flex;align-items:center;gap:6px}.jd-job .body .t2 .mini-av{width:16px;height:16px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:9px;font-weight:700}.jd-jobs-split{display:grid;grid-template-columns:170px 1fr;gap:16px;align-items:center}.jd-donut-wrap{position:relative;width:170px;height:170px}.jd-donut-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center}.jd-donut-center .n{font-size:28px;font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--ink)}.jd-donut-center .l{font-size:11px;color:var(--ink-3);font-weight:600;margin-top:3px}.jd-breakdown{display:flex;flex-direction:column;gap:8px}.jd-br{display:grid;grid-template-columns:10px 1fr auto;gap:10px;align-items:center;padding:6px 0;font-size:13px;color:var(--ink)}.jd-br .dot{width:10px;height:10px;border-radius:3px}.jd-br .nm{font-weight:500}.jd-br .nm .ct{font-size:11px;color:var(--ink-3);margin-left:6px;font-family:var(--font-mono)}.jd-br .am{font-weight:700;font-size:13px;letter-spacing:-.01em}.jd-staff{display:flex;flex-direction:column;gap:4px}.jd-staff-row{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;padding:10px;border-radius:12px;cursor:pointer}.jd-staff-row:hover{background:var(--bg)}.jd-staff-row .av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:12px;letter-spacing:-.01em;position:relative}.jd-staff-row .av.a{background:linear-gradient(135deg,#ff6a5b,#f5a524)}.jd-staff-row .av.b{background:linear-gradient(135deg,#3b5bff,#8b5cf6)}.jd-staff-row .av.c{background:linear-gradient(135deg,#22c9a2,#3b5bff)}.jd-staff-row .av.d{background:linear-gradient(135deg,#8b5cf6,#ff6a5b)}.jd-staff-row .av.e{background:linear-gradient(135deg,#f5a524,#22c9a2)}.jd-staff-row .av:after{content:"";position:absolute;right:-2px;bottom:-2px;width:9px;height:9px;background:var(--good);border:2px solid var(--surface);border-radius:50%}.jd-staff-row .av.off:after{background:var(--ink-4)}.jd-staff-row .nm{font-size:13.5px;font-weight:600;color:var(--ink)}.jd-staff-row .rl{font-size:11.5px;color:var(--ink-3);margin-top:2px}.jd-staff-row .r{text-align:right}.jd-staff-row .r .am{font-size:14px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink)}.jd-staff-row .r .jb{font-size:11px;color:var(--ink-3);font-family:var(--font-mono);margin-top:2px}.jd-aging{display:flex;flex-direction:column;gap:12px;flex:1;justify-content:space-evenly;padding-top:6px;padding-bottom:6px}.jd-age{display:grid;grid-template-columns:minmax(100px,110px) 1fr 36px 70px;gap:10px;align-items:center}.jd-age .lbl{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:8px;color:var(--ink)}.jd-age .lbl .d{width:8px;height:8px;border-radius:3px}.jd-age .track{height:10px;background:var(--line-2);border-radius:99px;overflow:hidden;position:relative}.jd-age .track>div{height:100%;border-radius:99px;transition:width .3s}.jd-age .ct{font-family:var(--font-mono);font-size:12px;color:var(--ink-3);text-align:right}.jd-age .am{font-weight:700;font-size:13.5px;text-align:right;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink)}.jd-attn{display:flex;flex-direction:column;gap:8px}.jd-att{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;padding:11px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line-2)}.jd-att .ai{width:30px;height:30px;border-radius:9px;display:grid;place-items:center}.jd-att.r .ai{background:var(--coral-soft);color:var(--coral)}.jd-att.w .ai{background:var(--amber-soft);color:#c47c0a}.jd-att.i .ai{background:var(--brand-soft);color:var(--brand)}.jd-att .tt{font-size:13px;font-weight:600;line-height:1.3;color:var(--ink)}.jd-att .ss{font-size:11.5px;color:var(--ink-3);margin-top:2px}.jd-att button{background:var(--ink);color:#fff;border:0;border-radius:8px;padding:7px 12px;font:inherit;font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer}.jd-att button:hover{background:var(--ink-2)}.jd-qa-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.jd-qa{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;cursor:pointer;border:1px solid var(--line);background:var(--surface);transition:all .16s;position:relative;overflow:hidden;font:inherit;font-family:var(--font);text-align:left;color:var(--ink)}.jd-qa:hover{transform:translateY(-1px);box-shadow:var(--shadow-pop);border-color:transparent}.jd-qa .qi{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;flex:0 0 auto}.jd-qa.job .qi{background:linear-gradient(135deg,var(--brand),var(--violet))}.jd-qa.est .qi{background:linear-gradient(135deg,var(--mint),var(--brand))}.jd-qa.cust .qi{background:linear-gradient(135deg,var(--coral),var(--amber-new))}.jd-qa.inv .qi{background:linear-gradient(135deg,var(--violet),var(--coral))}.jd-qa .qn{font-size:13px;font-weight:700;letter-spacing:-.01em}.jd-qa .qs{font-size:11.5px;color:var(--ink-3);margin-top:2px}.jd-qa .arr{margin-left:auto;color:var(--ink-4);transition:transform .16s,color .16s;font-size:16px}.jd-qa:hover .arr{transform:translate(3px);color:var(--ink)}.jd-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}@media (max-width: 900px){.jd-kpi-row{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.jd-kpi-row{grid-template-columns:1fr}}.jd-range{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:4px;box-shadow:var(--shadow-card)}.jd-range button{background:transparent;border:0;padding:6px 14px;font:inherit;font-family:var(--font);font-size:13px;font-weight:600;color:var(--ink-3);cursor:pointer;border-radius:8px;transition:all .12s}.jd-range button.on{background:var(--ink);color:#fff}.jd-range button:not(.on):hover{color:var(--ink)}.jd-wave{display:inline-block;font-size:22px;transform-origin:70% 70%;animation:jd-wave 2.4s ease-in-out infinite}@keyframes jd-wave{0%,60%,to{transform:rotate(0)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.jd-pulse{width:6px;height:6px;border-radius:50%;background:var(--good);box-shadow:0 0 #16a67499;animation:jd-pulse 1.8s infinite;display:inline-block}@keyframes jd-pulse{0%{box-shadow:0 0 #16a67499}70%{box-shadow:0 0 0 8px #16a67400}to{box-shadow:0 0 #16a67400}}.jd-app{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--bg);font-family:var(--font);color:var(--ink)}.jd-side{background:var(--side);color:var(--side-ink);padding:18px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.jd-side-logo{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 14px;border-bottom:1px solid rgba(255,255,255,.06);margin-bottom:10px}.jd-logo-mark{display:flex;align-items:center;gap:9px;color:var(--side-accent);font-weight:800;font-size:20px;letter-spacing:-.02em}.jd-logo-mark .glyph{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--brand) 0%,var(--violet) 100%);display:grid;place-items:center;font-weight:800;font-size:14px;color:#fff;box-shadow:inset 0 -2px #00000026}.jd-side-collapse{background:transparent;border:0;color:var(--side-ink-2);cursor:pointer;padding:4px;border-radius:6px;display:inline-flex;align-items:center}.jd-side-collapse:hover{background:#ffffff0f;color:#fff}.jd-side-workspace{padding:4px 10px 10px;color:var(--side-ink-2);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.jd-side-new{display:flex;align-items:center;gap:9px;padding:10px 12px;margin:6px 0 10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#fff;border-radius:10px;cursor:pointer;font:inherit;font-family:var(--font);font-weight:600;width:100%;transition:background .12s}.jd-side-new:hover{background:#ffffff14}.jd-side-new .kbd{margin-left:auto;font-family:var(--font-mono);font-size:10px;color:var(--side-ink-2);border:1px solid rgba(255,255,255,.12);padding:1px 5px;border-radius:4px}.jd-side nav{display:flex;flex-direction:column;gap:2px}.jd-side nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;color:var(--side-ink);text-decoration:none;font-size:14px;font-weight:500;cursor:pointer;transition:background .12s,color .12s}.jd-side nav a:hover{background:#ffffff0a;color:#fff}.jd-side nav a.on{background:#ffffff14;color:#fff;box-shadow:inset 2px 0 0 var(--brand-2)}.jd-side nav a .ic{width:18px;height:18px;flex:0 0 auto;display:inline-flex}.jd-side nav a .ct{margin-left:auto;font-family:var(--font-mono);font-size:11px;background:#ffffff0f;padding:1px 6px;border-radius:10px;color:var(--side-ink-2)}.jd-side nav a.on .ct{background:var(--brand);color:#fff}.jd-side-sep{height:1px;background:#ffffff0f;margin:14px 8px}.jd-side-foot{margin-top:auto;padding-top:10px}.jd-upsell{background:linear-gradient(135deg,#3b5bff2e,#8b5cf62e);border:1px solid rgba(255,255,255,.1);border-radius:14px;padding:14px;color:#fff;position:relative;overflow:hidden}.jd-upsell:before{content:"";position:absolute;inset:-40% -30% auto auto;width:120px;height:120px;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 60%);pointer-events:none}.jd-upsell h5{margin:0 0 4px;font-size:13px;font-weight:700;letter-spacing:-.01em}.jd-upsell p{margin:0 0 10px;font-size:11.5px;color:var(--side-ink);line-height:1.4}.jd-upsell button{background:#fff;color:var(--ink);border:0;border-radius:8px;padding:7px 12px;font:inherit;font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer;width:100%}.jd-main{min-width:0;display:flex;flex-direction:column}.jd-topbar{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:14px 28px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.jd-crumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-3)}.jd-crumbs .here{color:var(--ink);font-weight:600}.jd-crumbs .chev{color:var(--ink-4)}.jd-search{display:flex;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:9px 14px;max-width:520px;width:100%;justify-self:center;transition:box-shadow .12s,border .12s}.jd-search:focus-within{border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.jd-search input{border:0;background:transparent;outline:0;flex:1;font:inherit;font-family:var(--font);color:var(--ink)}.jd-search input::placeholder{color:var(--ink-4)}.jd-search .kbd{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-4);border:1px solid var(--line);padding:1px 5px;border-radius:4px;background:var(--surface)}.jd-top-right{display:flex;align-items:center;gap:10px}.jd-workspace-pill{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:7px 12px;font-size:13px;font-weight:600;cursor:pointer;font:inherit;font-family:var(--font);color:var(--ink)}.jd-workspace-pill .wdot{width:18px;height:18px;border-radius:6px;background:linear-gradient(135deg,var(--coral),var(--amber-new));color:#fff;display:grid;place-items:center;font-size:10px;font-weight:800}.jd-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--violet));color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;cursor:pointer;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--line)}.jd-content{padding:24px 28px 48px;display:flex;flex-direction:column;gap:20px}.jd-tip{position:absolute;transform:translate(-50%,calc(-100% - 10px));background:var(--ink);color:#fff;border-radius:10px;padding:8px 12px;font-family:var(--font);font-size:12px;line-height:1.35;pointer-events:none;box-shadow:0 6px 18px #0f173040;white-space:nowrap;z-index:5;animation:jd-tip-in .12s ease-out}.jd-tip:after{content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:var(--ink);transform:translate(-50%) rotate(45deg);border-radius:2px;z-index:-1}.jd-tip-label{font-size:11px;color:#ffffffa6;font-weight:600;margin-bottom:2px}.jd-tip-value{font-size:15px;font-weight:700;letter-spacing:-.01em}.jd-tip-sub{font-size:11px;color:#fff9;margin-top:3px}@keyframes jd-tip-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 6px))}to{opacity:1;transform:translate(-50%,calc(-100% - 10px))}}.jd-br{padding:6px 8px;border-radius:8px;transition:background .12s;cursor:pointer}.jd-br:hover,.jd-br.on{background:var(--surface-2)}.jd-stat-tabs{display:flex;gap:6px;flex-wrap:wrap}.jd-stat-tab{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;background:var(--surface);border:1px solid var(--line);font:inherit;font-family:var(--font);font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:all .12s}.jd-stat-tab:hover{background:var(--bg)}.jd-stat-tab .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.jd-stat-tab .ct{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:600;background:var(--line-2);padding:1px 7px;border-radius:99px;color:var(--ink-3)}.jd-stat-tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}.jd-stat-tab.on .ct{background:#ffffff2e;color:#fff}.jd-fdrop{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border-radius:10px;background:var(--bg);border:1px solid var(--line);font:inherit;font-family:var(--font);font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:all .12s}.jd-fdrop:hover{background:var(--line-2)}.jd-fdrop svg{color:var(--ink-4);flex-shrink:0}.jd-fdrop.active{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}.jd-fdrop.active svg{color:var(--brand)}.jd-fdrop:disabled{opacity:.5;cursor:not-allowed}.jd-fdrop-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-pop);padding:6px;animation:jd-menu-in .12s ease-out}.jd-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border-radius:10px;font-family:var(--font);font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none}.jd-toggle input{display:none}.jd-toggle .sw{width:30px;height:18px;border-radius:99px;background:var(--line);position:relative;transition:background .12s;flex-shrink:0}.jd-toggle .sw:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:left .15s}.jd-toggle input:checked+.sw{background:var(--brand)}.jd-toggle input:checked+.sw:after{left:14px}.jd-view-switch{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:3px;gap:2px}.jd-view-switch button{background:transparent;border:0;padding:6px 12px;font:inherit;font-family:var(--font);font-size:12.5px;font-weight:600;color:var(--ink-3);border-radius:7px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,color .12s}.jd-view-switch button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0f173014}.jd-view-switch svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.jd-bulk-bar{background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:10px 14px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-pop);animation:jd-menu-in .15s ease-out;font-family:var(--font)}.jd-bulk-bar .count{font-weight:600;font-size:13px}.jd-bulk-bar .count b{font-weight:700}.jd-bulk-bar .sep{width:1px;height:20px;background:#ffffff26}.jd-bulk-bar .close{margin-left:auto;background:none;border:0;color:#fff9;cursor:pointer;font-size:20px;padding:0 4px;line-height:1}.jd-bulk-bar .close:hover{color:#fff}.jd-bbtn{background:#ffffff1a;border:0;color:#fff;font:inherit;font-family:var(--font);font-size:12.5px;font-weight:600;padding:7px 12px;border-radius:8px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s}.jd-bbtn:hover{background:#ffffff2e}.jd-bbtn.danger{color:#ffb4ab}.jd-bbtn.danger:hover{background:#ffb4ab1f}.jd-status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:99px;font:inherit;font-family:var(--font);font-size:11.5px;font-weight:700;cursor:pointer;border:1px solid transparent;transition:all .12s}.jd-status-pill:hover{transform:translateY(-1px);box-shadow:0 2px 6px #0f173014}.jd-status-pill .dot{width:6px;height:6px;border-radius:50%}.jd-status-pill .chev{width:10px;height:10px;opacity:.6}.jd-status-pill.st-pending{background:var(--amber-soft);color:#c47c0a}.jd-status-pill.st-pending .dot{background:var(--amber-new)}.jd-status-pill.st-paid{background:var(--mint-soft);color:var(--good)}.jd-status-pill.st-paid .dot{background:var(--good)}.jd-status-pill.st-unconfirmed{background:var(--line-2);color:var(--ink-3)}.jd-status-pill.st-unconfirmed .dot{background:var(--ink-4)}.jd-status-pill.st-complete{background:var(--mint-soft);color:var(--good)}.jd-status-pill.st-complete .dot{background:var(--good)}.jd-status-pill.st-confirmed{background:var(--brand-soft);color:var(--brand)}.jd-status-pill.st-confirmed .dot{background:var(--brand)}.jd-status-pill.st-enroute{background:var(--violet-soft);color:var(--violet)}.jd-status-pill.st-enroute .dot{background:var(--violet)}.jd-status-pill.st-progress{background:var(--coral-soft);color:var(--coral)}.jd-status-pill.st-progress .dot{background:var(--coral)}.jd-status-pill.st-cancelled{background:var(--line-2);color:var(--ink-3);text-decoration:line-through;opacity:.7}.jd-status-pill.st-cancelled .dot{background:var(--ink-4)}.jd-chk{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border:1.5px solid var(--line);border-radius:4px;background:var(--surface);cursor:pointer;position:relative;transition:all .12s;display:inline-block;vertical-align:middle;flex-shrink:0}.jd-chk:hover{border-color:var(--brand)}.jd-chk:checked{background:var(--brand);border-color:var(--brand)}.jd-chk:checked:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.jd-alpha{display:flex;gap:2px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:var(--shadow-card)}.jd-alpha button{background:transparent;border:0;min-width:26px;height:26px;padding:0 8px;border-radius:6px;font:inherit;font-family:var(--font);font-size:11.5px;font-weight:700;color:var(--ink-3);cursor:pointer;transition:background .12s,color .12s}.jd-alpha button.on{background:var(--ink);color:#fff}.jd-alpha button:hover:not(.on):not(.dim){background:var(--bg);color:var(--ink)}.jd-alpha button.dim{color:var(--ink-4);opacity:.5;cursor:not-allowed}.jd-customer-kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:18px;box-shadow:var(--shadow-card);position:relative;transition:transform .15s,box-shadow .15s;cursor:default;font-family:var(--font);color:var(--ink)}.jd-customer-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop)}.jd-customer-kpi .top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.jd-customer-kpi .lbl{font-size:13px;color:var(--ink-3);font-weight:500}.jd-customer-kpi .ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto}.jd-customer-kpi .ic svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.jd-customer-kpi .val{font-size:32px;font-weight:800;letter-spacing:-.03em;margin-top:10px;color:var(--ink);line-height:1}.jd-customer-kpi .val.sub{color:var(--ink-3);font-size:12px;font-weight:500;margin-top:6px;letter-spacing:0}.jd-customer-kpi .delta{margin-top:10px;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600}.jd-customer-kpi .delta.good{color:var(--good)}.jd-customer-kpi .delta.flat{color:var(--ink-3)}.jd-customer-kpi .delta.bad{color:var(--coral)}.jd-customer-kpi.c-brand .ic{background:var(--brand-soft);color:var(--brand)}.jd-customer-kpi.c-amber .ic{background:var(--amber-soft);color:#c47c0a}.jd-customer-kpi.c-coral .ic{background:var(--coral-soft);color:var(--coral)}.jd-customer-kpi.c-mint .ic{background:var(--mint-soft);color:var(--good)}.jd-customer-kpi.c-violet .ic{background:var(--violet-soft);color:var(--violet)}.jd-customer-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}@media (max-width: 900px){.jd-customer-kpi-row{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.jd-customer-kpi-row{grid-template-columns:1fr}}.jd-customer-cell{display:flex;align-items:center;gap:10px;min-width:0}.jd-customer-cell .av{border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;flex:0 0 auto;position:relative;overflow:visible}.jd-customer-cell .av .vip{position:absolute;right:-2px;bottom:-2px;width:14px;height:14px;background:var(--amber-new);border:2px solid var(--surface);border-radius:50%;display:grid;place-items:center;font-size:8px;color:#fff;font-family:var(--font)}.jd-customer-cell .nm{font-weight:600;color:var(--ink)}.jd-customer-cell .meta{font-size:11.5px;color:var(--ink-3);margin-top:1px;display:flex;align-items:center;gap:6px;font-family:var(--font)}.jd-customer-cell .meta .bu{color:var(--brand);font-weight:600}.jd-acct{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-2);font-weight:600;letter-spacing:-.01em}.jd-acct.empty{color:var(--ink-4);font-weight:500}.jd-amt{font-weight:700;color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums;font-family:var(--font)}.jd-amt.zero{color:var(--ink-4);font-weight:500}.jd-amt.owed{color:var(--coral)}.jd-tag.vip{background:#fff6e0;color:#ad7a0a;border:1px solid #f5d27a;text-transform:uppercase}.jd-tag.owes{background:var(--coral-soft);color:#b93428;border:1px solid #ffc5bd;text-transform:uppercase}.jd-tag.new{background:var(--mint-soft);color:var(--good);border:1px solid #9ce6cd;text-transform:uppercase}.jd-tag.biz{background:var(--violet-soft);color:var(--violet);border:1px solid #d3bffb;text-transform:uppercase}.jd-jobs-count{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);font-weight:600;font-variant-numeric:tabular-nums}.jd-jobs-count .bar{width:22px;height:5px;border-radius:99px;background:linear-gradient(90deg,var(--brand),var(--violet));opacity:.4}.jd-schbar{display:flex;align-items:center;gap:10px;padding:12px 22px;background:var(--surface);border-bottom:1px solid var(--line)}.jd-schbar-nav{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;display:grid;place-items:center}.jd-schbar-nav:hover{background:var(--bg)}.jd-schbar-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:10px;font:inherit;font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink);transition:background .12s}.jd-schbar-btn:hover{background:var(--bg)}.jd-schbar-btn.on{background:var(--ink);color:#fff;border-color:var(--ink)}.jd-schbar-btn.brand{background:linear-gradient(135deg,var(--brand),var(--violet));border-color:transparent;color:#fff;box-shadow:0 4px 14px #3b5bff59}.jd-schbar-range{font-size:15px;font-weight:700;margin-left:6px;letter-spacing:-.01em;color:var(--ink)}.jd-schbar-right{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.jd-sched-drop{position:relative}.jd-sched-dmenu{position:absolute;top:calc(100% + 6px);right:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);min-width:180px;padding:6px;z-index:50;animation:jd-menu-in .12s ease-out}.jd-sched-dmenu .section{padding:6px 10px 4px;font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-4);font-weight:700}.jd-sched-dmenu button{display:flex;align-items:center;width:100%;padding:8px 10px;border:0;background:transparent;font:inherit;font-family:var(--font);font-size:13px;color:var(--ink-2);border-radius:8px;cursor:pointer;text-align:left}.jd-sched-dmenu button:hover{background:var(--bg)}.jd-sched-dmenu button.on{background:var(--brand-soft);color:var(--brand);font-weight:600}.jd-sched-dmenu .sep{height:1px;background:var(--line);margin:4px}.jd-sched-layout{display:grid;grid-template-columns:var(--jd-left-w, 260px) 1fr var(--jd-map-w, 0px);min-height:0;min-width:0;flex:1}.jd-sched-layout[data-leftpanel=hidden]{grid-template-columns:0 1fr var(--jd-map-w, 0px)}.jd-sched-layout[data-leftpanel=hidden] .jd-leftpanel{overflow:hidden;visibility:hidden;width:0;min-width:0;padding:0;border:0}.jd-leftpanel{background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;min-height:0}.jd-lp-section{border-bottom:1px solid var(--line-2);padding:14px 16px}.jd-lp-title{display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:700;margin-bottom:10px}.jd-lp-title .ct{font-size:10.5px;background:var(--line-2);padding:1px 7px;border-radius:99px;color:var(--ink-3);font-variant-numeric:tabular-nums}.jd-lp-list{flex:1;overflow-y:auto;padding:8px 12px;min-height:0}.jd-lp-list::-webkit-scrollbar{width:6px}.jd-lp-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}.jd-mini-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.jd-mini-head .m{font-size:13px;font-weight:700;color:var(--ink)}.jd-mini-head button{width:22px;height:22px;border:0;background:transparent;color:var(--ink-3);border-radius:6px;cursor:pointer;display:grid;place-items:center}.jd-mini-head button:hover{background:var(--bg)}.jd-mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center;font-size:11px;font-variant-numeric:tabular-nums}.jd-mini-grid .dh{font-size:10px;color:var(--ink-4);font-weight:700;padding:2px 0}.jd-mini-grid .d{padding:5px 0;border-radius:6px;cursor:pointer;color:var(--ink-2);position:relative}.jd-mini-grid .d:hover{background:var(--bg)}.jd-mini-grid .d.out{color:var(--ink-4)}.jd-mini-grid .d.today{background:var(--brand-soft);color:var(--brand);font-weight:700}.jd-mini-grid .d.sel{background:var(--ink);color:#fff;font-weight:700}.jd-mini-grid .d.has:after{content:"";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--brand)}.jd-mini-grid .d.sel.has:after{background:#fff}.jd-ucard{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;cursor:grab;transition:all .12s;position:relative;font-family:var(--font);color:var(--ink)}.jd-ucard:hover{border-color:var(--brand);box-shadow:var(--shadow-card);transform:translateY(-1px)}.jd-ucard:active{cursor:grabbing}.jd-ucard.dragging{opacity:.5}.jd-ucard .jid{font-size:10.5px;color:var(--ink-3);font-weight:600;margin-bottom:2px;font-variant-numeric:tabular-nums}.jd-ucard .ttl{font-size:12.5px;font-weight:700;margin-bottom:3px;letter-spacing:-.01em}.jd-ucard .meta{font-size:11px;color:var(--ink-3);display:flex;align-items:center;gap:4px}.jd-ucard .meta .type{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.jd-ucard .grip{position:absolute;top:10px;right:8px;color:var(--ink-4);opacity:0;transition:opacity .12s}.jd-ucard:hover .grip{opacity:1}.jd-techfilter{display:flex;gap:6px;flex-wrap:wrap}.jd-techpill{display:inline-flex;align-items:center;gap:7px;padding:5px 10px 5px 5px;border-radius:99px;background:var(--bg);border:1px solid var(--line);font:inherit;font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--ink-2);transition:opacity .12s,background .12s}.jd-techpill:hover{background:var(--line-2)}.jd-techpill.off{opacity:.5;text-decoration:line-through;background:transparent;border-style:dashed}.jd-techpill.off .av{filter:grayscale(1) brightness(1.1)}.jd-techpill .av{width:20px;height:20px;border-radius:50%;color:#fff;font-size:9.5px;font-weight:700;display:grid;place-items:center;flex-shrink:0}.jd-cal-outer{display:flex;flex-direction:column;min-height:0;min-width:0;position:relative;background:var(--surface)}.jd-cal-head{display:grid;border-bottom:1px solid var(--line);background:var(--surface)}.jd-cal-head .corner{border-right:1px solid var(--line-2);padding:8px 12px;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-4);font-weight:700;display:flex;align-items:flex-end}.jd-dcol{padding:8px 10px 10px;border-right:1px solid var(--line-2);text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.jd-dcol:last-child{border-right:0}.jd-dcol-head{all:unset;cursor:pointer;padding:4px 10px 6px;border-radius:var(--r-md);transition:background .12s;display:flex;flex-direction:column;align-items:center}.jd-dcol-head:hover{background:var(--bg)}.jd-dcol-head:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.jd-dcol-head .wd{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:700;margin-bottom:2px}.jd-dcol-head .dn{font-size:20px;font-weight:800;letter-spacing:-.025em;color:var(--ink);font-variant-numeric:tabular-nums}.jd-dcol.today .jd-dcol-head .dn{color:var(--brand)}.jd-dcol-sum{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line-2);font-size:10.5px;font-weight:600;color:var(--ink-3);font-variant-numeric:tabular-nums;transition:background .12s,border-color .12s,color .12s}.jd-dcol-sum svg{opacity:.6}.jd-dcol-sum:hover{background:var(--brand-soft, rgba(83,74,183,.08));border-color:var(--brand);color:var(--brand)}.jd-dcol-sum:hover svg{opacity:1}.jd-dcol-sum:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.jd-dcol-sum.has{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 35%,var(--line-2))}.jd-cal-body{flex:1;overflow-y:auto;overflow-x:hidden;position:relative;min-height:0}.jd-cal-body::-webkit-scrollbar{width:8px}.jd-cal-body::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}.jd-sched-grid{display:grid;position:relative;min-height:100%}.jd-gtime{border-right:1px solid var(--line-2);padding:2px 10px 0;font-size:10.5px;color:var(--ink-4);font-weight:600;text-align:right;position:relative;font-variant-numeric:tabular-nums;font-family:var(--font)}.jd-gtime span{position:absolute;right:8px;top:-7px;background:var(--surface);padding:0 2px}.jd-gtime:first-of-type span{display:none}.jd-gcol{border-right:1px solid var(--line-2);position:relative}.jd-gcol:last-child{border-right:0}.jd-gcol .hline{position:absolute;left:0;right:0;border-top:1px solid var(--line);pointer-events:none}.jd-gcol .hhalf{position:absolute;left:0;right:0;border-top:1px dashed var(--line);opacity:.85;pointer-events:none}.jd-gcol .hquarter{position:absolute;left:0;right:0;border-top:1px dotted var(--line-2);opacity:.55;pointer-events:none}.jd-drop-preview{position:absolute;left:3px;right:3px;background:var(--brand-soft);border:2px dashed var(--brand);border-radius:8px;z-index:4;pointer-events:none;display:flex;align-items:center;justify-content:center;color:var(--brand);font-weight:700;font-size:11.5px;font-family:var(--font);font-variant-numeric:tabular-nums}.jd-gcol.today{background:linear-gradient(to bottom,#3b5bff06,#3b5bff03)}.jd-gcol.drop-over{background:var(--brand-soft)!important}.jd-now-line{position:absolute;left:0;right:0;height:2px;background:var(--coral);z-index:5;pointer-events:none}.jd-now-line:before{content:"";position:absolute;left:-5px;top:-4px;width:10px;height:10px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 4px #ff6a5b33}.jd-now-line .t{position:absolute;left:-48px;top:-8px;font-size:10px;font-weight:700;color:var(--coral);background:var(--surface);padding:1px 5px;border-radius:4px;border:1px solid var(--coral-soft);font-family:var(--font)}.jd-event{position:absolute;border-radius:8px;padding:6px 8px;font-size:11.5px;cursor:grab;overflow:hidden;transition:box-shadow .12s,transform .12s;-webkit-user-select:none;user-select:none;border-left:3px solid currentColor;font-family:var(--font)}.jd-event:active{cursor:grabbing}.jd-event:hover{box-shadow:0 6px 16px #0f17301f;z-index:6}.jd-event.dragging{opacity:.8;transform:scale(1.02);box-shadow:var(--shadow-pop);z-index:20;cursor:grabbing}.jd-event .time{font-size:10px;font-weight:600;opacity:.8;margin-bottom:2px;font-variant-numeric:tabular-nums}.jd-event .ttl{font-weight:700;margin-bottom:2px;letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jd-event .sub{opacity:.75;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.jd-event .jid{font-size:9.5px;opacity:.6;font-weight:600;margin-top:3px;font-variant-numeric:tabular-nums}.jd-event .resize{position:absolute;left:0;right:0;height:8px;cursor:ns-resize;opacity:0;transition:opacity .12s;z-index:2}.jd-event .resize.top{top:0}.jd-event .resize.bot{bottom:0}.jd-event:hover .resize{opacity:.45;background:currentColor}.jd-event .resize:hover{opacity:.9!important}.jd-event.sel{box-shadow:0 0 0 2px var(--ink),0 8px 20px #0f17302e;z-index:7}.jd-event.ev-confirmed{background:var(--brand-soft);color:var(--brand)}.jd-event.ev-complete{background:var(--mint-soft);color:var(--good)}.jd-event.ev-progress{background:var(--coral-soft);color:var(--coral)}.jd-event.ev-pending{background:var(--amber-soft);color:#a66803}.jd-event.ev-unconfirmed{background:var(--line-2);color:var(--ink-3)}.jd-event.ev-enroute{background:var(--violet-soft);color:var(--violet)}.jd-event.ev-timeoff{background:#ef44441f;color:var(--bad);border-left-color:var(--bad)}.jd-event.ev-custom{background:#06b6d41f;color:#0e7490;border-left-color:#0e7490}.jd-event.conflict{outline:2px solid var(--bad);outline-offset:-1px;animation:jd-pulse-bad 1.2s ease-in-out infinite}@keyframes jd-snap-pulse{0%,to{transform:scale(1);opacity:.9}50%{transform:scale(1.15);opacity:1}}@keyframes jd-pulse-bad{0%,to{box-shadow:0 0 #ef444466}50%{box-shadow:0 0 0 6px #ef444400}}.jd-qc{position:fixed;z-index:1000;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-pop);padding:14px;width:240px;font-family:var(--font);animation:jd-menu-in .12s ease-out}.jd-qc h5{margin:0 0 8px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:700}.jd-qc .opts{display:flex;flex-direction:column;gap:4px}.jd-qc .opts button{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);background:var(--surface);border-radius:10px;font:inherit;font-family:var(--font);font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left;transition:background .12s,border-color .12s}.jd-qc .opts button:hover{background:var(--bg);border-color:var(--brand)}.jd-qc .opts button .ic{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:700;flex:0 0 auto}.jd-mgrid{display:flex;flex-direction:column;min-height:100%}.jd-mgrid-head{display:grid;grid-template-columns:repeat(7,1fr);background:var(--surface-2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:4}.jd-mgrid-head .wd{padding:10px 14px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--ink-3);border-right:1px solid var(--line-2)}.jd-mgrid-head .wd:last-child{border-right:0}.jd-mgrid-body{display:grid;grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(140px,1fr);flex:1}.jd-mcell{border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2);padding:6px 8px;display:flex;flex-direction:column;gap:3px;min-height:0;overflow:hidden;position:relative;background:var(--surface);cursor:pointer;transition:background .1s}.jd-mcell:hover{background:var(--surface-2)}.jd-mcell:nth-child(7n){border-right:0}.jd-mcell.out{background:var(--bg);color:var(--ink-4)}.jd-mcell.weekend{background:var(--surface-2)}.jd-mcell.weekend.out{background:var(--bg)}.jd-mcell.today{background:var(--brand-soft)}.jd-mcell.today:hover{background:#dce5ff}.jd-mcell .dn{font-size:13px;font-weight:700;color:var(--ink);line-height:1;margin-bottom:2px;display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.jd-mcell.out .dn{color:var(--ink-4);font-weight:500}.jd-mcell.today .dn{color:var(--brand)}.jd-mcell.today .dn .pill{background:var(--brand);color:#fff;min-width:22px;height:22px;border-radius:99px;padding:0 7px;display:grid;place-items:center;font-size:11px}.jd-mev{font-size:10.5px;padding:3px 7px;border-radius:5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px;cursor:pointer;border-left:2px solid currentColor;line-height:1.35;font-family:var(--font)}.jd-mev:hover{filter:brightness(.96)}.jd-mev .t{font-size:9.5px;opacity:.7;flex:0 0 auto;font-weight:500;font-variant-numeric:tabular-nums}.jd-mev.ev-confirmed{background:var(--brand-soft);color:var(--brand)}.jd-mev.ev-complete{background:var(--mint-soft);color:var(--good)}.jd-mev.ev-progress{background:var(--coral-soft);color:var(--coral)}.jd-mev.ev-pending{background:var(--amber-soft);color:#8a5708}.jd-mev.ev-unconfirmed{background:var(--line-2);color:var(--ink-3)}.jd-mev.ev-enroute{background:var(--violet-soft);color:var(--violet)}.jd-mev.ev-timeoff{background:#ef44441f;color:var(--bad)}.jd-mev.ev-custom{background:#06b6d41f;color:#0e7490}.jd-mmore{font-size:10.5px;color:var(--ink-3);font-weight:600;padding:2px 7px;cursor:pointer}.jd-mmore:hover{color:var(--brand);background:var(--brand-soft);border-radius:5px}.jd-agenda{display:flex;flex-direction:column;gap:0;padding:0}.jd-ag-day{display:grid;grid-template-columns:140px 1fr;gap:0;border-bottom:1px solid var(--line-2)}.jd-ag-day:last-child{border-bottom:0}.jd-ag-day.today .jd-ag-date{background:var(--brand-soft)}.jd-ag-date{padding:18px 18px 14px;border-right:1px solid var(--line-2);background:var(--surface-2);align-self:stretch}.jd-ag-date .wd{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:700}.jd-ag-date .dn{font-size:32px;font-weight:800;letter-spacing:-.03em;line-height:1;margin-top:4px;color:var(--ink);font-variant-numeric:tabular-nums}.jd-ag-day.today .jd-ag-date .dn{color:var(--brand)}.jd-ag-date .mo{font-size:11.5px;color:var(--ink-3);font-weight:600;margin-top:2px;text-transform:uppercase;letter-spacing:.04em}.jd-ag-date .ct{margin-top:10px;font-size:11.5px;color:var(--ink-3);font-weight:600}.jd-ag-date .ct.has{color:var(--brand)}.jd-ag-items{display:flex;flex-direction:column;padding:10px 0}.jd-ag-empty{padding:22px 20px;color:var(--ink-4);font-size:13px;font-style:italic;display:flex;align-items:center;gap:10px}.jd-ag-row{display:grid;grid-template-columns:130px 4px 1fr auto;gap:14px;padding:10px 18px;align-items:center;cursor:pointer;transition:background .1s}.jd-ag-row:hover{background:var(--bg)}.jd-ag-row .ag-time{font-size:13px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.jd-ag-row .ag-time .dur{font-weight:500;color:var(--ink-3);font-size:11.5px;margin-top:2px}.jd-ag-row .ag-bar{width:4px;height:38px;border-radius:99px;background:var(--brand);align-self:center}.jd-ag-row .ag-body{min-width:0}.jd-ag-row .ag-ttl{font-size:14px;font-weight:700;color:var(--ink);letter-spacing:-.01em;display:flex;align-items:center;gap:8px}.jd-ag-row .ag-ttl .jid{font-size:11px;font-weight:600;color:var(--ink-4);background:var(--bg);border:1px solid var(--line-2);padding:1px 7px;border-radius:99px;font-variant-numeric:tabular-nums}.jd-ag-row .ag-sub{font-size:12.5px;color:var(--ink-3);margin-top:3px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.jd-ag-row .ag-stpill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:700;font-family:var(--font)}.jd-ag-row .ag-stpill .d{width:6px;height:6px;border-radius:50%}.jd-col-resize{position:absolute;right:0;top:20%;bottom:20%;width:4px;cursor:col-resize;z-index:3;background:var(--line);border-radius:2px;opacity:.7;transition:background .12s,opacity .12s,width .12s}.jd-col-resize:hover{background:var(--brand);opacity:1;width:4px}.jd-col-resize:active{background:var(--brand);opacity:1}.jd-infinite-dot{display:inline-block;width:6px;height:6px;margin:0 2px;border-radius:50%;background:var(--ink-4);animation:jd-bounce 1s infinite ease-in-out both}.jd-infinite-dot:nth-child(1){animation-delay:-.32s}.jd-infinite-dot:nth-child(2){animation-delay:-.16s}@keyframes jd-bounce{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}.jd-jobid{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:12px;color:var(--ink-2);font-weight:600;letter-spacing:-.01em}.jd-jobid .hash{color:var(--ink-4);margin-right:1px}.jd-client{display:flex;align-items:center;gap:10px}.jd-client .av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:11px;flex:0 0 auto}.jd-client .nm{font-weight:600;color:var(--ink)}.jd-client .ph{font-size:11px;color:var(--ink-3);margin-top:1px}.jd-jobtype{display:inline-flex;align-items:center;gap:7px;padding:3px 9px;border-radius:99px;background:var(--bg);border:1px solid var(--line-2);font-size:12px;font-weight:600;color:var(--ink-2)}.jd-jobtype .d{width:6px;height:6px;border-radius:50%}.jd-sched-cell{display:flex;flex-direction:column;gap:2px}.jd-sched-cell .d{font-weight:600;color:var(--ink);font-size:12.5px}.jd-sched-cell .t{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.jd-sched-cell .today{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;color:var(--brand);background:var(--brand-soft);padding:1px 6px;border-radius:99px;width:max-content;margin-top:3px}.jd-phone{font-variant-numeric:tabular-nums;font-size:12.5px;color:var(--ink-2)}.jd-tech-cell{display:flex;align-items:center;gap:8px}.jd-tech-cell .av{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:10px;flex-shrink:0}.jd-tech-cell .nm{font-size:12.5px;color:var(--ink)}.jd-tech-cell.empty{color:var(--ink-4);font-style:italic;font-size:12.5px}.jd-addr{color:var(--ink-2);font-size:12.5px;line-height:1.3;max-width:240px;display:inline-flex;align-items:center;gap:6px}.jd-addr .pin{color:var(--ink-4);flex:0 0 auto}.jd-row-actions{opacity:0;transition:opacity .12s;display:inline-flex;gap:2px}tr:hover .jd-row-actions{opacity:1}.jd-ra-btn{width:26px;height:26px;border-radius:7px;border:0;background:transparent;color:var(--ink-3);cursor:pointer;display:grid;place-items:center}.jd-ra-btn:hover{background:var(--line-2);color:var(--ink)}.jd-table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-card)}.jd-table-wrap table{width:100%;border-collapse:collapse;font-size:13px;font-family:var(--font)}.jd-table-wrap thead th{text-align:left;font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);padding:12px 14px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer}.jd-table-wrap thead th:hover{color:var(--ink)}.jd-table-wrap thead th .sort{display:inline-flex;align-items:center;gap:4px;color:var(--ink-4);margin-left:3px;font-size:10px}.jd-table-wrap thead th.sorted .sort{color:var(--brand)}.jd-table-wrap thead th:first-child,.jd-table-wrap tbody td:first-child{width:38px;padding-left:18px;padding-right:4px}.jd-table-wrap tbody tr{border-bottom:1px solid var(--line-2);border-left:3px solid transparent;transition:background .1s,border-left-color .12s;cursor:pointer}.jd-table-wrap tbody tr:last-child{border-bottom:0}.jd-table-wrap tbody tr:hover{background:var(--bg)}.jd-table-wrap tbody tr.sel{background:var(--brand-soft)}.jd-table-wrap tbody tr.sel:hover{background:#dce5ff}.jd-table-wrap tbody tr:hover.s-pending{border-left-color:var(--amber-new)}.jd-table-wrap tbody tr:hover.s-paid{border-left-color:var(--good)}.jd-table-wrap tbody tr:hover.s-confirmed{border-left-color:var(--brand)}.jd-table-wrap tbody tr:hover.s-complete{border-left-color:var(--good)}.jd-table-wrap tbody tr:hover.s-enroute{border-left-color:var(--violet)}.jd-table-wrap tbody tr:hover.s-progress{border-left-color:var(--coral)}.jd-table-wrap tbody tr:hover.s-unconfirmed{border-left-color:var(--ink-4)}.jd-table-wrap tbody td{padding:14px;vertical-align:middle;color:var(--ink)}body[data-density=compact] .jd-table-wrap tbody td{padding:9px 14px}body[data-density=roomy] .jd-table-wrap tbody td{padding:18px 14px}.jd-table-foot{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--surface);border-top:1px solid var(--line-2);font-size:12.5px;color:var(--ink-3);font-family:var(--font)}.jd-pager{display:flex;gap:4px;align-items:center}.jd-pager button{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);cursor:pointer;font:inherit;font-family:var(--font);font-weight:600;font-size:12.5px}.jd-pager button.on{background:var(--ink);color:#fff;border-color:var(--ink)}.jd-pager button:hover:not(.on):not(:disabled){background:var(--bg)}.jd-pager button:disabled{opacity:.4;cursor:not-allowed}.jd-kanban{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}.jd-kcol{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px;min-height:600px;display:flex;flex-direction:column;gap:8px}.jd-kcol-head{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 10px;border-bottom:1px dashed var(--line);margin-bottom:4px}.jd-kcol-head .t{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:700;color:var(--ink)}.jd-kcol-head .d{width:8px;height:8px;border-radius:50%}.jd-kcol-head .ct{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:11px;color:var(--ink-3);background:var(--surface);border:1px solid var(--line);padding:1px 7px;border-radius:99px}.jd-kcol-head .add{width:22px;height:22px;border-radius:6px;border:0;background:transparent;color:var(--ink-3);cursor:pointer;display:grid;place-items:center;font-size:16px;line-height:1}.jd-kcol-head .add:hover{background:var(--line-2);color:var(--ink)}.jd-kcard{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;cursor:grab;transition:all .12s;box-shadow:var(--shadow-card);font-family:var(--font);color:var(--ink)}.jd-kcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop)}.jd-kcard .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.jd-kcard .jid{font-family:var(--font);font-variant-numeric:tabular-nums;font-size:10.5px;color:var(--ink-3);font-weight:600}.jd-kcard .type{font-size:10.5px;font-weight:700;padding:2px 7px;background:var(--bg);border-radius:99px}.jd-kcard .title{font-size:13px;font-weight:700;margin-bottom:4px;letter-spacing:-.01em}.jd-kcard .meta{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:6px;margin-top:6px}.jd-kcard .foot{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-2)}.jd-kcard .foot .when{font-size:11px;color:var(--ink-3);font-variant-numeric:tabular-nums}.jd-kcard .foot .av{width:22px;height:22px;border-radius:50%;color:#fff;font-weight:700;font-size:9px;display:grid;place-items:center}.jd-kcol-empty{font-size:12px;color:var(--ink-4);text-align:center;padding:20px;font-style:italic}.jd-filterbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;box-shadow:var(--shadow-card)}.jd-filterbar .filter-search{flex:1;min-width:220px;display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:10px;background:var(--bg);border:1px solid var(--line)}.jd-filterbar .filter-search input{border:0;background:transparent;outline:0;flex:1;font:inherit;font-family:var(--font);font-size:13px;color:var(--ink)}.jd-filterbar .filter-search input::placeholder{color:var(--ink-4)}.jd-filterbar .filter-search .ct{font-variant-numeric:tabular-nums;font-size:11.5px;color:var(--ink-3)}.jd-filter-right{margin-left:auto;display:flex;align-items:center;gap:8px}.jd-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:1000;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-pop);overflow:hidden;animation:jd-menu-in .12s ease-out}@keyframes jd-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.jd-menu-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:var(--ink)}.jd-menu-row{display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line-2);cursor:pointer;align-items:flex-start;transition:background .12s}.jd-menu-row:last-child{border-bottom:none}.jd-menu-row:hover{background:var(--bg)}.jd-menu-row>div:first-child{flex:1;min-width:0}.jd-menu-row .title{font-size:13px;font-weight:600;color:var(--ink)}.jd-menu-row .sub{font-size:12px;color:var(--ink-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jd-menu-row .meta{font-size:11px;color:var(--ink-4);flex-shrink:0}.jd-menu-item{width:100%;display:flex;align-items:center;gap:10px;padding:10px 14px;background:none;border:none;cursor:pointer;font:inherit;font-family:var(--font);font-size:13px;color:var(--ink);text-align:left;transition:background .12s}.jd-menu-item:hover{background:var(--bg)}.jd-menu-item.danger{color:var(--coral)}.jd-menu-item.danger:hover{background:var(--coral-soft)}.jd-mode-toggle{display:flex;gap:6px;padding:2px;background:var(--bg);border-radius:8px}.jd-mode-toggle button{flex:1;padding:7px 10px;border:0;background:transparent;cursor:pointer;font:inherit;font-family:var(--font);font-size:12px;font-weight:600;color:var(--ink-3);border-radius:6px;transition:background .12s,color .12s}.jd-mode-toggle button.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #0f17300f}.jd-mobile-menu{display:none}.jd-mobile-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f173066;z-index:50;animation:jd-menu-in .15s ease-out}@media (max-width: 900px){.jd-app{grid-template-columns:1fr}.jd-side{position:fixed;left:-260px;top:0;bottom:0;width:260px;z-index:60;transition:left .22s cubic-bezier(.2,.8,.2,1);display:flex}.jd-app.jd-mobile-open .jd-side{left:0}.jd-topbar{padding:12px 16px;grid-template-columns:auto 1fr auto}.jd-search{max-width:none}.jd-crumbs,.jd-workspace-pill{display:none}.jd-content{padding:16px}.jd-mobile-menu{display:grid}}
