:root{--navy: #1e3a8a;--navy-2: #172e6e;--navy-3: #0f1f4d;--blue: #2563eb;--blue-50: #eff6ff;--blue-100: #dbeafe;--bg: #f1f5f9;--card: #ffffff;--line: #e2e8f0;--line-2: #cbd5e1;--text: #0f172a;--text-2: #475569;--text-3: #64748b;--red: #dc2626;--red-50: #fef2f2;--amber: #b45309;--amber-50: #fffbeb;--green: #15803d;--green-50: #f0fdf4;--violet: #6d28d9;--violet-50: #f5f3ff;--orange: #c2410c;--radius: 10px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 1px 3px rgba(15, 23, 42, .08);--sidebar: 248px;--safe-b: env(safe-area-inset-bottom, 0px);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--text);font-size:14px;line-height:1.45}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);-webkit-tap-highlight-color:transparent}body.modal-open{overflow:hidden}a{color:var(--blue);text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--text)}input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]),select,textarea{width:100%;padding:8px 10px;border:1px solid var(--line-2);border-radius:8px;background:#fff;min-height:38px}input:focus,select:focus,textarea:focus{outline:2px solid var(--blue-100);border-color:var(--blue)}textarea{resize:vertical}input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--navy);vertical-align:-3px}code{background:#f1f5f9;padding:1px 5px;border-radius:4px;font-size:12.5px}h1{font-size:22px;margin:0;letter-spacing:-.01em}h2{font-size:15px;margin:0;display:flex;align-items:center;gap:8px}h3{font-size:16px;margin:0}.muted{color:var(--text-3)}.center{text-align:center}.nowrap{white-space:nowrap}.text-red{color:var(--red)}.text-amber{color:var(--amber)}.text-green{color:var(--green)}.icon{flex:none}.boot{min-height:100vh;display:grid;place-items:center}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);background:var(--navy-3);color:#cbd5e1;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:14px 10px;z-index:20}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 16px;cursor:pointer}.brand img{border-radius:8px}.brand-sub{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#93c5fd}.brand-name{font-weight:700;color:#fff;font-size:14px;line-height:1.2}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:8px;color:#cbd5e1;font-weight:500;margin-bottom:2px}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:var(--navy);color:#fff;box-shadow:inset 3px 0 #60a5fa}.nav-count{margin-left:auto;background:var(--red);color:#fff;border-radius:10px;font-size:11px;padding:1px 7px;font-weight:700}.nav-soon{margin:18px 8px 0;padding:10px;border:1px dashed rgba(255,255,255,.14);border-radius:8px;font-size:12px;color:#94a3b8;line-height:1.7}.nav-soon-title{text-transform:uppercase;font-size:10.5px;letter-spacing:.08em;color:#64748b}.sidebar-user{margin-top:auto;display:flex;align-items:center;gap:10px;padding:10px 8px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-user-info{min-width:0;flex:1}.sidebar-user-name{color:#fff;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:12px;color:#94a3b8}.sidebar .icon-btn{color:#94a3b8}.sidebar-author{font-size:11px;color:#64748b;text-align:center;padding-top:6px}.main{margin-left:var(--sidebar);flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:15;display:flex;gap:12px;align-items:center;padding:10px 24px;background:#f1f5f9eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.search{position:relative;flex:1;max-width:520px}.search .icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-3)}.search input{padding-left:32px!important;background:#fff}.search-inline{max-width:320px;min-width:200px}.btn-quick{margin-left:auto;font-weight:700;letter-spacing:.02em}.bell{position:relative}.bell-dot{position:absolute;top:-2px;right:-4px;background:var(--red);color:#fff;font-size:10px;font-weight:700;border-radius:9px;padding:0 5px;min-width:17px;text-align:center;line-height:16px;border:2px solid var(--bg)}.content{padding:20px 24px 40px;flex:1}.page{max-width:1400px;margin:0 auto}.page.narrow{max-width:820px}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.page-actions select{width:auto}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.14em;color:var(--navy)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;min-height:38px;border-radius:8px;border:1px solid var(--line-2);background:#fff;font-weight:600;white-space:nowrap;transition:background .12s,border-color .12s}.btn:hover:not(:disabled){background:#f8fafc;border-color:#94a3b8}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn-primary:hover:not(:disabled){background:var(--navy-2);border-color:var(--navy-2)}.btn-success{background:var(--green);border-color:var(--green);color:#fff}.btn-success:hover:not(:disabled){background:#166534}.btn-danger{background:var(--red);border-color:var(--red);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.btn-ghost-danger{color:var(--red);border-color:#fecaca}.btn-sm{padding:5px 10px;min-height:32px;font-size:13px}.btn-block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:8px;border:0;background:transparent;color:var(--text-2)}.icon-btn:hover{background:#0f172a0f}.icon-btn.sm{width:28px;height:28px}.link{background:none;border:0;color:var(--blue);font-weight:600;padding:0;font-size:13px}.spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner-lg{width:26px;height:26px;color:var(--navy)}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;gap:10px;align-items:center;justify-content:center;padding:40px;color:var(--text-3)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.count{background:var(--blue-50);color:var(--navy);font-weight:700;border-radius:10px;padding:1px 9px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:2px 8px;border-radius:6px;white-space:nowrap}.tone-slate{background:#f1f5f9;color:#334155}.tone-blue{background:var(--blue-50);color:#1d4ed8}.tone-amber{background:var(--amber-50);color:var(--amber)}.tone-gray{background:#f1f5f9;color:#475569}.tone-violet{background:var(--violet-50);color:var(--violet)}.tone-green{background:var(--green-50);color:var(--green)}.tone-red{background:var(--red-50);color:var(--red)}.pri{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;white-space:nowrap}.pri-urgent{color:var(--red)}.pri-high{color:var(--orange)}.pri-medium{color:#2563eb}.pri-low{color:#64748b}.avatar{display:inline-grid;place-items:center;border-radius:50%;color:#fff;font-weight:700;flex:none;letter-spacing:-.02em}.avatar-empty{background:#e2e8f0;color:#94a3b8;font-size:12px}.who{display:flex;align-items:center;gap:8px;min-width:0}.progress{display:inline-block;width:100%;max-width:160px;height:6px;background:#e2e8f0;border-radius:4px;overflow:hidden;vertical-align:middle}.progress-fill{display:block;height:100%;background:var(--blue);border-radius:4px}.tone-bg-green{background:var(--green)}.tone-bg-red{background:var(--red)}.team-dot{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}.team-dot:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c, #64748b)}.team-dot.small:before{width:7px;height:7px}.code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px;color:var(--text-3);white-space:nowrap}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:#fff;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500;white-space:nowrap}.chip b{background:var(--bg);border-radius:8px;padding:0 6px;font-size:11.5px}.chip:hover{border-color:#94a3b8}.chip-active{background:var(--navy);color:#fff;border-color:var(--navy)}.chip-active b{background:#fff3}.chip-danger:not(.chip-active) b{background:var(--red-50);color:var(--red)}.chip-blue{background:var(--blue-50);border-color:var(--blue-100);color:var(--navy)}.chip button{border:0;background:none;padding:0 0 0 2px;font-size:15px;line-height:1;color:var(--text-3)}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.chip-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:8px;scrollbar-width:thin}.segmented{display:inline-flex;background:#e2e8f0;border-radius:9px;padding:3px;gap:2px}.segmented button{border:0;background:transparent;padding:6px 12px;border-radius:7px;font-weight:600;font-size:13px;color:var(--text-2);display:inline-flex;gap:6px;align-items:center}.segmented button.active{background:#fff;color:var(--navy);box-shadow:var(--shadow)}.empty{text-align:center;padding:28px 12px;color:var(--text-3);display:flex;flex-direction:column;align-items:center;gap:6px}.empty-title{font-weight:600;color:var(--text-2)}.empty-text{font-size:13px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-label{font-size:13px;font-weight:600;color:var(--text-2)}.field-hint{font-size:12px;color:var(--text-3)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;border:0;padding:0;margin:0;min-width:0}.span-2{grid-column:span 2}.form-error{background:var(--red-50);color:var(--red);border-radius:8px;padding:9px 12px;margin-top:12px;display:flex;gap:6px;align-items:center}.warn-box{background:var(--amber-50);border:1px solid #fde68a;color:#78350f;border-radius:8px;padding:10px 12px;margin:8px 0;font-size:13.5px}.warn-box ul{margin:6px 0;padding-left:18px}.warn-title{font-weight:700;display:flex;gap:6px;align-items:center;margin-bottom:4px}.warn-alt{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.info-box{background:var(--blue-50);color:var(--navy);border-radius:8px;padding:10px 12px;margin-bottom:12px}.hint-ok{font-size:12.5px;color:var(--green);display:flex;gap:5px;align-items:center}.row-gap{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row-gap input:not([type=color]):not([type=checkbox]){flex:1;min-width:120px;width:auto}.check{display:inline-flex;gap:8px;align-items:center;font-size:13.5px;cursor:pointer}.checks{gap:8px}.radio-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.radio-pill{border:1px solid var(--line-2);border-radius:8px;padding:7px 12px;display:inline-flex;gap:7px;align-items:center;cursor:pointer;font-size:13.5px}.radio-pill.active{border-color:var(--navy);background:var(--blue-50);color:var(--navy);font-weight:600}.pri-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.pri-opt{border:1px solid var(--line-2);background:#fff;border-radius:8px;padding:8px 4px;font-weight:600;font-size:13px}.pri-opt.active.pri-urgent{background:var(--red);border-color:var(--red);color:#fff}.pri-opt.active.pri-high{background:var(--orange);border-color:var(--orange);color:#fff}.pri-opt.active.pri-medium{background:#2563eb;border-color:#2563eb;color:#fff}.pri-opt.active.pri-low{background:#64748b;border-color:#64748b;color:#fff}.quick-dates{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.quick-dates .chip{padding:3px 9px;font-size:12px}fieldset:disabled{opacity:.7}.modal-backdrop,.drawer-backdrop{position:fixed;inset:0;background:#0f172a73;z-index:50;display:flex;animation:fade .15s}.modal-backdrop{align-items:flex-start;justify-content:center;padding:6vh 16px;overflow-y:auto;z-index:60}@keyframes fade{0%{opacity:0}}.modal{background:#fff;border-radius:14px;width:100%;max-width:560px;box-shadow:0 20px 50px #00000040;display:flex;flex-direction:column;max-height:88vh}.modal-wide{max-width:820px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.modal-body{padding:16px 18px;overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line);flex-wrap:wrap}.drawer-backdrop{justify-content:flex-end}.drawer{background:#fff;width:min(760px,100%);height:100%;overflow-y:auto;padding:18px 22px 40px;box-shadow:-10px 0 40px #0003;animation:slide .2s ease-out}@keyframes slide{0%{transform:translate(40px);opacity:.6}}.credential{background:#f8fafc;border:1px solid var(--line);padding:12px;border-radius:8px;white-space:pre-wrap;font-size:13px}.toasts{position:fixed;right:18px;bottom:18px;z-index:80;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{background:var(--text);color:#fff;padding:10px 14px;border-radius:10px;box-shadow:0 8px 24px #0003;font-size:13.5px;cursor:pointer;display:flex;gap:8px;align-items:flex-start;animation:fade .2s}.toast-success{background:var(--green)}.toast-error{background:var(--red)}.toast-notify{background:var(--navy)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,var(--navy-3),var(--navy) 60%,#2563eb)}.login-card{background:#fff;border-radius:16px;padding:28px;width:100%;max-width:400px;box-shadow:0 30px 60px #0000004d;display:flex;flex-direction:column;gap:14px}.login-brand{display:flex;gap:14px;align-items:center;margin-bottom:6px}.login-brand img{border-radius:12px}.login-brand h1{font-size:19px;color:var(--navy)}.login-company{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-weight:700}.login-help{font-size:12.5px;color:var(--text-3);text-align:center;margin:0}.login-author{font-size:11.5px;color:#94a3b8;text-align:center;margin:0}.kpis{display:grid;grid-template-columns:repeat(8,1fr);gap:10px;margin-bottom:16px}.kpi{text-align:left;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);transition:transform .1s,border-color .1s}.kpi:hover{border-color:var(--navy);transform:translateY(-1px)}.kpi-top{display:flex;gap:6px;align-items:center;color:var(--text-3);font-size:12.5px;font-weight:600;min-height:34px}.kpi-value{font-size:28px;font-weight:800;color:var(--navy);line-height:1.1;margin-top:4px;font-variant-numeric:tabular-nums}.kpi-red{border-color:#fecaca;background:var(--red-50)}.kpi-red .kpi-value,.kpi-red .kpi-top{color:var(--red)}.kpi-amber .kpi-value{color:var(--amber)}.kpi-green .kpi-value{color:var(--green)}.kpi-violet{border-color:#ddd6fe;background:var(--violet-50)}.kpi-violet .kpi-value{color:var(--violet)}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dash-grid .span-2{grid-column:span 2}.today{border-top:3px solid var(--navy)}.today h2{color:var(--navy);letter-spacing:.02em}.today-list,.mini-stack{display:flex;flex-direction:column;gap:6px}.today-item{display:flex;flex-direction:column;gap:3px}.why{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.why-red{color:var(--red)}.why-violet{color:var(--violet)}.why-amber{color:var(--amber)}.why-blue{color:#1d4ed8}.why-gray{color:var(--text-3)}.dash-note{margin-top:18px;font-size:12.5px;text-align:center}.task-line{display:flex;gap:10px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:8px;color:var(--text);background:#fff}.task-line:hover{border-color:#93c5fd;background:#fafcff}.task-line.is-overdue{border-left:3px solid var(--red)}.task-line-main{flex:1;min-width:0}.task-line-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-line-meta{display:flex;gap:10px;font-size:12px;color:var(--text-3);flex-wrap:wrap;align-items:center;margin-top:1px}.task-line-right{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.due{font-size:12.5px;color:var(--text-2);white-space:nowrap}.due-over{color:var(--red);font-weight:700}.due-soon{color:var(--amber);font-weight:600}.table-scroll{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-3);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:#f8fafc}.table td{padding:9px 10px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:#f8fafc}.table .num{text-align:right;font-variant-numeric:tabular-nums}.load{display:flex;align-items:center;gap:8px}.load-bar{flex:1;height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden;min-width:60px;display:inline-block}.load-bar.small{max-width:90px;height:6px}.load-fill{display:block;height:100%;background:#2a78d6;border-radius:4px}.load-fill.high{background:#eda100}.load-fill.over{background:var(--red)}.load-txt{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--text-2);margin-bottom:12px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.hbar-row{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center;margin-bottom:10px}.hbar-label{font-weight:600;font-size:13px;display:flex;flex-direction:column}.hbar-track{height:22px}.hbar-stack{display:flex;height:100%;gap:2px;min-width:8px}.hbar-seg{display:block;height:100%;min-width:4px}.hbar-seg:first-child{border-radius:4px 0 0 4px}.hbar-seg:last-child{border-radius:0 4px 4px 0}.hbar-seg:only-child{border-radius:4px}.hbar-seg:hover{filter:brightness(1.1)}.ontime{text-align:center;padding:6px 0}.hero-num{font-size:52px;font-weight:800;color:var(--navy);line-height:1;font-variant-numeric:tabular-nums}.hero-num span{font-size:24px;color:var(--text-3)}.split-bar{display:flex;gap:2px;height:14px;margin:14px 0 8px}.split-bar span:first-child{border-radius:4px 0 0 4px}.split-bar span:last-child{border-radius:0 4px 4px 0}.split-good{background:#1baf7a}.split-bad{background:#e34948}.split-legend{display:flex;justify-content:center;gap:18px;font-size:13px;color:var(--text-2)}.split-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px}.perf-row{display:grid;grid-template-columns:90px 1fr;gap:4px 10px;align-items:center;margin-bottom:10px}.perf-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.perf-track{height:12px;background:#f1f5f9;border-radius:4px;overflow:hidden}.perf-fill{display:block;height:100%;background:#2a78d6;border-radius:0 4px 4px 0}.perf-val{grid-column:2;font-size:12px;color:var(--text-2)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}.filters select{width:auto;max-width:200px}.table-card{padding:0;overflow:hidden}.task-table td{font-size:13.5px}.task-table tr.is-overdue td:first-child{box-shadow:inset 3px 0 0 var(--red)}.cell-title{font-weight:600;color:var(--text);display:block;max-width:460px}.cell-title:hover{color:var(--blue)}.cell-sub{font-size:12px;color:var(--text-3);display:flex;gap:8px;flex-wrap:wrap;align-items:center}.status-cell{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.task-cards{display:none}.kanban{display:grid;grid-template-columns:repeat(5,minmax(200px,1fr));gap:12px;overflow-x:auto;padding-bottom:10px;align-items:start}.kcol{background:#e8edf3;border-radius:10px;padding:8px;min-height:200px;transition:background .1s}.kcol-over{background:var(--blue-100);outline:2px dashed var(--blue)}.kcol-head{display:flex;gap:8px;align-items:center;font-weight:700;font-size:13px;padding:4px 4px 10px}.kcol-head b{margin-left:auto;background:#fff;border-radius:8px;padding:0 8px;font-size:12px}.kcol-dot{width:10px;height:10px;border-radius:3px}.kcol-body{display:flex;flex-direction:column;gap:8px}.kcol-empty{font-size:12px;color:var(--text-3);text-align:center;padding:16px 4px;border:1px dashed var(--line-2);border-radius:8px}.kcard{background:#fff;border-radius:8px;padding:10px;box-shadow:var(--shadow);color:var(--text);display:flex;flex-direction:column;gap:6px;border:1px solid transparent;cursor:grab}.kcard:hover{border-color:#93c5fd}.kcard.is-overdue{border-left:3px solid var(--red)}.kcard-top{display:flex;justify-content:space-between}.kcard-title{font-weight:600;font-size:13.5px}.kcard-note{font-size:12px;color:var(--amber)}.kcard-foot{display:flex;gap:8px;align-items:center;font-size:12px}.kcard-foot .due{margin-left:auto}.cal{padding:12px}.cal-head{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.cal-head h3{min-width:120px;text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.cal-dow{font-size:12px;font-weight:700;color:var(--text-3);text-align:center;padding:6px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8fafc}.cal-cell{min-height:110px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px;display:flex;flex-direction:column;gap:3px;min-width:0}.cal-out{background:#fafbfc}.cal-out .cal-day{color:#cbd5e1}.cal-today{background:var(--blue-50)}.cal-today .cal-day{color:var(--navy);font-weight:800}.cal-day{font-size:12.5px;font-weight:600;display:flex;justify-content:space-between;color:var(--text-2)}.cal-wd{display:none}.cal-task{font-size:11.5px;padding:2px 5px;border-radius:4px;background:var(--blue-50);color:var(--navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid #2563eb}.cal-task.pri-border-urgent{border-left-color:var(--red)}.cal-task.pri-border-high{border-left-color:var(--orange)}.cal-task.pri-border-low{border-left-color:#94a3b8}.cal-task.is-overdue{background:var(--red-50);color:var(--red)}.cal-task.is-done{text-decoration:line-through;opacity:.6}.cal-more{font-size:11px;color:var(--text-3)}.cal-hint{font-size:12px;margin-top:8px}.detail-head h2{font-size:20px;margin:4px 0 8px;display:block;line-height:1.3}.detail-code{display:flex;align-items:center;gap:6px}.detail-code .muted{font-size:12.5px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-code .icon-btn{margin-left:auto}.detail-badges{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.action-bar{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:14px 0}.info-label{font-size:12px;color:var(--text-3);font-weight:600;margin-bottom:3px}.info-value{font-size:13.5px}.section{margin:18px 0}.section-title{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);margin-bottom:8px;display:flex;gap:8px;align-items:center}.section-title b{color:var(--navy)}.section-title .link{margin-left:auto;text-transform:none;letter-spacing:0}.prose{white-space:pre-wrap;word-break:break-word}.result-box{background:var(--green-50);border:1px solid #bbf7d0;border-radius:8px;padding:10px 12px;margin:8px 0;white-space:pre-wrap}.result-label{font-size:12px;font-weight:700;color:var(--green);margin-bottom:4px}.result-review{margin-top:6px;padding-top:6px;border-top:1px dashed #bbf7d0}.progress-edit{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.progress-edit .progress{max-width:200px;margin-left:6px}.checklist{list-style:none;padding:0;margin:0 0 6px}.checklist li{display:flex;align-items:center;justify-content:space-between;padding:6px 4px;border-bottom:1px solid #f1f5f9}.checklist label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;flex:1}.checklist li.done span{text-decoration:line-through;color:var(--text-3)}.inline-add input{border-style:dashed!important}.mini-list{display:flex;flex-direction:column;gap:4px}.mini-item{display:flex;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:8px;color:var(--text);font-size:13px}.mini-item .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.dep-picker{border:1px solid var(--line-2);border-radius:8px;padding:6px;margin-top:6px;display:flex;flex-direction:column;gap:2px}.dep-picker button{text-align:left;border:0;background:none;padding:6px;border-radius:6px}.dep-picker button:hover{background:var(--blue-50)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:22px 0 12px}.tabs button{border:0;background:none;padding:8px 12px;font-weight:600;color:var(--text-3);border-bottom:2px solid transparent;display:inline-flex;gap:6px;align-items:center}.tabs button.active{color:var(--navy);border-bottom-color:var(--navy)}.comments{display:flex;flex-direction:column;gap:12px}.comment{display:flex;gap:10px}.comment-body{background:#f8fafc;border-radius:10px;padding:8px 12px;flex:1;min-width:0}.comment.mine .comment-body{background:var(--blue-50)}.comment-meta{font-size:12px;color:var(--text-3);margin-bottom:2px}.mention{color:var(--navy)}.comment-form{position:relative;display:flex;gap:8px;align-items:flex-end}.comment-form .btn{height:56px}.mention-pop{position:absolute;bottom:100%;left:0;background:#fff;border:1px solid var(--line-2);border-radius:8px;box-shadow:var(--shadow);padding:4px;display:flex;flex-direction:column;min-width:220px;z-index:5}.mention-pop button{display:flex;gap:8px;align-items:center;border:0;background:none;padding:6px 8px;border-radius:6px;text-align:left}.mention-pop button:hover{background:var(--blue-50)}.files{display:flex;flex-direction:column;gap:10px}.upload-btn{display:inline-flex;gap:8px;align-items:center;justify-content:center;border:1px dashed var(--line-2);border-radius:8px;padding:12px;cursor:pointer;color:var(--navy);font-weight:600}.upload-btn:hover{background:var(--blue-50)}.file-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.file-item{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:6px;min-width:0}.file-thumb{width:54px;height:54px;border-radius:6px;background:#f1f5f9;display:grid;place-items:center;overflow:hidden;flex:none;color:var(--text-3)}.file-thumb img{width:100%;height:100%;object-fit:cover}.file-info{flex:1;min-width:0}.file-name{font-weight:600;font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.history{list-style:none;padding:0;margin:0;font-size:13px}.history li{display:flex;gap:12px;padding:7px 0;border-bottom:1px solid #f1f5f9}.history-time{color:var(--text-3);white-space:nowrap;font-size:12px;min-width:112px}.history-changes{display:inline-flex;flex-direction:column;gap:2px}.quick-input{position:relative;margin-bottom:8px}.quick-input textarea{font-size:16px;padding-right:60px;min-height:88px}.mic{position:absolute;right:8px;bottom:8px;width:46px;height:46px;border-radius:50%;border:0;background:var(--navy);color:#fff;display:grid;place-items:center;box-shadow:0 4px 12px #1e3a8a59}.mic-on{background:var(--red);animation:pulse 1.2s infinite}@keyframes pulse{0%{box-shadow:0 0 #dc262680}70%{box-shadow:0 0 0 14px #dc262600}to{box-shadow:0 0 #dc262600}}.listening{display:flex;gap:8px;align-items:center;color:var(--red);font-weight:600;font-size:13px;margin-bottom:8px}.listening .pulse{width:10px;height:10px;border-radius:50%;background:var(--red);animation:pulse 1.2s infinite}.detected{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12.5px;color:var(--navy);margin-bottom:12px}.team-card{margin-bottom:14px}.people{display:flex;flex-direction:column}.person{display:flex;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #f1f5f9}.person.locked{opacity:.55}.person-main{flex:1;min-width:0}.person-name{font-weight:700;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.person-load{display:flex;gap:10px;align-items:center;font-size:12.5px;margin-top:4px;flex-wrap:wrap}.person-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.notif-list{padding:4px}.notif{display:flex;gap:12px;width:100%;text-align:left;border:0;background:none;padding:12px;border-radius:8px;align-items:flex-start}.notif:hover{background:#f8fafc}.notif.unread{background:#f5f9ff}.notif-icon{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none}.tone-bg-soft-blue{background:var(--blue-50);color:#1d4ed8}.tone-bg-soft-red{background:var(--red-50);color:var(--red)}.tone-bg-soft-amber{background:var(--amber-50);color:var(--amber)}.tone-bg-soft-violet{background:var(--violet-50);color:var(--violet)}.tone-bg-soft-green{background:var(--green-50);color:var(--green)}.notif-main{flex:1;display:flex;flex-direction:column;min-width:0}.notif-title{font-weight:700}.notif.unread .notif-title{color:var(--navy)}.notif-body{color:var(--text-2);font-size:13px}.notif-time{color:var(--text-3);font-size:12px;margin-top:2px}.unread-dot{width:9px;height:9px;border-radius:50%;background:var(--blue);margin-top:6px}.load-more{display:block;margin:8px auto}.settings-card{margin-bottom:14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.settings-card .form-grid{width:100%}.settings-card p{margin:0}.teams-edit{display:flex;flex-direction:column;gap:8px;width:100%}.teams-edit input[type=color]{width:38px;height:38px;border:1px solid var(--line-2);border-radius:8px;padding:2px}.vapid{width:100%;display:flex;flex-direction:column;gap:10px}.vapid textarea{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px}.bottom-nav,.more-sheet{display:none}@media(max-width:1280px){.kpis{grid-template-columns:repeat(4,1fr)}}@media(max-width:1000px){.dash-grid{grid-template-columns:1fr}.dash-grid .span-2{grid-column:auto}.detail-grid{grid-template-columns:1fr 1fr}}@media(max-width:860px){.sidebar{display:none}.main{margin-left:0}.topbar{padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top))}.btn-quick{display:none}.search{max-width:none}.content{padding:14px 12px calc(86px + var(--safe-b))}h1{font-size:20px}.kpis{grid-template-columns:repeat(2,1fr);gap:8px}.kpi{padding:10px}.kpi-value{font-size:24px}.kpi-top{min-height:0}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.task-table{display:none}.task-cards{display:flex;flex-direction:column;gap:6px;padding:8px}.table-card{background:transparent;border:0;box-shadow:none}.table-card .task-cards{padding:0}.filters select{flex:1 1 45%;max-width:none}.search-inline{max-width:none;flex:1 1 100%}.page-head{align-items:stretch}.page-actions{width:100%}.page-actions .segmented{flex:1}.page-actions .segmented button{flex:1;justify-content:center}.page-actions>.btn{flex:1}.kanban{grid-template-columns:repeat(5,82vw);scroll-snap-type:x mandatory}.kcol{scroll-snap-align:start}.cal-grid{grid-template-columns:1fr;border:0}.cal-dow{display:none}.cal-cell{min-height:0;border:0;border-bottom:1px solid var(--line);padding:8px 4px}.cal-cell:not(:has(.cal-task)):not(.cal-today){display:none}.cal-out{display:none!important}.cal-wd{display:inline;margin-left:6px;color:var(--text-3);font-weight:500}.cal-day{justify-content:flex-start}.cal-task{font-size:13px;padding:6px 8px}.modal-backdrop{padding:0;align-items:flex-end}.modal{max-width:none;border-radius:16px 16px 0 0;max-height:94vh}.modal-foot{padding-bottom:calc(12px + var(--safe-b))}.modal-foot .btn{flex:1}.drawer{padding:14px 14px calc(30px + var(--safe-b));padding-top:max(14px,env(safe-area-inset-top))}.detail-grid{grid-template-columns:1fr 1fr;gap:10px}.action-bar{position:sticky;top:-14px;background:#fff;z-index:2;margin:10px -14px;padding:10px 14px}.action-bar .btn{flex:1 1 auto}.file-grid{grid-template-columns:1fr}.person{flex-wrap:wrap}.person-actions{width:100%;justify-content:flex-start}.hbar-row{grid-template-columns:1fr;gap:4px}.toasts{bottom:calc(80px + var(--safe-b));right:12px;left:12px;max-width:none}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:1px solid var(--line);padding:6px 4px calc(6px + var(--safe-b));justify-content:space-around;align-items:center;box-shadow:0 -4px 16px #0f172a0f}.bottom-nav>a,.bottom-nav>button:not(.fab){flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--text-3);background:none;border:0;padding:4px 0;font-weight:600}.bottom-nav .active{color:var(--navy)}.bn-icon{position:relative;display:inline-flex}.bn-icon .bell-dot{right:-10px;border-color:#fff}.fab{width:58px;height:58px;border-radius:50%;border:0;background:var(--navy);color:#fff;display:grid;place-items:center;margin-top:-26px;box-shadow:0 8px 20px #1e3a8a66;flex:none}.fab:active{transform:scale(.95)}.more-sheet{display:block;position:fixed;inset:0;background:#0f172a59;z-index:45}.more-panel{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:16px 16px 0 0;padding:16px 16px calc(84px + var(--safe-b));display:flex;flex-direction:column;gap:4px}.more-panel a,.more-panel button{display:flex;gap:12px;align-items:center;padding:12px;border-radius:10px;color:var(--text);font-weight:600;background:none;border:0;text-align:left;font-size:15px}.more-panel a:active,.more-panel button:active{background:var(--bg)}.more-user{display:flex;gap:12px;align-items:center;padding:6px 12px 12px;border-bottom:1px solid var(--line);margin-bottom:4px}input:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file]),select,textarea{font-size:16px}}.due-preview{font-size:12.5px;color:var(--navy);font-weight:600}.dash-grid>*,.page,.card{min-width:0}.segmented button{white-space:nowrap}@media(max-width:860px){html,body{overflow-x:hidden}.page-actions .segmented{flex:1 1 100%}.page-actions select{flex:1 1 45%}}@media(min-width:861px){.toasts{top:76px;bottom:auto}}@media(max-width:860px){.toasts{top:calc(64px + env(safe-area-inset-top,0px));bottom:auto}}.loc-box{border:1px solid var(--blue-100);background:#f8fbff;border-radius:10px;padding:12px;margin-top:12px;display:flex;flex-direction:column;gap:10px}.loc-view{border:1px solid var(--line);border-radius:10px;padding:12px;margin:10px 0;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.loc-site{background:#f8fbff;border-color:var(--blue-100)}.loc-title{font-weight:700;color:var(--navy);display:flex;gap:6px;align-items:center;flex-wrap:wrap}.loc-title .cell-sub{font-weight:400}.loc-ok{color:var(--green);font-size:13px;display:flex;gap:6px;align-items:center;font-variant-numeric:tabular-nums}.map-embed{width:100%;border:0;border-radius:8px;background:#e2e8f0;display:block}.add-loc{display:inline-flex;gap:6px;align-items:center;margin-top:12px;font-size:14px}.chip-done{border-color:#86efac;color:var(--green);font-weight:700}.chip-done:hover{background:var(--green-50);border-color:var(--green)}.progress-hint{flex-basis:100%;margin-top:2px}.wl-cards{display:none}.wl-card{width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.wl-card:active{background:#f8fafc}.wl-card-head{display:flex;gap:10px;align-items:center}.wl-card-name{flex:1;min-width:0;display:flex;flex-direction:column}.wl-card-name b{font-size:14.5px}.wl-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.wl-stat{display:flex;flex-direction:column;align-items:center;background:#f8fafc;border-radius:8px;padding:6px 2px;font-size:11px;color:var(--text-3);text-align:center;line-height:1.2}.wl-stat b{font-size:17px;color:var(--text);font-variant-numeric:tabular-nums}.wl-stat.text-red b{color:var(--red)}.wl-stat.text-amber b{color:var(--amber)}html.has-badge .content{padding-bottom:90px}html.has-badge .drawer{padding-bottom:96px}html.has-badge .modal{max-height:calc(94vh - 72px)}@media(max-width:860px){.table-scroll .workload{display:none}.wl-cards{display:flex;flex-direction:column;gap:8px}.task-line-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.task-line{align-items:flex-start}.action-bar{display:grid;grid-template-columns:1fr 1fr;gap:8px}.action-bar .btn{width:100%}.progress-edit .chip{padding:6px 11px}.detail-grid{gap:12px 10px}.info-value{word-break:break-word}.filters select{min-width:0}html.has-badge .bottom-nav{padding-bottom:calc(60px + var(--safe-b))}html.has-badge .bottom-nav:after{content:attr(data-author);position:absolute;left:14px;bottom:calc(22px + var(--safe-b));font-size:11px;color:var(--text-3)}html.has-badge .content{padding-bottom:calc(150px + var(--safe-b))}html.has-badge .modal-foot{padding-bottom:calc(68px + var(--safe-b))}html.has-badge .drawer{padding-bottom:calc(90px + var(--safe-b))}html.has-badge .more-panel{padding-bottom:calc(150px + var(--safe-b))}html.has-badge .modal{max-height:94vh}}.kanban-hint{display:none;font-size:12.5px;margin-bottom:8px}@media(max-width:860px){.kanban-hint{display:block}html.has-badge .drawer{padding-bottom:calc(120px + var(--safe-b))}}.kpis-6{grid-template-columns:repeat(6,1fr)}.tabs-page{margin:4px 0 14px;overflow-x:auto}.tabs-page button{white-space:nowrap}.page.narrow-wide{max-width:1000px}.back{display:inline-flex;align-items:center;gap:4px;margin-bottom:10px}.ticket-list{display:flex;flex-direction:column;gap:8px}.ticket{display:flex;flex-direction:column;gap:5px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:11px 14px;color:var(--text);box-shadow:var(--shadow)}.ticket:hover{border-color:#93c5fd}.ticket.is-overdue{border-left:3px solid var(--red)}.ticket-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.ticket-when{margin-left:auto;font-size:12.5px;color:var(--text-2)}.ticket-main{font-size:14.5px}.ticket-sym{color:var(--text-2);font-size:13.5px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ticket-foot{display:flex;gap:14px;align-items:center;font-size:12.5px;flex-wrap:wrap}.cust-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}.cust-card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--text);display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow)}.cust-card:hover{border-color:#93c5fd}.cust-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.cust-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2);margin-top:4px;align-items:center}.cust-info{margin-bottom:14px;display:flex;flex-direction:column;gap:10px}.cust-info .detail-grid{margin:0}section.card+section.card{margin-top:14px}.eq-list{display:flex;flex-direction:column;gap:10px}.eq{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.eq.locked{opacity:.55}.eq-head{display:flex;gap:8px;align-items:center;width:100%}.eq-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 18px;font-size:13px;color:var(--text-2);width:100%}.svc-history{list-style:none;padding:0;margin:4px 0 0;width:100%;display:flex;flex-direction:column;gap:8px}.svc-h{border-left:3px solid var(--green);background:#f8fafc;border-radius:0 8px 8px 0;padding:8px 12px;font-size:13.5px;display:flex;flex-direction:column;gap:3px}.svc-h.open{border-left-color:var(--blue)}.svc-h.cancelled{border-left-color:#94a3b8;opacity:.75}.svc-h-top{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.svc-h-top .code{margin-left:auto}.maint-group{margin-bottom:12px}.maint-row{display:flex;gap:12px;align-items:center;padding:9px 0;border-top:1px solid #f1f5f9}.maint-row a{color:var(--text)}.maint-date{display:flex;flex-direction:column;align-items:flex-end;min-width:110px}.grow{flex:1;min-width:0}.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px}.import-preview{width:100%;display:flex;flex-direction:column;gap:8px}.intake-step{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px}.intake-title{font-weight:700;color:var(--navy);display:flex;gap:8px;align-items:center}.intake-title span{width:24px;height:24px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:13px}.intake-search{max-width:none}.pick-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden}.pick-list button{text-align:left;background:#fff;border:0;border-bottom:1px solid #f1f5f9;padding:9px 12px;display:flex;flex-direction:column;gap:2px}.pick-list button:hover{background:var(--blue-50)}.picked{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;background:var(--blue-50);border-radius:8px;padding:10px 12px}.svc-box{border:1px solid #c7d2fe;background:#f5f7ff;border-radius:10px;padding:12px;margin:10px 0;display:flex;flex-direction:column;gap:10px}.svc-box-head{display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:var(--navy)}.svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;font-size:13.5px}.svc-grid .info-label{display:block}.svc-report{border-top:1px dashed #c7d2fe;padding-top:8px;display:flex;flex-direction:column;gap:3px}.svc-report-form{border:1px solid #c7d2fe;background:#f8faff;border-radius:10px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px}.svc-warranty{align-self:end;padding-bottom:8px}@media(max-width:1280px){.kpis-6{grid-template-columns:repeat(3,1fr)}}@media(max-width:860px){.kpis-6{grid-template-columns:repeat(2,1fr)}.eq-meta,.svc-grid{grid-template-columns:1fr}.svc-grid .span-2{grid-column:auto}.maint-row{flex-wrap:wrap}.maint-date{align-items:flex-start}.ticket-when{margin-left:0;flex-basis:100%}.cust-grid{grid-template-columns:1fr}}.text-blue{color:#1d4ed8}.text-violet{color:var(--violet)}.small{font-size:12.5px}.row-between{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.h1-sub{font-size:16px;font-weight:600}.prod-overview{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}.prod-side{display:flex;flex-direction:column;gap:16px;min-width:0}.batch-list{display:flex;flex-direction:column;gap:8px}.batch-card .ticket-top b{font-size:14.5px}.batch-prog{display:flex;align-items:center;gap:10px}.batch-prog .progress{max-width:none;flex:1;height:8px}.batch-prog.big .progress{height:12px;border-radius:6px}.batch-prog.big b{font-size:20px;color:var(--navy);min-width:52px;text-align:right}.batch-note{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}.week-rows{display:flex;flex-direction:column;gap:12px}.week-row-top{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:13.5px}.week-row .progress{max-width:none;height:8px}.plan-note{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px;white-space:pre-wrap}.week-nav{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.week-nav>.btn{margin-left:auto}.plan-form{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.plan-row{display:grid;grid-template-columns:1fr 110px 36px;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px}.auto-stats{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:10px 12px}.auto-stats-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px;align-items:center}.auto-stats-head b{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--text-2)}.stats-table td,.stats-table th{padding:6px 8px}.person-chip{display:inline-flex;align-items:center;gap:4px;margin-right:8px;font-size:12.5px;white-space:nowrap}.report-list{display:flex;flex-direction:column;gap:12px}.report-body .prose{white-space:pre-wrap;margin:6px 0}.report-meta{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-3);flex-wrap:wrap}.report-issue{background:var(--amber-50);color:#78350f;border-radius:6px;padding:6px 10px;margin:6px 0;display:flex;gap:6px;align-items:flex-start;white-space:pre-wrap}.report-stats{margin-top:8px}.report-stats summary{cursor:pointer;color:var(--blue);font-size:13px;font-weight:600;margin-bottom:6px}.stock-sum{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.stock-pill{background:var(--green-50);color:var(--green);border-radius:999px;padding:5px 12px;font-size:13px}.stock-pill b{font-size:15px}.unit-rows{display:flex;flex-direction:column;gap:6px}.unit-row{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:9px;padding:9px 12px}.unit-row-main{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.unit-row-main .small{flex-basis:100%}.picked-cust{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #93c5fd;background:var(--blue-50);border-radius:8px;padding:10px 12px;margin-bottom:12px}.models{display:flex;flex-direction:column;gap:10px}.model-card{padding:0}.model-card.is-off{opacity:.7}.model-card>.form-grid,.model-card>.row-gap{padding:14px 16px 0}.model-card>.row-gap{padding-bottom:14px}.model-head{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:14px 16px;text-align:left;flex-wrap:wrap}.model-fields{padding:0 16px 6px!important}.step-tpl{list-style:none;margin:8px 0 0;padding:0 16px;display:flex;flex-direction:column;gap:6px}.step-tpl li{display:flex;gap:8px;align-items:center}.step-tpl li.is-off{opacity:.55}.step-tpl .step-no{width:26px;height:26px;border-radius:50%;background:var(--blue-50);color:var(--navy);font-weight:700;display:grid;place-items:center;font-size:12.5px;flex:none}.step-tpl .step-name{flex:1;min-width:0}.step-tpl select{width:110px;flex:none}.step-btns{display:flex;flex:none}.step-add{display:flex;gap:8px;padding:12px 16px 16px}.step-add select{width:120px;flex:none}.batch-summary{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.batch-counts{display:flex;gap:18px;flex-wrap:wrap;font-size:13.5px;color:var(--text-2)}.batch-counts b{font-size:17px}.bulk-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border-top:1px dashed var(--line);padding-top:12px}.bulk-bar select{width:auto;min-width:230px;max-width:100%}.step-grid th,.step-grid td{text-align:center}.step-grid th{text-transform:none;letter-spacing:0;padding:6px 4px}.step-grid th div{font-size:13px;color:var(--navy)}.step-grid th small{display:block;font-weight:500;font-size:10.5px;max-width:64px;white-space:normal;line-height:1.2;margin:0 auto}.step-grid th.col-test,.step-grid th.col-qc{background:var(--violet-50)}.step-grid .sticky{position:sticky;left:0;background:#fff;text-align:left;z-index:1;min-width:130px}.step-grid thead .sticky{background:#f8fafc}.step-grid tbody tr{cursor:default}.step-grid tr.row-focus td{background:#fef9c3}.cell-step{padding:4px!important}.step-cell{width:34px;height:34px;border-radius:8px;border:1.5px solid var(--line-2);background:#fff;font-weight:800;font-size:16px;color:#fff;display:inline-grid;place-items:center}.step-cell:not(.ro):not(.is-done):not(.is-fail):hover{border-color:var(--blue);background:var(--blue-50)}.step-cell.is-done{background:var(--green);border-color:var(--green)}.step-cell.is-fail{background:var(--red);border-color:var(--red)}.step-cell.is-done:not(.ro):hover,.step-cell.is-fail:not(.ro):hover{filter:brightness(1.12)}.step-cell.ro{cursor:default}.grid-legend{padding:10px 4px 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.grid-legend .step-cell{width:20px;height:20px;font-size:11px;border-radius:5px}.unit-cards{display:flex;flex-direction:column;gap:8px}.unit-card{padding:12px 14px}.unit-card .progress{max-width:none;margin-top:8px}.unit-card-head{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:0;text-align:left}.unit-mini{margin-left:auto;font-weight:700;color:var(--text-2);font-variant-numeric:tabular-nums}.step-checks{list-style:none;margin:12px 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}.step-check{display:flex;gap:12px;align-items:center;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;min-height:52px}.step-check .box{width:30px;height:30px;flex:none;border-radius:8px;border:2px solid var(--line-2);display:grid;place-items:center;color:#fff;font-weight:800;font-size:17px}.step-check.is-done .box{background:var(--green);border-color:var(--green)}.step-check.is-fail .box{background:var(--red);border-color:var(--red)}.step-check.is-done{background:var(--green-50);border-color:#bbf7d0}.step-check.is-fail{background:var(--red-50);border-color:#fecaca}.step-check:disabled{opacity:1;cursor:default}.step-text{display:flex;flex-direction:column;gap:2px;min-width:0}@media(max-width:1000px){.prod-overview{grid-template-columns:1fr}}@media(max-width:860px){.plan-row{grid-template-columns:1fr 90px 30px}.bulk-bar select{min-width:0;flex:1 1 100%}.step-add{flex-wrap:wrap}.step-add input{flex:1 1 100%}.step-tpl select{width:92px}.unit-row{flex-wrap:wrap}.batch-note{max-width:100%}.batch-counts{gap:12px}}.new-model-tpl{padding:10px 16px 0;display:flex;gap:8px;align-items:center}.text-amber{color:#b45309}.row-gap.end{justify-content:flex-end;margin-top:12px}.date-sm{width:auto;padding:6px 10px;font-size:13.5px}.nudge{margin-bottom:12px}.mine-grid{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:start}.mine-grid .auto-stats{margin:4px 0 14px}.review-banner{border-radius:8px;padding:9px 12px;margin-bottom:12px;font-size:13.5px}.review-banner.tone-amber{background:var(--amber-50);color:#78350f}.review-banner.tone-green{background:var(--green-50);color:#14532d}.review-banner.tone-red{background:var(--red-50);color:#7f1d1d}.review-banner .prose{margin-top:4px;font-style:italic}.staff-stats{display:flex;flex-direction:column;gap:8px}.stat-pills{display:flex;gap:6px;flex-wrap:wrap}.stat-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:13px}.stat-pill b{color:var(--navy)}.stat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:13.5px}.stat-list li{line-height:1.45}.stat-list li>svg{vertical-align:-2px;color:var(--text-3)}.stat-more summary{cursor:pointer;font-size:13px;color:var(--blue)}.hist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.hist-list button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;border:1px solid transparent;background:none;border-radius:8px;padding:7px 9px;font-size:13.5px}.hist-list button:hover:not(:disabled){background:#f8fafc}.hist-list button.active{border-color:#93c5fd;background:var(--blue-50)}.review-sum{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap;font-size:14px}.review-sum b{font-size:18px}.review-sum .btn{margin-left:auto}.review-list{display:flex;flex-direction:column;gap:8px}.review-card{padding:0;border-left:4px solid var(--line-2)}.review-card.st-submitted{border-left-color:#f59e0b}.review-card.st-approved{border-left-color:var(--green)}.review-card.st-returned{border-left-color:var(--red)}.review-card.st-missing{opacity:.75}.review-head{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:11px 14px;text-align:left}.review-who{flex:1;min-width:0;display:flex;flex-direction:column}.review-body{padding:0 14px 14px 54px;display:flex;flex-direction:column;gap:8px}.review-body .prose{white-space:pre-wrap}.report-card.is-focus{box-shadow:0 0 0 2px #93c5fd}.report-card .card-head h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.report-summary{white-space:pre-wrap;margin:8px 0}.review-note{margin-top:10px;background:var(--blue-50);border-radius:8px;padding:10px 12px}.review-note .prose{white-space:pre-wrap;margin-top:4px}.snap{display:flex;flex-direction:column;gap:12px;margin-top:8px}.snap h3{font-size:13.5px;margin:6px 0;color:var(--navy)}.snap-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.snap-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.snap-kpis>div{background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column}.snap-kpis b{font-size:20px;color:var(--navy)}.snap-kpis span{font-size:12px;color:var(--text-3)}.snap-kpis .bad b{color:var(--red)}.table.mini td,.table.mini th{padding:6px 8px;font-size:13px}.inv-table th{text-align:center;background:#e0f2fe;color:var(--navy);text-transform:none;letter-spacing:0;font-size:12.5px}.inv-table th.grp{border-bottom:1px solid #bae6fd}.inv-table td.tot,.inv-table th.tot{background:#ecfdf5}.inv-table tfoot td{font-weight:700;border-top:2px solid var(--line-2)}.inv-card{margin-bottom:16px}.issue-list{margin:0;padding-left:20px;font-size:13.5px}.svc-list td{vertical-align:top}.pick-list.tall{max-height:360px}.std-min{width:72px;flex:none;text-align:right}@media(max-width:860px){.mine-grid,.snap-grid{grid-template-columns:1fr}.review-body{padding-left:14px}.review-sum .btn{margin-left:0}.std-min{width:60px}}.assist-btn{width:auto;gap:6px;padding:0 10px;color:var(--navy)}.assist-btn-label{font-weight:700;font-size:13.5px}.assist-backdrop{position:fixed;inset:0;z-index:80;background:#0f172a40;display:flex;justify-content:flex-end}.assist{width:min(420px,100%);height:100%;background:#f8fafc;display:flex;flex-direction:column;box-shadow:-8px 0 30px #0f172a2e;animation:assist-in .18s ease-out}@keyframes assist-in{0%{transform:translate(30px);opacity:0}to{transform:none;opacity:1}}.assist-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--navy);color:#fff;padding-top:max(12px,env(safe-area-inset-top))}.assist-head>div{flex:1}.assist-head .muted{color:#bfdbfe}.assist-head .icon-btn{color:#fff}.assist-ava{width:34px;height:34px;border-radius:50%;background:#38bdf8;display:grid;place-items:center;color:var(--navy)}.assist-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}.bubble{max-width:92%;padding:10px 12px;border-radius:12px;font-size:14px;line-height:1.5}.bubble.bot{background:#fff;border:1px solid var(--line);border-top-left-radius:4px;align-self:flex-start}.bubble.me{background:var(--navy);color:#fff;border-top-right-radius:4px;align-self:flex-end}.assist-list,.assist-steps,.assist-topics{margin:6px 0 4px;padding-left:18px;display:flex;flex-direction:column;gap:5px}.assist-list{list-style:none;padding:0}.assist-list>li{border-left:3px solid var(--line-2);padding-left:8px}.assist-list>li.tone-red{border-color:var(--red)}.assist-list>li.tone-amber{border-color:#f59e0b}.assist-list>li.tone-violet{border-color:var(--violet)}.assist-list ul{margin:3px 0 0;padding-left:14px;font-size:13px}.assist-list .link{text-align:left;color:var(--text)}.link.plain{color:var(--text-2);font-weight:400;text-align:left}.bubble .btn{margin-top:6px}.assist-found{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.assist-found button{width:100%;display:flex;gap:8px;align-items:flex-start;text-align:left;border:1px solid var(--line);background:#f8fafc;border-radius:8px;padding:7px 9px}.assist-found button:hover{border-color:#93c5fd;background:var(--blue-50)}.assist-found span{display:flex;flex-direction:column;min-width:0}.assist-found small{color:var(--text-3)}.assist-chips{display:flex;gap:6px;overflow-x:auto;padding:8px 12px;border-top:1px solid var(--line);background:#fff;scrollbar-width:none}.assist-chips button{flex:none;border:1px solid #bfdbfe;background:var(--blue-50);color:var(--navy);border-radius:999px;padding:6px 11px;font-size:13px;font-weight:600}.assist-input{display:flex;gap:8px;padding:10px 12px;background:#fff;padding-bottom:max(10px,env(safe-area-inset-bottom))}.assist-input input{flex:1}.assist-input .btn{padding:0 14px}@media(max-width:860px){.assist-btn-label{display:none}.assist-btn{width:40px;padding:0}.assist{width:100%}}.icon-btn.assist-btn{display:inline-flex;flex-direction:row;align-items:center}.sop{display:flex;flex-direction:column;gap:8px;font-size:13.5px}.sop ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:3px}.sop-h{font-weight:700;color:var(--navy);font-size:13px;margin-bottom:3px;display:flex;align-items:center;gap:5px}.sop-caution{background:var(--amber-50);border-radius:8px;padding:8px 10px;color:#78350f}.sop-caution .sop-h{color:#92400e}.sop-all{display:flex;flex-direction:column;gap:14px}.sop-stage{border:1px solid var(--line);border-radius:10px;padding:12px 14px;scroll-margin-top:10px}.sop-stage.is-focus{border-color:#93c5fd;box-shadow:0 0 0 2px #dbeafe}.sop-stage h3{margin:0 0 8px;font-size:15px;color:var(--navy)}.sop-inline{margin:6px 0 10px}.sop-inline summary{cursor:pointer;color:var(--blue);font-weight:600;font-size:13.5px;margin-bottom:6px}.sop-btn{flex:none;border:1px solid var(--line-2);background:#fff;color:var(--text-3);border-radius:6px;font-size:11px;font-weight:800;padding:3px 6px;letter-spacing:.03em}.sop-btn.has{border-color:#93c5fd;color:var(--blue);background:var(--blue-50)}.step-checks li{display:flex;gap:6px;align-items:center}.step-checks li .step-check{flex:1;min-width:0}.step-checks li .sop-btn{align-self:stretch;padding:0 9px;border-radius:10px}.crew-box{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:8px 0 12px;background:#f8fafc}.crew-head{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px;align-items:baseline}.crew-chips{display:flex;gap:6px;flex-wrap:wrap}.std-crew{width:52px;flex:none;text-align:right}.kpi-team{padding:0;margin-bottom:16px}.kpi-team .card-head{padding:14px 16px 6px;flex-wrap:wrap}.kpi-table th{text-transform:none;letter-spacing:0;font-size:12.5px;white-space:nowrap}.kpi-table th small{display:block;color:var(--text-3);font-weight:500}.kpi-table td,.kpi-table th{padding:9px 10px}.kpi-table .tot{background:#ecfdf5}.kpi-table .sticky{position:sticky;left:0;background:#fff;min-width:150px;text-align:left;z-index:1}.kpi-table thead .sticky{background:#f8fafc}.kpi-row{cursor:pointer}.kpi-row:hover td{background:#f8fafc}.kpi-row.open td{background:var(--blue-50)}.kpi-detail>td{background:#f8fafc;padding:0!important}.kpi-detail-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;padding:14px 16px}.kpi-facts{margin:0;display:flex;flex-direction:column;gap:6px;font-size:13.5px}.kpi-facts>div{display:flex;gap:10px;justify-content:space-between;border-bottom:1px dashed var(--line);padding-bottom:5px}.kpi-facts dt{color:var(--text-3)}.kpi-facts dd{margin:0;font-weight:600;text-align:right}.kpi-score-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px}.grade-legend{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:4px}.cfg-h{font-size:14px;color:var(--navy);margin:16px 0 8px}.cfg-grades input{width:90px}.cfg-general{margin-top:12px}.cfg-team{border-top:1px solid var(--line);margin-top:12px}.cfg-weights{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin-bottom:8px}.cfg-weights label{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:13px}.cfg-weights input{width:80px;text-align:right;padding:5px 7px}@media(max-width:860px){.kpi-detail-body{grid-template-columns:1fr}.kpi-table .sticky{min-width:120px}}
