.dd-page{--dd-ink: #111827;--dd-text: #374151;--dd-sub: #6b7280;--dd-faint: #9ca3af;--dd-line: #e5e7eb;--dd-ground: #f9fafb;--dd-indigo: #6366f1;--dd-indigo-deep: #4f46e5;--dd-indigo-soft: #eef2ff;display:flex;flex-direction:column;height:calc(100vh - 65px);height:calc(100dvh - 65px);min-height:520px;background:var(--dd-ground);color:var(--dd-ink);line-height:1.5}.dd-page h2,.dd-page h3,.dd-page h4,.dd-page p{margin:0;letter-spacing:0}.dd-icon{flex:none;display:block}.dd-head{flex:none;display:flex;align-items:center;gap:16px;height:73px;padding:0 28px 0 24px;background:#fff;border-bottom:1px solid var(--dd-line)}.dd-head h2{font-size:18px;font-weight:600;line-height:1.4;white-space:nowrap}.dd-count{padding:1px 8px;border-radius:6px;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep);font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.dd-head-actions{display:flex;gap:12px;margin-left:auto}.dd-page .dd-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 17px;border:1px solid var(--dd-line);border-radius:8px;background:#fff;color:var(--dd-ink);font-size:14px;font-weight:600;box-shadow:0 1px 2px #1118270a}.dd-page .dd-btn:hover:not(:disabled){background:var(--dd-ground);border-color:#d1d5db}.dd-page .dd-btn.primary{border-color:var(--dd-indigo);background:var(--dd-indigo);color:#fff}.dd-page .dd-btn.primary:hover:not(:disabled){border-color:var(--dd-indigo-deep);background:var(--dd-indigo-deep)}.dd-page button:focus-visible,.dd-project:focus-visible{outline:2px solid #a5b4fc;outline-offset:1px;box-shadow:none}.dd-shell{flex:1;min-height:0;display:grid;grid-template-columns:330px minmax(0,1fr)}.dd-shell.list-collapsed{grid-template-columns:0 minmax(0,1fr)}.dd-shell.list-collapsed>.dd-sidebar{visibility:hidden;overflow:hidden;border-right:0}.dd-page .dd-list-toggle{display:inline-flex;align-items:center;gap:4px;height:30px;margin-left:-6px;padding:0 9px 0 7px;border:1px solid var(--dd-line);border-radius:6px;background:#fff;color:#4b5563;font-size:13px;font-weight:500;box-shadow:none;white-space:nowrap}.dd-page .dd-list-toggle:hover:not(:disabled){background:var(--dd-ground);color:var(--dd-indigo-deep)}.dd-list-toggle .dd-icon{transform:rotate(90deg)}.dd-list-toggle[aria-expanded=false] .dd-icon{transform:rotate(-90deg)}.dd-pill{flex:none;padding:0 8px;border-radius:999px;font-size:11px;font-weight:600;line-height:18px;white-space:nowrap}.dd-pill.done{color:#059669;background:#d1fae5}.dd-pill.active{color:#2563eb;background:#dbeafe}.dd-pill.pending{color:#6b7280;background:#f3f4f6}.dd-pill.waiting{color:#d97706;background:#fef3c7}.dd-pill.overdue{color:#dc2626;background:#fee2e2}.dd-sidebar{display:flex;flex-direction:column;min-height:0;background:#fff;border-right:1px solid var(--dd-line)}.dd-picker-panel{flex:1;display:flex;flex-direction:column;min-height:0}.dd-picker{display:none}.dd-search{flex:none;padding:16px 16px 17px 15px;border-bottom:1px solid var(--dd-line)}.dd-search label{display:flex;align-items:center;gap:10px;height:39px;padding:0 12px;border:1px solid var(--dd-line);border-radius:8px;background:var(--dd-ground);color:var(--dd-sub)}.dd-search label:focus-within{border-color:#a5b4fc;background:#fff;box-shadow:0 0 0 3px #6366f11f}.dd-search input{flex:1;min-width:0;height:100%;padding:0;border:0;border-radius:0;background:transparent;color:var(--dd-ink);font-size:14px;outline:0;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.dd-search input:focus-visible{border:0;box-shadow:none}.dd-search input::placeholder{color:var(--dd-faint)}.dd-search input::-webkit-search-cancel-button{-webkit-appearance:none}.dd-project-list{flex:1;min-height:0;overflow-y:auto;padding:9px 8px 12px 7px}.dd-list-empty{padding:28px 12px;color:var(--dd-faint);font-size:13px;text-align:center;overflow-wrap:anywhere}.dd-project{position:relative;height:96px;margin-bottom:4px;padding:11px 12px;border:1px solid transparent;border-radius:8px;cursor:pointer}.dd-project:hover{background:var(--dd-ground)}.dd-project.active{background:var(--dd-indigo-soft);border-color:#c7d2fe}.dd-project-head{display:flex;align-items:center;gap:10px;height:24px}.dd-project-head strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600}.dd-project.active .dd-project-head strong{color:var(--dd-indigo-deep)}.dd-project p{display:flex;align-items:center;gap:8px;height:20px;margin-top:5px;color:var(--dd-sub);font-size:13px}.dd-project p span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-project-actions{position:absolute;right:8px;bottom:9px;display:none;gap:2px}.dd-project.active .dd-project-actions,.dd-project:hover .dd-project-actions,.dd-project:focus-within .dd-project-actions{display:flex}.dd-project p:last-of-type{padding-right:84px}.dd-page .dd-project-actions button{display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--dd-faint);box-shadow:none}.dd-page .dd-project-actions button:hover:not(:disabled){background:#6366f11f;color:var(--dd-indigo-deep)}.dd-page .dd-project-actions button.danger:hover:not(:disabled){background:#fee2e2;color:#dc2626}.dd-flow{display:flex;flex-direction:column;min-width:0;min-height:0}.dd-flow-toolbar{flex:none;display:flex;align-items:center;gap:16px;min-height:50px;padding:0 20px 0 17px;background:#fff;border-bottom:1px solid var(--dd-line)}.dd-flow-toolbar h3{font-size:15px;font-weight:600;white-space:nowrap}.dd-legend{display:flex;flex-wrap:wrap;gap:2px 12px}.dd-legend span{display:inline-flex;align-items:center;gap:5px;color:var(--dd-sub);font-size:13px;white-space:nowrap}.dd-legend span:before{content:"";width:12px;height:12px;border-radius:50%;background:#d1d5db}.dd-legend .done:before{background:#10b981}.dd-legend .active:before{background:#3b82f6}.dd-legend .overdue:before{background:#ef4444}.dd-legend .join:before{box-sizing:border-box;border:1.5px solid #6b7280;background:radial-gradient(circle,transparent 0 2px,#6b7280 2px 3.2px,transparent 3.2px)}.dd-flow-tools{display:flex;gap:10px;margin-left:auto}.dd-page .dd-flow-tools button{height:30px;padding:0 12px;border:0;border-radius:6px;background:#f3f4f6;color:#4b5563;font-size:13px;font-weight:500;box-shadow:none}.dd-page .dd-flow-tools button:hover:not(:disabled){background:var(--dd-line);color:var(--dd-ink)}.dd-canvas-scroll{position:relative;flex:1;min-height:0;overflow:auto;background:var(--dd-ground);cursor:grab;touch-action:none;overscroll-behavior:contain;scrollbar-width:none}.dd-canvas-scroll::-webkit-scrollbar{display:none}.dd-canvas-scroll.panning{cursor:grabbing;-webkit-user-select:none;user-select:none}.dd-canvas-stage{position:relative}.dd-canvas{position:absolute;transform-origin:top left}.dd-lines{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible;pointer-events:none}.dd-canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;cursor:default;text-align:center}.dd-canvas-empty h4{font-size:16px;font-weight:600}.dd-canvas-empty p{max-width:420px;color:var(--dd-sub);font-size:13px;line-height:1.7}.dd-card{position:absolute;width:265px;min-height:181px;padding:15px 16px 0;border:1px solid var(--dd-line);border-radius:12px;background:#fff;box-shadow:0 1px 3px #1118270d,0 6px 16px -6px #11182714;cursor:default}.dd-card.done{border-color:#a7f3d0;background:#f7fdfa}.dd-card.active{border-color:#bfdbfe;background:#f8fbff}.dd-card.pending{border-color:var(--dd-line);background:#fff}.dd-card.overdue{border-color:#fecaca;background:#fff9f9}.dd-card>header{display:flex;align-items:center;gap:10px;height:22px;margin-bottom:11px}.dd-card>header strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:600;line-height:22px}.dd-card>p{display:flex;align-items:center;gap:8px;height:20px;margin-bottom:9px;color:var(--dd-sub);font-size:13px}.dd-card>p span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-card>p.dd-card-actual{margin-bottom:11px}.dd-card-actual.done .dd-icon{color:#10b981}.dd-card-actual.active .dd-icon{color:#3b82f6}.dd-card-actual.overdue .dd-icon{color:#ef4444}.dd-card-actual.overdue span{color:#dc2626}.dd-page .dd-card-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;height:42px;padding:0 2px 7px 0;border:0;border-top:1px solid var(--dd-line);border-radius:0;background:transparent;color:#4b5563;font-size:13px;font-weight:500;box-shadow:none}.dd-page .dd-card-toggle:hover:not(:disabled){background:transparent;border-color:var(--dd-line);color:var(--dd-indigo-deep)}.dd-join{position:absolute;width:64px}.dd-page .dd-join-ring{display:grid;place-items:center;width:64px;height:64px;padding:0;border:2.5px solid #9ca3af;border-radius:50%;background:#fff;color:#6b7280;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 6.5px #9ca3af,0 1px 3px #1118270f}.dd-page .dd-join-ring:hover:not(:disabled){background:#fff;filter:brightness(.97)}.dd-join-ring b{font-size:17px;font-weight:700;line-height:1}.dd-page .dd-join.done .dd-join-ring{border-color:#10b981;color:#059669;box-shadow:inset 0 0 0 5px #f7fdfa,inset 0 0 0 6.5px #10b981,0 1px 3px #1118270f}.dd-page .dd-join.active .dd-join-ring{border-color:#3b82f6;color:#2563eb;box-shadow:inset 0 0 0 5px #f8fbff,inset 0 0 0 6.5px #3b82f6,0 1px 3px #1118270f}.dd-page .dd-join.overdue .dd-join-ring{border-color:#ef4444;color:#dc2626;box-shadow:inset 0 0 0 5px #fff9f9,inset 0 0 0 6.5px #ef4444,0 1px 3px #1118270f}.dd-join small{position:absolute;top:68px;left:50%;width:128px;transform:translate(-50%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4b5563;font-size:12px;font-weight:500;line-height:18px;text-align:center;background:var(--dd-ground)}.dd-preview-backdrop{z-index:1010}.dd-modal.dd-preview{width:900px;height:calc(100vh - 32px);height:calc(100dvh - 32px)}.dd-preview>header{gap:10px}.dd-preview>header h3{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-preview-body{flex:1;min-height:0;overflow:auto;padding:16px;border-radius:0 0 16px 16px;background:#eef0f4}.dd-preview-body .react-pdf__Page{margin:0 auto 12px;box-shadow:0 1px 4px #1118271f}.dd-preview-body .react-pdf__Page:last-child{margin-bottom:0}.dd-preview-body img{display:block;max-width:100%;margin:0 auto;background:#fff}.dd-preview-body pre{margin:0;padding:16px;border-radius:8px;background:#fff;color:var(--dd-ink);font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.dd-preview-body video{display:block;width:100%;max-height:100%;margin:0 auto;border-radius:8px;background:#000}.dd-preview-body.video{display:flex;flex-direction:column;justify-content:center}.dd-preview-note{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 16px;color:var(--dd-sub);font-size:14px;text-align:center;overflow-wrap:anywhere}.dd-card{cursor:pointer}.dd-card:hover{box-shadow:0 2px 6px #1118270f,0 12px 28px -10px #1118272e}.dd-card-toggle .dd-icon{transform:rotate(-90deg)}.dd-modal.dd-node-modal{width:600px}.dd-node-modal>header{gap:10px}.dd-node-modal>header h3{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-node-modal>header .dd-modal-close{margin-left:auto}.dd-node-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 25px 20px}.dd-node-summary{display:flex;flex-wrap:wrap;gap:8px 24px;padding:12px 14px;border:1px solid var(--dd-line);border-radius:10px;background:var(--dd-ground)}.dd-node-summary p{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%;color:var(--dd-sub);font-size:13px}.dd-node-summary p span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dd-node-body h4{margin:18px 0 6px;font-size:14.5px;font-weight:600}@media(max-width:560px){.dd-node-body{padding:14px 16px 16px}}.dd-items{margin:0;padding:0;list-style:none}.dd-item{margin:0 -8px;padding:11px 8px 12px;border-radius:8px}.dd-item+.dd-item{box-shadow:0 -1px #eef0f3}.dd-item.dragging{background:var(--dd-indigo-soft);box-shadow:inset 0 0 0 1px #a5b4fc}.dd-item-head{display:flex;align-items:flex-start;gap:10px}.dd-item-title{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-height:22px}.dd-item-title strong{min-width:0;font-size:14px;font-weight:600;line-height:22px;color:var(--dd-ink);overflow-wrap:anywhere}.dd-item.done .dd-item-title strong{color:var(--dd-sub)}.dd-tags{display:inline-flex;flex-wrap:wrap;gap:4px}.dd-tags i{padding:0 6px;border-radius:4px;background:#f3f4f6;color:var(--dd-sub);font-size:11px;font-style:normal;font-weight:500;line-height:18px;white-space:nowrap}.dd-tags i.sign{background:var(--dd-indigo-soft);color:var(--dd-indigo-deep)}.dd-page input.dd-check{width:22px;height:22px;border-radius:6px;border-color:#9ca3af}.dd-page input.dd-check:before{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px}.dd-page input.dd-check:checked{border-color:#10b981;background:#10b981}.dd-page input.dd-check:checked:after{left:7px;top:2px;width:5px;height:11px}.dd-page input.dd-check:disabled{cursor:not-allowed;opacity:.55}.dd-page input.dd-check:disabled:checked{opacity:.8}.dd-auto{flex:none;display:grid;place-items:center;width:22px;height:22px;border:1.5px dashed #a5b4fc;border-radius:50%;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep)}.dd-auto.done{border:0;background:transparent;color:#10b981}.dd-auto-note{padding:5px 9px;border-radius:6px;background:var(--dd-indigo-soft);color:#3730a3;font-size:12px;line-height:18px}.dd-item-main{display:flex;flex-direction:column;gap:6px;min-width:0;padding-left:32px}.dd-item-main:not(:empty){margin-top:4px}.dd-item-main>small,.dd-extra small,.dd-form small,.dd-ref>small{color:var(--dd-faint);font-size:12px;line-height:17px;overflow-wrap:anywhere}.dd-item-main>small.dd-item-blocker{color:#b45309}.dd-item-actions{display:flex;flex-wrap:wrap;gap:6px}.dd-item-actions:empty{display:none}.dd-page .dd-chip-btn,.dd-page .dd-deadline button{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:28px;padding:0 10px;border:1px solid var(--dd-line);border-radius:6px;background:#fff;color:var(--dd-text);font-size:12px;font-weight:500;line-height:1;white-space:nowrap;text-decoration:none;box-shadow:none;cursor:pointer}.dd-page .dd-chip-btn:hover:not(:disabled),.dd-page .dd-deadline button:hover:not(:disabled){background:var(--dd-ground);border-color:#d1d5db}.dd-page .dd-chip-btn.primary{border-color:var(--dd-indigo);background:var(--dd-indigo);color:#fff}.dd-page .dd-chip-btn.primary:hover:not(:disabled){border-color:var(--dd-indigo-deep);background:var(--dd-indigo-deep)}.dd-page .dd-chip-btn.accent{border-color:#c7d2fe;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep)}.dd-page .dd-chip-btn.accent:hover:not(:disabled){border-color:#a5b4fc;background:#e0e7ff}.dd-page .dd-chip-btn.danger{color:#b91c1c}.dd-page .dd-chip-btn.danger:hover:not(:disabled){border-color:#fca5a5;background:#fef2f2}.dd-note{display:flex;flex-wrap:wrap;gap:6px}.dd-page .dd-note input{flex:1 1 160px;min-width:0;height:30px;padding:0 9px;border:1px solid var(--dd-line);border-radius:6px;background:var(--dd-ground);color:var(--dd-ink);font-size:13px}.dd-page .dd-note input:focus-visible,.dd-page .dd-form input:focus-visible,.dd-page .dd-form select:focus-visible,.dd-page .dd-form textarea:focus-visible{border-color:var(--dd-indigo);background:#fff;box-shadow:0 0 0 3px #6366f126}.dd-note-text{color:var(--dd-text);font-size:13px;line-height:19px;overflow-wrap:anywhere}.dd-note-text span{margin-right:8px;color:var(--dd-faint);font-size:12px}.dd-files{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}.dd-file{display:flex;gap:9px;padding:8px 10px;border:1px solid var(--dd-line);border-radius:8px;background:#fff}.dd-file-icon{margin-top:2px;color:var(--dd-faint)}.dd-file-icon.pdf{color:#dc2626}.dd-file-icon.image{color:#0891b2}.dd-file-icon.video{color:#7c3aed}.dd-file-main{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}.dd-file-main strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:19px;color:var(--dd-ink)}.dd-file-main small{color:var(--dd-faint);font-size:12px;line-height:17px;overflow-wrap:anywhere}.dd-file-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}.dd-upload{border-style:dashed;background:var(--dd-ground)}.dd-upload.failed{border-color:#fca5a5;background:#fff7f7}.dd-upload.failed small{color:#b91c1c}.dd-item-progress{align-self:stretch}.dd-item-progress span{display:block;height:4px;overflow:hidden;border-radius:99px;background:var(--dd-line)}.dd-item-progress i{display:block;height:100%;border-radius:inherit;background:var(--dd-indigo);transition:width .18s ease}.dd-extra{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.dd-extra-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--dd-text);font-size:13px;line-height:19px}.dd-extra-line .dd-icon{color:var(--dd-sub)}.dd-form{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid #c7d2fe;border-radius:8px;background:#fafbff}.dd-form-title{color:var(--dd-ink);font-size:13px;font-weight:600}.dd-form label,.dd-form fieldset{display:flex;flex-direction:column;gap:4px;min-width:0;margin:0;padding:0;border:0;color:var(--dd-text);font-size:12px;font-weight:500}.dd-form legend{padding:0;margin-bottom:4px}.dd-page .dd-form input:not([type=checkbox]):not([type=radio]),.dd-page .dd-form select,.dd-page .dd-form textarea{width:100%;min-width:0;height:34px;min-height:0;padding:0 9px;border:1px solid var(--dd-line);border-radius:6px;background:#fff;color:var(--dd-ink);font-size:13px;font-weight:400}.dd-page .dd-form textarea{height:auto;min-height:68px;padding:7px 9px}.dd-form .dd-choice label{flex-direction:row;align-items:center;gap:8px;min-height:30px;font-weight:400;font-size:13px;cursor:pointer}.dd-form .dd-choice label span{min-width:0;overflow-wrap:anywhere}.dd-required{margin-left:3px;color:#dc2626;font-weight:600}.dd-form-error{color:#b91c1c;font-size:12px;line-height:18px;overflow-wrap:anywhere}.dd-form-warn{padding:8px 10px;border-radius:6px;background:#fffbeb;color:#92400e;font-size:12.5px;line-height:19px;overflow-wrap:anywhere}.dd-form-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.dd-form .dd-attendees{gap:6px}.dd-attendees>.dd-chip-btn{align-self:flex-start}.dd-attendee-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.dd-attendee-list li{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;min-width:0;padding:3px 3px 3px 10px;border:1px solid var(--dd-line);border-radius:6px;background:#fff;color:var(--dd-ink);font-size:13px;font-weight:400;line-height:19px}.dd-attendee-list li>span{min-width:0;overflow-wrap:anywhere}.dd-attendee-list li>.dd-chip-btn{margin-left:auto}.dd-attendee-pick{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--dd-line);border-radius:6px;background:#fff}.dd-attendee-rows{max-height:220px;overflow-y:auto}.dd-form .dd-attendee-rows label small{margin-left:auto;white-space:nowrap}.dd-page .dd-unbound,.dd-form small.dd-unbound{color:#b45309;font-size:12px;font-style:normal}.dd-refs{margin-top:16px}.dd-node-body .dd-refs h4,.dd-node-body .dd-log h4{display:flex;align-items:baseline;gap:8px;margin:0 0 8px}.dd-refs h4 small,.dd-log h4 small{color:var(--dd-faint);font-size:12px;font-weight:400}.dd-ref{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:8px;background:var(--dd-ground)}.dd-ref+.dd-ref{margin-top:8px}.dd-ref>p{display:flex;flex-wrap:wrap;gap:2px 8px;font-size:13px;line-height:19px}.dd-ref>p b{font-weight:600;color:var(--dd-ink);overflow-wrap:anywhere}.dd-ref>p span{color:var(--dd-sub);overflow-wrap:anywhere}.dd-ref>p span:before{content:"· ";color:var(--dd-faint)}.dd-log{margin-top:18px;padding-top:16px;border-top:1px solid var(--dd-line)}.dd-log:first-child{margin-top:14px}.dd-log ol{margin:0;padding:0;list-style:none}.dd-log li{padding:4px 0;color:var(--dd-text);font-size:12.5px;line-height:19px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dd-log li+li{border-top:1px dashed #eef0f3}.dd-page .dd-log-more{height:auto;margin:0 0 4px;padding:3px 0;border:0;border-radius:4px;background:transparent;color:var(--dd-indigo-deep);font-size:12px;font-weight:500;box-shadow:none}.dd-page .dd-log-more:hover:not(:disabled){background:transparent;text-decoration:underline}.dd-items-note{padding:8px 0 0;color:var(--dd-faint);font-size:12px}.dd-deadline{display:flex;align-items:flex-end;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid #f3f4f6}.dd-deadline label{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;color:var(--dd-sub);font-size:12px}.dd-deadline input,.dd-deadline select{width:100%;min-width:0;height:28px;padding:0 6px;border-color:var(--dd-line);border-radius:6px;background:var(--dd-ground);font-size:12px}.dd-page .dd-deadline button{height:28px}.dd-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:#11182775}body:has(.dd-modal-backdrop) .select-list{z-index:1005}.dd-modal{display:flex;flex-direction:column;width:520px;max-width:100%;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);border-radius:16px;background:#fff;color:var(--dd-ink);box-shadow:0 24px 60px -12px #11182759}.dd-modal>header{flex:none;display:flex;align-items:center;justify-content:space-between;height:67px;padding:0 24px 0 25px;border-bottom:1px solid var(--dd-line)}.dd-modal>header h3{font-size:18px;font-weight:600}.dd-page .dd-modal-close{display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:8px;background:transparent;color:#6b7280;box-shadow:none}.dd-page .dd-modal-close:hover:not(:disabled){background:#f3f4f6;color:var(--dd-ink)}.dd-modal-body{flex:1;min-height:0;overflow-y:auto;padding:23px 25px 11px}.dd-modal-body label{display:block;margin-bottom:14px}.dd-modal-body label>span{display:block;margin-bottom:7px;font-size:14.5px;font-weight:600;line-height:22px}.dd-modal-body input{display:block;width:100%;height:40px;padding:0 14px;border:1px solid var(--dd-line);border-radius:8px;background:var(--dd-ground);color:var(--dd-ink);font-size:14.5px}.dd-modal-body input::placeholder{color:var(--dd-faint)}.dd-modal-body input:focus-visible{border-color:var(--dd-indigo);background:#fff;box-shadow:0 0 0 3px #6366f126}.dd-modal-body input[readonly]{color:var(--dd-text)}.dd-modal-body label.invalid input{border-color:#f87171}.dd-modal-body em{display:block;margin-top:5px;color:#dc2626;font-size:12px;font-style:normal}.dd-project-modal{width:640px}.dd-modal-body textarea{display:block;width:100%;min-height:40px;padding:9px 14px;border:1px solid var(--dd-line);border-radius:8px;background:var(--dd-ground);color:var(--dd-ink);font:inherit;font-size:14.5px;line-height:1.5;resize:vertical}.dd-modal-body textarea:focus-visible{border-color:var(--dd-indigo);background:#fff;box-shadow:0 0 0 3px #6366f126}.dd-modal-body .invalid>textarea,.dd-modal-body .invalid>.select,.dd-modal-body .invalid>.dd-chips{border-color:#f87171}.dd-modal-body label>span i,.dd-field-title i,.dd-subfield>span i{margin-left:2px;color:#dc2626;font-style:normal}.dd-modal-body label>span small,.dd-field-title small,.dd-subfield>span small{margin-left:8px;color:var(--dd-faint);font-size:12px;font-weight:400}.dd-field-group{margin-bottom:16px}.dd-field-title{display:flex;align-items:center;margin-bottom:8px;font-size:14.5px;font-weight:600;line-height:22px}.dd-field-title .dd-link{margin-left:auto}.dd-field-hint{margin:0 0 8px;color:var(--dd-sub);font-size:12.5px;line-height:1.6}.dd-field-hint.warn{color:#b45309}.dd-product{min-width:0;margin:0 0 10px;padding:10px 14px 4px;border:1px solid var(--dd-line);border-radius:10px;background:#fff}.dd-product legend{display:flex;align-items:center;gap:10px;width:100%;padding:0;margin-bottom:4px;color:var(--dd-sub);font-size:12.5px;font-weight:600;float:left}.dd-product legend+*{clear:both}.dd-product legend .dd-link{margin-left:auto}.dd-page .dd-link{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 6px;border:0;border-radius:6px;background:transparent;color:var(--dd-indigo-deep);font-size:13px;font-weight:500;box-shadow:none}.dd-page .dd-link:hover:not(:disabled){background:var(--dd-indigo-soft)}.dd-page .dd-link.danger{color:#dc2626}.dd-page .dd-link.danger:hover:not(:disabled){background:#fee2e2}.dd-subfield{display:block;margin-bottom:12px}.dd-subfield>span{display:block;margin-bottom:6px;color:var(--dd-text);font-size:13.5px;font-weight:600}.dd-top>span{font-size:14.5px;color:var(--dd-ink);margin-bottom:7px;line-height:22px}.dd-chips{display:flex;flex-wrap:wrap;gap:6px;padding:1px;border:1px solid transparent;border-radius:8px}.dd-page .dd-chips button{display:inline-flex;align-items:center;gap:4px;max-width:100%;height:30px;padding:0 11px;border:1px solid var(--dd-line);border-radius:15px;background:var(--dd-ground);color:var(--dd-text);font-size:13px;font-weight:500;box-shadow:none;overflow:hidden;text-overflow:ellipsis}.dd-page .dd-chips button.on{border-color:#a5b4fc;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep)}.dd-page .dd-chips button small{color:#b45309;font-size:11px}.dd-qty-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.dd-modal-body label.dd-qty{display:flex;align-items:center;gap:8px;margin:0;padding:0 4px 0 10px;border:1px solid var(--dd-line);border-radius:8px;background:var(--dd-ground)}.dd-modal-body label.dd-qty>span{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;color:var(--dd-text);line-height:1}.dd-modal-body label.dd-qty input{width:64px;height:32px;padding:0 8px;text-align:center;background:#fff}.dd-modal-body label.dd-qty.invalid{border-color:#f87171}.dd-product-add{position:relative;display:flex;justify-content:center;margin:4px 0 2px}.dd-product-add:before{content:"";position:absolute;top:50%;left:0;right:0;border-top:1px dashed #d1d5db}.dd-page .dd-product-add button{position:relative;display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid #c7d2fe;border-radius:50%;background:#fff;color:var(--dd-indigo-deep);box-shadow:none}.dd-page .dd-product-add button:hover:not(:disabled){background:var(--dd-indigo-soft)}.dd-project-view dl{display:grid;grid-template-columns:9em minmax(0,1fr);gap:10px 14px;margin:0;font-size:14px;line-height:1.6}.dd-project-view dt{color:var(--dd-sub)}.dd-project-view dd{margin:0;color:var(--dd-ink);overflow-wrap:anywhere;white-space:pre-wrap}.dd-project-view ul{margin:0;padding:0;list-style:none}.dd-project-view li+li{margin-top:6px}.dd-project-view li b{margin-right:8px;font-weight:600}.dd-project-view li span{display:inline-block;margin-right:8px;padding:0 8px;border-radius:10px;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep);font-size:12.5px}.dd-project-view li p{margin:2px 0 0;color:var(--dd-text)}@media(max-width:600px){.dd-project-view dl{grid-template-columns:minmax(0,1fr);gap:2px}.dd-project-view dd{margin-bottom:10px}.dd-modal-body textarea{font-size:16px}}.dd-modal>footer{flex:none;display:flex;justify-content:flex-end;gap:12px;padding:17px 25px;border-top:1px solid var(--dd-line)}.dd-modal>footer .dd-btn{min-width:64px;font-size:14.5px}@media(max-width:900px){.dd-page{height:auto;min-height:0}.dd-shell{display:block}.dd-page .dd-list-toggle{display:none}.dd-shell.list-collapsed>.dd-sidebar{visibility:visible;overflow:visible;border-bottom:1px solid var(--dd-line)}.dd-sidebar{position:relative;z-index:20;border-right:0;border-bottom:1px solid var(--dd-line)}.dd-picker{display:flex;align-items:center;gap:6px;padding:10px 12px}.dd-page .dd-picker-trigger{flex:1;min-width:0;display:flex;align-items:center;gap:8px;height:42px;padding:0 12px;border:1px solid var(--dd-line);border-radius:8px;background:var(--dd-ground);color:var(--dd-ink);text-align:left;box-shadow:none}.dd-picker-trigger strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600}.dd-picker-placeholder{flex:1;color:var(--dd-faint);font-size:14px}.dd-picker-trigger .dd-icon{color:var(--dd-sub);transition:transform .15s}.dd-sidebar.open .dd-picker-trigger{border-color:#a5b4fc;background:#fff}.dd-sidebar.open .dd-picker-trigger .dd-icon:last-child{transform:rotate(180deg)}.dd-picker .dd-project-actions{position:static;display:flex}.dd-page .dd-picker .dd-project-actions button{width:34px;height:34px}.dd-picker-panel{display:none;position:absolute;top:calc(100% - 4px);left:12px;right:12px;max-height:min(420px,70vh);max-height:min(420px,70dvh);border:1px solid var(--dd-line);border-radius:10px;background:#fff;box-shadow:0 16px 40px -12px #1118274d;overflow:hidden}.dd-sidebar.open .dd-picker-panel{display:flex}.dd-picker-panel .dd-search{padding:10px}.dd-picker-panel .dd-project-actions{display:none!important}.dd-picker-panel .dd-project p:last-of-type{padding-right:0}.dd-canvas-scroll{flex:none;height:max(480px,72vh)}}@media(max-width:600px){.dd-head{flex-wrap:wrap;gap:8px 10px;height:auto;padding:12px}.dd-head-actions{width:100%;margin-left:0;gap:8px}.dd-head-actions .dd-btn{flex:1;padding:0 10px}.dd-search{padding:12px}.dd-flow-toolbar{flex-wrap:wrap;gap:6px 12px;padding:9px 12px}.dd-flow-tools{gap:8px}.dd-modal>header,.dd-modal>footer{padding-left:16px;padding-right:16px}.dd-modal-body{padding:16px 16px 4px}.dd-page .dd-chip-btn,.dd-page .dd-deadline button{height:34px;padding:0 12px;font-size:13px}.dd-page .dd-note input,.dd-page .dd-form input:not([type=checkbox]):not([type=radio]),.dd-page .dd-form select,.dd-page .dd-form textarea,.dd-deadline input,.dd-deadline select{height:38px;font-size:16px}.dd-page .dd-form textarea{height:auto}.dd-item-main{padding-left:0}.dd-preview>header .dd-btn{padding:0 10px}}.dd-catalog-page{height:auto;min-height:calc(100dvh - 65px)}.dd-catalog-body{width:100%;max-width:760px;margin:0 auto;padding:20px 16px 48px}.dd-catalog-section{margin-top:16px;padding:18px 20px;border:1px solid var(--dd-line);border-radius:12px;background:#fff}.dd-catalog-section h3{margin-bottom:12px;font-size:16px;font-weight:600}.dd-catalog-product{margin-bottom:12px;padding:12px 14px;border:1px solid var(--dd-line);border-radius:10px;background:var(--dd-ground)}.dd-catalog-product .dd-chips{margin:10px 0}.dd-catalog-section>.dd-chips{margin-bottom:10px}.dd-catalog-row{display:flex;align-items:center;gap:8px}.dd-catalog-row input{flex:1;min-width:0;height:38px;padding:0 12px;border:1px solid var(--dd-line);border-radius:8px;background:#fff;color:var(--dd-ink);font-size:14px}.dd-catalog-row input:focus-visible{border-color:var(--dd-indigo);box-shadow:0 0 0 3px #6366f126}.dd-chip{display:inline-flex;align-items:center;gap:2px;max-width:100%;height:28px;padding:0 4px 0 11px;border:1px solid #c7d2fe;border-radius:14px;background:var(--dd-indigo-soft);color:var(--dd-indigo-deep);font-size:13px;overflow-wrap:anywhere}.dd-page .dd-chip button{display:grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none}.dd-page .dd-chip button:hover:not(:disabled){background:#6366f126}@media(max-width:600px){.dd-catalog-section{padding:14px 12px}.dd-catalog-row input{font-size:16px}}.dd-part-head,.dd-part-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1.2fr) auto;gap:8px;align-items:center}.dd-part-head{margin-bottom:6px;color:var(--dd-sub);font-size:12.5px;font-weight:600}.dd-part-row{margin-bottom:8px}.dd-part-row input{min-width:0;height:38px;padding:0 12px;border:1px solid var(--dd-line);border-radius:8px;background:#fff;color:var(--dd-ink);font-size:14px}.dd-part-row input:focus-visible{border-color:var(--dd-indigo);box-shadow:0 0 0 3px #6366f126}@media(max-width:600px){.dd-part-head{display:none}.dd-part-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:10px;border:1px solid var(--dd-line);border-radius:10px;background:var(--dd-ground)}.dd-part-row input{font-size:16px}.dd-part-row input:nth-child(3){grid-column:1 / 2}}.dd-part{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;margin-bottom:8px}.dd-part-pick{flex:1;min-width:0}.dd-part-meta{display:block;margin-top:4px;color:#4b5563;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.dd-modal-body .dd-part-qty{flex:none;width:76px;text-align:center}.dd-part>.dd-link{margin-top:7px}.dd-part>em{flex-basis:100%;margin-top:-2px}.dd-modal-body .dd-part.invalid .dd-part-qty,.dd-modal-body .dd-part.invalid .select{border-color:#f87171}.dd-catalog-section>.dd-field-hint{margin-bottom:12px}.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: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--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;touch-action:none}.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))}.dfe-page{--dfe-ink: #263146;--dfe-sub: #657187;--dfe-faint: #8a92a3;--dfe-line: #e6e9f1;--dfe-canvas: #fafbff;display:flex;flex-direction:column;height:calc(100dvh - 51px);min-height:540px;background:var(--dfe-canvas);color:var(--dfe-ink)}.dfe-icon{flex:none}.dfe-page button:not(.select){display:inline-flex;align-items:center;justify-content:center;gap:5px}.dfe-head{flex:none;display:flex;align-items:center;gap:10px;min-height:53px;padding:0 18px;border-bottom:1px solid var(--border);background:#fff}.dfe-title{display:flex;align-items:center;gap:12px;min-width:0;margin-right:auto}.dfe-title h2{margin:0;font-size:15px;white-space:nowrap}.dfe-status{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:5px;font-size:11px;font-weight:700;white-space:nowrap;background:#e6f8f0;color:#0a9d78}.dfe-status i{width:6px;height:6px;border-radius:50%;background:currentColor}.dfe-status.dirty{background:#fff4dc;color:#b7791f}.dfe-status.busy{background:#f0efff;color:#6564ba}.dfe-head-actions{display:flex;align-items:center;gap:8px}.dfe-page .dfe-btn{padding:6px 12px;border-radius:6px;font-size:12px;box-shadow:none}.dfe-page .dfe-btn.primary{box-shadow:0 5px 12px #6355c738}.dfe-page .dfe-btn.accent{border-color:transparent;background:var(--accent-soft);color:var(--primary);padding:5px 10px}.dfe-page .dfe-btn.accent:hover:not(:disabled){background:#e7e2fa}.dfe-page .dfe-btn.quiet{padding:5px 9px;border:0;border-radius:5px;background:#f3f4f8;color:#677085;font-size:11px}.dfe-page .dfe-btn.quiet:hover:not(:disabled){background:#e9ebf2;color:var(--dfe-ink)}.dfe-page .dfe-back,.dfe-page .dfe-tool,.dfe-page .dfe-icon-btn{flex:none;width:30px;height:30px;padding:0;border:0;border-radius:6px;background:transparent;box-shadow:none;color:#677085}.dfe-page .dfe-back:hover,.dfe-page .dfe-tool:hover:not(:disabled),.dfe-page .dfe-icon-btn:hover:not(:disabled){background:#f3f4f8;color:var(--dfe-ink)}.dfe-page .dfe-icon-btn{width:28px;height:28px}.dfe-page .dfe-icon-btn.danger:hover:not(:disabled){background:#ffebec;color:var(--danger)}.dfe-page .dfe-tool:disabled,.dfe-page .dfe-icon-btn:disabled{opacity:.32}.dfe-loading{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;text-align:center;color:var(--dfe-sub);font-size:13px}.dfe-loading p{margin:0}.dfe-loading strong{color:var(--dfe-ink);font-size:15px}.dfe-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 376px}.dfe-stage{display:flex;flex-direction:column;min-width:0;min-height:0}.dfe-toolbar{flex:none;display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border-bottom:1px solid var(--border);background:#fff}.dfe-toolbar h3{margin:0;font-size:12px;white-space:nowrap}.dfe-count{margin-right:4px;color:#70798c;font-size:11px;white-space:nowrap}.dfe-page .dfe-check{padding:3px 9px;border:0;border-radius:99px;box-shadow:none;font-size:11px;background:#e6f8f0;color:#0a9d78}.dfe-page .dfe-check.warn{background:#fff4dc;color:#b7791f}.dfe-page .dfe-check.error{background:#ffebec;color:#dc4b57}.dfe-zoom{display:flex;margin-left:auto;border:1px solid var(--dfe-line);border-radius:6px;overflow:hidden;background:#fff}.dfe-page .dfe-zoom button{width:28px;height:26px;padding:0;border:0;border-radius:0;box-shadow:none;background:#fff;color:#677085;font-size:11px}.dfe-page .dfe-zoom button+button{border-left:1px solid var(--dfe-line)}.dfe-page .dfe-zoom button:hover{background:#f3f4f8;color:var(--dfe-ink)}.dfe-page .dfe-zoom .dfe-zoom-value{width:48px;font-variant-numeric:tabular-nums}.dfe-canvas{position:relative;flex:1;min-height:0;background:var(--dfe-canvas)}.dfe-canvas .react-flow{background:var(--dfe-canvas)}.dfe-canvas .react-flow__node{cursor:grab}.dfe-canvas .react-flow__node.dragging{cursor:grabbing;z-index:1000!important}.dfe-canvas .react-flow__node:focus,.dfe-canvas .react-flow__node:focus-visible,.dfe-canvas .react-flow__edge:focus,.dfe-canvas .react-flow__edge:focus-visible{outline:none}.dfe-canvas .react-flow__minimap{border:1px solid var(--dfe-line);border-radius:9px;overflow:hidden;background:#fff;box-shadow:0 8px 22px #24304e12}.dfe-guide{position:absolute;z-index:2000;border-left:1px dashed var(--primary);border-top:1px dashed var(--primary);pointer-events:none}.dfe-empty{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;pointer-events:none;color:var(--dfe-sub);font-size:13px}.dfe-empty strong{color:var(--dfe-ink);font-size:15px}.dfe-empty p{margin:0 0 8px}.dfe-empty button{pointer-events:auto;padding:7px 14px;border-radius:6px;font-size:12px}.dfe-node{position:relative;box-sizing:border-box;width:230px;height:132px;padding:13px 15px 0;border:1px solid #e1e5ee;border-radius:12px;background:#fff;color:var(--dfe-ink);box-shadow:0 8px 22px #24304e12;font-size:12px;line-height:1.5;transition:border-color .12s ease,box-shadow .12s ease}.react-flow__node:hover .dfe-node{border-color:#cfd4e6}.dfe-node.has-error{border-color:#f0a9ae}.dfe-node.selected,.react-flow__node:hover .dfe-node.selected{border-color:var(--primary);box-shadow:0 0 0 3px #6355c72e,0 10px 26px #24304e1a}.react-flow__node.dragging .dfe-node{box-shadow:0 0 0 3px #6355c72e,0 18px 36px #24304e2e}.dfe-node.droppable{border-color:var(--primary-pale);border-style:dashed}.dfe-node-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px}.dfe-node-head strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;line-height:21px}.dfe-node-badge{flex:none;padding:1px 7px;border-radius:99px;background:#f1f3f7;color:#818a9a;font-size:10px;font-weight:700;line-height:16px}.dfe-node-flag{flex:none;width:18px;height:18px;border-radius:50%;background:#dc4b57;color:#fff;font-size:12px;font-weight:700;line-height:18px;text-align:center}.dfe-node-row{display:flex;align-items:center;gap:7px;height:22px;color:var(--dfe-sub)}.dfe-node-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dfe-node-row .dfe-icon{color:#7b8498}.dfe-node-row.empty,.dfe-node-row.empty .dfe-icon{color:#a7adba}.dfe-node-foot{position:absolute;left:15px;right:15px;bottom:0;display:flex;align-items:center;justify-content:space-between;height:34px;border-top:1px solid #eceef4;color:#526079}.dfe-node-foot>span,.dfe-node-marks span{display:inline-flex;align-items:center;gap:5px}.dfe-node-marks{gap:8px!important;color:#8f86dc;font-size:11px}.dfe-node.dfe-join{width:64px;height:86px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.dfe-join-mark{position:relative;box-sizing:border-box;width:64px;height:64px;display:grid;place-items:center;border:2px solid var(--primary);border-radius:50%;background:#fff;color:var(--primary);box-shadow:0 8px 22px #24304e17;transition:box-shadow .12s ease}.dfe-join-mark:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:2px solid currentColor;border-radius:50%;background:var(--accent-soft);opacity:.9}.dfe-join-mark b{position:relative;font-size:18px;line-height:1}.dfe-join.or .dfe-join-mark{border-color:#d9822b;color:#c26a12}.dfe-join.or .dfe-join-mark:before{background:#fff3e2}.dfe-join.has-error .dfe-join-mark{border-color:#e2636d}.dfe-join .dfe-node-flag{position:absolute;top:-4px;right:-4px}.dfe-join.selected .dfe-join-mark,.react-flow__node.dragging .dfe-join-mark{box-shadow:0 0 0 4px #6355c733,0 10px 26px #24304e1f}.dfe-join-name{position:absolute;top:67px;left:-28px;width:120px;height:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dfe-sub);font-size:11.5px;font-weight:600;line-height:19px;text-align:center}.dfe-join.droppable .dfe-join-mark{border-style:dashed}.dfe-canvas .dfe-join .react-flow__handle-left,.dfe-canvas .dfe-join .react-flow__handle-right{top:32px}.dfe-canvas .dfe-join .react-flow__handle.dfe-drop-zone{top:0;width:64px;height:64px;border-radius:50%}.dfe-canvas .react-flow__handle.dfe-anchor{width:1px;height:1px;min-width:0;min-height:0;border:0;background:transparent;opacity:0;pointer-events:none!important}.dfe-canvas .react-flow__handle.dfe-drop-zone{top:0;left:0;width:100%;height:100%;transform:none;border:2px solid transparent;border-radius:12px;box-sizing:border-box;background:transparent;pointer-events:none!important;z-index:3}.dfe-node.droppable .react-flow__handle.dfe-drop-zone{pointer-events:all!important}.dfe-node.droppable .react-flow__handle.dfe-drop-zone.connectingto{border-color:var(--danger);background:#dc26260d;cursor:not-allowed}.dfe-node.droppable .react-flow__handle.dfe-drop-zone.connectingto.valid{border-color:var(--primary);background:#6355c714;cursor:copy}.dfe-canvas .react-flow__handle.dfe-outlet{right:-11px;width:22px;height:22px;display:grid;place-items:center;border:1.5px solid var(--primary);border-radius:50%;background:#fff;color:var(--primary);box-shadow:0 2px 8px #463b7d2e;opacity:0;pointer-events:none!important;cursor:pointer;transition:opacity .12s ease,background .12s ease,color .12s ease;z-index:4}.dfe-canvas .react-flow__handle.dfe-outlet:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px}.dfe-canvas .react-flow__handle.dfe-outlet .dfe-icon{pointer-events:none}.dfe-canvas .react-flow__handle.dfe-outlet:hover{background:var(--primary);color:#fff}.dfe-canvas .react-flow__handle.dfe-outlet-dot{bottom:-7px;width:10px;height:10px;border:2px solid #fff;background:var(--primary);box-shadow:0 0 0 1px var(--primary);opacity:0;pointer-events:none!important;cursor:crosshair;transition:opacity .12s ease;z-index:4}.dfe-canvas .react-flow__handle.dfe-outlet-dot:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px}.react-flow__node:hover .dfe-outlet,.dfe-node.selected .dfe-outlet,.react-flow__node:hover .dfe-outlet-dot,.dfe-node.selected .dfe-outlet-dot{opacity:1!important;pointer-events:all!important}.dfe-node.droppable .dfe-outlet,.dfe-node.droppable .dfe-outlet-dot{opacity:0!important;pointer-events:none!important}.dfe-canvas .react-flow__edge-path{stroke:#b3b9d6;stroke-width:2;transition:stroke .12s ease}.dfe-canvas .react-flow__edge:hover .react-flow__edge-path{stroke:#8990b8}.dfe-canvas .react-flow__edge.selected .react-flow__edge-path{stroke:var(--primary);stroke-width:2.5}.dfe-canvas .react-flow__edge.dfe-edge-drop .react-flow__edge-path{stroke:var(--primary);stroke-width:2.5;stroke-dasharray:7 5}.dfe-canvas .react-flow__connection-path{stroke:var(--primary);stroke-width:2;stroke-dasharray:6 4}.dfe-edge-hit{fill:none;stroke:transparent;stroke-width:28;pointer-events:stroke;cursor:pointer}.dfe-edge-tools{position:absolute;z-index:5;display:flex;gap:4px;padding:4px;pointer-events:all;opacity:0;transition:opacity .12s ease}.dfe-edge-tools.show,.dfe-edge-tools.drop,.dfe-edge-tools:focus-within{opacity:1}@media(hover:none){.dfe-edge-tools{opacity:1}}.dfe-page .dfe-edge-tools button{width:24px;height:24px;padding:0;border:1.5px solid var(--primary);border-radius:50%;background:#fff;color:var(--primary);box-shadow:0 2px 8px #463b7d2e}.dfe-page .dfe-edge-tools .dfe-edge-add:hover,.dfe-edge-tools.drop .dfe-edge-add{background:var(--primary);color:#fff}.dfe-page .dfe-edge-tools .dfe-edge-del{border-color:#f0b4b8;color:var(--danger)}.dfe-page .dfe-edge-tools .dfe-edge-del:hover{border-color:var(--danger);background:var(--danger);color:#fff}.dfe-side{display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid var(--border);background:#fff}.dfe-side-head{flex:none;display:flex;align-items:center;gap:6px;min-height:40px;padding:8px 12px 8px 16px;border-bottom:1px solid var(--border);box-sizing:border-box}.dfe-side-head>div{flex:1;min-width:0}.dfe-side-head h3{margin:0;font-size:13px;line-height:1.4}.dfe-side-head p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dfe-faint);font-size:11px;line-height:1.4}.dfe-side-body{flex:1;min-height:0;overflow-y:auto;padding:4px 16px 28px}.dfe-side-body>section{padding:14px 0;border-top:1px solid #eef0f5}.dfe-side-body>section:first-child,.dfe-side-body>.dfe-issues+section,.dfe-side-body>.dfe-stats+section{border-top:0}.dfe-side-body>.dfe-hint{margin-top:0}.dfe-side h4{display:flex;align-items:center;gap:6px;margin:0 0 10px;font-size:12px;font-weight:700;color:var(--dfe-ink)}.dfe-side em{padding:0 6px;border-radius:99px;background:#f1f3f7;color:#677085;font-size:11px;font-style:normal;font-weight:600;line-height:16px}.dfe-side em:empty{display:none}.dfe-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.dfe-section-head h4{margin:0}.dfe-field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.dfe-field:last-child{margin-bottom:0}.dfe-field>span{display:flex;align-items:center;gap:6px;color:#526079;font-size:12px;font-weight:600}.dfe-side input:not([type=checkbox]),.dfe-side textarea{width:100%;box-sizing:border-box;padding:7px 10px;font-size:13px}.dfe-side textarea{min-height:72px}.dfe-side .select{min-height:34px;padding:6px 10px;font-size:13px}.dfe-side input[aria-invalid=true]{border-color:#e9959b;background:snow}.dfe-hint{margin:4px 0 0;color:var(--dfe-faint);font-size:11.5px;line-height:1.55}.dfe-due{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:13px}.dfe-side .dfe-due input{width:68px;text-align:center}.dfe-page .dfe-mini{padding:3px 8px;border:0;border-radius:5px;background:var(--accent-soft);color:var(--primary);box-shadow:none;font-size:11px}.dfe-item{margin-bottom:8px;padding:10px;border:1px solid var(--dfe-line);border-radius:10px;background:#fcfcff}.dfe-item-head{display:flex;align-items:center;gap:2px}.dfe-item-head input{flex:1;min-width:0;margin-right:4px}.dfe-item-no{flex:none;width:20px;height:20px;margin-right:6px;border-radius:50%;background:#eef0f7;color:#677085;font-size:11px;font-weight:700;line-height:20px;text-align:center}.dfe-item-opts{display:flex;flex-wrap:wrap;gap:4px 16px;margin:9px 0}.dfe-item-opts label{display:inline-flex;align-items:center;gap:6px;font-size:12px;cursor:pointer}.dfe-item-opts label.disabled{opacity:.5;cursor:not-allowed}.dfe-side .dfe-item>input,.dfe-side .dfe-item-note input{font-size:12px}.dfe-item-kind,.dfe-seg{display:flex;gap:0;margin-top:9px;padding:2px;border-radius:7px;background:#eef0f6}.dfe-seg{margin-top:0}.dfe-page .dfe-item-kind button,.dfe-page .dfe-seg button{flex:1;padding:3px 6px;border:0;border-radius:5px;background:transparent;box-shadow:none;color:#677085;font-size:11.5px;font-weight:500}.dfe-page .dfe-seg button{padding:6px;font-size:12.5px}.dfe-page .dfe-item-kind button.on,.dfe-page .dfe-seg button.on{background:#fff;color:var(--primary);font-weight:700;box-shadow:0 1px 3px #24304e24}.dfe-seg b{margin-right:2px;font-size:13px}.dfe-item-note{margin:8px 0}.dfe-item-note .dfe-hint code{padding:0 3px;border-radius:3px;background:#eef0f6;font-size:11px}.dfe-ref{display:flex;align-items:center;gap:8px;margin-bottom:6px;padding:6px 4px 6px 10px;border:1px solid var(--dfe-line);border-radius:9px;background:#fcfcff;color:#7b8498}.dfe-ref>div{flex:1;min-width:0}.dfe-ref b,.dfe-ref span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dfe-ref b{color:var(--dfe-ink);font-size:12.5px;font-weight:600}.dfe-ref span{color:var(--dfe-faint);font-size:11px}.dfe-ref.broken{border-color:#f0a9ae;background:#fff7f7;color:#c23842}.dfe-ref.broken span{color:#c23842;white-space:normal}.dfe-ref-add{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;margin-top:8px}.dfe-ref-add .select:only-child{grid-column:1 / -1}.dfe-vars{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--dfe-faint);font-size:11px}.dfe-page .dfe-vars button:not(.link-btn){padding:1px 7px;border:0;border-radius:5px;background:#f3f4f8;color:#526079;box-shadow:none;font-size:11px}.dfe-page .dfe-vars button:not(.link-btn):hover{background:var(--accent-soft);color:var(--primary)}.dfe-page .dfe-vars .link-btn,.dfe-page .dfe-due .link-btn{padding:0 2px;font-size:11.5px}.dfe-page .dfe-vars .link-btn{margin-left:auto}.dfe-preview{margin:2px 0 0;padding:8px 10px;border-radius:8px;background:#f6f7fb;font-size:12px;line-height:1.6;overflow-wrap:anywhere}.dfe-preview b{display:block;color:var(--dfe-faint);font-size:11px;font-weight:600}.dfe-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.dfe-chip{display:inline-flex;align-items:center;gap:2px;max-width:100%;padding:2px 3px 2px 9px;border-radius:99px;background:var(--accent-soft);color:#4b3fa8;font-size:12px}.dfe-chip.gone{background:#ffebec;color:var(--danger)}.dfe-page .dfe-chip button{width:18px;height:18px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;box-shadow:none;font-size:14px;line-height:1}.dfe-page .dfe-chip button:hover{background:#6355c729}.dfe-page .dfe-chip-add{padding:2px 9px;border:1px dashed #c9cde0;border-radius:99px;background:#fff;color:var(--primary);box-shadow:none;font-size:12px;font-weight:500}.dfe-chips .dfe-hint{margin:0}.dfe-picker-list{margin-top:8px;padding:8px;border:1px solid var(--dfe-line);border-radius:9px}.dfe-picker-list>input{margin-bottom:6px}.dfe-picker-rows{max-height:196px;overflow-y:auto}.dfe-picker-rows label{display:flex;align-items:center;gap:8px;padding:4px;border-radius:6px;font-size:12.5px;cursor:pointer}.dfe-picker-rows label:hover{background:#f6f7fb}.dfe-picker-rows label.disabled{opacity:.5;cursor:not-allowed}.dfe-picker-rows label span{flex:none;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dfe-picker-rows small{min-width:0;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dfe-faint);font-size:11px}.dfe-flag{flex:none;margin-left:4px;color:#b45309;font-size:11px;font-style:normal;white-space:nowrap}.dfe-edge-row{display:flex;align-items:center;gap:6px;margin-top:6px;color:var(--dfe-faint)}.dfe-edge-row .select{flex:1}.dfe-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.dfe-page .dfe-actions>button{padding:6px 12px;border-radius:6px;box-shadow:none;font-size:12px}.dfe-actions .dfe-connect{flex:1 1 150px}.dfe-tag{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:99px;background:#eaf1ff;color:#3477d4;font-size:11px;font-weight:600}.dfe-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:12px 0 2px}.dfe-stats div{padding:9px;border-radius:10px;background:#f6f7fb}.dfe-stats b{display:block;font-size:20px;line-height:1.3}.dfe-stats span{color:var(--dfe-faint);font-size:11px}.dfe-issues{margin:10px 0 0;padding:0;list-style:none}.dfe-issues li{display:flex;align-items:flex-start;gap:7px;margin-bottom:6px;padding:7px 9px;border-radius:8px;background:#fff8e6;color:#946410;font-size:12px;line-height:1.5}.dfe-issues li.error{background:#fff1f2;color:#c23842}.dfe-issues .dfe-icon{margin-top:2px}.dfe-page .dfe-issues .link-btn{display:inline;padding:0;color:inherit;font-size:12px;font-weight:500;text-align:left;white-space:normal}.dfe-ok{display:flex;align-items:center;gap:6px;margin:0;color:#0a9d78;font-size:12.5px}.dfe-tips{margin:0;padding-left:16px;color:var(--dfe-sub);font-size:12px;line-height:1.6}.dfe-tips li{margin-bottom:6px}.dfe-tips b{color:var(--primary)}.dfe-tips kbd{padding:0 4px;border:1px solid var(--dfe-line);border-radius:4px;background:#f6f7fb;font:inherit;font-size:11px}@media(max-width:900px){.dfe-page{height:auto;min-height:calc(100dvh - 57px)}.dfe-head{position:sticky;top:0;z-index:20;flex-wrap:wrap;padding:8px 12px}.dfe-body{display:block}.dfe-toolbar{flex-wrap:wrap;padding:6px 12px}.dfe-canvas{flex:none;height:58vh;min-height:380px}.dfe-side{border-left:0;border-top:1px solid var(--border)}.dfe-side-body{overflow:visible}}@media(max-width:600px){.dfe-head-actions{margin-left:auto}.dfe-head-actions .dfe-btn:not(.primary),.dfe-count,.dfe-toolbar h3{display:none}.dfe-canvas .react-flow__minimap{display:none}}.dfe-bitable{display:flex;flex-direction:column;gap:8px}.dfe-bitable>p{display:flex;align-items:baseline;gap:8px;margin:0;color:#24304e;font-size:12.5px;overflow-wrap:anywhere}.dfe-bitable>p b{flex:none;color:#526079;font-size:12px;font-weight:600}.dfe-bitable>p em,.dfe-bitable .dfe-field>span em{padding:0 6px;border-radius:4px;background:#eef0f6;color:#677085;font-size:11px;font-style:normal;font-weight:500}.dfe-bitable-link{display:flex;gap:6px}.dfe-bitable-link input{flex:1;min-width:0}.dfe-bitable .dfe-field{margin-bottom:0}.dfe-bitable .link-btn{align-self:flex-start}.dfe-hint.warn{color:#b45309}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-vietnamese-wght-normal-CtlIRbEm.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-latin-ext-wght-normal-MQgHevqp.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/public-sans-latin-wght-normal-DdeTHZLK.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-cyrillic-ext-wght-italic-Cgu7qCFu.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-cyrillic-wght-italic-BWw7-oF9.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-math-wght-italic-CnuSFIyO.woff2) format("woff2-variations");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-symbols-wght-italic-BMZuTBzt.woff2) format("woff2-variations");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-vietnamese-wght-italic-BGkqizij.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-latin-ext-wght-italic-BC6VAxdc.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lora Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/assets/lora-latin-wght-italic-DBI-iqMr.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f8f9fb;--panel: #ffffff;--border: #e8e5f1;--text: #28243e;--muted: #6e697f;--primary: #6355c7;--primary-hover: #5143b1;--primary-pale: #a294e8;--danger: #dc2626;--success: #059669;--warn: #d97706;--surface-2: #f0f0f5;--accent-soft: #f1eefb;--shadow-sm: 0 1px 3px rgba(40, 36, 62, .05);--shadow-md: 0 16px 40px -28px rgba(40, 36, 62, .45);--shadow-pop: 0 12px 34px -14px rgba(40, 36, 62, .24);--radius-panel: 14px;--radius-card: 12px;--radius-input: 9px;--font-sans: "Public Sans Variable", system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;--font-display: "Lora Variable", Georgia, "Times New Roman", serif;font-family:var(--font-sans)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}h2{font-size:23px;font-weight:550;letter-spacing:-.025em;line-height:1.35;margin:0 0 14px}h3{font-size:15px;font-weight:600;letter-spacing:-.01em;margin:0 0 12px}h4{font-size:14px;font-weight:600}a{color:var(--primary);text-decoration:none}button{font:inherit;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--panel);border-radius:999px;padding:7px 16px;white-space:nowrap;color:var(--text);box-shadow:var(--shadow-sm);transition:background .12s ease-out,border-color .12s ease-out}button:hover:not(:disabled){background:var(--surface-2);border-color:var(--primary-pale)}button:active:not(:disabled){background:#e7e4f1}button:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6355c72e}button.link-btn{border:none;background:none;box-shadow:none;color:var(--primary);padding:4px 6px;font-size:13px}button.link-btn:hover:not(:disabled){background:none;border-color:transparent;color:var(--primary-hover);text-decoration:underline}button.link-btn.danger{color:var(--muted);border:none}button.link-btn.danger:hover:not(:disabled){color:var(--danger)}button.primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:0 5px 12px #6355c738}button.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}button.primary:active:not(:disabled){background:#453a99}button.danger{color:var(--danger);border-color:#f0c4c4}button.danger:hover:not(:disabled){background:#fef2f2;border-color:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}.user-menu-dropdown button,.combobox-list button,.notif-trigger,.notif-readall,.notif-clear,.notif-item,.error-banner-close,.nav-toggle,.rank-row{box-shadow:none;font-weight:400}.notif-readall:hover:not(:disabled),.notif-clear:hover:not(:disabled),.error-banner-close:hover:not(:disabled){background:none;border-color:transparent}.notif-trigger:hover:not(:disabled),.notif-item:hover:not(:disabled){background:var(--surface-2);border-color:transparent}input,select,textarea{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-input);background:#fff;color:inherit}textarea{line-height:1.5;resize:vertical;min-height:84px;width:100%;box-sizing:border-box}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=date]{min-height:38px}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;filter:invert(35%) sepia(38%) saturate(1500%) hue-rotate(220deg)}input[type=date]:hover::-webkit-calendar-picker-indicator{opacity:1}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6355c72e}input::placeholder,textarea::placeholder{color:#a09bb0}input[type=checkbox],input[type=radio]{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex-shrink:0;width:18px;height:18px;padding:0;margin:0;border:1.5px solid #cbc6da;background:#fff;cursor:pointer;position:relative;transition:background .12s ease,border-color .12s ease}input[type=checkbox]{border-radius:5px}input[type=radio]{border-radius:50%}input[type=checkbox]:hover:not(:disabled),input[type=radio]:hover:not(:disabled){border-color:var(--primary-pale)}input[type=checkbox]:checked,input[type=radio]:checked{background:var(--primary);border-color:var(--primary)}input[type=checkbox]:checked:after{content:"";position:absolute;left:5px;top:1px;width:4px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(43deg)}input[type=radio]:checked:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:#fff}input[type=checkbox]:disabled,input[type=radio]:disabled{opacity:.5;cursor:not-allowed}.check-inline{display:inline-flex;align-items:center;gap:7px;font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none}.check-inline input[type=checkbox]{flex:none}.select{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;min-height:38px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-input);background:#fff;font-weight:400;font-size:14px;text-align:left;color:var(--text)}.select:hover:not(:disabled){border-color:var(--primary-pale);background:#fff}.select[aria-expanded=true]{border-color:var(--primary);box-shadow:0 0 0 3px #6355c72e}.select-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-value.placeholder{color:#a09bb0}.select-arrow{flex-shrink:0;width:7px;height:7px;margin-right:1px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:translateY(-2px) rotate(45deg);transition:transform .15s ease}.select[aria-expanded=true] .select-arrow{transform:translateY(1px) rotate(225deg);border-color:var(--primary)}.select-list{position:fixed;z-index:60;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:4px;display:flex;flex-direction:column;gap:2px}.select-list button{display:flex;align-items:baseline;gap:8px;width:100%;border:none;background:none;border-radius:8px;padding:8px 10px;font-weight:400;text-align:left}.select-opt-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.select-list button.active{background:var(--accent-soft)}.select-list button[aria-selected=true]{color:var(--primary-hover);font-weight:600}.select-tick{flex-shrink:0;width:4px;height:8px;border:solid var(--primary);border-width:0 2px 2px 0;transform:translateY(-1px) rotate(43deg)}.file-field{display:flex;flex-direction:column;gap:6px}.file-drop{position:relative;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px dashed #d4cfe4;border-radius:var(--radius-card);background:var(--bg)}.file-drop.has-file{border-style:solid;border-color:var(--primary-pale);background:var(--accent-soft)}.file-field .file-native{position:absolute;left:14px;bottom:8px;width:1px;height:1px;opacity:0;pointer-events:none}.file-pick{flex-shrink:0;padding:7px 16px;border:1px solid var(--border);border-radius:999px;background:var(--panel);font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm)}.file-pick:hover{border-color:var(--primary-pale);color:var(--primary-hover)}.file-native:focus-visible+.file-pick,.file-pick:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6355c72e}.file-name{flex:1;min-width:0;font-size:13px;overflow-wrap:anywhere}.file-name.empty{color:var(--muted)}.topbar{display:flex;align-items:center;gap:20px;padding:0 24px;height:56px;background:var(--bg);border-bottom:1px solid var(--border)}.topbar .brand{font-weight:650;font-size:19px;letter-spacing:-.045em}.topbar nav{display:flex;gap:4px}.topbar nav a{padding:6px 12px;border-radius:999px;font-size:14px;line-height:1.4;color:var(--muted)}.topbar nav a:hover{background:var(--surface-2);color:var(--text)}.topbar nav a.active{background:var(--accent-soft);color:var(--primary-hover);font-weight:600}.topbar .spacer{flex:1}.nav-menu{display:flex;align-items:center;min-width:0}.nav-toggle{display:none}.user-menu{position:relative;flex-shrink:0}.user-menu-trigger{display:inline-flex;align-items:center;gap:9px;max-width:260px;padding:4px 8px 4px 4px;border-color:transparent;background:none;box-shadow:none;font-size:14px;font-weight:500}.user-menu-trigger:hover:not(:disabled){background:var(--surface-2);border-color:transparent}.user-avatar{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--primary);font-size:14px;font-weight:600;line-height:1}.user-chevron{flex:none;color:var(--muted)}.user-menu-trigger .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:180px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:6px;display:flex;flex-direction:column;gap:2px;z-index:60}.user-menu-dropdown .menu-role{padding:8px 10px;font-size:13px;border-bottom:1px solid var(--border);margin-bottom:2px}.user-menu-dropdown button{border:none;background:none;text-align:left;padding:8px 10px;border-radius:8px;width:100%}.user-menu-dropdown button:hover{background:var(--bg)}.combobox{position:relative;display:flex;flex-direction:column}.combobox>input{width:100%;box-sizing:border-box}.combobox-list{position:fixed;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:4px;display:flex;flex-direction:column;gap:2px;z-index:60}.combobox-list button{border:none;background:none;text-align:left;padding:8px 10px;border-radius:8px;width:100%;display:flex;flex-direction:column;gap:2px;align-items:stretch;white-space:normal}.combobox-main{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.combobox-sub{font-size:12px;line-height:1.45;color:var(--muted)}.combobox-group{font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--muted);padding:8px 10px 4px}.combobox-foot{font-size:12px;line-height:1.45;color:var(--muted);border-top:1px solid var(--border);margin-top:4px;padding:8px 10px 4px}.combobox-list button.active{background:var(--bg)}.combobox-list button .muted{font-size:12px;white-space:nowrap}.combobox-empty{padding:8px 10px;font-size:13px}.notif-bell{position:relative;flex-shrink:0}.notif-trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1;padding:7px 9px;border:1px solid transparent;background:none;color:var(--text)}.notif-trigger:hover{background:var(--bg)}.notif-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;line-height:16px;text-align:center}.notif-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:320px;max-width:86vw;max-height:70vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);z-index:60}.notif-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-weight:600}.notif-readall{border:none;background:none;color:var(--primary);font-size:13px;padding:2px 4px}.notif-readall:hover{background:none;text-decoration:underline}.notif-actions{display:flex;align-items:center;gap:4px}.notif-clear{border:none;background:none;color:var(--danger);font-size:13px;padding:2px 4px}.notif-clear:hover{background:none;text-decoration:underline}.notif-empty{padding:20px 12px;text-align:center}.notif-list{list-style:none;margin:0;padding:0}.notif-item{display:flex;flex-direction:column;gap:3px;width:100%;text-align:left;border:none;border-bottom:1px solid var(--border);border-radius:0;background:none;padding:10px 12px;white-space:normal}.notif-item:hover{background:var(--bg)}.notif-item.unread{background:var(--accent-soft)}.notif-item.unread:hover{background:#e7e2f8}.notif-text{font-size:14px}.notif-time{font-size:12px}.container{max-width:1200px;margin:24px auto;padding:0 24px}.page-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-bottom:18px}.page-head h2{margin:0 auto 0 0}.page-head .page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.page-head .page-sub{flex-basis:100%;margin:0;font-size:13px;line-height:1.55;color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-panel);padding:22px;box-shadow:var(--shadow-sm)}.panel-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.panel-head h3{margin:0 auto 0 0}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);padding:15px 17px;margin-bottom:12px}.card h4{margin:0 0 6px}.card.clickable{cursor:pointer;transition:border-color .12s ease-out,box-shadow .12s ease-out}.card.clickable:hover{border-color:var(--primary-pale);box-shadow:var(--shadow-md)}.muted{color:var(--muted);font-size:13px}.privacy-consent{display:flex;align-items:center;gap:6px;margin-top:2px;font-size:12px;color:var(--muted)}.privacy-consent input[type=checkbox]{width:14px;height:14px;border-radius:4px}.privacy-consent input[type=checkbox]:checked:after{left:4px;top:1px;width:3px;height:7px;border-width:0 1.6px 1.6px 0}.privacy-consent label{cursor:pointer;line-height:1.4}.row{display:flex;gap:12px;align-items:center}.col{display:flex;flex-direction:column;gap:12px}.kanban{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.DRAFT{background:var(--accent-soft);color:var(--primary-hover)}.badge.PUBLISHED{background:#ecfeff;color:#0e7490}.badge.IN_PROGRESS{background:#fffbeb;color:var(--warn)}.badge.COMPLETED{background:#ecfdf5;color:var(--success)}.badge.CANCELED{background:var(--surface-2);color:var(--muted)}.badge.viewer-sign{background:#fff7e6;color:#b7791f}.badge.viewer-sign.signed{background:#ecfdf5;color:var(--success)}.task-statuses{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.task-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px}.task-origin{max-width:100%;padding:1px 8px;border:0;border-radius:999px;background:var(--accent-soft);color:var(--primary-hover);font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:none}.task-origin:hover:not(:disabled){background:var(--accent-soft);text-decoration:underline}.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.pill.on{background:#ecfdf5;color:var(--success)}.pill.off{background:var(--surface-2);color:var(--muted)}table{width:100%;border-collapse:collapse}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--border);font-size:14px}td{vertical-align:middle;font-variant-numeric:tabular-nums}thead th{font-size:12px;font-weight:600;letter-spacing:.03em;color:var(--muted);background:var(--surface-2);white-space:nowrap}thead th:first-child{border-top-left-radius:8px}thead th:last-child{border-top-right-radius:8px}td{font-variant-numeric:tabular-nums}tbody tr:hover>td{background:var(--surface-2)}tbody tr:last-child>td{border-bottom:none}.table-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.table-actions button{padding:4px 10px;font-size:13px}.error{color:var(--danger);font-size:14px}.success{color:var(--success);font-size:14px}.error-banner{position:sticky;top:0;z-index:20;display:flex;align-items:flex-start;gap:12px;margin-bottom:12px;padding:10px 14px;border:1px solid var(--danger);border-radius:var(--radius-card);background:#fef2f2;color:var(--danger);font-size:14px}.error-banner-text{flex:1;line-height:1.5}.error-banner-close{flex:none;border:none;background:none;color:var(--danger);padding:0 4px;line-height:1.5}.error-banner-close:hover{background:none;opacity:.7}.login-wrap{max-width:360px;margin:10vh auto}button.feishu-login{width:100%;background:var(--panel);border-color:var(--border);color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:500}button.feishu-login svg{flex:none}button.feishu-login:hover:not(:disabled){background:var(--surface-2);border-color:#3370ff}.auth-divider{display:flex;align-items:center;gap:10px;margin:14px 0 10px;color:var(--muted);font-size:12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.pdf-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.pdf-stage{position:relative;display:inline-block;border:1px solid var(--border);box-shadow:var(--shadow-md)}.pdf-zoom{display:inline-flex;align-items:center;gap:4px;margin-left:auto}.pdf-zoom button{min-width:34px;padding-left:10px;padding-right:10px}.pdf-zoom-value{min-width:48px;text-align:center;font-variant-numeric:tabular-nums}.pdf-overlay{position:absolute;top:0;left:0}.field-box{position:absolute;border:2px dashed var(--primary);background:#6355c714;font-size:11px;color:var(--primary);overflow:hidden}.field-box.signed{border-color:var(--success);background:#05966914;color:var(--success)}.field-box.mine{border-color:var(--warn);background:#d977061f;color:var(--warn)}.field-box.companion{border-color:#bb2f8e;background:#bb2f8e1a;color:#bb2f8e}.field-sig{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.editor-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}.sig-row{display:flex;align-items:center;gap:10px}.sig-row>label{flex:none;width:42px;white-space:nowrap}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#28243e73;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:#fff;border-radius:var(--radius-panel);padding:24px;width:460px;max-width:92vw;box-shadow:var(--shadow-pop)}.sign-fullscreen-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff;z-index:50}.sign-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;background:#fff;display:flex;flex-direction:column;gap:8px;padding:10px 16px;overflow-y:auto}.sign-fullscreen h3{margin:0}.sign-fullscreen .sig-pad-wrap{margin:0 auto}.sig-pad-wrap{position:relative;display:inline-block;line-height:0;max-width:100%}.sig-pad{display:inline-block;line-height:0;border:1px dashed var(--border);border-radius:var(--radius-input)}.sig-overlay{position:absolute;pointer-events:none;line-height:1.3}.sig-hint{top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;text-align:center}.sig-pad .canvas-container{border-radius:8px;background:linear-gradient(45deg,#fafafa 25%,transparent 25%),linear-gradient(-45deg,#fafafa 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#fafafa 75%),linear-gradient(-45deg,transparent 75%,#fafafa 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0}.sig-canvas{display:block;border-radius:8px;touch-action:none}.sig-pad canvas{touch-action:none}@media(max-width:820px){.editor-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.container{margin:12px auto;padding:0 12px}.topbar{padding:0 12px;gap:8px}.topbar .brand{font-size:16px;flex-shrink:0}.topbar .nav-menu{flex-shrink:0;order:-1}.nav-toggle{display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1;padding:6px 9px;border:1px solid transparent;background:none}.topbar nav{display:none;position:fixed;top:56px;left:8px;flex-direction:column;gap:2px;min-width:160px;max-width:calc(100vw - 16px);padding:6px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);z-index:60}.topbar nav.open{display:flex}.topbar nav a{padding:10px 12px;border-radius:8px;color:var(--text)}.topbar .user-menu{flex-shrink:1;min-width:0}.user-menu-trigger{max-width:100%;gap:6px;padding-right:4px}.user-avatar{width:28px;height:28px;font-size:13px}.user-menu-trigger .name{min-width:0}.notif-dropdown{position:fixed;top:56px;left:8px;right:8px;width:auto;max-width:none}.kanban{grid-template-columns:1fr}.panel form input,.panel form select{width:100%}.table-scroll table{white-space:nowrap}}.form-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px 16px;align-items:start}.form-grid>.field{display:flex;flex-direction:column;gap:6px;min-width:0}.form-grid .c3{grid-column:span 3}.form-grid .c4{grid-column:span 4}.form-grid .c5{grid-column:span 5}.form-grid .c7{grid-column:span 7}.form-grid .c12{grid-column:1 / -1}.field-label{font-size:13px;font-weight:600;color:var(--text)}.field-label .req{color:var(--danger);margin-left:3px;font-weight:400}.field-hint{font-size:12px;line-height:1.5;color:var(--muted)}.field-hint.ok{color:var(--success)}.field-hint.err{color:var(--danger)}.field input,.field textarea{width:100%}.field-filled{display:flex;align-items:baseline;gap:6px;min-height:38px;padding:8px 0;line-height:1.4;color:var(--text)}.field-filled>span{min-width:0;overflow-wrap:anywhere}.field-filled .link-btn.edit{flex:none;padding:0 4px;color:var(--primary)}.field-filled .link-btn.edit:hover{color:var(--primary-hover);text-decoration:underline}.form-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--border);padding-top:16px}@media(max-width:760px){.form-grid .c3,.form-grid .c4,.form-grid .c5,.form-grid .c7{grid-column:1 / -1}}.map-layout{display:grid;grid-template-columns:minmax(0,2.4fr) minmax(0,1fr);gap:20px;align-items:start}.map-panel{padding:8px;display:flex;align-items:center;justify-content:center;min-height:360px}.map-side{max-height:72vh;overflow-y:auto}.map-side h3{margin-top:0}.stat-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;margin-bottom:18px}.stat{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-2)}.stat-num{font-family:var(--font-display);font-style:italic;font-size:27px;font-weight:600;line-height:1.2;color:var(--primary);font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--muted)}.geo-stage{position:relative;width:100%}.geo-controls{position:absolute;z-index:1;top:4px;right:6px;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.geo-view-btn{padding:5px 12px;font-size:12px;line-height:1.4;color:var(--primary);background:#ffffffeb;border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:background .15s ease-out,color .15s ease-out}.geo-view-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.geo-zoom{display:flex;overflow:hidden;background:#ffffffeb;border:1px solid var(--border);border-radius:999px}.geo-zoom button{width:30px;padding:3px 0;font-size:16px;line-height:1.3;color:var(--primary);background:none;border:none;cursor:pointer;transition:background .15s ease-out}.geo-zoom button+button{border-left:1px solid var(--border)}.geo-zoom button:hover:not(:disabled){background:var(--primary);color:#fff}.geo-zoom button:disabled{color:var(--muted);cursor:default;opacity:.5}.geo-map{display:block;width:100%;height:auto;max-height:62vh;overflow:visible;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:pan-y}.geo-map:active{cursor:grabbing}.geo-region{transition:fill .12s ease-out}.geo-lines{fill:none;stroke:#6e6699;stroke-width:1.1;stroke-linejoin:round;pointer-events:none}.geo-region.hot{pointer-events:none;stroke:var(--primary-hover);stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 5px 6px rgba(40,36,62,.38))}.geo-boundary{fill:none;stroke:#a89ec9;stroke-width:1.6;vector-effect:non-scaling-stroke;pointer-events:none}.geo-slab,.geo-markers{pointer-events:none}.geo-foot{fill:#3a306847}.geo-stem{stroke:var(--primary-hover);stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}.geo-chip{fill:var(--primary);stroke:#fff;stroke-width:1.6;vector-effect:non-scaling-stroke;filter:drop-shadow(0 3px 4px rgba(40,36,62,.35))}.geo-chip-num{fill:#fff;font-weight:700;text-anchor:middle;dominant-baseline:central;font-variant-numeric:tabular-nums}.geo-marker.hot .geo-stem{stroke-width:3}.geo-marker.hot .geo-chip{fill:var(--primary-hover)}.map-tooltip{position:fixed;z-index:60;pointer-events:none;background:#fffffffa;border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:10px 12px;font-size:13px;line-height:1.5;width:240px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto}.map-tooltip strong{display:block;margin-bottom:4px}.map-tooltip ul{margin:0;padding-left:18px}.rank-list{list-style:none;margin:0;padding:0}.rank-list li{border-bottom:1px solid var(--border)}.rank-list li.hot{background:var(--accent-soft)}.rank-row{display:flex;width:100%;gap:12px;align-items:baseline;padding:7px 8px;font-size:14px;text-align:left;background:none;border:none;border-radius:0;color:inherit}button.rank-row{cursor:pointer}button.rank-row:hover{background:var(--accent-soft)}.rank-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-total{flex:0 0 auto;color:var(--muted);font-variant-numeric:tabular-nums}.button-link{display:inline-block;padding:6px 16px;border:1px solid var(--border);border-radius:999px;background:var(--panel);color:var(--text);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;box-shadow:var(--shadow-sm);transition:background .12s ease-out,border-color .12s ease-out}.button-link:hover{background:var(--surface-2);border-color:var(--primary-pale);color:var(--text)}.button-link.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 5px 12px #6355c738}.button-link.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}tr.hot>td,tbody tr.hot:hover>td{background:var(--accent-soft)}@media(max-width:900px){.map-layout{grid-template-columns:minmax(0,1fr)}.map-side{max-height:none}}.delivery-toast{position:fixed;z-index:2200;top:24px;right:24px;width:min(420px,calc(100vw - 32px));display:flex;align-items:flex-start;gap:12px;padding:13px 15px;border:1px solid;border-radius:12px;box-shadow:var(--shadow-pop);font-size:14px;line-height:1.5}.delivery-toast span{flex:1;min-width:0}.delivery-toast.error{color:var(--danger);border-color:#efadad;background:#fff5f5}.delivery-toast.success{color:var(--success);border-color:#9ddbbd;background:#f0fff6}.delivery-toast button{flex:none;border:0;box-shadow:none;padding:0 3px;color:inherit;background:transparent}@media(max-width:600px){.delivery-toast{top:12px;right:12px}}@media(min-width:901px){body:has(.dd-page,.dfe-page) .topbar{height:65px;background:#fff;border-bottom-color:#e5e7eb}body:has(.dd-page,.dfe-page) .topbar .brand{font-size:20px;font-weight:700;letter-spacing:-.02em;color:#4f46e5}body:has(.dd-page,.dfe-page) .topbar nav a{padding:8px 16px;border-radius:6px;font-size:15px;color:#4b5563}body:has(.dd-page,.dfe-page) .topbar nav a.active{background:#eef2ff;color:#4f46e5;font-weight:500}body:has(.dd-page,.dfe-page) .topbar .notif-trigger{color:#374151}body:has(.dd-page,.dfe-page) .topbar .user-menu-trigger{font-size:15px;color:#111827}body:has(.dd-page,.dfe-page) .topbar .user-avatar{background:#eef2ff;color:#4f46e5}body .dfe-page{height:calc(100vh - 65px);height:calc(100dvh - 65px)}}
