:root{--brand-50: #ecfdf5;--brand-100: #d1fae5;--brand-200: #a7f3d0;--brand-400: #34d399;--brand-500: #16a34a;--brand-600: #15803d;--brand-700: #166534;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--bg-page: #f6f8fb;--surface: #ffffff;--surface-soft: #f8fafc;--text: #0f172a;--text-muted: #64748b;--border: #e6eaf0;--sb-bg-1: #d6f5e3;--sb-bg-2: #b7eccf;--sb-text: #14532d;--sb-text-muted: #3f8a5f;--sb-section: #2f7a4f;--sb-hover: rgba(20,83,45,.08);--sb-active-bg: rgba(22,163,74,.2);--sb-active-text: #0f3d22;--sb-active-border: rgba(22,163,74,.4);--sb-icon-active: #15803d;--sb-border: rgba(20,83,45,.1);--sb-collapse-bg: rgba(20,83,45,.08);--topbar-bg: rgba(255,255,255,.75);--topbar-border: rgba(226,232,240,.7);--pill-bg: #ffffff;--field-bg: #ffffff;--gantt-grid: #eef2f7;--accent: #4f46e5;--warn: #f97316;--danger: #dc2626;--info: #2563eb;--purple: #7c3aed;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--shadow-xs: 0 1px 2px rgba(15,23,42,.04);--shadow-sm: 0 2px 6px -2px rgba(15,23,42,.06), 0 1px 2px rgba(15,23,42,.04);--shadow-md: 0 8px 20px -8px rgba(15,23,42,.12), 0 2px 4px -2px rgba(15,23,42,.06);--shadow-lg: 0 24px 40px -16px rgba(15,23,42,.16);--font-sans: "Inter", "Segoe UI", system-ui, -apple-system, "Noto Sans Thai", sans-serif;font-family:var(--font-sans);font-size:14px;color:var(--text);line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}[data-theme=dark]{--gray-50: #1a2536;--gray-100: #1f2c40;--gray-200: #2a3852;--gray-300: #3b4a66;--gray-400: #64748b;--bg-page: #0b1220;--surface: #131c2b;--surface-soft: #1a2536;--text: #e5ecf5;--text-muted: #9fb0c6;--border: #28354c;--sb-bg-1: #0c2a1d;--sb-bg-2: #0a3a28;--sb-text: #d7f7e6;--sb-text-muted: #84c7a4;--sb-section: #6cbb8f;--sb-hover: rgba(255,255,255,.06);--sb-active-bg: rgba(34,197,94,.22);--sb-active-text: #ffffff;--sb-active-border: rgba(34,197,94,.4);--sb-icon-active: #34d399;--sb-border: rgba(255,255,255,.06);--sb-collapse-bg: rgba(255,255,255,.08);--topbar-bg: rgba(19,28,43,.8);--topbar-border: rgba(255,255,255,.06);--pill-bg: var(--surface-soft);--field-bg: var(--surface-soft);--gantt-grid: rgba(255,255,255,.06)}[data-theme=dark] .gantt-day.weekend{background:#ffffff0a}[data-theme=dark] .kanban-col.is-over{background:#22c55e1f}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 600px at 0% -10%,#dcfce7 0%,transparent 60%),radial-gradient(800px 400px at 100% 0%,#dbeafe 0%,transparent 60%),var(--bg-page);background-attachment:fixed}[data-theme=dark] body{background:radial-gradient(1200px 600px at 0% -10%,#0e3324 0%,transparent 60%),radial-gradient(800px 400px at 100% 0%,#10243f 0%,transparent 60%),var(--bg-page)}[data-theme=dark] .input,[data-theme=dark] .select,[data-theme=dark] textarea{background:var(--field-bg);color:var(--text)}[data-theme=dark] .input::placeholder,[data-theme=dark] textarea::placeholder{color:var(--gray-400)}[data-theme=dark] .vboard-head h2,[data-theme=dark] .vboard-goal,[data-theme=dark] .vb-label-title{color:var(--text)}[data-theme=dark] .vboard-goal-cond,[data-theme=dark] .vb-label-list{color:var(--text-muted)}[data-theme=dark] .vboard-head{border-bottom-color:var(--border)}[data-theme=dark] .vb-circle{box-shadow:0 6px 16px -8px #0009,0 0 0 6px var(--surface)}[data-theme=dark] .cp-sales-chip{background:var(--surface-soft);color:var(--text)}[data-theme=dark] .dp-proj-picker{background:var(--surface)}[data-theme=dark] .topbar .avatar,[data-theme=dark] .btn{color:#fff}[data-theme=dark] .proj-sidebar .ps-item-row.is-visible,[data-theme=dark] .proj-sidebar .ps-item.active{background:#22c55e2e;border-color:#22c55e66;color:var(--text)}[data-theme=dark] .proj-sidebar .ps-item.active{color:#86efac}a{color:var(--info);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}code{background:var(--gray-100);padding:1px 6px;border-radius:4px;font-size:.85em}.app-shell{display:grid;grid-template-columns:244px 230px 1fr;min-height:100vh;transition:grid-template-columns .16s ease}.sidebar{background:linear-gradient(180deg,var(--sb-bg-1) 0%,var(--sb-bg-2) 100%);color:var(--sb-text);padding:1rem .7rem;position:sticky;top:0;height:100vh;overflow-y:auto;overflow-x:hidden;border-right:1px solid var(--sb-border)}.sidebar .brand{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:.4rem .6rem 1.2rem;text-align:center}.sidebar .sb-collapse{position:absolute;top:0;right:0;background:var(--sb-collapse-bg);border:1px solid var(--sb-border);color:var(--sb-text);width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.sidebar .sb-collapse:hover{background:var(--sb-hover)}.sidebar.collapsed{padding:1rem .4rem}.sidebar.collapsed .brand{justify-content:center;padding:.4rem 0 1.1rem;gap:8px}.sidebar.collapsed .sb-collapse{position:static;margin:8px auto 0}.sidebar.collapsed .brand{flex-direction:column}.sidebar.collapsed a{justify-content:center;padding:.55rem 0}.sidebar .brand .logo{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,var(--brand-500),var(--brand-400));display:grid;place-items:center;color:#fff;font-weight:800;font-size:.85rem;box-shadow:0 4px 12px -2px #16a34a80}.sidebar .brand .logo-img{height:80px;width:auto;max-width:88%;object-fit:contain;flex-shrink:0}.sidebar.collapsed .brand .logo-img{height:34px;max-width:42px}.sidebar .brand .brand-name{color:var(--sb-text);font-weight:800;font-size:1.3rem;letter-spacing:-.01em;white-space:nowrap}.sidebar .sb-custom-link{position:relative}.sidebar .sb-link-del{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:20px;height:20px;border-radius:5px;border:0;padding:0;cursor:pointer;background:#ffffff14;color:#fecaca;display:none;align-items:center;justify-content:center;z-index:2}.sidebar .sb-custom-link:hover .sb-link-del{display:inline-flex}.sidebar .sb-link-del:hover{background:#ef44444d;color:#fff}.sidebar .sb-section{font-size:.66rem;text-transform:uppercase;color:var(--sb-section);font-weight:700;letter-spacing:.12em;padding:.7rem .8rem .3rem;margin-top:.4rem}.sidebar a{display:flex;align-items:center;gap:10px;padding:.45rem .7rem;border-radius:10px;color:var(--sb-text-muted);margin:2px 0;font-size:.86rem;font-weight:500;transition:all .14s ease;border:1px solid transparent}.sidebar a:hover{background:var(--sb-hover);color:var(--sb-text);text-decoration:none}.sidebar a.active{background:var(--sb-active-bg);color:var(--sb-active-text);border-color:var(--sb-active-border);font-weight:700}.sidebar a.active svg{color:var(--sb-icon-active)}.sidebar svg{flex-shrink:0;color:inherit}.proj-sidebar{background:var(--surface-soft);border-right:1px solid var(--border);position:sticky;top:0;height:100vh;overflow:hidden;display:flex;flex-direction:column;padding:.85rem .6rem}.proj-sidebar.collapsed{align-items:center;padding:.85rem .3rem}.proj-sidebar .ps-head{display:flex;align-items:center;justify-content:space-between;font-size:.65rem;font-weight:700;letter-spacing:.08em;color:var(--text-muted);padding:.2rem .5rem .5rem;text-transform:uppercase}.proj-sidebar .ps-hide{background:transparent;border:0;color:var(--text-muted);width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.proj-sidebar .ps-hide:hover{background:#0f172a0d;color:var(--text)}.proj-sidebar .ps-toggle{background:#fff;border:1px solid var(--border);color:var(--text-muted);border-radius:8px;padding:8px 6px;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:4px}.proj-sidebar .ps-toggle:hover{background:var(--gray-100);color:var(--brand-600)}.proj-sidebar .ps-scroll{overflow-y:auto;flex:1;margin-top:.4rem}.proj-sidebar .ps-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.proj-sidebar .ps-name{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word;white-space:normal;line-height:1.25;cursor:pointer}.proj-sidebar .ps-actions{display:flex;align-items:center;justify-content:space-between;padding:0 .4rem .2rem}.proj-sidebar .ps-allcheck{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;color:var(--text-muted);cursor:pointer}.proj-sidebar .ps-add-btn{display:inline-flex;align-items:center;gap:4px;background:transparent;color:var(--text-muted);border:1px solid var(--border, rgba(15,23,42,.1));border-radius:7px;padding:3px 8px;font-size:.74rem;font-weight:700;cursor:pointer;transition:background .12s,color .12s,border-color .12s;flex-shrink:0}.proj-sidebar .ps-add-btn:hover{background:var(--gray-50, rgba(15,23,42,.04));color:var(--text);border-color:#0f172a2e}.proj-sidebar .ps-icon-btn{width:26px;height:26px;padding:0;justify-content:center}.proj-sidebar .ps-add-btn-primary{background:var(--brand-50, #ecfdf5);color:var(--brand-700, #166534);border-color:var(--brand-200, #a7f3d0)}.proj-sidebar .ps-add-btn-primary:hover{background:var(--brand-100, #d1fae5);border-color:var(--brand-400, #34d399);color:var(--brand-700, #166534)}[data-theme=dark] .proj-sidebar .ps-add-btn{border-color:#ffffff1a;color:#ffffffa6}[data-theme=dark] .proj-sidebar .ps-add-btn:hover{background:#ffffff0f;color:var(--text);border-color:#ffffff2e}[data-theme=dark] .proj-sidebar .ps-add-btn-primary{background:#22c55e24;border-color:#22c55e59;color:#6ee7b7}[data-theme=dark] .proj-sidebar .ps-add-btn-primary:hover{background:#22c55e33;border-color:#22c55e73;color:#86efac}.proj-sidebar .ps-add-form{display:flex;flex-direction:column;gap:6px;padding:.5rem;margin:.3rem .2rem;background:#fff;border:1px solid var(--border);border-radius:10px}.proj-sidebar .ps-add-form .input,.proj-sidebar .ps-add-form .select{padding:.4rem .5rem;font-size:.82rem}.proj-sidebar .ps-group{margin-bottom:.4rem;border:1.5px dashed transparent;border-radius:10px;padding:2px;transition:background .12s ease,border-color .12s ease}.proj-sidebar .ps-group.drag-over{background:var(--brand-50);border-color:var(--brand-400)}.proj-sidebar .ps-group-head{display:flex;align-items:center;gap:4px;width:100%;background:transparent;border:0;font-size:.78rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text);padding:.32rem .4rem .18rem;cursor:pointer;text-align:left}.proj-sidebar .ps-group-head:hover{color:var(--text)}.proj-sidebar .ps-group-caret{display:inline-flex;align-items:center;color:var(--gray-400);flex-shrink:0}.proj-sidebar .ps-group-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.proj-sidebar .ps-group-count{background:#0f172a0d;color:var(--text-muted);border-radius:999px;padding:0 6px;font-size:.62rem;font-weight:700;min-width:16px;text-align:center;flex-shrink:0}.proj-sidebar .ps-group.is-collapsed{padding-bottom:0}.proj-sidebar .ps-empty-drop{font-size:.68rem;color:var(--gray-400);text-align:center;padding:.35rem;border:1px dashed rgba(15,23,42,.1);border-radius:6px;margin:2px 4px}.proj-sidebar .ps-grip{display:inline-flex;align-items:center;justify-content:center;color:var(--gray-400);cursor:grab;flex-shrink:0;border-radius:4px}.proj-sidebar .ps-grip:hover{color:var(--gray-600);background:var(--gray-100)}.proj-sidebar .ps-grip:active{cursor:grabbing}.proj-sidebar .ps-drag-hint{font-size:.72rem;font-weight:600;text-align:center;color:var(--brand-700);background:var(--brand-50);border:1px dashed var(--brand-300);border-radius:8px;padding:.35rem;margin:0 .2rem .4rem}.proj-sidebar .ps-item-row{display:flex;align-items:center;gap:7px;border-radius:8px;padding:.4rem .5rem;margin:1px 0;font-size:.83rem;color:var(--text);border:1px solid transparent;transition:background .12s ease}.proj-sidebar .ps-item-row:hover{background:var(--gray-100)}.proj-sidebar .ps-item-row.is-visible{background:var(--brand-50);border-color:var(--brand-100)}.proj-sidebar .ps-item-row input[type=checkbox]{accent-color:var(--brand-500);cursor:pointer;flex-shrink:0}.proj-sidebar .ps-row-actions{display:none;gap:1px;flex-shrink:0;background:var(--surface, #fff);border:1px solid rgba(15,23,42,.06);border-radius:7px;padding:1px;box-shadow:0 1px 3px #0f172a0a}.proj-sidebar .ps-item-row:hover .ps-row-actions,.proj-sidebar .ps-cgroup-head:hover .ps-row-actions,.proj-sidebar .ps-group-head:hover .ps-row-actions{display:inline-flex}.proj-sidebar .ps-mini{width:20px;height:20px;border-radius:5px;border:0;background:transparent;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s,color .1s}.proj-sidebar .ps-mini:hover{background:#0f172a0f;color:var(--text)}.proj-sidebar .ps-rename{display:inline-flex;align-items:center;gap:3px;flex:1}.proj-sidebar .ps-rename .input{padding:.25rem .4rem;font-size:.82rem}.proj-sidebar .ps-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:8px;padding:.5rem .6rem;margin:1px 0;font-size:.84rem;font-weight:500;color:var(--text);cursor:pointer}.proj-sidebar .ps-item:hover{background:var(--gray-100)}.proj-sidebar .ps-item.active{background:var(--brand-50);border-color:var(--brand-200);color:var(--brand-700);font-weight:600}.topbar{height:60px;background:var(--topbar-bg);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--topbar-border);display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;position:sticky;top:0;z-index:10}.topbar .user{display:flex;align-items:center;gap:.7rem}.topbar .avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--brand-500),var(--brand-400));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem;letter-spacing:-.02em;box-shadow:0 4px 10px -2px #16a34a59}.content{padding:1.5rem 1.75rem;max-width:100%}.page-title{font-size:1.45rem;font-weight:700;letter-spacing:-.02em;margin:0 0 1.15rem;color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem;box-shadow:var(--shadow-sm)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.pos-check-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}.pos-check{display:flex;align-items:center;gap:8px;font-size:.84rem;color:var(--text);font-weight:500;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);cursor:pointer}.pos-check input{cursor:pointer}@media (max-width: 520px){.pos-check-grid{grid-template-columns:1fr}}.org-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;align-items:start}.org-card{display:flex;flex-direction:column;gap:10px}.org-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.org-team-name{font-weight:800;font-size:1rem;color:var(--text)}.org-manager{background:var(--brand-50);border:1px solid var(--brand-200);border-radius:10px;padding:8px 10px}.org-nomgr{padding:4px 0}.org-person{display:flex;align-items:center;gap:9px}.org-person-name{font-weight:600;font-size:.86rem;color:var(--text)}.org-tag{font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand-700)}.org-tag.muted{color:var(--text-muted)}.org-members{display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--gray-100);padding-top:10px}.org-unassigned{background:var(--surface-soft)}.year-mini{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-top:10px}.year-mini .ym-dow{text-align:center;font-size:.6rem;font-weight:700;color:var(--text-muted);padding-bottom:2px}.year-mini .ym-empty{height:24px}.year-mini .ym-day{position:relative;text-align:center;font-size:.7rem;line-height:24px;height:24px;border-radius:6px;color:var(--text);cursor:pointer;transition:background .1s ease}.year-mini .ym-day:hover{background:var(--gray-100)}.year-mini .ym-day.has{font-weight:800}.year-mini .ym-day.today{background:var(--brand-50);color:var(--brand-700);box-shadow:inset 0 0 0 1px var(--brand-300)}.year-mini .ym-dot{position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:3px}.vboard{margin-bottom:1.5rem;padding:1.2rem 1.4rem}.vboard-head{border-bottom:2px dashed var(--gray-200);padding-bottom:10px;margin-bottom:12px}.vboard-head h2{margin:0;font-size:1.25rem;font-weight:800;color:#1f2937}.vboard-tag{color:var(--text-muted);font-weight:700}.vboard-sub{color:var(--text-muted);font-size:.92rem;margin-top:2px}.vboard-goal{font-size:.95rem;color:#0f172a;font-weight:700;margin-bottom:6px;line-height:1.5}.vboard-goal-cond{font-weight:500;color:#334155}.vboard-scroll{overflow-x:auto;padding-bottom:6px}.vboard-road{position:relative;min-width:1120px}.vboard-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.vb-road-line{fill:none;stroke:#5b6675;stroke-width:46;stroke-linecap:round;stroke-linejoin:round}.vb-road-dash{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-dasharray:14 16;opacity:.9}.vb-node{position:absolute;transform:translate(-50%,-50%)}.vb-circle{width:92px;height:92px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:0 8px 18px -6px #0f172a73,0 0 0 6px #fff}.vb-label{position:absolute;left:50%;transform:translate(-50%);width:196px;text-align:left}.vb-label.above{bottom:64px}.vb-label.below{top:64px}.vb-label-title{font-weight:800;font-size:.82rem;color:#1f2937;margin-bottom:2px}.vb-label-list{margin:0;padding-left:16px;font-size:.72rem;line-height:1.35;color:#334155}.vb-label-list li{margin-bottom:1px}.vb-label-empty{font-size:.72rem;color:var(--gray-300)}.vb-edit-sectitle{font-weight:800;font-size:.92rem;color:var(--text);margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}.vb-edit-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px 14px;margin-top:8px}.vb-edit-month{background:var(--surface-soft);border:1px solid var(--border);border-radius:10px;padding:8px 10px;margin-bottom:0}.vb-edit-month label{font-size:.76rem;font-weight:700;color:var(--brand-700)}.vb-edit-month textarea.input{font-size:.82rem;resize:vertical}@media (max-width: 760px){.vb-edit-grid{grid-template-columns:1fr 1fr}}@media (max-width: 520px){.vb-edit-grid{grid-template-columns:1fr}}.kpi{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.1rem;box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .16s ease,box-shadow .16s ease}.kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.kpi:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gray-300)}.kpi .label{color:var(--text-muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.kpi .value{font-size:1.85rem;font-weight:700;margin-top:.35rem;letter-spacing:-.02em;color:var(--text)}.kpi.green:before{background:linear-gradient(90deg,#34d399,#16a34a)}.kpi.blue:before{background:linear-gradient(90deg,#60a5fa,#2563eb)}.kpi.orange:before{background:linear-gradient(90deg,#fdba74,#ea580c)}.kpi.red:before{background:linear-gradient(90deg,#fda4af,#dc2626)}.kpi.green .value{color:var(--brand-600)}.kpi.blue .value{color:#1d4ed8}.kpi.orange .value{color:#c2410c}.kpi.red .value{color:#b91c1c}.btn{background:linear-gradient(135deg,var(--brand-500),var(--brand-600));color:#fff;padding:.52rem .95rem;border-radius:10px;border:0;font-weight:600;font-size:.85rem;letter-spacing:-.005em;box-shadow:0 4px 10px -3px #16a34a59;transition:transform 80ms ease,box-shadow .16s ease,filter 80ms ease}.btn:hover{filter:brightness(1.04);box-shadow:0 6px 14px -3px #16a34a80}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.btn.secondary{background:var(--gray-100);color:var(--text);box-shadow:none}.btn.secondary:hover{background:var(--gray-200)}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);box-shadow:none;font-weight:500}.btn.ghost:hover{background:var(--gray-100)}.input,.select,textarea{width:100%;padding:.55rem .7rem;border:1px solid var(--border);border-radius:10px;background:#fff;font:inherit;color:var(--text);transition:border-color .12s ease,box-shadow .12s ease}.input:focus,.select:focus,textarea:focus{outline:none;border-color:var(--brand-500);box-shadow:0 0 0 3px #16a34a26}.form-row{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.8rem}.form-row label{font-size:.78rem;color:var(--text-muted);font-weight:600}.form-actions{display:flex;gap:.6rem;justify-content:flex-end;margin-top:.6rem}.table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-xs)}.table th,.table td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--gray-100);font-size:.88rem}.table th{background:var(--gray-50);font-weight:600;color:var(--text-muted);text-transform:uppercase;font-size:.7rem;letter-spacing:.06em}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:var(--gray-50)}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .6rem;border-radius:999px;font-size:.7rem;font-weight:600;background:var(--gray-100);color:var(--gray-700);letter-spacing:.01em}.badge.green{background:#dcfce7;color:#15803d}.badge.blue{background:#dbeafe;color:#1d4ed8}.badge.gray{background:var(--gray-100);color:var(--gray-700)}.badge.orange{background:#ffedd5;color:#c2410c}.badge.red{background:#fee2e2;color:#b91c1c}.badge.purple{background:#ede9fe;color:#6d28d9}.login-shell{min-height:100vh;display:grid;place-items:center;background:radial-gradient(800px 500px at 20% 20%,#d1fae5 0%,transparent 50%),radial-gradient(700px 400px at 80% 80%,#dbeafe 0%,transparent 50%),#f8fafc}.login-card{background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:2.5rem 2.2rem;border-radius:20px;box-shadow:var(--shadow-lg);width:380px;text-align:center;border:1px solid rgba(255,255,255,.6)}.login-card .brand-mark{width:56px;height:56px;margin:0 auto 1rem;border-radius:16px;background:linear-gradient(135deg,var(--brand-500),var(--brand-400));display:grid;place-items:center;color:#fff;font-weight:800;font-size:1.5rem;box-shadow:0 12px 24px -6px #16a34a73}.login-card .login-logo{display:block;margin:0 auto 1rem;max-width:220px;width:100%;height:auto;object-fit:contain}.login-card h1{margin:0 0 .35rem;font-size:1.45rem;font-weight:700;letter-spacing:-.02em}.login-card p{color:var(--text-muted);margin-top:0}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .16s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:500px;background:var(--surface);z-index:51;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:slideInRight .22s cubic-bezier(.16,1,.3,1)}.drawer header{padding:1rem 1.25rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.drawer .body{padding:1.25rem;overflow-y:auto;flex:1}.dp-milestone{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;margin-bottom:1rem;box-shadow:var(--shadow-xs)}.dp-milestone-label{font-weight:800;color:var(--text);font-size:.9rem}.dp-goal-chip{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;border-radius:999px;padding:4px 6px 4px 12px;font-weight:700;font-size:.82rem}.dp-goal-chip button{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:0;background:#ffffff40;color:#fff;cursor:pointer;padding:0}.dp-goal-chip button:hover{background:#fff6}.dp-add-goal-wrap{position:relative;display:inline-flex}.dp-add-goal{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;cursor:pointer;border:0;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;box-shadow:0 3px 8px -2px #16a34a80}.dp-add-goal:hover{filter:brightness(1.05)}.dp-proj-picker{position:absolute;top:38px;left:0;z-index:40;width:280px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px}.dp-proj-picker .input{width:100%;margin-bottom:6px}.dp-proj-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.dp-proj-opt{text-align:left;width:100%;background:transparent;border:0;padding:7px 10px;border-radius:8px;cursor:pointer;font-size:.86rem;color:var(--text)}.dp-proj-opt:hover{background:var(--brand-50);color:var(--brand-700)}.dp-add-task{display:flex;flex-direction:column;gap:6px}.dp-add-task .select{flex:1;min-width:0;font-size:.82rem}.dp-proj-tag{color:var(--brand-700);font-weight:600}.dp-grip{display:inline-flex;color:var(--gray-400);cursor:grab;flex-shrink:0}.dp-grip:active{cursor:grabbing}.priority-item[draggable=true]{cursor:default}.priority-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;height:calc(100vh - 200px);min-height:580px}.priority-quadrant{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-sm)}.priority-quadrant header{padding:.75rem 1rem;border-bottom:1px solid var(--border);font-weight:600;font-size:.9rem;display:flex;justify-content:space-between;align-items:center}.priority-quadrant.iu header{background:linear-gradient(135deg,#fee2e2,#fef2f2);color:#991b1b}.priority-quadrant.inu header{background:linear-gradient(135deg,#fef3c7,#fffbeb);color:#92400e}.priority-quadrant.niu header{background:linear-gradient(135deg,#dbeafe,#eff6ff);color:#1e40af}.priority-quadrant.ninu header{background:linear-gradient(135deg,#f1f5f9,#f8fafc);color:#334155}.priority-quadrant .items{padding:.8rem;display:flex;flex-direction:column;gap:.5rem;overflow-y:auto;flex:1}.priority-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;transition:transform 80ms ease,box-shadow .12s ease}.priority-item:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.priority-item.is-done{opacity:.62}.priority-item .dp-row-top{display:flex;align-items:center;gap:8px}.priority-item .dp-title{flex:1;min-width:0;font-weight:600;font-size:.9rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.priority-item.is-done .dp-title{text-decoration:line-through}.priority-item .dp-row-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.dp-time{display:flex;align-items:center;gap:5px;color:var(--text-muted)}.dp-time-input{border:1px solid var(--border);border-radius:6px;padding:2px 6px;font-size:.74rem;font-family:JetBrains Mono,monospace;color:var(--text);background:var(--field-bg)}.priority-item .dp-row-actions{display:flex;align-items:center;gap:6px}.dp-done-btn{flex-shrink:0;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:5px 10px;font-size:.76rem;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .1s ease}.dp-done-btn:hover{border-color:var(--brand-400);color:var(--brand-700)}.dp-done-btn.is-done{background:var(--brand-50);border-color:var(--brand-300);color:var(--brand-700)}.dp-move-select{flex:1;min-width:0;font-size:.76rem;padding:5px 8px;height:auto}.dp-move-hint{flex:1;min-width:0;text-align:center;font-size:.72rem;color:var(--text-muted);-webkit-user-select:none;user-select:none}.dp-del-btn{flex-shrink:0;width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .1s ease}.dp-del-btn:hover{background:#fee2e2;color:var(--danger);border-color:#fecaca}.dp-prio-select{flex-shrink:0;border:0;border-radius:999px;cursor:pointer;padding:3px 10px;font-size:.7rem;font-weight:700;letter-spacing:.02em;-moz-appearance:none;appearance:none;-webkit-appearance:none;text-transform:capitalize}.dp-prio-select.prio-low{background:#f1f5f9;color:#475569}.dp-prio-select.prio-medium{background:#fef3c7;color:#92400e}.dp-prio-select.prio-high{background:#ffedd5;color:#c2410c}.dp-prio-select.prio-critical{background:#fee2e2;color:#b91c1c}.kanban-board{display:grid;grid-template-columns:repeat(6,minmax(240px,1fr));gap:.85rem;height:calc(100vh - 220px);min-height:580px;overflow-x:auto;padding-bottom:4px}.kanban-col{background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;min-width:240px;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.kanban-col.is-over{background:#ecfdf5;border-color:var(--brand-400);box-shadow:inset 0 0 0 2px #16a34a59}.kanban-col>header{padding:.6rem .75rem;border-bottom:1px solid var(--border);border-top:3px solid var(--gray-300);border-radius:var(--radius) var(--radius) 0 0;background:var(--surface);font-size:.86rem;display:flex;align-items:center;justify-content:space-between}.kanban-col .kanban-items{padding:.65rem;display:flex;flex-direction:column;gap:.55rem;overflow-y:auto;flex:1}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.65rem .75rem;box-shadow:var(--shadow-xs);cursor:grab;transition:transform 90ms ease,box-shadow .12s ease;-webkit-user-select:none;user-select:none}.kanban-card:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.kanban-card:active{cursor:grabbing}.qb-drawer-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:1rem;overflow-x:auto}.qb-drawer-tabs button{border:0;background:transparent;padding:.5rem .7rem;font-size:.8rem;font-weight:600;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;transition:color .12s ease,border-color .12s ease}.qb-drawer-tabs button:hover{color:var(--text)}.qb-drawer-tabs button.active{color:var(--brand-600);border-bottom-color:var(--brand-500)}.qb-tag-chip{display:inline-flex;align-items:center;gap:5px;background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-200);border-radius:999px;padding:3px 6px 3px 10px;font-size:.8rem;font-weight:600}.qb-tag-chip button{border:0;background:#0000000f;width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--brand-700);cursor:pointer;padding:0}.qb-tag-chip button:hover{background:var(--danger);color:#fff}.qb-attach-row{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;margin-bottom:6px;color:var(--text);text-decoration:none;font-size:.85rem;background:#fff}.qb-attach-row:hover{background:var(--gray-50);text-decoration:none}.qb-attach-types{display:flex;gap:6px;flex-wrap:wrap}.qb-attach-types button{border:1px solid var(--border);background:#fff;color:var(--text-muted);border-radius:8px;padding:5px 10px;font-size:.78rem;font-weight:600;cursor:pointer}.qb-attach-types button:hover{background:var(--gray-50)}.qb-attach-types button.active{border-color:var(--brand-500);background:var(--brand-50);color:var(--brand-700)}.qb-arrange-btn{border:1px solid #93c5fd;background:#fff;color:#1d4ed8;border-radius:7px;padding:2px 8px;font-size:.72rem;font-weight:700;cursor:pointer}.qb-arrange-btn:hover{background:#eff6ff}.qb-link-btn{border:0;background:transparent;padding:0;color:var(--brand-600);font-size:.74rem;font-weight:600;cursor:pointer}.qb-link-btn:hover{text-decoration:underline}.qb-link-btn.danger{color:var(--danger)}.qb-activity{position:relative;padding-left:6px}.qb-activity-item{position:relative;display:flex;gap:12px;padding:0 0 14px 14px;border-left:2px solid var(--gray-200)}.qb-activity-item:last-child{border-left-color:transparent;padding-bottom:0}.qb-activity-dot{position:absolute;left:-7px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--brand-500);border:2px solid #fff;box-shadow:0 0 0 1px var(--brand-200)}.qb-team-picker{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(880px,94vw);max-height:86vh;background:#0f172a;border:1px solid #1e293b;border-radius:16px;box-shadow:0 30px 60px -20px #0009;z-index:60;display:flex;flex-direction:column;color:#e2e8f0;overflow:hidden;animation:fadeIn .16s ease}.qb-tp-head{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1.25rem .75rem}.qb-tp-title{font-size:.8rem;font-weight:800;letter-spacing:.14em;color:#f8fafc}.qb-tp-sub{color:#64748b;font-size:.78rem;margin-top:2px}.qb-tp-clear{background:transparent;border:1px solid #334155;color:#cbd5e1;border-radius:8px;padding:4px 12px;font-size:.78rem;font-weight:600;cursor:pointer}.qb-tp-clear:hover{background:#1e293b}.qb-tp-roles{display:flex;gap:8px;padding:0 1.25rem .75rem;flex-wrap:wrap}.qb-tp-role{background:transparent;border:1px solid #334155;color:#94a3b8;border-radius:999px;padding:5px 14px;font-size:.8rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:all .12s ease}.qb-tp-role:hover{background:#1e293b;color:#e2e8f0}.qb-tp-role.active{border-color:#3b82f6;color:#fff;background:#3b82f626;box-shadow:inset 0 0 0 1px #3b82f666}.qb-tp-count{background:#1e293b;color:#94a3b8;border-radius:999px;font-size:.66rem;font-weight:700;padding:0 6px;min-width:16px;text-align:center}.qb-tp-role.active .qb-tp-count{background:#3b82f6;color:#fff}.qb-tp-search{margin:0 1.25rem .75rem;background:#1e293b;border:1px solid #334155;color:#e2e8f0;border-radius:10px;padding:8px 12px;font:inherit;font-size:.85rem;width:calc(100% - 2.5rem)}.qb-tp-search::placeholder{color:#64748b}.qb-tp-search:focus{outline:none;border-color:#3b82f6}.qb-tp-grid{display:flex;flex-wrap:wrap;gap:10px;padding:.5rem 1.25rem 1rem;overflow-y:auto;align-content:flex-start}.qb-tp-member{display:inline-flex;align-items:center;gap:8px;background:#1e293b;border:2px solid transparent;border-radius:999px;padding:4px 14px 4px 4px;cursor:pointer;transition:all .12s ease}.qb-tp-member:hover{background:#283548}.qb-tp-member.is-selected{border-color:var(--ring);background:#0b1220;box-shadow:0 0 0 1px var(--ring)}.qb-tp-ava{position:relative;width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.72rem;border:2px solid rgba(255,255,255,.15)}.qb-tp-ava-img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}.qb-tp-check{position:absolute;bottom:-3px;right:-3px;width:16px;height:16px;border-radius:50%;background:#16a34a;color:#fff;display:inline-flex;align-items:center;justify-content:center;border:2px solid #0f172a}.qb-tp-name{font-size:.82rem;font-weight:600;white-space:nowrap}.qb-tp-empty{color:#64748b;padding:1.5rem;width:100%;text-align:center}.qb-tp-foot{display:flex;justify-content:flex-end;gap:10px;padding:.85rem 1.25rem;border-top:1px solid #1e293b;background:#0b1220}.qb-tp-foot .btn.ghost{color:#cbd5e1;border-color:#334155}.qb-tp-foot .btn.ghost:hover{background:#1e293b}.qb-inline-docs{position:absolute;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 30px -10px #0f172a40;z-index:20;display:flex;flex-direction:column;overflow:hidden}.qb-inline-docs .qb-id-head{display:flex;align-items:center;justify-content:space-between;padding:.5rem .7rem;border-bottom:1px solid var(--border);font-size:.8rem;background:var(--surface-soft);cursor:move;-webkit-user-select:none;user-select:none;flex-shrink:0}.qb-inline-docs .qb-id-btn{width:22px;height:22px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.qb-inline-docs .qb-id-btn:hover{background:var(--gray-100);color:var(--brand-600)}.qb-inline-docs .qb-id-body{flex:1;min-height:0;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:10px}.qb-inline-docs .qb-id-thumb{border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--gray-50);flex-shrink:0}.qb-inline-docs .qb-id-resize{position:absolute;right:2px;bottom:2px;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0 50%,var(--gray-400) 50% 60%,transparent 60% 70%,var(--gray-400) 70% 80%,transparent 80%);border-bottom-right-radius:12px}.qb-inline-docs .qb-id-cap{display:flex;align-items:center;gap:5px;padding:4px 7px;font-size:.7rem;color:var(--text);background:#fff;border-bottom:1px solid var(--border)}.qb-inline-docs .qb-id-cap span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qb-inline-docs .qb-id-cap a{color:var(--text-muted);display:inline-flex}.qb-inline-docs .qb-id-cap a:hover{color:var(--brand-600)}.qb-inline-docs .qb-id-frame{height:220px;background:#f1f5f9;display:flex;align-items:center;justify-content:center}.qb-inline-docs .qb-id-frame img{width:100%;height:100%;object-fit:contain;background:#fff;display:block}.qb-inline-docs .qb-id-frame iframe{width:100%;height:100%;border:0;background:#fff;display:block}.qb-inline-docs .qb-id-link{color:var(--brand-600);font-size:.8rem;text-decoration:none;padding:1rem}.doc-viewer{position:fixed;top:3vh;left:3vw;right:3vw;bottom:3vh;background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);z-index:60;display:flex;flex-direction:column;overflow:hidden;animation:fadeIn .16s ease}.doc-viewer .dv-head{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.25rem;border-bottom:1px solid var(--border)}.doc-viewer .dv-sources{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:.7rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface-soft)}.doc-viewer .dv-chip{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--border);border-radius:999px;padding:4px 6px 4px 12px;font-size:.78rem;font-weight:600;color:var(--text)}.doc-viewer .dv-chip button{border:0;background:#0000000f;cursor:pointer;width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted)}.doc-viewer .dv-chip button:hover{background:var(--danger);color:#fff}.doc-viewer .dv-add{border:1px dashed var(--brand-400);background:var(--brand-50);color:var(--brand-700);border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:600;cursor:pointer}.doc-viewer .dv-body{flex:1;min-height:0;overflow:hidden;padding:1rem 1.25rem}.doc-viewer .dv-tiles{display:flex;gap:14px;height:100%;min-height:0;align-items:stretch;overflow-x:auto;overflow-y:hidden;padding-bottom:6px}.doc-viewer .dv-tile{flex:0 0 460px;max-width:460px;height:100%;min-height:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--gray-50)}.doc-viewer .dv-tile-head{display:flex;align-items:center;gap:8px;padding:.5rem .7rem;border-bottom:1px solid var(--border);background:#fff;font-size:.78rem}.doc-viewer .dv-tile-task{background:var(--brand-50);color:var(--brand-700);font-weight:700;font-size:.66rem;letter-spacing:.06em;padding:2px 7px;border-radius:6px;flex-shrink:0}.doc-viewer .dv-tile-name{flex:1;display:inline-flex;align-items:center;gap:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.doc-viewer .dv-tile-head a{color:var(--text-muted);display:inline-flex}.doc-viewer .dv-tile-head a:hover{color:var(--brand-600)}.doc-viewer .dv-tile-body{flex:1;min-height:0;overflow:auto;background:#f1f5f9;display:flex;align-items:stretch;justify-content:center}.doc-viewer .dv-tile-body img{display:block;width:100%;height:100%;object-fit:contain;background:#fff}.doc-viewer .dv-tile-body iframe{display:block;width:100%;height:100%;min-height:0;border:0;background:#fff}.doc-viewer .dv-link-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;color:var(--text-muted);text-decoration:none;padding:2rem}.doc-viewer .dv-link-fallback:hover{color:var(--brand-600)}.proj-card{transition:transform .12s ease,box-shadow .12s ease}.proj-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.proj-node{width:260px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:.7rem .8rem;box-shadow:var(--shadow-sm);cursor:pointer;transition:box-shadow .12s ease,transform .12s ease}.proj-node:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.proj-node-btn{width:20px;height:20px;border-radius:5px;border:1px solid var(--border);background:#fff;color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.proj-node-btn:hover{background:var(--gray-100)}.obsidian-graph{height:calc(100vh - 190px);min-height:560px;border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(circle at 50% 40%,var(--surface) 0%,var(--surface-soft) 100%);box-shadow:var(--shadow-sm);overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.obsidian-graph svg text{-webkit-user-select:none;user-select:none}@keyframes og-dash-march{to{stroke-dashoffset:-20}}.obsidian-graph svg line.og-link-active{stroke-dasharray:6 4;animation:og-dash-march .7s linear infinite}.gantt-wrapper{height:calc(100vh - 200px);min-height:560px;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);overflow:hidden}.gantt-scroll{flex:1;min-height:0;overflow:auto}.gantt-zoom{flex-shrink:0;border-bottom:1px solid var(--border, rgba(15,23,42,.06));background:var(--surface, transparent)}[data-theme=dark] .gantt-zoom{background:#ffffff05}[data-theme=dark] .gantt-zoom button:not([style*=brand]){background:#ffffff0d!important;border-color:#ffffff1a!important;color:#ffffffa6!important}.gantt-row{display:flex;border-bottom:1px solid var(--gray-100)}.gantt-label{position:sticky;left:0;z-index:2;background:var(--surface);display:flex;align-items:center;gap:6px;padding:0 10px;border-right:1px solid var(--border);font-size:.82rem;overflow:hidden;white-space:nowrap}.gantt-label .gantt-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-code{font-family:JetBrains Mono,monospace;color:var(--text-muted);font-size:.64rem;font-weight:700;flex-shrink:0}.gantt-track{position:relative;flex-shrink:0}.gantt-row:not(.gantt-head) .gantt-track{background-image:linear-gradient(to right,var(--gantt-grid, #eef2f7) 1px,transparent 1px);background-size:var(--gantt-px, 22px) 100%}.gantt-head{position:sticky;top:0;z-index:4;background:var(--gray-50);font-weight:600}.gantt-head .gantt-head-label{background:var(--gray-50);z-index:5}.gantt-month{position:absolute;top:0;border-left:1px solid var(--border);border-bottom:1px solid var(--border);font-size:.7rem;color:var(--text-muted);padding:4px 6px;box-sizing:border-box;text-transform:uppercase;letter-spacing:.04em;transition:background .12s}.gantt-month:hover{background:#0f172a0a}.gantt-month.is-collapsed{background:#0f172a0f;color:var(--text);font-weight:700}[data-theme=dark] .gantt-month:hover{background:#ffffff0a}[data-theme=dark] .gantt-month.is-collapsed{background:#ffffff0f;text-transform:uppercase;letter-spacing:.04em}.gantt-day{position:absolute;box-sizing:border-box;border-left:1px solid var(--gray-100);font-size:.58rem;color:var(--text-muted);display:flex;align-items:center;justify-content:center}.gantt-day.weekend{background:#0f172a0b}.gantt-day.month-start{border-left-color:var(--gray-300)}.gantt-bar{position:absolute;top:6px;height:22px;border-radius:6px;display:flex;align-items:center;padding:0 7px;font-size:.64rem;font-weight:700;cursor:pointer;overflow:hidden;box-shadow:0 1px 3px #0f172a2e;transition:filter .1s ease,transform .1s ease}.gantt-bar{cursor:grab;touch-action:none}.gantt-bar:active{cursor:grabbing}.gantt-bar:hover{filter:brightness(1.05);transform:translateY(-1px)}.gantt-bar>span:not(.gantt-grip){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-bar-unscheduled{opacity:.7;background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.35) 0 6px,transparent 6px 12px);box-shadow:inset 0 0 0 1.5px #0f172a2e}.gantt-grip{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:2}.gantt-grip-l{left:0}.gantt-grip-r{right:0}.gantt-bar:hover .gantt-grip{background:#0f172a38}.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:#f97316;opacity:.7}.gantt-group{background:var(--gray-50)}.gantt-group-label{font-weight:700;background:var(--gray-50);font-size:.78rem;color:var(--text);justify-content:space-between}.gantt-proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-addgroup{display:inline-flex;align-items:center;gap:3px;flex-shrink:0;background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-200);border-radius:7px;padding:2px 7px;font-size:.68rem;font-weight:700;cursor:pointer}.gantt-addgroup:hover{background:var(--brand-100)}.gantt-subgroup{background:var(--surface-soft)}.gantt-subgroup.drop-target{background:var(--brand-50);box-shadow:inset 0 0 0 2px var(--brand-300)}.gantt-subgroup-label{padding-left:18px;gap:5px;font-size:.74rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.gantt-gcaret{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;flex-shrink:0;border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:0}.gantt-gcaret:hover{background:var(--gray-200);color:var(--text)}.gantt-gname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-gcount{flex-shrink:0;background:var(--gray-200);color:var(--text-muted);border-radius:999px;padding:0 6px;font-size:.62rem;font-weight:700}.gantt-gbtn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;flex-shrink:0;border:1px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer}.gantt-gbtn:hover{background:var(--gray-100);color:var(--text)}.gantt-grename{display:inline-flex;align-items:center;gap:4px;flex:1}.gantt-grename .input{padding:2px 6px;font-size:.78rem;height:24px}.gantt-task-label{cursor:grab}.gantt-task-label:active{cursor:grabbing}.gantt-task-label.is-grouped{padding-left:26px}.gantt-grip-dots{color:var(--gray-300);flex-shrink:0;font-size:.7rem;letter-spacing:-1px}.gantt-task-label:hover .gantt-grip-dots{color:var(--gray-500)}.gantt-track.is-unscheduled{cursor:pointer}.gantt-track.is-unscheduled:hover{background:#2563eb0a}.pert-size-ctrl{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:5px 8px;box-shadow:var(--shadow-sm)}.pert-size-ctrl .pert-size-label{font-size:.72rem;font-weight:700;color:var(--text-muted)}.pert-size-ctrl .pert-size-val{font-size:.72rem;font-weight:700;color:var(--text);min-width:34px;text-align:center;font-family:JetBrains Mono,monospace}.pert-size-ctrl button{width:26px;height:24px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--text);font-weight:800;font-size:.78rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.pert-size-ctrl button:hover:not(:disabled){background:var(--gray-50);border-color:var(--gray-300)}.pert-size-ctrl button:disabled{opacity:.4;cursor:not-allowed}.view-toggle{display:inline-flex;background:#fff;border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow-xs)}.view-toggle button{border:0;background:transparent;padding:.45rem .75rem;font-size:.78rem;font-weight:600;color:var(--text-muted);display:inline-flex;align-items:center;gap:5px;cursor:pointer;transition:all .12s ease;border-right:1px solid var(--border)}.view-toggle button:last-child{border-right:0}.view-toggle button:hover{background:var(--gray-50);color:var(--text)}.view-toggle button.active{background:linear-gradient(135deg,var(--brand-500),var(--brand-600));color:#fff}.cp-sales-pick{display:flex;flex-wrap:wrap;gap:6px}.cp-sales-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);background:#fff;color:var(--text);border-radius:999px;padding:4px 10px;font-size:.78rem;font-weight:600;cursor:pointer;transition:all .1s ease}.cp-sales-chip:hover{border-color:var(--brand-300)}.cp-sales-chip.on{background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;border-color:transparent}.cp-sales-line{color:var(--brand-700);font-weight:600;display:flex;align-items:center;gap:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-sales-group{margin-bottom:1.25rem}.cp-sales-group-head{display:flex;align-items:center;gap:7px;font-weight:800;font-size:.92rem;color:var(--text);padding:4px 2px 10px}.cp-sales-count{background:var(--brand-50);color:var(--brand-700);border-radius:999px;padding:0 8px;font-size:.72rem;font-weight:700}.cp-grid{align-items:start}.cp-edit-card{border:2px solid #34d399!important;box-shadow:0 0 0 4px #34d39926,var(--shadow-md)}.cp-edit-card:hover{transform:none}.cp-contacts{margin:4px 0 10px}.cp-contacts-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.cp-contacts-head label{font-size:11px;color:var(--muted);font-weight:700}.cp-add-contact{display:inline-flex;align-items:center;gap:4px;background:var(--brand-50);color:var(--brand-700);border:1px solid var(--brand-200);border-radius:7px;padding:3px 8px;font-size:.74rem;font-weight:700;cursor:pointer}.cp-add-contact:hover{background:var(--brand-100)}.cp-contact{display:flex;gap:6px;align-items:flex-start;padding:8px;margin-bottom:6px;background:var(--gray-50);border:1px solid var(--gray-100);border-radius:10px}.cp-contact-fields{flex:1;display:flex;flex-direction:column;gap:5px}.cp-contact-fields .input{padding:5px 8px;font-size:12.5px}.cp-card-link{display:flex;align-items:center;gap:6px}.cp-card-link .input{flex:1}.cp-card-thumb{flex:0 0 auto;width:46px;height:30px;border-radius:6px;overflow:hidden;border:1px solid var(--border);display:inline-flex}.cp-card-thumb img{width:100%;height:100%;object-fit:cover}.cp-contact-del{flex:0 0 auto;width:24px;height:24px;border-radius:6px;border:1px solid var(--border);background:#fff;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.cp-contact-del:hover{background:#fee2e2;color:var(--danger);border-color:#fecaca}.cp-edit-title{font-weight:800;font-size:13px;color:#15803d;text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}.cp-edit-card .form-row{margin-bottom:8px}.cp-edit-card .form-row label{font-size:11px;color:var(--muted);margin-bottom:2px}.cp-edit-card .input,.cp-edit-card .select{padding:6px 9px;font-size:13px}.cp-edit-card .form-actions{display:flex;justify-content:flex-end;gap:6px}.cp-edit-card .form-actions .btn{display:inline-flex;align-items:center;gap:5px}.cp-group{padding:0;margin-bottom:14px;overflow:hidden}.cp-head{display:flex;align-items:center;gap:9px;padding:11px 14px;background:var(--gray-50);border-bottom:1px solid var(--gray-100)}.cp-chevron{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;border:0;background:transparent;cursor:pointer;color:var(--muted);border-radius:6px}.cp-chevron:hover{background:var(--gray-100);color:var(--text)}.cp-cust-name{font-weight:700}.cp-cust-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cp-head-actions{display:inline-flex;gap:6px;align-items:center}.cp-body{padding:2px 0}.cp-empty{padding:12px 16px}.cp-proj{display:flex;align-items:center;gap:10px;padding:9px 14px 9px 16px;border-top:1px solid var(--gray-100)}.cp-proj:first-child{border-top:0}.cp-proj:hover{background:var(--gray-50)}.cp-dot{width:9px;height:9px;border-radius:5px;flex:0 0 auto}.cp-proj-name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-proj-stage{flex:0 0 auto;width:90px}.cp-progress{flex:0 0 auto;width:90px;height:7px;border-radius:999px;background:var(--gray-100);overflow:hidden}.cp-progress>div{height:100%;background:linear-gradient(90deg,var(--brand-500),var(--brand-400))}.cp-value{flex:0 0 auto;width:96px;text-align:right;font-weight:700;color:var(--brand-700)}.cp-proj-actions{display:inline-flex;gap:4px;flex:0 0 auto}@media (max-width: 720px){.cp-proj-stage,.cp-progress,.cp-value,.cp-cust-meta{display:none}}.timeline-wrapper{height:calc(100vh - 200px);min-height:600px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-sm)}.qb-handle{width:10px!important;height:10px!important;border:2px solid #fff!important;border-radius:50%!important;box-shadow:0 0 0 1px #0f172a1a,0 2px 4px #0f172a1a;transition:transform .12s ease,box-shadow .12s ease,width .12s ease,height .12s ease}.qb-task-editable .qb-handle{width:14px!important;height:14px!important;background:#16a34a!important;box-shadow:0 0 0 3px #16a34a40,0 2px 6px #0f172a26}.qb-task-editable .qb-handle.react-flow__handle-left{left:-8px!important;right:auto!important;transform:translateY(-50%)}.qb-task-editable .qb-handle.react-flow__handle-right{right:-8px!important;left:auto!important;transform:translateY(-50%)}.qb-task-editable .qb-handle.react-flow__handle-top{top:-8px!important;bottom:auto!important;transform:translate(-50%)}.qb-task-editable .qb-handle.react-flow__handle-bottom{bottom:-8px!important;top:auto!important;transform:translate(-50%)}.qb-task-editable .qb-handle:hover{width:18px!important;height:18px!important;box-shadow:0 0 0 5px #16a34a59,0 4px 10px #16a34a66;cursor:crosshair}.qb-task-node:hover .qb-handle{transform:scale(1.1)}.qb-shape-decision{overflow:visible!important}:has(>.qb-shape-decision)>:nth-child(2){transform:translate(-100px,40px) rotate(0);transform-origin:center center}.qb-shape-decision>div:nth-child(1){transform:translate(-25px,-75px) rotate(-35deg);transform-origin:center center}.qb-shape-decision>div:nth-child(1)>:last-child{position:absolute;left:210px;top:80px;transform:rotate(35deg);transform-origin:center center}.qb-shape-decision>div:nth-child(2){transform:translate(110px,-20px) rotate(0);transform-origin:center center}.qb-shape-decision>div:nth-child(4){transform:translate(90px) rotate(0);transform-origin:center center}.qb-shape-decision>div:nth-child(4)>button:last-child{transform:translate(-170px) rotate(0);transform-origin:center center}.qb-shape-decision>div:nth-child(5){transform:translate(90px) rotate(0);transform-origin:center center}.qb-shape-decision>div:nth-child(6){transform:translate(195px,-105px) rotate(-35deg);transform-origin:center center}.qb-shape-decision>div:nth-child(6)>span:nth-child(1){transform:translate(-80px,-25px) rotate(35deg);transform-origin:center center}.qb-shape-decision>div:nth-child(6)>span:nth-child(2){position:absolute;left:-80px;top:5px;transform:rotate(35deg);transform-origin:center center}.qb-clock-popup{position:absolute;top:calc(100% + 6px);left:0;z-index:1000;width:260px;padding:14px;border-radius:14px;background:var(--surface, #fff);border:1px solid var(--border, #e2e8f0);box-shadow:0 18px 40px -10px #0f172a4d,0 6px 12px #0f172a1a;display:flex;flex-direction:column;align-items:center;gap:10px}[data-theme=dark] .qb-clock-popup{background:var(--card-bg, #0b1220);border-color:#ffffff1a}.qb-clock-readout{display:flex;align-items:center;gap:6px;font-family:JetBrains Mono,Fira Code,monospace;font-size:28px;font-weight:800;color:var(--text)}.qb-clock-seg{background:transparent;border:0;padding:2px 6px;font:inherit;color:inherit;cursor:pointer;border-radius:6px;opacity:.55}.qb-clock-seg.is-active{opacity:1;color:var(--brand-500, #16a34a)}.qb-clock-colon{opacity:.8}.qb-clock-ampm{margin-left:8px;display:inline-flex;flex-direction:column;gap:2px}.qb-clock-ampm-btn{background:transparent;border:1px solid transparent;padding:1px 6px;font-size:11px;font-weight:700;color:var(--text-muted);border-radius:6px;cursor:pointer}.qb-clock-ampm-btn.is-active{background:var(--brand-500, #16a34a);color:#fff;border-color:var(--brand-500, #16a34a)}.qb-clock-face{display:block}.qb-clock-rim{fill:var(--surface-soft, #f8fafc);stroke:var(--border, #e2e8f0);stroke-width:1}[data-theme=dark] .qb-clock-rim{fill:#ffffff08;stroke:#ffffff1a}.qb-clock-hand{stroke:var(--brand-500, #16a34a);stroke-width:2.5;stroke-linecap:round}.qb-clock-pivot{fill:var(--brand-500, #16a34a)}.qb-clock-tip{fill:var(--brand-500, #16a34a);opacity:.18;stroke:var(--brand-500, #16a34a);stroke-width:2}.qb-clock-num-hit{fill:transparent}.qb-clock-num-hit:hover{fill:#16a34a1a}.qb-clock-num-hit.is-active{fill:transparent}.qb-clock-num{font-size:13px;font-weight:700;fill:var(--text);pointer-events:none;font-family:JetBrains Mono,monospace}.qb-clock-num-hit.is-active+.qb-clock-num{fill:var(--brand-500, #16a34a)}.qb-clock-footer{width:100%;display:flex;align-items:center;justify-content:space-between;margin-top:4px}.qb-clock-mode-hint{font-size:11px;color:var(--text-muted)}.qb-notif-row{padding:.55rem .75rem;border-radius:8px;border:1px solid transparent;transition:background .14s,border-color .14s}.qb-notif-row.is-unread{background:#16a34a1a;border-left:3px solid var(--brand-500, #16a34a);padding-left:calc(.75rem - 3px)}.qb-notif-title{font-weight:700;color:var(--text)}.qb-notif-msg{margin-top:2px;font-size:.85rem;color:var(--text-muted)}[data-theme=dark] .qb-notif-row.is-unread{background:#34d39924;border-left-color:var(--brand-400, #34d399)}[data-theme=dark] .qb-notif-row:not(.is-unread){background:#ffffff05}.qb-edge-toolbar{position:absolute;display:inline-flex;align-items:center;gap:6px;padding:6px 8px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px -6px #0f172a2e,0 2px 6px #0f172a14;pointer-events:all;z-index:10;animation:qb-edge-toolbar-in .14s cubic-bezier(.16,1,.3,1)}@keyframes qb-edge-toolbar-in{0%{opacity:0;transform:translate(-50%,calc(-100% - 6px)) translate(var(--x),var(--y))}to{opacity:1}}.qb-edge-toolbar .qb-et-group{display:inline-flex;align-items:center;gap:3px}.qb-edge-toolbar .qb-et-sep{width:1px;height:18px;background:var(--gray-200);margin:0 2px}.qb-edge-toolbar .qb-et-color{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;box-shadow:0 0 0 1px #0f172a1a;transition:transform .1s ease,border-color .1s ease}.qb-edge-toolbar .qb-et-color:hover{transform:scale(1.15)}.qb-edge-toolbar .qb-et-color.is-selected{border-color:#fff;box-shadow:0 0 0 2px var(--brand-500)}.qb-edge-toolbar .qb-et-width{width:26px;height:24px;background:#fff;border:1px solid var(--gray-200);border-radius:6px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;transition:background .1s ease,border-color .1s ease}.qb-edge-toolbar .qb-et-width:hover{background:var(--gray-50);border-color:var(--gray-300)}.qb-edge-toolbar .qb-et-width.is-selected{background:var(--brand-50);border-color:var(--brand-500);box-shadow:0 0 0 2px #16a34a2e}.qb-edge-toolbar .qb-et-line{width:26px;height:24px;background:#fff;border:1px solid var(--gray-200);border-radius:6px;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;transition:background .1s ease,border-color .1s ease}.qb-edge-toolbar .qb-et-line:hover{background:var(--gray-50);border-color:var(--gray-300)}.qb-edge-toolbar .qb-et-line.is-selected{background:var(--brand-50);border-color:var(--brand-500);box-shadow:0 0 0 2px #16a34a2e}.qb-edge-toolbar .qb-et-delete{width:26px;height:24px;border-radius:6px;border:1px solid var(--gray-200);background:#fff;color:#64748b;font-size:16px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .1s ease,color .1s ease,border-color .1s ease}.qb-edge-toolbar .qb-et-delete:hover{background:#dc2626;color:#fff;border-color:#dc2626}.qb-edge-toolbar .qb-et-arrow{position:absolute;bottom:-5px;left:50%;transform:translate(-50%) rotate(45deg);width:8px;height:8px;background:#fff;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.react-flow__edge:hover .react-flow__edge-path{filter:drop-shadow(0 0 3px rgba(22,163,74,.4));cursor:pointer}.react-flow__node.selected{outline:2px solid #2563eb;outline-offset:4px;border-radius:18px}.react-flow__selection{background:#2563eb14;border:1px solid #2563eb}.react-flow__controls{background:#fffffff2;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm);overflow:hidden}.react-flow__minimap{background:#ffffffeb!important;border:1px solid var(--border);border-radius:10px}.react-flow__minimap-mask{fill:#0f172a1a;stroke:#0f172a40;stroke-width:1}[data-theme=dark] .react-flow__minimap{background:#1e293bd9!important;border-color:#ffffff1a;box-shadow:0 6px 14px -6px #00000073}[data-theme=dark] .react-flow__minimap-svg{background:transparent}[data-theme=dark] .react-flow__minimap-mask{fill:#00000073;stroke:#ffffff40;stroke-width:1}[data-theme=dark] .react-flow__minimap-node{stroke:#fff6;stroke-width:1.5;opacity:.95}[data-theme=dark] .react-flow__controls{background:#1e293bd9;border:1px solid rgba(255,255,255,.08);border-radius:8px;box-shadow:0 6px 14px -6px #00000073}[data-theme=dark] .react-flow__controls-button{background:transparent;border-color:#ffffff14;color:#ffffffbf}[data-theme=dark] .react-flow__controls-button:hover{background:#ffffff14;color:var(--text)}[data-theme=dark] .react-flow__controls-button svg{fill:currentColor}[data-theme=dark] .react-flow__background{background-color:var(--surface, #131c2b)}[data-theme=dark] .react-flow__background pattern circle{fill:#ffffff0f!important}.flex{display:flex}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.between{justify-content:space-between}.center{align-items:center}.row{display:flex;flex-direction:row}.col{display:flex;flex-direction:column}.muted{color:var(--text-muted)}.small{font-size:.78rem}.right{text-align:right}.empty{padding:2.5rem;text-align:center;color:var(--text-muted)}@keyframes fadeIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:none}}@keyframes slideInRight{0%{transform:translate(100%);opacity:.4}to{transform:none;opacity:1}}@keyframes pulseAccent{0%,to{box-shadow:0 0 #f9731666}50%{box-shadow:0 0 0 6px #f9731600}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#94a3b8;background-clip:padding-box;border:2px solid transparent}.fc{--fc-border-color: rgba(15, 23, 42, .06);--fc-page-bg-color: transparent;--fc-neutral-bg-color: transparent;--fc-today-bg-color: var(--brand-50, #ecfdf5);--fc-event-text-color: inherit;font-family:inherit}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1rem}.fc .fc-toolbar-title{font-size:1.05rem;font-weight:700;letter-spacing:-.005em;color:var(--text)}.fc .fc-button-primary{background:var(--surface, #fff);color:var(--text-muted);border:1px solid rgba(15,23,42,.08);border-radius:8px;padding:5px 10px;font-size:.78rem;font-weight:600;text-transform:capitalize;box-shadow:none}.fc .fc-button-primary:not(:disabled):hover{background:var(--gray-50, #f8fafc);color:var(--text);border-color:#0f172a1f}.fc .fc-button-primary:not(:disabled):active,.fc .fc-button-primary:not(:disabled).fc-button-active{background:var(--brand-50, #ecfdf5);color:var(--brand-700, #166534);border-color:var(--brand-200, #a7f3d0)}.fc .fc-button-group>.fc-button{border-radius:0}.fc .fc-button-group>.fc-button:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.fc .fc-button-group>.fc-button:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.fc .fc-button-primary:focus{box-shadow:0 0 0 2px #16a34a2e}.fc .fc-col-header-cell{background:transparent;border-color:#0f172a0d}.fc .fc-col-header-cell-cushion{color:var(--text-muted);font-weight:600;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;padding:8px 6px;text-decoration:none}.fc .fc-daygrid-day-frame{padding:2px 4px}.fc-theme-standard td,.fc-theme-standard th{border-color:#0f172a0d}.fc-theme-standard .fc-scrollgrid{border:1px solid rgba(15,23,42,.06);border-radius:12px;overflow:hidden}.fc .fc-scrollgrid-section-body table{border-bottom:0}.fc .fc-daygrid-day-top{justify-content:flex-end}.fc .fc-daygrid-day-number{color:var(--text-muted);font-size:.78rem;font-weight:500;padding:6px 8px 2px;text-decoration:none}.fc .fc-day-other .fc-daygrid-day-number{color:#0f172a40}.fc .fc-day-today{background-color:transparent!important}.fc .fc-day-today .fc-daygrid-day-number{color:var(--brand-700, #15803d);font-weight:800;background:var(--brand-100, #d1fae5);border-radius:999px;padding:2px 8px;margin:4px 6px 0;display:inline-block}.fc .fc-daygrid-day:hover{background:#0f172a06;cursor:pointer}.fc .fc-daygrid-event{border:0;border-radius:6px;padding:2px 6px;margin:1px 4px;font-size:.72rem;font-weight:600;line-height:1.3;background:#2563eb1a;color:#1d4ed8}.fc .fc-daygrid-event:hover{filter:brightness(.94)}.fc .fc-daygrid-event .fc-event-main{color:inherit}.fc .fc-daygrid-dot-event .fc-daygrid-event-dot{width:6px;height:6px;border-radius:50%;border:0;margin-right:4px;background:currentColor}.fc .fc-event-time{font-weight:700;margin-right:2px}.fc .fc-event-title{font-weight:600}.fc .fc-daygrid-block-event{border-radius:6px;border:0;padding:2px 8px;margin:1px 4px;font-size:.72rem;font-weight:600}.fc .fc-daygrid-block-event .fc-event-main{padding:0}.fc .fc-daygrid-more-link{color:var(--text-muted);font-size:.7rem;font-weight:600;text-decoration:none;padding:2px 6px;border-radius:6px}.fc .fc-daygrid-more-link:hover{background:#0f172a0d;color:var(--text)}[data-theme=dark] .fc{--fc-border-color: rgba(255, 255, 255, .07);--fc-today-bg-color: rgba(34, 197, 94, .1)}[data-theme=dark] .fc .fc-daygrid-day:hover{background:#ffffff08}[data-theme=dark] .fc-theme-standard td,[data-theme=dark] .fc-theme-standard th,[data-theme=dark] .fc .fc-col-header-cell,[data-theme=dark] .fc-theme-standard .fc-scrollgrid{border-color:#ffffff12}[data-theme=dark] .fc .fc-button-primary{background:#ffffff0a;color:var(--text-muted);border-color:#ffffff1a}[data-theme=dark] .fc .fc-button-primary:not(:disabled):hover{background:#ffffff14;color:var(--text)}[data-theme=dark] .fc .fc-button-primary:not(:disabled):active,[data-theme=dark] .fc .fc-button-primary:not(:disabled).fc-button-active{background:#22c55e24;color:#6ee7b7;border-color:#22c55e59}[data-theme=dark] .fc .fc-col-header-cell-cushion{color:#ffffff8c}[data-theme=dark] .fc .fc-daygrid-day-number{color:#ffffffa6}[data-theme=dark] .fc .fc-day-other .fc-daygrid-day-number{color:#ffffff38}[data-theme=dark] .fc .fc-day-today .fc-daygrid-day-number{background:#22c55e33;color:#6ee7b7}[data-theme=dark] .fc .fc-toolbar-title{color:var(--text)}[data-theme=dark] .fc .fc-daygrid-more-link{color:#ffffff8c}[data-theme=dark] .fc .fc-daygrid-more-link:hover{background:#ffffff0f;color:var(--text)}[data-theme=dark] .pert-size-ctrl{background:var(--surface-soft, rgba(255, 255, 255, .04));border-color:#ffffff1a;color:var(--text)}[data-theme=dark] .pert-size-ctrl .pert-size-label{color:#ffffff8c}[data-theme=dark] .pert-size-ctrl .pert-size-val{color:var(--text)}[data-theme=dark] .pert-size-ctrl button{background:#ffffff0d;border-color:#ffffff1a;color:var(--text)}[data-theme=dark] .pert-size-ctrl button:hover:not(:disabled){background:#ffffff1a;border-color:#ffffff2e}[data-theme=dark] .proj-sidebar .ps-add-form{background:#ffffff0a;border-color:#ffffff14}[data-theme=dark] .proj-sidebar .ps-add-form .input,[data-theme=dark] .proj-sidebar .ps-add-form .select{background:#ffffff0f;border-color:#ffffff1f;color:var(--text)}[data-theme=dark] select,[data-theme=dark] input[type=date],[data-theme=dark] input[type=time],[data-theme=dark] input[type=datetime-local],[data-theme=dark] input[type=month],[data-theme=dark] input[type=week],[data-theme=dark] input[type=color]{color-scheme:dark}[data-theme=dark] select option,[data-theme=dark] .select option{background-color:#131c2b;color:#e2e8f0}[data-theme=dark] select option:checked,[data-theme=dark] .select option:checked{background-color:#22c55e40;color:#fff}[data-theme=dark] select optgroup,[data-theme=dark] .select optgroup{background-color:#0f172a;color:#94a3b8}[data-theme=dark] .proj-sidebar .ps-empty-drop{background:#ffffff08;border-color:#ffffff1f;color:#ffffff73}[data-theme=dark] .proj-sidebar .ps-private-lock{color:#fca5a5!important}[data-theme=dark] .proj-sidebar .ps-row-actions{background:#ffffff0f;border-color:#ffffff14;box-shadow:none}[data-theme=dark] .proj-sidebar .ps-mini{background:transparent;border:0;color:#ffffff8c}[data-theme=dark] .proj-sidebar .ps-mini:hover{background:#ffffff1a;color:var(--text)}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.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 .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation: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:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.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:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;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:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.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.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@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}.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-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.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:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.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{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.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:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform: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:#3367d9;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%}
