:root{--bg:#f4f6fb;--panel:#fff;--ink:#172033;--muted:#7b8498;--line:#e5e9f2;--accent:#5b58e8;--accent2:#7c79f2;--red:#ea4d5c;--yellow:#e8a931;--green:#25aa76;--nav:#151a2d;--shadow:0 12px 35px rgba(28,39,66,.08)}
th.sortable{cursor:pointer;user-select:none;transition:.15s}th.sortable:hover,th.sortable.sorted{color:var(--accent);background:#f3f3ff}.sort-arrow{margin-left:6px;font-size:12px}.deadline-distance{display:inline-block;font-size:11px;font-weight:650;white-space:nowrap}.deadline-distance.overdue{color:#d73c4b}.deadline-distance.today{color:#ad7710}.deadline-distance.future{color:#58647a}.deadline-distance.neutral{color:var(--muted)}.manual-date{display:block;color:var(--accent);font-size:9px;margin-top:3px}.deadline-help{background:#f5f5ff;color:#6665a8;border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.5}
.section-actions,.task-actions{display:flex;align-items:center;gap:10px;margin-bottom:15px}.task-actions button:disabled{opacity:.45;cursor:not-allowed}.danger{border:0;border-radius:10px;padding:11px 16px;background:#ffeaed;color:#d73c4b;font-weight:650;cursor:pointer;margin-right:auto}.muted{color:var(--muted)}.check-line{display:flex;flex-direction:row;align-items:center;gap:9px;text-transform:none!important}.check-line input{width:17px;height:17px}.settings-grid{display:grid;gap:18px}.settings-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:var(--shadow)}.settings-card h2{margin:0 0 18px}.settings-note{color:var(--muted);background:#f7f8fc;border-radius:10px;padding:11px}.card-head-inline{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.card-head-inline h2{margin:0}.subline{display:block;color:var(--muted);margin-top:3px}.directory-group{padding:14px 0;border-top:1px solid var(--line)}.directory-group:first-of-type{border-top:0}.directory-group h3{font-size:12px;text-transform:uppercase;color:var(--muted);margin:0 0 10px}.directory-tags{display:flex;gap:8px;flex-wrap:wrap}.directory-tag{border:1px solid #dcdef8;background:#f4f4ff;color:#5552c8;border-radius:20px;padding:7px 11px;cursor:pointer}.directory-tag.inactive{background:#f2f3f6;color:#9097a7;border-color:#e3e6ed;text-decoration:line-through}
.task-row-actions{display:flex;align-items:center;gap:9px}.more-button{border:1px solid #dcdef8;background:#f4f4ff;color:#5552c8;border-radius:8px;padding:6px 9px;font-size:11px;font-weight:650;cursor:pointer}.more-button:hover{background:#e9e9ff}.task-details-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.task-detail{background:#f7f8fc;border:1px solid #edf0f6;border-radius:10px;padding:11px;min-width:0}.task-detail.full{grid-column:1/-1}.task-detail span{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.45px;margin-bottom:5px}.task-detail div{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45}
.employee-status-box{display:flex;align-items:end;gap:12px;margin-top:18px;padding:14px;background:#f5f5ff;border-radius:12px}.employee-status-box .field{flex:1}.useful-links{background:#fff;border:1px solid var(--line);border-radius:14px;margin:0 0 16px;box-shadow:var(--shadow);overflow:hidden}.useful-links summary{display:flex;align-items:center;gap:10px;padding:15px 18px;cursor:pointer;list-style:none;font-weight:700}.useful-links summary::-webkit-details-marker{display:none}.useful-links summary:before{content:'›';font-size:22px;color:var(--accent);transition:.2s}.useful-links[open] summary:before{transform:rotate(90deg)}.useful-links summary b{background:#efefff;color:var(--accent);border-radius:15px;padding:3px 8px;font-size:11px}.useful-links summary small{margin-left:auto;color:var(--muted);font-weight:400}.useful-links-body{border-top:1px solid var(--line);padding:15px 18px}.useful-links-actions{display:flex;justify-content:flex-end;margin-bottom:12px}.links-list{display:grid;gap:9px}.link-card{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid #e9ecf3;border-radius:11px;background:#fafbfe}.link-icon{width:34px;height:34px;border-radius:9px;background:#efefff;color:var(--accent);display:grid;place-items:center;font-weight:750}.link-content{min-width:0;flex:1}.link-content a{color:var(--ink);font-weight:700;text-decoration:none}.link-content a:hover{color:var(--accent)}.link-content p{margin:4px 0;color:#606a7e;white-space:normal}.link-content small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.link-controls{display:flex;gap:8px}.link-delete{border:0;background:none;color:var(--red);cursor:pointer}.links-empty{text-align:center;color:var(--muted);padding:18px}

.gantt-toggle{white-space:nowrap}.gantt-card{background:#fff;border:1px solid var(--line);border-radius:14px;margin:0 0 16px;box-shadow:var(--shadow);overflow:hidden}.gantt-title{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line)}.gantt-title h2{margin:0;font-size:18px}.gantt-title p{margin:4px 0 0;color:var(--muted);font-size:12px}.gantt-close{border:0;border-radius:9px;background:#eeefff;color:var(--accent);padding:10px 14px;font-weight:700;cursor:pointer;white-space:nowrap}.gantt-close:hover{background:#dedfff}.gantt-legend{display:flex;flex-wrap:wrap;gap:14px;padding:11px 18px;border-bottom:1px solid var(--line);font-size:11px;color:#667085}.gantt-legend span{display:flex;align-items:center;gap:5px}.gantt-legend i{width:9px;height:9px;border-radius:50%}.gantt-legend .green,.gantt-marker.green span{background:#25aa76}.gantt-legend .blue,.gantt-marker.blue span{background:#5b58e8}.gantt-legend .yellow,.gantt-marker.yellow span{background:#e8a931}.gantt-legend .red,.gantt-marker.red span{background:#ea4d5c}.gantt-legend .gray,.gantt-marker.gray span{background:#98a2b3}.gantt-scroll{overflow:auto;max-height:620px}.gantt-grid{background:#fff}.gantt-row{display:grid;grid-template-columns:300px 1fr;min-height:50px;border-bottom:1px solid #edf0f5}.gantt-header{position:sticky;top:0;z-index:5;min-height:43px;background:#f7f8fc}.gantt-task-label{position:sticky;left:0;z-index:2;display:flex;flex-direction:column;justify-content:center;padding:8px 14px;background:#fff;border-right:1px solid var(--line);overflow:hidden}.gantt-header .gantt-task-label{z-index:7;background:#f7f8fc;font-size:11px;font-weight:750;color:#7c8598;text-transform:uppercase}.gantt-task-label b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.gantt-task-label small{margin-top:3px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-timeline{position:relative;min-height:50px}.gantt-header .gantt-timeline{min-height:43px}.gantt-date{position:absolute;inset-block:0;border-right:1px solid #e5e9f1;text-align:center;color:#677185;font-size:10px}.gantt-date.weekend{background:#f0f2f8}.gantt-date span{display:block;padding-top:14px;white-space:nowrap}.gantt-track{background-image:linear-gradient(to right,transparent calc(100% - 1px),#edf0f5 0)}.gantt-marker{position:absolute;top:50%;width:28px;height:28px;padding:0;border:0;background:transparent;transform:translate(-50%,-50%);cursor:pointer}.gantt-marker span{display:block;width:14px;height:14px;margin:auto;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 2px currentColor,0 2px 5px #1d293933}.gantt-marker.green{color:#25aa76}.gantt-marker.blue{color:#5b58e8}.gantt-marker.yellow{color:#e8a931}.gantt-marker.red{color:#ea4d5c}.gantt-marker.gray{color:#98a2b3}.gantt-marker:hover span{transform:scale(1.25)}.gantt-empty{padding:30px;text-align:center;color:var(--muted)}.gantt-no-deadline{padding:15px 18px;background:#fff8eb}.gantt-no-deadline h3{display:flex;align-items:center;gap:8px;margin:0 0 10px;font-size:14px;color:#9a6200}.gantt-no-deadline h3 b{border-radius:12px;background:#ffe1a8;padding:2px 7px;font-size:11px}.gantt-no-deadline>button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-top:1px solid #f2deb6;background:transparent;text-align:left;cursor:pointer}.gantt-no-deadline>button>span{font-size:19px}.gantt-no-deadline>button div{display:flex;flex-direction:column}.gantt-no-deadline>button small{margin-top:2px;color:#8b7040}.gantt-no-deadline>button:hover{background:#fff2d8}
.deploy-tools{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}.deploy-tool{border-radius:18px;padding:6px 10px;font-size:11px;font-weight:750}.deploy-tool.ok{background:#e3f8f0;color:#18865d}.deploy-tool.bad{background:#ffeaed;color:#d73c4b}.deploy-key-box{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-bottom:14px;border:1px solid var(--line);border-radius:10px;background:#fafbfe}.deploy-key-box small{display:block;color:var(--muted);margin-top:3px}.deploy-public-key{min-height:72px;font-family:Consolas,monospace;font-size:12px}.deploy-last{margin-top:14px;color:#606a7e}.deploy-error{display:block;color:#d73c4b;margin-top:5px}.deploy-log{margin:14px 0 0;max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#111827;color:#d7dde8;padding:12px;font-size:12px;line-height:1.45;white-space:pre-wrap}

@media(max-width:900px){.gantt-title{align-items:flex-start;flex-direction:column}.gantt-close{width:100%}.gantt-row{grid-template-columns:230px 1fr}.gantt-task-label{max-width:230px}}
*{box-sizing:border-box}body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px}.hidden{display:none!important}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:var(--nav);color:#fff;padding:25px 17px;display:flex;flex-direction:column;z-index:3}.brand{display:flex;gap:12px;align-items:center;padding:0 9px 30px;font-size:18px}.brand small,.sidebar-foot small{display:block;color:#8c94aa;font-size:10px;letter-spacing:1.4px;margin-top:3px}.brand-mark{width:56px;height:56px;border-radius:17px;background:linear-gradient(135deg,var(--accent2),#4b46d7);color:#fff;display:grid;place-items:center;font-weight:800;font-size:20px;box-shadow:0 10px 25px rgba(91,88,232,.3)}.brand-mark.small{width:40px;height:40px;border-radius:12px;font-size:14px}.nav{width:100%;border:0;background:transparent;color:#9da5ba;padding:13px 14px;border-radius:11px;text-align:left;margin:3px 0;cursor:pointer;transition:.2s}.nav i{font-style:normal;display:inline-grid;width:27px;font-size:18px}.nav:hover,.nav.active{background:rgba(108,105,242,.16);color:#fff}.nav.active{box-shadow:inset 3px 0 var(--accent2)}.sidebar-foot{margin-top:auto;display:flex;align-items:center;gap:10px;padding:13px 8px;border-top:1px solid #292f44}.sidebar-foot b{font-size:12px}.sidebar-foot button{margin-left:auto;background:none;border:0;color:#8c94aa;font-size:20px;cursor:pointer}.avatar{width:34px;height:34px;background:#343b53;border-radius:10px;display:grid;place-items:center;font-weight:700}main{margin-left:244px;min-height:100vh;padding:0 34px 40px}header{height:96px;display:flex;align-items:center;justify-content:space-between}header h1{font-size:26px;margin:0 0 5px}header p{margin:0;color:var(--muted)}.header-actions{display:flex;gap:10px}.import-button,.icon-button,.primary,.secondary{border:0;border-radius:10px;padding:11px 16px;cursor:pointer;font-weight:600}.import-button,.primary{background:var(--accent);color:#fff}.import-button input{display:none}.icon-button,.secondary{background:#fff;color:var(--ink);border:1px solid var(--line)}.icon-button{font-size:18px;padding:8px 13px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:22px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}.metric:after{content:"";position:absolute;width:64px;height:64px;border-radius:50%;right:-15px;top:-15px;background:var(--metric-color);opacity:.09}.metric .label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.6px}.metric .value{font-size:31px;font-weight:750;margin-top:10px}.metric .hint{color:var(--muted);font-size:12px;margin-top:6px}.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;padding:19px 21px;border-bottom:1px solid var(--line)}.card-head h2{font-size:16px;margin:0}.card-head span{color:var(--muted);font-size:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;color:#8a92a5;font-size:11px;text-transform:uppercase;letter-spacing:.5px;background:#fafbfe;padding:12px 14px;border-bottom:1px solid var(--line)}td{padding:13px 14px;border-bottom:1px solid #edf0f6}tr:last-child td{border:0}tbody tr:hover{background:#fafbff}.product-cell{display:flex;align-items:center;gap:11px}.slot{width:34px;height:34px;border-radius:9px;background:#efefff;color:var(--accent);display:grid;place-items:center;font-size:10px;font-weight:750}.product-cell small{display:block;color:var(--muted);margin-top:3px}.badge{display:inline-flex;border-radius:20px;padding:5px 9px;font-size:11px;font-weight:700}.badge.red{background:#ffeaed;color:#d73c4b}.badge.yellow{background:#fff4d9;color:#ad7710}.badge.green{background:#e3f8f0;color:#18865d}.badge.gray{background:#eef1f6;color:#657086}.progress{width:112px;height:7px;border-radius:8px;background:#e8ebf2;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#8582f4);border-radius:8px}.progress-label{font-size:11px;color:var(--muted);margin-top:5px}.launch-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.launch-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:19px;box-shadow:var(--shadow);cursor:pointer;transition:.2s}.launch-card:hover{transform:translateY(-2px);box-shadow:0 15px 40px rgba(28,39,66,.12)}.launch-card.empty{border-style:dashed;box-shadow:none;opacity:.75}.launch-top{display:flex;justify-content:space-between;gap:10px}.launch-top h3{margin:0;font-size:17px}.launch-top p{margin:5px 0;color:var(--muted)}.launch-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}.launch-stat{background:#f7f8fc;border-radius:10px;padding:10px}.launch-stat b{display:block;font-size:17px}.launch-stat small{color:var(--muted);font-size:10px}.launch-bottom{display:flex;align-items:end;justify-content:space-between;color:var(--muted);font-size:12px}.filters{display:flex;gap:10px;align-items:center;margin-bottom:15px;flex-wrap:wrap}.search{min-width:280px;flex:1}.filters input,.filters select,.field input,.field select,.field textarea{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;outline:none;color:var(--ink)}.filters input:focus,.filters select:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(91,88,232,.1)}.task-title{max-width:430px;white-space:normal;font-weight:600}.task-title small{font-weight:400;color:var(--muted);display:block;margin-top:4px}.link-button{border:0;background:none;color:var(--accent);cursor:pointer;font-weight:650}.empty-state{text-align:center;padding:55px;color:var(--muted)}.modal{position:fixed;inset:0;background:rgba(13,18,34,.48);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:10;padding:20px}.modal-card{background:#fff;border-radius:18px;width:min(760px,100%);max-height:90vh;overflow:auto;box-shadow:0 24px 80px rgba(0,0,0,.22);position:relative;padding:25px}.modal-close{position:absolute;right:17px;top:14px;border:0;background:none;font-size:27px;color:var(--muted);cursor:pointer}.modal h2{margin:0 35px 20px 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:.5px}.field textarea{min-height:78px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.login-shell{min-height:100vh;background:radial-gradient(circle at 75% 20%,#37377a 0,transparent 34%),linear-gradient(135deg,#111629,#1b213a);display:grid;place-items:center;padding:20px}.login-card{width:390px;background:#fff;border-radius:22px;padding:34px;box-shadow:0 25px 80px rgba(0,0,0,.3)}.login-card .brand-mark{margin-bottom:20px}.login-card h1{margin:0;font-size:27px}.login-card p{color:var(--muted);margin:7px 0 25px}.login-card label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--muted);margin:13px 0}.login-card input{border:1px solid var(--line);border-radius:10px;padding:12px}.wide{width:100%;margin-top:8px}.form-error{min-height:18px;color:var(--red);font-size:12px}.toast{position:fixed;right:24px;bottom:24px;background:#20263a;color:#fff;padding:13px 18px;border-radius:11px;z-index:20;box-shadow:var(--shadow)}@media(max-width:1050px){.metrics{grid-template-columns:repeat(2,1fr)}.launch-grid{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{width:72px;padding:20px 10px}.brand span:last-child,.nav:not(.active){font-size:0}.nav{font-size:0;text-align:center}.nav i{font-size:20px;width:auto}.sidebar-foot div:not(.avatar),.sidebar-foot button{display:none}main{margin-left:72px;padding:0 15px 25px}.metrics{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}header{height:85px}.import-button{font-size:0}.import-button:before{content:"↑ XLSX";font-size:13px}}
