:root{--primary:#46b82e;--primary-hover:#3ca026;--primary-glow:#46b82e26;--bg-body:#111622;--surface-panel:#191e2b;--surface-hover:#1f2835;--border-color:#263240;--text-main:#e9edf1;--text-muted:#7b909d;--danger:#e2565b;--shadow-sm:0 1px 4px #0000002e;--shadow:0 4px 14px #00000040;--radius:8px;--foreign-ground:#fff;--on-solid:#fff;--font:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif}[data-theme=light]{--bg-body:#e9edf1;--surface-panel:#fff;--surface-hover:#dde4ea;--border-color:#d1dae0;--text-main:#191e2b;--text-muted:#445667;--danger:#cd272d;--primary-glow:#46b82e1a;--shadow-sm:0 1px 4px #0000000f;--shadow:0 4px 14px #00000012}*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--bg-body);color:var(--text-main);font-family:var(--font);-webkit-font-smoothing:antialiased}.btn{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:7px 16px;font-size:.875rem;font-weight:600;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn.secondary{background:var(--surface-hover);border-color:var(--border-color);color:var(--text-main)}.btn.secondary:hover:not(:disabled){background:var(--border-color)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.icon-btn{border:1px solid var(--border-color);width:34px;height:34px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;transition:color .15s,background .15s;display:inline-flex}.icon-btn:hover{background:var(--surface-hover);color:var(--text-main)}.icon-btn:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);outline:none}.icon-btn:disabled{opacity:.55;cursor:not-allowed}.input{border:1px solid var(--border-color);background:var(--surface-panel);width:100%;height:42px;color:var(--text-main);border-radius:8px;padding:0 12px;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);outline:none}.input::placeholder{color:var(--text-muted)}.input:disabled{opacity:.55;cursor:not-allowed}input[type=file]{max-width:100%;color:var(--text-muted);font-family:var(--font);font-size:.875rem}input[type=file]::file-selector-button{border:1px solid var(--border-color);background:var(--surface-hover);min-height:36px;color:var(--text-main);font-family:var(--font);cursor:pointer;border-radius:6px;margin-right:10px;padding:7px 16px;font-size:.875rem;font-weight:600;transition:background .15s,border-color .15s}input[type=file]:hover:not(:disabled)::file-selector-button{background:var(--border-color)}input[type=file]:focus-visible{outline:none}input[type=file]:focus-visible::file-selector-button{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}input[type=file]:disabled{opacity:.55;cursor:not-allowed}input[type=file]:disabled::file-selector-button{cursor:not-allowed}.card{background:var(--surface-panel);border:1px solid var(--border-color);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.card-title{border-bottom:1px solid var(--border-color);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin:0;padding:11px 20px;font-size:.72rem;font-weight:700}.tag{background:var(--surface-hover);color:var(--text-muted);border-radius:999px;padding:4px 10px;font-size:.74rem;font-weight:600;display:inline-block}.chip{background:var(--primary-glow);color:var(--primary);border-radius:999px;align-items:center;gap:3px;padding:2px 8px;font-size:.7rem;font-weight:700;display:inline-flex}.pill{background:var(--surface-hover);color:var(--text-muted);border-radius:999px;align-items:center;gap:3px;padding:4px 10px;font-size:.74rem;font-weight:600;transition:background .15s,color .15s;display:inline-flex}.pill.accent{background:var(--primary-glow);color:var(--primary);padding:2px 8px;font-size:.7rem;font-weight:700}.status{border-radius:var(--radius);border:1px solid color-mix(in srgb, var(--tone) 40%, transparent);background:color-mix(in srgb, var(--tone) 8%, var(--surface-panel));padding:22px 26px}.status__verdict{color:var(--tone);letter-spacing:-.02em;font-weight:800}.status--ok{--tone:#46b82e}.status--late{--tone:#ff6b6b}.status--overdue{--tone:#f59e0b}.status--partial{--tone:#3b82f6}.h1{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:800}.h2{letter-spacing:-.02em;margin:0;font-size:1.125rem;font-weight:800}.micro-label{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem;font-weight:700}.muted{color:var(--text-muted)}.card-body{padding:20px}.stack{flex-direction:column;gap:14px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}*{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);background-clip:content-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:content-box}::-webkit-scrollbar-button{width:0;height:0;display:none}::-webkit-scrollbar-corner{background:0 0}body{background:var(--bg-body);color:var(--text-main);font-family:var(--font);margin:0}button{font-family:inherit}.tone--done{--tone:var(--text-muted)}.tone--open{--tone:var(--border-color)}.spacer{flex:1}.small{font-size:.8rem}.block{display:block}.error{color:var(--danger);margin:0}.empty{color:var(--text-muted);text-align:center;margin:0;padding:26px}.tone-text{color:var(--tone);font-weight:700}.row--end{justify-content:flex-end}.nowrap{flex-wrap:nowrap}.nowrap>.btn{white-space:nowrap;flex:none}.padded{padding:16px 20px}.header{grid-template-columns:1fr auto 1fr;align-items:center;padding:12px 20px;display:grid}.header__greeting{line-height:1.2}.header__brand{letter-spacing:.4em;padding-left:.4em;font-size:1.6rem;font-weight:800}.header__right{justify-content:flex-end}.header__clock{flex-direction:column;align-items:flex-end;font-size:.85rem;line-height:1.3;display:flex}.menu{z-index:40;width:290px;max-height:calc(100vh - 90px);box-shadow:var(--shadow);padding:20px;position:fixed;top:64px;left:20px;overflow:auto}.menu__group{flex-direction:column;gap:4px;margin-bottom:20px;display:flex}.menu__group button{color:var(--text-main);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 10px;font-size:.9rem;transition:background .15s}.menu__group button:hover{background:var(--surface-hover)}.menu__main{font-weight:800}.stage{margin:0 20px 20px;padding:0 0 12px}.stage__head{border-bottom:1px solid var(--border-color);flex-wrap:wrap;align-items:center;gap:12px 16px;padding:12px 20px;display:flex}.toggle{cursor:pointer;align-items:center;gap:7px;font-size:.875rem;display:inline-flex}.toggle input{accent-color:var(--primary);width:16px;height:16px}.legend{color:var(--text-muted);flex-wrap:wrap;gap:12px;display:inline-flex}.legend>span{align-items:center;gap:6px;display:inline-flex}.zoom{gap:6px}.diamond{border:1px solid color-mix(in srgb, var(--tone) 70%, var(--text-main));background:var(--tone);width:14px;height:14px;color:var(--on-solid);flex:none;justify-content:center;align-items:center;display:inline-flex;transform:rotate(45deg)}.diamond svg{transform:rotate(-45deg)}.diamond--small{width:9px;height:9px}.portfolio{padding:4px 20px}.project-row{border-bottom:1px solid var(--border-color);padding:16px 0 18px}.project-row:last-child{border-bottom:0}.project-row__head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.project-name{border:1px solid var(--border-color);background:var(--surface-hover);color:var(--text-main);letter-spacing:-.01em;cursor:pointer;border-radius:6px;padding:5px 12px;font-size:.95rem;font-weight:800;transition:border-color .15s}.project-name:hover{border-color:var(--text-muted)}.gate-chain{padding-bottom:4px;display:flex;overflow-x:auto}.gate-chain__link{flex-direction:column;flex:1 0 150px;gap:8px;min-width:150px;display:flex}.gate-chain__link:last-child{flex:0 0 160px}.gate-chain__link>.gate{min-height:84px}.gate{color:var(--text-main);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:flex-start;gap:10px;padding:4px;transition:background .15s;display:flex}.gate:hover{background:var(--surface-hover)}.gate .diamond{margin-top:4px}.gate__text{flex-direction:column;line-height:1.3;display:flex}.gate__name{font-size:.8rem;font-weight:700}.gate__completion{color:var(--tone);font-size:.8rem;font-weight:800}.gate__date{color:var(--text-muted);font-size:.72rem}.phase-arrow{background:color-mix(in srgb, var(--tone) 38%, var(--surface-panel));height:28px;color:var(--text-main);white-space:nowrap;cursor:pointer;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%,12px 50%);border:0;margin-right:-6px;padding:0 22px;font-size:.72rem;font-weight:600;transition:background .15s}.phase-arrow:hover{background:color-mix(in srgb, var(--tone) 55%, var(--surface-panel))}.phase-arrow--done{background:color-mix(in srgb, var(--tone) 14%, var(--surface-panel));color:var(--text-muted)}.phase-arrow--active{color:var(--text-main);background:color-mix(in srgb, var(--tone) 60%, var(--surface-panel));font-weight:800}.status-chip{border:1px solid color-mix(in srgb, var(--tone) 40%, transparent);background:color-mix(in srgb, var(--tone) 10%, var(--surface-panel));color:var(--text-main);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.78rem;display:inline-flex}.status-chip__remove{color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.timeline-wrap{position:relative}.timeline{margin:0;overflow-x:auto}.timeline__canvas{position:relative}.month{border-left:1px solid var(--border-color);position:absolute;top:0;bottom:0}.month span{color:var(--text-muted);padding:6px 4px;font-size:.7rem;display:inline-block}.month--year{border-left-color:var(--text-muted)}.today-line{z-index:2;border-left:2px solid var(--text-main);pointer-events:none;position:absolute;top:0;bottom:0}.today-line span{background:var(--text-main);color:var(--surface-panel);border-radius:6px;padding:1px 6px;font-size:.7rem;font-weight:800;position:absolute;top:2px;left:4px}.project-name--floating{z-index:3;box-shadow:var(--shadow-sm);padding:2px 10px;font-size:.8rem;position:absolute;left:12px}.bar{background:color-mix(in srgb, var(--tone) 38%, var(--surface-panel));height:22px;color:var(--text-main);white-space:nowrap;cursor:pointer;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 50%,calc(100% - 8px) 100%,0 100%,8px 50%);border:0;align-items:center;padding:0 14px;font-size:.72rem;transition:background .15s;display:flex;position:absolute;overflow:hidden}.bar span{text-overflow:ellipsis;overflow:hidden}.bar:hover{background:color-mix(in srgb, var(--tone) 55%, var(--surface-panel))}.bar--done{background:color-mix(in srgb, var(--tone) 16%, var(--surface-panel));color:var(--text-muted)}.gate--timeline{white-space:nowrap;align-items:center;gap:8px;padding:2px 4px;position:absolute}.gate--timeline .diamond{margin-top:0}.gate--timeline .gate__name{font-size:.72rem;font-weight:600}.drilldown{padding:14px 20px}.crumbs{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:4px;font-size:.85rem;display:flex}.crumbs__part{align-items:center;gap:4px;display:inline-flex}.crumbs button{color:var(--text-main);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 4px;font-size:.85rem}.crumbs button:hover{background:var(--surface-hover)}.crumbs>button:nth-of-type(2),.crumbs__part:last-child button{font-weight:800}.phase-tabs{margin:14px 0;padding-left:6px;display:flex;overflow-x:auto}.toolbar{margin-bottom:12px}.gantt{--label-width:340px;--right-gap:120px;border:1px solid var(--border-color);border-radius:var(--radius);overflow:hidden}.gantt__head,.gantt__row{grid-template-columns:var(--label-width) 1fr;display:grid}.gantt__head{border-bottom:1px solid var(--border-color);background:var(--surface-hover)}.gantt__label{align-items:center;gap:8px;min-width:0;padding:6px 12px;display:flex}.gantt__head .gantt__label{align-items:flex-end;padding-bottom:10px}.gantt__axis{height:128px;margin-right:var(--right-gap);position:relative}.marker{width:0;height:calc(30px + var(--lane,0) * 22px);border:0;border-left:1px solid color-mix(in srgb, var(--tone) 60%, transparent);color:var(--text-main);cursor:pointer;background:0 0;padding:0;position:absolute;bottom:0}.marker .diamond{position:absolute;bottom:4px;left:-7px}.marker .diamond--small{bottom:6px;left:-5px}.marker__text{background:var(--surface-hover);white-space:nowrap;border-radius:6px;padding:1px 6px;font-size:.72rem;position:absolute;top:-8px;left:6px}.marker--flip .marker__text{left:auto;right:6px}.marker:hover .marker__text{background:var(--border-color)}.marker--gate .marker__text{font-weight:800}.marker--today{background:var(--text-main);height:auto;color:var(--surface-panel);cursor:default;border:0;border-radius:6px;width:auto;padding:1px 6px;font-size:.7rem;font-weight:800;top:2px;bottom:auto;transform:translate(-50%)}.gantt__body{position:relative}.gantt__lines{top:0;bottom:0;left:var(--label-width);right:var(--right-gap);pointer-events:none;position:absolute}.line{border-left:1px dashed var(--text-muted);opacity:.6;position:absolute;top:0;bottom:0}.line--gate{border-left:2px solid var(--text-muted);opacity:.8}.line--today{border-left:2px solid var(--text-main);opacity:1}.gantt__row{border-bottom:1px solid color-mix(in srgb, var(--border-color) 60%, transparent);min-height:38px}.gantt__row:last-child{border-bottom:0}.gantt__row--focus{background:var(--surface-hover)}.gantt__row--focus .row-name{font-weight:800}.gantt__row--focus .bar{height:26px;font-weight:800;top:calc(50% - 13px)}.row-title{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.row-name{-webkit-line-clamp:2;color:var(--text-main);text-align:left;cursor:pointer;background:0 0;border:0;-webkit-box-orient:vertical;padding:0;font-size:.85rem;font-weight:600;display:-webkit-box;overflow:hidden}.row-name:hover{text-decoration:underline}.row-info{flex:none;align-items:center;gap:6px;margin-left:auto;font-size:.72rem;display:inline-flex}.enter{flex:none;width:28px;height:28px}.gantt__lane{margin-right:var(--right-gap);position:relative}.gantt__lane .bar{top:calc(50% - 11px)}.overlay{z-index:50;background:color-mix(in srgb, var(--bg-body) 72%, transparent);justify-content:center;align-items:flex-start;padding:5vh 12px;display:flex;position:fixed;inset:0;overflow:auto}.dialog{width:min(600px,96vw);box-shadow:var(--shadow);overflow:visible}.dialog--wide{width:min(1120px,96vw)}.dialog__head{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;gap:12px;padding:14px 20px;display:flex}.dialog__body{padding:20px}.dialog__foot{border-top:1px solid var(--border-color);margin-top:20px;padding-top:16px}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.textarea{resize:vertical;height:auto;min-height:96px;padding:10px 12px;font-family:inherit;line-height:1.4}.package{grid-template-columns:1fr 1fr;gap:26px;display:grid}@media (width<=860px){.package,.grid2{grid-template-columns:1fr}.gantt{--label-width:170px;--right-gap:70px}}.history{border:1px solid var(--border-color);border-radius:8px;flex-direction:column;gap:6px;min-height:60px;max-height:240px;margin:0;padding:10px 12px;font-size:.85rem;list-style:none;display:flex;overflow:auto}.status-note,.status-note--plain{border:1px solid color-mix(in srgb, var(--tone) 40%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--tone) 8%, var(--surface-panel));align-items:center;gap:10px;margin:0;padding:10px 12px;font-size:.875rem;font-weight:600;display:flex}.status-note--plain{font-weight:400}.light-choice{border:1px solid color-mix(in srgb, var(--tone) 40%, transparent);background:var(--surface-panel);min-height:36px;color:var(--text-main);cursor:pointer;border-radius:6px;flex:1;padding:7px 12px;font-size:.85rem;transition:background .15s,border-color .15s}.light-choice--on{border-color:var(--tone);background:color-mix(in srgb, var(--tone) 18%, var(--surface-panel));font-weight:800}.chips{flex-wrap:wrap;gap:6px;display:flex}.mini-arrow{background:var(--tone);clip-path:polygon(0 0,60% 0,100% 50%,60% 100%,0 100%,30% 50%);width:14px;height:9px}.criteria{border:1px solid var(--border-color);border-radius:var(--radius);padding:12px}.criterion{flex-wrap:nowrap;justify-content:space-between}.plain-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.link{color:var(--text-main);align-items:center;gap:7px;font-size:.875rem;display:inline-flex}.btn--danger{color:var(--danger);border-color:color-mix(in srgb, var(--danger) 40%, transparent)}.table{border-collapse:collapse;width:100%;font-size:.875rem}.table th{color:var(--text-muted);letter-spacing:.06em;text-align:left;text-transform:uppercase;padding:12px 20px 8px;font-size:.72rem;font-weight:700}.table td{border-top:1px solid var(--border-color);padding:10px 20px}.table tbody tr{cursor:pointer;transition:background .15s}.table tbody tr:hover{background:var(--surface-hover)}.row--overdue td:first-child{box-shadow:inset 3px 0 0 var(--danger)}
