:root{--bg: #0a0a0a;--surface: #141414;--surface-sunken: #181818;--surface-raised: #1f1f1f;--surface-hover: #1b1b1b;--surface-hover-strong: #2a2a2a;--surface-muted: #1c1c1c;--border: #262626;--border-strong: #303030;--border-soft: #1c1c1c;--border-dashed: #3a3a3a;--primary: #1668dc;--primary-hover: #3c89e8;--primary-text: #65a9f3;--primary-text-hover: #8dc5f8;--primary-soft: rgba(22, 104, 220, .1);--primary-soft-hover: rgba(22, 104, 220, .18);--primary-outline: rgba(22, 104, 220, .45);--text: rgba(255, 255, 255, .88);--text-secondary: rgba(255, 255, 255, .6);--text-muted: rgba(255, 255, 255, .45);--text-dim: rgba(255, 255, 255, .4);--text-faint: rgba(255, 255, 255, .35);--text-ghost: rgba(255, 255, 255, .25);--status-new: #58d1c9;--status-progress: #65a9f3;--status-exec-done: #a9d134;--status-completed: #6abe39;--status-paid: #b37feb;--status-paused: #e8b339;--status-cancelled: #e84749;--danger: #dc4446;--danger-text: #e84749;--warning: #d89614;--radius: 6px;--radius-lg: 8px;--radius-sm: 4px;--font: "Public Sans", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--shadow-menu: 0 8px 28px rgba(0, 0, 0, .6);--shadow-menu-sm: 0 6px 24px rgba(0, 0, 0, .55);--shadow-modal: 0 24px 64px rgba(0, 0, 0, .6);--ease: cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;overflow:hidden;background:var(--bg)}body{font-family:var(--font);font-size:13px;color:var(--text);-webkit-font-smoothing:antialiased}a{color:var(--primary-text);text-decoration:none}a:hover{color:var(--primary-text-hover)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}::-webkit-scrollbar-track{background:transparent}input,textarea,select,button{font-family:inherit}@keyframes aFade{0%{opacity:0}to{opacity:1}}@keyframes aRow{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes aReportRow{0%{height:0;opacity:0;transform:translateY(-4px)}to{height:25px;opacity:1;transform:none}}@keyframes aReportRowBox{0%{padding-top:0;padding-bottom:0;border-bottom-width:0}to{padding-top:8px;padding-bottom:8px;border-bottom-width:1px}}.report-cell{display:flex;align-items:center;height:25px;overflow:hidden}.report-row-entering>td{animation:aReportRowBox .24s var(--ease) both}.report-row-entering>td .report-cell{animation:aReportRow .24s var(--ease) both}.report-row-leaving>td{animation:aReportRowBox .18s var(--ease) reverse both;pointer-events:none}.report-row-leaving>td .report-cell{animation:aReportRow .18s var(--ease) reverse both}.report-row{cursor:pointer}.report-drill-group{display:grid;align-items:center;min-height:46px;padding:0 12px;cursor:pointer;transition:background .14s}.report-drill-group:hover{background:var(--surface-hover)!important}.report-drill-doc{display:grid;align-items:center;min-height:46px;padding:0 8px;border-radius:5px;cursor:pointer;transition:background .14s}.report-drill-doc:hover{background:var(--surface-hover)}@keyframes aPop{0%{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}@keyframes aSheet{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:none}}@keyframes aToast{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes aModal{0%{opacity:0;transform:translateY(-12px) scale(.96)}to{opacity:1;transform:none}}@keyframes aShimmer{0%{background-position:-220px 0}to{background-position:320px 0}}@keyframes aSpin{to{transform:rotate(360deg)}}@keyframes aPulse{0%,to{opacity:.35}50%{opacity:1}}.icon{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;flex-shrink:0;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}.mono{font-family:var(--font-mono)}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spinner{border-radius:50%;display:inline-block;border-style:solid;border-color:var(--border-strong);border-top-color:var(--primary);animation:aSpin .7s linear infinite}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:32px;padding:0 12px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;transition:border-color .16s,background .16s,color .16s}.btn:hover{border-color:var(--primary-hover);color:var(--primary-text)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{border-color:var(--border-strong);color:var(--text)}.btn-primary{border:0;background:var(--primary);color:#fff;font-weight:500;box-shadow:0 2px 8px #1668dc59;transition:background .16s,transform .12s}.btn-primary:hover{background:var(--primary-hover);color:#fff}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled:hover{background:var(--primary)}.btn-danger{border:0;background:var(--danger);color:#fff;font-weight:500}.btn-danger:hover{background:#e05a5c;color:#fff}.btn-sm{height:28px;padding:0 10px;font-size:12px}.btn-ghost{border:0;background:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--surface-raised);color:var(--text)}.btn-link{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--primary-text);font:inherit;font-size:12px;cursor:pointer;transition:background .16s}.btn-link:hover{background:#1668dc26}.icon-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:var(--radius);background:transparent;color:var(--text-muted);cursor:pointer;transition:background .16s,color .16s}.icon-btn:hover{background:var(--surface-raised);color:var(--text)}.icon-btn-sm{width:26px;height:26px;border-radius:var(--radius-sm)}.icon-btn-sm:hover{background:var(--surface-hover-strong)}.icon-btn-md{width:28px;height:28px;border-radius:var(--radius-sm)}.icon-btn-md:hover{background:var(--surface-raised)}.icon-btn-outline{border:1px solid var(--border-strong);background:transparent}.icon-btn-outline:hover{border-color:var(--primary-hover);background:transparent;color:var(--primary-text)}.select-trigger{display:flex;align-items:center;gap:8px;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font:inherit;font-size:13px;cursor:pointer;transition:border-color .16s}.select-trigger:hover{border-color:var(--primary-hover)}.select-trigger-sm{height:28px;padding:0 8px;font-size:12px;color:var(--text-secondary)}.field{display:flex;align-items:center;gap:8px;height:32px;padding:0 10px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-raised);transition:border-color .16s}.field:hover,.field:focus-within{border-color:var(--primary-hover)}.input{width:100%;height:32px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-raised);color:var(--text);font:inherit;font-size:13px;outline:0;transition:border-color .16s}.input:hover{border-color:#3a3a3a}.input:focus{border-color:var(--primary)}.input::placeholder{color:var(--text-faint)}.input-bare{flex:1;min-width:0;height:auto;border:0;padding:0;background:transparent;outline:0}.input-bare:hover,.input-bare:focus{border:0}textarea.input{height:auto;padding:8px 10px;line-height:1.5;resize:vertical}.input-invalid,.input-invalid:hover,.input-invalid:focus{border-color:var(--danger)}.field-label{display:block;font-size:11px;color:var(--text-dim);margin-bottom:5px}.menu{padding:4px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-raised);box-shadow:var(--shadow-menu);animation:aPop .16s var(--ease) both}.menu-item{display:flex;align-items:center;gap:8px;width:100%;height:30px;padding:0 8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text);font:inherit;font-size:12px;text-align:left;cursor:pointer;transition:background .14s}.menu-item:hover{background:var(--surface-hover-strong)}.menu-item-danger{color:var(--danger-text)}.menu-item-danger:hover{background:#dc444624}.card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}.data-table{width:100%;border-collapse:collapse;table-layout:fixed}.data-table th{position:sticky;top:0;z-index:5;height:34px;padding:0 12px;text-align:left;font-size:11px;font-weight:500;color:var(--text-muted);background:var(--surface-sunken);border-bottom:1px solid var(--border)}.data-table tbody tr{border-bottom:1px solid var(--border-soft);transition:background .14s}.data-table tbody tr.clickable{cursor:pointer}.data-table tbody tr.clickable:hover{background:var(--surface-hover)!important}.sort-btn{display:inline-flex;align-items:center;gap:4px;border:0;padding:0;background:transparent;font:inherit;font-size:11px;font-weight:500;cursor:pointer;transition:color .16s}.sort-btn:hover{color:var(--text)!important}.skeleton-bar{border-radius:3px;background:linear-gradient(90deg,#1c1c1c 0,#2a2a2a,#1c1c1c 80%);background-size:320px 100%;animation:aShimmer 1.2s linear infinite}.hover-row{transition:border-color .16s,background .16s}.hover-row:hover{border-color:var(--primary-hover);background:var(--surface-muted)}.hover-border:hover{border-color:var(--primary-hover)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;animation:aFade .18s both}.modal{border-radius:var(--radius-lg);border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-modal);animation:aModal .22s var(--ease) both;display:flex;flex-direction:column;overflow:hidden}.nav-item:hover{background:var(--surface-raised)!important;color:var(--text)!important}.nav-item[data-active]:hover{background:#1668dc38!important;color:var(--primary-text)!important}.rail-toggle:hover{background:var(--surface-raised);color:var(--text)}.tag-btn:hover{filter:brightness(1.25)}.autorun-btn:hover{background:var(--primary-soft-hover)!important}.dashed-btn{display:flex;align-items:center;justify-content:center;gap:6px;height:34px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:transparent;color:var(--text-muted);font:inherit;font-size:12px;cursor:pointer;transition:border-color .16s,color .16s}.dashed-btn:hover{border-color:var(--primary-hover);color:var(--primary-text)}.dashed-btn:disabled,.dashed-btn:disabled:hover{border-color:var(--border-strong);color:var(--text-muted);cursor:default;opacity:.6}.panel-tab:hover{color:var(--text)!important}.dispatch-btn:hover{background:#1668dc33!important;border-color:var(--primary-hover)!important}.row-hover{transition:background .14s}.row-hover:hover{background:var(--surface-sunken)}.project-card{transition:border-color .18s,transform .18s}.project-card:hover{border-color:var(--primary-hover);transform:translateY(-2px)}.section-table{width:100%;border-collapse:collapse}.section-table th{text-align:left;padding:0 16px;height:34px;font-size:11px;font-weight:500;color:var(--text-muted);background:var(--surface-sunken);border-bottom:1px solid var(--border)}.section-table tbody tr{border-bottom:1px solid var(--surface-muted);transition:background .14s}.section-table tbody tr:hover{background:var(--surface-sunken)}.danger-icon-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);cursor:pointer;transition:background .16s,color .16s}.danger-icon-btn:hover{background:#dc44461f;color:var(--danger-text)}.link-btn{border:0;background:transparent;color:var(--primary-text);font:inherit;font-size:12px;cursor:pointer;padding:0}.link-btn:hover{color:var(--primary-text-hover)}.toggle-row{transition:border-color .16s}.toggle-row:hover{border-color:var(--primary-hover)}.danger-outline-btn:hover{background:#dc44462e!important}.wide-table{width:100%;border-collapse:collapse}.wide-table th{text-align:left;padding:0 14px;font-size:12px;font-weight:400;color:var(--text-muted);background:var(--surface-sunken);border-bottom:1px solid var(--border)}.wide-table tbody tr{border-bottom:1px solid var(--surface-raised);transition:background .14s}.wide-table tbody tr:hover{background:var(--surface-sunken)!important}.col-resizer{position:absolute;top:0;right:0;bottom:0;width:8px;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none}.col-resizer:after{content:"";position:absolute;top:8px;bottom:8px;right:3px;width:2px;border-radius:1px;background:transparent;transition:background .14s}.wide-table th:hover .col-resizer:after{background:var(--border-strong)}.col-resizer:hover:after,.col-resizer[data-active]:after{background:var(--primary)}.native-select{border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface-sunken);color:#ffffffd9;font:inherit;font-size:12.5px;padding:0 8px;outline:0;cursor:pointer;transition:border-color .16s}.native-select:focus{border-color:var(--primary)}.native-select option{background:var(--surface-raised);color:var(--text)}.stat-card:hover{border-color:#555!important}.btn-ghost-inline{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:0;border-radius:var(--radius);background:transparent;color:var(--text-muted);font:inherit;font-size:12.5px;cursor:pointer;transition:color .16s}.btn-ghost-inline:hover{color:#ffffffd9}.log-table{border-collapse:collapse}.log-table th{position:sticky;top:0;z-index:5;text-align:left;padding:9px 14px;background:var(--surface-sunken);border-bottom:1px solid var(--border);font-size:11px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted)}.log-table tbody tr{border-bottom:1px solid var(--surface-raised);transition:background .14s}.log-table tbody tr:hover{background:var(--surface-sunken)}.date-input{border:0;outline:0;background:transparent;color:#ffffffd9;font:inherit;font-size:12.5px;color-scheme:dark}.cell-input{width:100%;height:28px;border-radius:5px;border:1px solid var(--border-strong);background:var(--surface-raised);color:var(--text);font:inherit;font-size:12px;padding:0 6px;outline:0;color-scheme:dark}.cell-input:focus{border-color:var(--primary)}.cell-action{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);cursor:pointer;transition:filter .16s}.cell-action:hover{filter:brightness(1.3)}.choice-card{transition:border-color .18s,background .18s,transform .18s}.choice-card:hover{border-color:var(--primary);background:#1d1d1d;transform:translateY(-2px)}.form-input{height:34px;font-size:13px;background:var(--surface)}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #1668dc2e}textarea.form-input{height:auto}.option-row{display:block;width:100%;padding:7px 9px;border:0;border-radius:5px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .14s}.option-row:hover{background:var(--border)!important}.subtle-btn:hover{background:var(--surface-hover-strong)!important;border-color:#555!important;color:var(--text)!important}.doc-sheet{width:900px;max-width:100%;background:#fff;color:#1c1c1c;border-radius:4px;box-shadow:0 24px 64px #0009;padding:44px 52px;animation:aModal .3s var(--ease) both}.doc-table{width:100%;border-collapse:collapse;font-size:12.5px}.doc-table th{padding:7px 6px;border:1px solid #cfcfcf;background:#f2f2f2;font-weight:600}.doc-table td{padding:6px;border:1px solid #dcdcdc}.doc-textarea{width:100%;resize:vertical;border:1px solid #d4d4d4;border-radius:2px;background:#fbfbfb;color:#1c1c1c;font:inherit;font-size:12.5px;line-height:1.65;padding:10px 12px;outline:0;transition:border-color .16s}.doc-textarea:focus{border-color:var(--primary)}:root{--ex-bg: #0d0d0d;--ex-chrome: #111111;--ex-surface: #151515;--ex-field: #1b1b1b}@keyframes aUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@keyframes aVeil{0%{opacity:0}to{opacity:1}}.ex-tab{border:0;background:transparent;font:inherit;cursor:pointer;transition:color .16s,background .16s}.ex-card{border:1px solid var(--border-soft);border-radius:16px;background:var(--ex-surface)}.ex-card-btn{border:1px solid var(--border-soft);border-radius:14px;background:var(--ex-surface);color:inherit;font:inherit;cursor:pointer;transition:all .16s}.ex-card-btn:hover{border-color:#333;background:var(--surface-hover)}.ex-row-btn{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;transition:background .16s}.ex-row-btn:hover{background:var(--surface-hover)}.ex-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;font:inherit;cursor:pointer;white-space:nowrap;transition:all .16s}.ex-btn:disabled{opacity:.55;cursor:default}.ex-btn-primary{border:1px solid var(--primary);background:var(--primary);color:#fff;font-weight:600}.ex-btn-primary:hover:not(:disabled){border-color:var(--primary-hover);background:var(--primary-hover)}.ex-btn-ghost{border:1px solid var(--border);background:transparent;color:#ffffffd9}.ex-btn-ghost:hover:not(:disabled){border-color:var(--primary-hover);color:var(--primary-text)}.ex-btn-warn{border:1px solid #594214;background:transparent;color:var(--status-paused);font-weight:500}.ex-btn-warn:hover:not(:disabled){border-color:var(--warning);background:#d896141f}.ex-btn-danger{border:1px solid #58181c;background:transparent;color:var(--danger-text)}.ex-btn-danger:hover:not(:disabled){background:#dc44461a}.ex-dashed-btn{border:1px dashed #333;border-radius:12px;background:transparent;color:var(--primary-text);font:inherit;cursor:pointer;transition:all .16s}.ex-dashed-btn:hover{border-color:var(--primary-hover);background:#1668dc14}.ex-gantt-bar{font:inherit;font-family:var(--font-mono);border-radius:9px;cursor:pointer;overflow:hidden;white-space:nowrap;transition:filter .16s}.ex-gantt-bar:hover{filter:brightness(1.35)}.ex-input{width:100%;padding:12px 13px;border:1px solid var(--surface-hover-strong);border-radius:12px;background:var(--ex-field);color:inherit;font:inherit;font-size:14.5px;outline:none;transition:border-color .16s}.ex-input:focus{border-color:var(--primary)}.ex-input::placeholder{color:var(--text-ghost)}.dispatch-file:hover{border-color:var(--border-strong)!important}.dispatch-file[data-on="1"]:hover{border-color:#3c89e8!important}.dispatch-thumb-zoom{opacity:0;transition:opacity .16s}.dispatch-thumb:hover .dispatch-thumb-zoom{opacity:1}.sched-drag,.sched-person,.sched-block{transition:border-color .16s,background .16s}.sched-drag:hover,.sched-person:hover,.sched-block:hover{border-color:var(--primary-hover)}.sched-drag:hover{background:var(--surface-raised)}.sched-day-head:hover{background:#ffffff0a}.sched-nav-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);background:var(--surface-sunken);color:var(--text-secondary);cursor:pointer;transition:color .16s,border-color .16s}.sched-nav-btn:hover{color:var(--primary-text);border-color:var(--primary-hover)}.sched-mini-btn{width:18px;height:18px;display:flex;align-items:center;justify-content:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-dim);cursor:pointer;padding:0;transition:background .16s,color .16s}.sched-mini-btn:hover{background:#ffffff14;color:var(--text)}.sched-mini-btn-danger:hover{background:#dc444629;color:var(--danger-text)}.sched-chip-btn{width:13px;height:13px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--text-dim);cursor:pointer;padding:0;transition:color .16s}.sched-chip-btn:hover{color:var(--danger-text)}
