*{box-sizing:border-box}:root{color-scheme:light;--page: #f9f9f7;--surface-1: #fcfcfb;--text-primary: #0b0b0b;--text-secondary: #52514e;--muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--series-1: #2a78d6;--series-2: #eb6834;--series-3: #1baf7a;--studio: #4a3aa7;--studio-ink: #ffffff;--good: #0ca30c;--good-text: #006300;--critical: #d03b3b;--tip-bg: #1f1f1e;--tip-ink: #ffffff}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--page: #0d0d0d;--surface-1: #1a1a19;--text-primary: #ffffff;--text-secondary: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--series-1: #3987e5;--series-2: #d95926;--series-3: #199e70;--studio: #9085e9;--studio-ink: #0d0d0d;--good: #0ca30c;--good-text: #0ca30c;--critical: #d03b3b;--tip-bg: #2c2c2a;--tip-ink: #ffffff}}body{margin:0;background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.app{width:100%;padding:28px 24px 60px}.app-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}h1{margin:0 0 4px;font-size:24px;letter-spacing:-.01em}.subtitle{margin:0;color:var(--text-secondary);font-size:13.5px}.header-right{display:flex;align-items:center;gap:10px}.game-pill{background:var(--surface-1);border:1px solid var(--border);border-radius:999px;padding:7px 14px;font-weight:600;font-size:13.5px}.btn-reset{background:none;border:1px solid var(--border);border-radius:8px;color:var(--text-secondary);padding:7px 12px;font:inherit;font-size:12.5px;cursor:pointer}.btn-reset:hover{color:var(--text-primary);border-color:var(--baseline)}.top-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}@media(max-width:800px){.top-grid{grid-template-columns:1fr}}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:0 1px 2px #0000000a}.card h2{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary)}.studio-card{border-left:3px solid var(--studio)}.studio-card h2{color:var(--studio)}.be-card{border-left:3px solid var(--baseline)}.card-note{margin:0 0 6px;font-size:12px;color:var(--muted)}.studio-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}@media(max-width:520px){.studio-grid{grid-template-columns:1fr}}.field{display:grid;gap:4px}.field>span{font-size:12px;color:var(--text-secondary);font-weight:500}.field input{width:100%;border:1px solid var(--border);background:var(--page);color:var(--text-primary);border-radius:8px;padding:8px 10px;font:inherit;font-size:13.5px}.field input:focus{outline:2px solid var(--series-1);outline-offset:1px;border-color:transparent}.be-row{display:flex;align-items:baseline;gap:10px;padding:11px 0;border-bottom:1px solid var(--grid);flex-wrap:wrap}.be-dot{width:10px;height:10px;border-radius:3px;flex:none;align-self:center}.dot-contract{background:var(--series-1)}.dot-dev{background:var(--series-2)}.dot-enddev{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--muted) 60%,transparent) 0,color-mix(in srgb,var(--muted) 60%,transparent) 3px,color-mix(in srgb,var(--muted) 25%,transparent) 3px,color-mix(in srgb,var(--muted) 25%,transparent) 6px)}.be-label{flex:1;min-width:130px;font-size:13px;font-weight:600;color:var(--text-secondary)}.be-date{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.delta{font-size:12.5px;font-weight:600}.delta-ok{color:var(--good-text)}.delta-bad{color:var(--critical)}.delta-muted{color:var(--muted);font-weight:500}.be-verdict{margin-top:14px;padding:11px 13px;border-radius:10px;font-size:13.5px;font-weight:700;line-height:1.45}.verdict-ok{background:color-mix(in srgb,var(--good) 12%,transparent);color:var(--good-text)}.verdict-bad{background:color-mix(in srgb,var(--critical) 12%,transparent);color:var(--critical)}.chart-card{margin-bottom:14px}.gantt{margin-top:12px}.gantt-empty{color:var(--muted);font-size:13px}.gantt-grid{display:grid;grid-template-columns:132px 1fr}.flag-area{position:relative;transition:height .18s ease}.flag{position:absolute;transform:translate(-50%);white-space:nowrap;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--surface-1);border:1px solid var(--border);color:var(--text-secondary);z-index:2}.flag-owner{font-size:9px;font-weight:800;letter-spacing:.09em;margin-right:5px;opacity:.8}.flag.own-studio{color:var(--studio);border-color:color-mix(in srgb,var(--studio) 45%,transparent);background:color-mix(in srgb,var(--studio) 9%,var(--surface-1))}.flag.flag-kickoff{background:var(--surface-1)}.flag.flag-deadline{background:var(--studio);border-color:var(--studio);color:var(--studio-ink)}.flag.flag-desired,.flag.flag-desiredready{background:color-mix(in srgb,var(--studio) 20%,var(--surface-1))}.flag.own-be{color:var(--text-primary);border-color:var(--baseline);background:var(--surface-1)}.flag-today{color:var(--muted);border-style:dashed}.gantt-names{display:flex;flex-direction:column}.gantt-name{height:44px;display:flex;align-items:center;padding-right:12px;font-size:13px;font-weight:600;color:var(--text-secondary);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:opacity .18s ease,height .18s ease,margin .18s ease}.fe-name{border-top:1px dashed var(--grid)}.gantt-plot{position:relative;border-left:1px solid var(--baseline)}.gantt-row{position:relative;height:44px;transition:opacity .18s ease,height .18s ease,margin .18s ease}.gantt-row:hover{background:color-mix(in srgb,var(--muted) 8%,transparent)}.gantt-empty-row{display:flex;align-items:center;padding-left:10px}.fe-row{border-top:1px dashed var(--grid);background:color-mix(in srgb,var(--series-3) 7%,transparent)}.weekend{position:absolute;top:0;bottom:0;background:color-mix(in srgb,var(--muted) 8%,transparent)}.gridline{position:absolute;top:0;bottom:0;width:1px;background:var(--grid)}.marker{position:absolute;top:-4px;bottom:0;width:0;border-left:2px dashed;z-index:1}.marker-today{border-left-style:dotted;border-color:var(--text-secondary)}.marker.own-studio{border-left-style:dashed;border-color:color-mix(in srgb,var(--studio) 55%,transparent)}.marker.marker-kickoff{border-left-width:1px}.marker.marker-deadline{border-color:var(--studio)}.marker-desiredready{border-color:color-mix(in srgb,var(--studio) 55%,transparent)}.marker.own-be{border-left-style:solid}.marker-signoff{border-color:color-mix(in srgb,var(--series-1) 70%,transparent)}.marker-readyint{border-color:color-mix(in srgb,var(--series-2) 70%,transparent)}.marker-devdone{border-color:color-mix(in srgb,var(--muted) 60%,transparent)}.flag-signoff:before,.flag-readyint:before,.flag-devdone:before{content:"";display:inline-block;width:7px;height:7px;border-radius:2px;margin-right:5px}.flag-signoff:before{background:var(--series-1)}.flag-readyint:before{background:var(--series-2)}.flag-devdone:before{background:var(--muted)}.seg-hit{position:absolute;top:0;height:100%;display:flex;align-items:center;z-index:2}.seg{width:100%;height:18px;border-radius:4px;box-shadow:0 0 0 2px var(--surface-1)}.seg-contract{background:var(--series-1)}.seg-dev{background:var(--series-2)}.seg-enddev{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--muted) 55%,transparent) 0,color-mix(in srgb,var(--muted) 55%,transparent) 5px,color-mix(in srgb,var(--muted) 22%,transparent) 5px,color-mix(in srgb,var(--muted) 22%,transparent) 10px)}.seg-fe{background:var(--series-3);display:flex;align-items:center;padding:0 8px;overflow:hidden}.seg-fe-label{font-size:11px;font-weight:700;color:#000000c7;white-space:nowrap}.end-label{position:absolute;top:50%;transform:translateY(-50%);margin-left:9px;font-size:11.5px;color:var(--text-secondary);font-variant-numeric:tabular-nums;z-index:2}.fe-none{display:flex;align-items:center;height:100%;padding-left:10px;color:var(--critical);font-size:12.5px;font-weight:600}.tooltip{position:absolute;z-index:10;transform:translate(14px,-110%);background:var(--tip-bg);color:var(--tip-ink);font-size:12px;line-height:1.55;padding:8px 11px;border-radius:8px;box-shadow:0 4px 14px #00000047;pointer-events:none;white-space:nowrap}.tooltip-flip{transform:translate(-14px,-110%) translate(-100%)}.tooltip div:first-child{font-weight:700}.gantt-axis .axis-area{position:relative;height:24px;border-top:1px solid var(--baseline)}.tick{position:absolute;top:6px;transform:translate(-50%);font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:16px;font-size:12px;color:var(--text-secondary)}.legend-item{display:inline-flex;align-items:center;gap:6px}.chip{width:12px;height:12px;border-radius:3px}.chip-contract{background:var(--series-1)}.chip-dev{background:var(--series-2)}.chip-enddev{background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--muted) 55%,transparent) 0,color-mix(in srgb,var(--muted) 55%,transparent) 4px,color-mix(in srgb,var(--muted) 22%,transparent) 4px,color-mix(in srgb,var(--muted) 22%,transparent) 8px)}.chip-fe{background:var(--series-3)}.legend-sep{width:1px;align-self:stretch;background:var(--grid)}.flag-key{width:17px;height:12px;border-radius:999px;border:1px solid;flex:none}.key-studio{background:color-mix(in srgb,var(--studio) 20%,var(--surface-1));border-color:var(--studio)}.key-be{background:var(--surface-1);border-color:var(--baseline)}.legend-item b{font-weight:800;letter-spacing:.05em}.summary-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}.summary-table th{text-align:left;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;padding:8px 10px;border-bottom:1px solid var(--baseline);white-space:nowrap}.summary-table td{padding:5px 6px;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums}.total-row td{font-weight:700;border-bottom:none;padding:9px 10px}.cell-input{width:100%;min-width:130px;border:1px solid transparent;background:transparent;color:var(--text-primary);border-radius:7px;padding:6px 8px;font:inherit;font-size:13px;font-variant-numeric:tabular-nums}.cell-name{font-weight:600;min-width:110px}.days-cell{display:flex;align-items:center;gap:6px;white-space:nowrap}.cell-days{width:68px;min-width:0;text-align:right;font-weight:600;border-color:var(--border)}.days-unit{font-size:12px;color:var(--text-secondary)}.days-date{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.days-max{font-weight:700}.total-row .days-date{color:var(--text-primary)}.th-sub{display:block;margin-top:2px;font-size:10.5px;font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted)}.cell-input:hover:not(:disabled){border-color:var(--border);background:var(--page)}.cell-input:focus{outline:2px solid var(--series-1);outline-offset:-1px;background:var(--page)}.cell-input:disabled{opacity:.4}.cell-invalid .cell-input{border-color:var(--critical);background:color-mix(in srgb,var(--critical) 7%,transparent)}.oos-toggle{display:inline-flex;align-items:center;gap:5px;margin-left:10px;font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted);cursor:pointer}.oos-toggle input{accent-color:var(--series-1);margin:0}.th-del,.td-del{width:34px;text-align:center}.noe-field .noe-studio{display:flex;align-items:center;gap:10px;padding:8px 0;cursor:pointer;font-size:14px;font-weight:600;color:var(--text-secondary)}.noe-studio input{accent-color:var(--series-1);width:18px;height:18px;margin:0}.noe-label{min-width:32px}.btn-del{background:none;border:none;color:var(--muted);font-size:17px;line-height:1;cursor:pointer;border-radius:6px;padding:3px 8px}.btn-del:hover{color:var(--critical);background:color-mix(in srgb,var(--critical) 10%,transparent)}.btn-add{margin-top:12px;background:none;border:1px dashed var(--baseline);border-radius:8px;color:var(--text-secondary);padding:7px 14px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer}.btn-add:hover{color:var(--text-primary);border-color:var(--text-secondary)}.logic-note{margin:12px 0 0;font-size:12px;color:var(--muted)}.phase-tabs{display:flex;gap:8px;margin-bottom:14px}.phase-tab{background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:9px 18px;font:inherit;font-size:13.5px;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.phase-tab:hover{border-color:var(--baseline)}.phase-tab.active{background:var(--series-1);border-color:var(--series-1);color:#fff}.index-page{min-height:100vh;display:flex;align-items:center;justify-content:center}.index-card{width:100%;max-width:1200px;text-align:center;padding:36px 32px 40px}.index-card h1{font-size:28px;margin-bottom:8px}.index-card .subtitle{color:var(--text-secondary);font-size:14px;margin-bottom:28px}.index-form{display:grid;gap:16px;text-align:left}.index-form .field input{font-size:16px;padding:11px 14px}.btn-primary{background:var(--series-1);color:#fff;border:none;border-radius:10px;padding:12px 18px;font:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:opacity .15s ease}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-primary:hover:not(:disabled){opacity:.9}.recent-projects{margin-top:28px;text-align:left;border-top:1px solid var(--grid);padding-top:20px}.recent-projects h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.recent-loading,.loading{color:var(--muted);font-size:14px;text-align:center;padding:20px}.recent-projects ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.btn-link{background:var(--page);border:1px solid var(--border);border-radius:8px;padding:9px 12px;font:inherit;font-size:13.5px;color:var(--text-primary);cursor:pointer;text-align:left;width:100%;transition:border-color .15s ease,background .15s ease}.btn-link:hover{border-color:var(--baseline);background:var(--surface-1)}.table-wrap{overflow-x:auto;margin-top:10px}.project-table{width:100%;border-collapse:collapse}.project-table th,.project-table td{padding:14px 16px;border-bottom:1px solid var(--grid);font-size:14.5px;white-space:nowrap}.project-table th{color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;text-align:left}.project-row{cursor:pointer;transition:background .12s ease}.project-row:hover{background:color-mix(in srgb,var(--series-1) 7%,transparent)}.project-name{font-weight:700;color:var(--series-1)}.project-deadline{font-weight:600;font-variant-numeric:tabular-nums}.project-noe{font-weight:700;color:var(--text-secondary)}@media(max-width:640px){.gantt-grid{grid-template-columns:92px 1fr}.gantt-name{font-size:11.5px}.edit-table{display:block;overflow-x:auto}}
