:root{color:#172128;font-synthesis:none;text-rendering:optimizelegibility;--navy-950:#0b1a26;--navy-900:#122739;--navy-800:#19364d;--navy-700:#274a63;--ink:#172128;--ink-soft:#52616b;--muted:#7e8c95;--paper:#fff;--surface:#f4f7f8;--surface-2:#eaf0f3;--grid:#d7e0e5;--grid-strong:#b7c4cc;--focus:#2a78d6;--warning:#d64242;--warning-soft:#fff0ef;--success:#16845b;--shadow:0 12px 34px #142a381f;background:#e9eff2;font-family:Microsoft YaHei,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:100%;min-height:100%;margin:0}body{background-color:#eef3f5;background-image:linear-gradient(#1c3f5409 1px,#0000 1px),linear-gradient(90deg,#1c3f5409 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:28px 28px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;min-width:760px;min-height:100vh}button,input,select,textarea{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:2px solid #4a91e8}button:disabled{opacity:.45;cursor:not-allowed}.app-shell{min-height:100vh;padding:10px 12px 0}.topbar{z-index:100;-webkit-backdrop-filter:blur(14px);color:#fff;background:#0d6a62e6;border:1px solid #ffffff24;border-radius:14px;align-items:center;gap:18px;min-height:62px;padding:9px 16px;display:flex;position:sticky;top:8px;box-shadow:0 24px 48px -18px #073e3973}.brand-block{align-items:center;gap:11px;min-width:250px;display:flex}.brand-logo-frame{background:#fff;border:1px solid #ffffff4d;border-radius:10px;flex:none;place-items:center;padding:4px 7px;display:grid;box-shadow:0 8px 16px -10px #0412268c}.brand-logo-frame img{width:auto;height:34px;display:block}.brand-text{flex-direction:column;gap:2px;display:flex}.brand-line-primary{letter-spacing:.05em;color:#fff;white-space:nowrap;font:650 16px/1.1 Bahnschrift,Microsoft YaHei,sans-serif}.brand-line-accent{letter-spacing:.18em;color:#ccfbf1a8;white-space:nowrap;font:700 9px/1.2 Consolas,Microsoft YaHei,monospace}.main-navigation{background:#00000026;border:1px solid #ffffff0f;border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex;box-shadow:inset 0 2px 4px #00000024}.main-navigation button{color:#ccfbf1b3;cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:5px 14px;font-size:12px;font-weight:650;transition:all .18s;display:flex}.main-navigation button:hover{color:#fff;background:#ffffff14}.main-navigation button.is-active{color:#0b4f49;background:#fff;box-shadow:0 3px 10px #042f2b4d}.topbar-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.conflict-button{color:#ebf1f6f0;cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:9px;align-items:center;gap:7px;height:30px;padding:0 10px;font-size:12px;display:flex}.conflict-button small{color:#c4d6e4bf;border-left:1px solid #ffffff3d;padding-left:7px}.conflict-button.has-conflicts{color:#ffd9d6;background:#ba262c57;border-color:#ffaaa28c}.conflict-button.has-conflicts small{color:#ffd9d6bf}.save-status{color:#8ee8d9;white-space:nowrap;align-items:center;gap:5px;padding:0 6px;font-size:11px;display:flex}.icon-button{border:1px solid var(--grid);cursor:pointer;background:#fff;place-items:center;width:34px;height:34px;display:inline-grid}.topbar-icon{color:#cedeeacc;background:0 0;border:1px solid #ffffff26;border-radius:9px;width:30px;height:30px}.topbar-icon:disabled{opacity:.32}.topbar-icon:hover:not(:disabled){color:#fff;background:#ffffff1f;border-color:#ffffff47}.app-main{min-height:calc(100vh - 100px)}.page{padding:25px 24px 34px}.page-heading{justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:18px;display:flex}.page-heading h1{letter-spacing:.035em;color:var(--navy-900);margin:4px 0 5px;font:650 28px/1.05 Bahnschrift,Microsoft YaHei,sans-serif}.page-heading p{color:var(--ink-soft);margin:0;font-size:13px}.eyebrow{letter-spacing:.12em;color:#55778d;text-transform:uppercase;font:700 10px/1.2 Consolas,Microsoft YaHei,monospace;display:block}.warning-text{color:#c8574f}.heading-metrics{border:1px solid var(--grid-strong);background:#ffffffb8;align-items:stretch;display:flex}.heading-metrics>div{border-left:1px solid var(--grid);flex-direction:column;align-items:flex-end;min-width:86px;padding:9px 13px;display:flex}.heading-metrics>div:first-child{border-left:0}.heading-metrics strong{color:var(--navy-800);font:650 20px/1 Bahnschrift,sans-serif}.heading-metrics span{color:var(--muted);margin-top:4px;font-size:10px}.heading-metrics .metric-alert{background:var(--warning-soft)}.heading-metrics .metric-alert strong{color:var(--warning)}.compact-metrics>div{min-width:92px}.heading-action{align-self:center}.button{cursor:pointer;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;gap:7px;min-height:36px;padding:0 14px;font-size:12px;font-weight:650;display:inline-flex}.button.primary{color:#fff;background:#0f766e;border-color:#0f766e}.button.primary:hover{background:#0b5d56}.button.ghost{border-color:var(--grid-strong);color:var(--navy-800);background:#fff}.button.ghost:hover{background:#f1f5f7;border-color:#8fa2ae}.button.danger{color:var(--warning);border-color:#efc1be}.button.danger:hover{background:var(--warning-soft);border-color:#e0a09c}.compact-button{height:32px;min-height:32px;padding:0 10px}.mini-icon-button{border:1px solid var(--grid);color:#506570;cursor:pointer;background:#fff;border-radius:3px;flex:none;place-items:center;width:27px;height:27px;display:inline-grid}.mini-icon-button:hover{color:var(--navy-900);border-color:#8da1ad}.mini-action-button{border:1px solid var(--grid);color:#506570;cursor:pointer;background:#fff;border-radius:3px;align-items:center;gap:3px;height:27px;padding:0 7px;font-size:11px;display:inline-flex}.danger-icon:hover{color:var(--warning);background:#fff7f6;border-color:#efb6b3}.onboarding-banner{color:var(--navy-800);background:#e7f1fb;border-left:4px solid #2a78d6;align-items:center;gap:12px;margin-bottom:14px;padding:12px 15px;display:flex}.onboarding-banner>div{flex-direction:column;gap:2px;display:flex}.onboarding-banner span{color:var(--ink-soft);font-size:12px}.onboarding-banner .button{margin-left:auto}.schedule-toolbar,.people-toolbar{border:1px solid var(--grid-strong);background:#ffffffe0;align-items:center;gap:8px;min-height:49px;padding:8px;display:flex;box-shadow:0 4px 14px #1630410e}.search-control{border:1px solid var(--grid);color:#78909e;background:#fff;align-items:center;gap:7px;width:225px;height:32px;padding:0 9px;display:flex}.search-control input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:12px}.compact-field{border:1px solid var(--grid);background:#fff;align-items:center;height:32px;display:flex}.compact-field>span{color:var(--muted);border-right:1px solid var(--grid);padding:0 7px;font-size:10px}.compact-field select{min-width:105px;height:30px;color:var(--ink);background:#fff;border:0;padding:0 26px 0 8px;font-size:12px}.toggle-button{border:1px solid var(--grid);height:32px;color:var(--ink-soft);cursor:pointer;background:#fff;align-items:center;gap:5px;padding:0 9px;font-size:12px;display:inline-flex}.toggle-button.is-active{color:#b43f39;background:#fff0ef;border-color:#d66a64}.toolbar-spacer{flex:1}.zoom-control{border:1px solid var(--grid);color:#78909e;background:#fff;align-items:center;gap:3px;height:32px;padding-left:8px;display:flex}.zoom-control button{height:25px;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;padding:0 8px;font-size:11px}.zoom-control button.is-active{background:var(--navy-800);color:#fff}.stage-legend,.project-color-key{border-left:1px solid var(--grid-strong);border-right:1px solid var(--grid-strong);min-height:34px;color:var(--ink-soft);background:#edf2f4;align-items:center;gap:16px;padding:6px 10px;font-size:11px;display:flex}.stage-legend span,.project-color-key span{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.stage-legend em{color:var(--muted);align-items:center;gap:5px;margin-left:auto;font-style:normal;display:inline-flex}.legend-phase{border:1px solid #0a19232e;width:24px;height:8px;display:inline-block}.legend-phase.phase-one{background:#b7c9d8}.legend-phase.phase-two{background:repeating-linear-gradient(135deg,#6487a0 0 4px,#87a4b7 4px 8px)}.legend-phase.phase-three{background:#274a63}.project-color-key{border:1px solid var(--grid-strong);flex-wrap:wrap;margin-top:8px}.project-color-key i{width:14px;height:8px;display:inline-block}.cycle-stats-bar{border:1px solid var(--grid-strong);background:#ffffffe6;flex-wrap:wrap;align-items:center;gap:14px;min-height:40px;margin-top:8px;padding:6px 12px;font-size:11px;display:flex;box-shadow:0 4px 14px #1630410d}.cycle-stats-date{border-right:1px solid var(--grid);color:#47606f;align-items:center;gap:8px;padding-right:12px;display:flex}.cycle-stats-date>div{flex-direction:column;gap:1px;display:flex}.cycle-stats-date span{color:var(--muted);font-size:9px}.cycle-stats-date strong{color:var(--navy-900);white-space:nowrap;font:650 13px/1.1 Bahnschrift,Microsoft YaHei,sans-serif}.cycle-stats-date .mini-action-button{height:22px;padding:0 7px;font-size:10px}.cycle-stats-projects{flex-wrap:wrap;flex:1;align-items:center;gap:4px 16px;min-width:0;display:flex}.cycle-stat-project{align-items:center;gap:7px;min-width:0;display:flex}.cycle-stat-project>strong{color:#2b4353;white-space:nowrap;font-size:11px}.cycle-stat-project>em{color:var(--muted);white-space:nowrap;font-size:10px;font-style:normal}.cycle-stat-chips{flex-wrap:wrap;gap:4px;display:flex}.cycle-stat-chip{white-space:nowrap;background:#f2f6f8;border:1px solid #cdd9df;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.cycle-stat-chip b{letter-spacing:.03em;color:var(--navy-900);font:700 10px/1.5 Bahnschrift,Arial,sans-serif}.cycle-stat-chip i{color:#47677c;font:650 9px/1.5 Consolas,monospace}.cycle-stats-total{background:var(--navy-900);color:#d7e5ee;white-space:nowrap;margin-left:auto;padding:4px 10px;font-size:10px}.gantt-scroll-shell{border:1px solid var(--grid-strong);box-shadow:var(--shadow);background:#fff;position:relative}.gantt-scroll{scrollbar-color:#8197a5 #e7edef;scrollbar-width:thin;cursor:grab;max-height:calc(100vh - 320px);overflow:auto}.gantt-scroll.is-panning{cursor:grabbing;-webkit-user-select:none;user-select:none}.project-visible-toggle{color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:4px;padding:2px 7px;font-size:10px;display:inline-flex}.project-visible-toggle:hover{background:var(--surface-2);color:var(--ink)}.project-visible-toggle input{accent-color:#0f766e;margin:0}.gantt-scroll::-webkit-scrollbar{width:12px;height:12px}.gantt-scroll::-webkit-scrollbar-track{background:#e7edef}.gantt-scroll::-webkit-scrollbar-thumb{background:#8197a5;border:3px solid #e7edef}.gantt-board{background:#fff;min-width:100%;position:relative}.board-row{grid-template-columns:var(--label-width) var(--timeline-width);width:100%;display:grid}.board-label{z-index:15;width:var(--label-width);border-right:1px solid var(--grid-strong);background:#fff;position:sticky;left:0}.gantt-sticky-header{z-index:50;height:58px;position:sticky;top:0;box-shadow:0 2px #12273938}.gantt-corner{z-index:55;background:var(--navy-900);color:#fff;justify-content:space-between;align-items:center;height:58px;padding:0 13px;display:flex}.gantt-corner div{flex-direction:column;gap:2px;display:flex}.gantt-corner span{color:#94afc0;font-size:10px}.gantt-corner strong{letter-spacing:.04em;font-size:13px}.gantt-corner small{color:#91a5b2;font-size:9px}.timeline-header{background:#f6f8f9;height:58px;position:relative;overflow:hidden}.timeline-years{position:absolute;inset:0 0 28px}.timeline-year{color:#fff;letter-spacing:.08em;background:#18344a;border-right:1px solid #79909f;align-items:center;height:30px;padding-left:8px;font:600 11px/1 Bahnschrift,sans-serif;display:flex;position:absolute}.timeline-months{position:absolute;inset:30px 0 0}.timeline-month{color:#516570;border-right:1px solid #b7c4cc;justify-content:center;align-items:center;height:28px;font:600 9px/1 Consolas,monospace;display:flex;position:absolute;overflow:hidden}.timeline-month:nth-child(2n){background:#edf2f4}.project-row{border-top:1px solid #9eafb9;min-height:34px}.project-label-cell{background:#edf3f6;align-items:center;gap:7px;min-height:34px;padding:3px 9px 3px 7px;display:flex}.project-collapse{color:#536a79;cursor:pointer;background:0 0;border:0;place-items:center;width:22px;height:22px;display:grid}.project-color-rail{background:var(--project-color);align-self:stretch;width:5px;box-shadow:inset 0 0 0 1px #00000014}.project-label-cell>div{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.project-label-cell strong{color:var(--navy-900);font:650 13px/1.1 Bahnschrift,Microsoft YaHei,sans-serif}.project-label-cell small{color:var(--muted);font-size:9px}.project-timeline-band{background:linear-gradient(90deg, color-mix(in srgb, var(--project-color) 13%, #edf3f6), #edf3f6 65%);border-bottom:1px solid #d2dde2}.ship-record{border-top:1px solid #dbe3e7}.ship-main-row{height:44px}.ship-label-cell{background:#fbfcfc;align-items:center;gap:8px;height:44px;padding:4px 9px 4px 14px;display:flex}.ship-identity{flex:none;align-items:center;gap:5px;width:118px;display:flex}.ship-identity strong{letter-spacing:.04em;color:var(--navy-900);font:700 13px/1 Bahnschrift,Arial,sans-serif}.ship-status{color:#667983;white-space:nowrap;background:#edf2f4;border:1px solid #cad5db;padding:1px 4px;font-size:8px}.ship-node-dates{color:#60727d;flex:1;grid-template-columns:1fr 1fr;gap:1px 9px;font:9px/1.25 Consolas,Microsoft YaHei,monospace;display:grid}.ship-node-dates span{white-space:nowrap}.ship-node-dates b{width:13px;height:13px;color:var(--project-color);background:color-mix(in srgb, var(--project-color) 12%, white);place-items:center;margin-right:3px;font-size:8px;display:inline-grid}.ship-label-cell .mini-icon-button{margin-left:auto}.timeline-grid{-webkit-user-select:none;user-select:none;touch-action:none;background:#fff;flex:none;position:relative;overflow:hidden}.timeline-month-band{border-right:1px solid #dbe3e7;position:absolute;top:0;bottom:0}.timeline-month-band.is-even{background:#1f455b06}.grid-hover-chip{z-index:25;background:var(--navy-900);color:#dbe7ef;white-space:nowrap;pointer-events:none;border-radius:2px;padding:2px 6px;font:9px/1.3 Consolas,Microsoft YaHei,monospace;position:absolute;top:2px;transform:translate(-50%);box-shadow:0 2px 6px #05131c47}.grid-hover-chip:after{content:"";border:4px solid #0000;border-top-color:var(--navy-900);position:absolute;top:100%;left:50%;transform:translate(-50%)}.today-keel-line{z-index:14;cursor:ew-resize;touch-action:none;background:#e04b45 padding-box padding-box;border-left:4px solid #0000;border-right:4px solid #0000;width:10px;position:absolute;top:0;bottom:0}.today-keel-line.is-scrubbing{background:#c33a34 padding-box padding-box}.today-flag{z-index:6;color:#fff;white-space:nowrap;background:#e04b45;border-radius:2px;padding:1px 4px;font-size:8px;line-height:1.4;position:absolute;bottom:1px}.ship-cycle-shadow{filter:blur(2px);background:#0f222f1f;height:20px;position:absolute;top:13px;transform:translateY(2px)}.ship-phase{z-index:3;border-top:1px solid #ffffffb8;border-bottom:1px solid #05172247;align-items:center;height:20px;display:flex;position:absolute;top:12px;overflow:hidden}.ship-phase>span{color:#102331;white-space:nowrap;background:#ffffffc7;margin-left:6px;padding:1px 3px;font-size:8px;font-weight:700}.ship-phase.phase-one{background:color-mix(in srgb, var(--project-color) 58%, white)}.ship-phase.phase-two{background:color-mix(in srgb, var(--project-color) 82%, white)}.ship-phase.phase-three{background:var(--project-color)}.ship-node{z-index:6;pointer-events:none;background:#0c1f2ca6;width:1px;position:absolute;top:6px;bottom:6px}.ship-node i{border:2px solid var(--project-color);background:#fff;width:6px;height:6px;position:absolute;top:2px;left:-3px;transform:rotate(45deg)}.ship-node span{color:#314853;background:#ffffffdb;padding:1px 2px;font-size:8px;font-weight:700;position:absolute;top:-5px;left:4px}.project-assignment-area{background:#f4f8fa;border-top:1px solid #c9d5db}.project-assignment-label{background:#f0f5f8;align-items:center;gap:7px;padding:4px 9px 4px 14px;display:flex}.project-assignment-label .project-dot{flex:none;width:9px;height:9px}.project-assignment-title{flex-direction:column;gap:1px;min-width:0;display:flex}.project-assignment-title strong{color:#2b4353;white-space:nowrap;font:650 11px/1.2 Microsoft YaHei,sans-serif}.project-assignment-title small{color:var(--muted);white-space:nowrap;font-size:9px}.project-assignment-label select{color:#2b4353;background:#fff;border:1px solid #c2ced5;max-width:150px;margin-left:auto;padding:3px 5px;font-size:10px}.project-assignment-timeline{background:#f4f8fa}.project-assignment-track{z-index:2;cursor:crosshair;position:absolute;inset:0}.assignment-draft-preview{z-index:9;background:color-mix(in srgb, var(--project-color) 32%, white);border:1px dashed color-mix(in srgb, var(--project-color) 80%, #08202d);color:#1d3444;pointer-events:none;white-space:nowrap;align-items:center;gap:5px;min-width:6px;height:22px;padding:0 7px;font-size:10px;display:flex;position:absolute;overflow:hidden}.assignment-draft-preview small{color:#4b6373;font:9px/1 Consolas,monospace}.person-assignment-row{border-top:1px dashed #e1e7ea;height:40px}.assignment-label-cell{background:#f8fafb;align-items:center;gap:8px;height:40px;padding:4px 9px 4px 30px;display:flex}.person-avatar{color:#365569;background:#dfe8ed;border-radius:50%;flex:none;place-items:center;width:25px;height:25px;font-size:11px;font-weight:700;display:grid}.person-avatar.large{width:34px;height:34px;font-size:13px}.assignment-label-cell>div{flex-direction:column;min-width:74px;display:flex}.assignment-label-cell strong{color:#203743;font-size:11px}.assignment-label-cell small{color:var(--muted);font-size:9px}.assignment-period-text{color:#7b8c95;white-space:nowrap;margin-left:auto;font:9px/1 Consolas,monospace}.row-conflict-icon{color:var(--warning);flex:none}.assignment-bar{z-index:8;background:linear-gradient(#ffffff24, #ffffff05), var(--project-color);border:1px solid color-mix(in srgb, var(--project-color) 78%, #081923);cursor:grab;touch-action:none;align-items:center;gap:4px;min-width:8px;height:22px;padding:0 22px 0 11px;display:flex;position:absolute;overflow:hidden;box-shadow:0 2px 4px #0d202b2e}.assignment-bar:active{cursor:grabbing}.assignment-bar.is-conflicted{outline-offset:1px;outline:2px solid #d64242}.assignment-bar.is-out-of-window{outline-offset:1px;outline:2px dashed #d98a12}.assignment-bar.is-out-of-window.is-conflicted{outline:2px solid #d64242;box-shadow:0 0 0 4px #d98a1259}.assignment-duration-readout{color:#4a6070;background:#eef3f6;border:1px solid #d5e0e6;padding:7px 10px;font-size:11px}.assignment-duration-readout strong{color:var(--navy-900);font:700 13px/1 Bahnschrift,sans-serif}.form-warning{color:#8a5e07;background:#fdf4e3;border:1px solid #e8c98a;align-items:center;gap:7px;padding:8px 10px;font-size:11px;display:flex}.out-of-window-block{background:#fdf4e3;border:1px solid #e8c98a;margin-bottom:14px;padding:11px}.out-of-window-block h3{color:#8a5e07;align-items:center;gap:6px;margin:0;font:650 13px/1.2 Microsoft YaHei,sans-serif;display:flex}.out-of-window-block p{color:#94743a;margin:5px 0 9px;font-size:11px}.assignment-bar.is-conflicted:after{content:"";pointer-events:none;background:repeating-linear-gradient(135deg,#0000 0 7px,#9600004d 7px 10px);position:absolute;inset:0}.assignment-handle{z-index:3;cursor:ew-resize;background:#ffffff73;border:1px solid #091d2966;width:7px;position:absolute;top:-1px;bottom:-1px}.assignment-handle.is-start{left:-1px}.assignment-handle.is-end{right:-1px}.assignment-grip{color:#0518238f;flex:none;display:flex}.assignment-label{z-index:2;text-overflow:ellipsis;white-space:nowrap;color:#102331;background:#ffffffd6;max-width:190px;padding:2px 4px;font-size:9px;font-weight:700;position:relative;overflow:hidden}.assignment-dates{z-index:2;color:#071822c7;white-space:nowrap;font:8px/1 Consolas,monospace;position:relative}.assignment-edit-button{z-index:4;color:#183447;cursor:pointer;background:#ffffffc2;border:0;place-items:center;width:16px;height:18px;display:grid;position:absolute;right:7px}.assignment-bar.is-compact{height:20px;padding-right:19px}.assignment-bar.is-compact .assignment-dates,.assignment-bar.is-compact .assignment-grip{display:none}.assignment-bar.is-compact .assignment-label{max-width:150px}.draft-assignment-row{border-top:1px dashed #dce5e9;height:38px}.draft-label-cell{color:#7c8e98;background:#f7fafb;align-items:center;gap:7px;height:38px;padding:4px 9px 4px 31px;display:flex}.draft-label-cell select{color:#536872;background:#fff;border:1px solid #d4dee3;flex:1;min-width:210px;height:28px;padding:0 7px;font-size:10px}.draft-assignment-row.is-armed .draft-label-cell{background:color-mix(in srgb, var(--project-color) 8%, #f7fafb);color:var(--project-color)}.draft-timeline{cursor:default}.draft-assignment-row.is-armed .draft-timeline{cursor:crosshair}.draft-active-zone{border:1px dashed var(--project-color);background:color-mix(in srgb, var(--project-color) 7%, transparent);height:21px;color:color-mix(in srgb, var(--project-color) 78%, #102331);pointer-events:none;justify-content:center;align-items:center;font-size:9px;display:flex;position:absolute;top:8px}.draft-range-preview{z-index:8;background:color-mix(in srgb, var(--project-color) 82%, white);border:1px solid var(--project-color);color:#102331;pointer-events:none;justify-content:center;align-items:center;height:26px;display:flex;position:absolute;top:6px;overflow:visible;box-shadow:0 2px 8px #0d23302e}.draft-range-preview span{white-space:nowrap;background:#ffffffe0;padding:2px 5px;font:9px/1 Consolas,monospace}.scroll-hint{z-index:30;color:#dce7ed;pointer-events:none;background:#122739d1;padding:3px 7px;font-size:9px;position:absolute;bottom:14px;right:10px}.people-overview-shell .gantt-scroll{max-height:calc(100vh - 300px)}.people-overview-row{border-top:1px solid #dce4e8}.people-overview-row.is-inactive{opacity:.58}.people-overview-label{background:#fbfcfc;align-items:center;gap:10px;padding:8px 11px;display:flex}.people-overview-identity{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.people-overview-identity strong{color:#203845;font-size:12px}.people-overview-identity small{color:var(--muted);font-size:10px}.mini-project-dots{gap:3px;margin-top:2px;display:flex}.mini-project-dots i{width:13px;height:3px}.assignment-count{color:#73858f;white-space:nowrap;font:9px/1 Consolas,monospace}.empty-timeline-note{color:#9aa7ae;align-items:center;gap:5px;font-size:10px;display:flex;position:absolute;top:18px;left:18px}.filtered-empty,.table-empty{color:var(--muted);text-align:center;background:#fbfcfc;padding:30px}.people-stat-strip{border:1px solid var(--grid-strong);background:var(--grid);grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:12px;display:grid}.people-stat-strip>div{color:#68808e;background:#ffffffe6;align-items:center;gap:11px;min-height:66px;padding:12px 16px;display:flex}.people-stat-strip span{color:var(--muted);flex-direction:column;gap:2px;font-size:10px;display:flex}.people-stat-strip strong{color:var(--navy-800);font:650 20px/1 Bahnschrift,sans-serif}.people-stat-strip .stat-warning{color:var(--warning);background:#fff3f2}.people-stat-strip .stat-warning strong{color:var(--warning)}.people-toolbar{margin-bottom:12px}.people-table-wrap{border:1px solid var(--grid-strong);box-shadow:var(--shadow);background:#fff;overflow:auto}.people-table{border-collapse:collapse;width:100%;min-width:850px}.people-table th{background:var(--navy-900);color:#cbd8e0;text-align:left;letter-spacing:.04em;height:38px;padding:0 13px;font-size:10px}.people-table td{color:#40525d;border-bottom:1px solid #e1e7ea;height:54px;padding:7px 13px;font-size:12px}.people-table tr:hover td{background:#f8fafb}.people-table tr.is-inactive{opacity:.58}.table-person{color:var(--navy-900);align-items:center;gap:10px;display:flex}.specialty-badge{color:#456171;background:#edf3f6;border:1px solid #cfdbe1;padding:4px 7px;font-size:10px;display:inline-flex}.status-pill{cursor:pointer;border-radius:13px;align-items:center;gap:5px;height:25px;padding:0 8px;font-size:10px;display:inline-flex}.status-pill.active{color:#167653;background:#eaf7f1;border:1px solid #acd7c3}.status-pill.inactive{color:#75838a;background:#f2f4f5;border:1px solid #d1d7da}.numeric-cell{color:var(--navy-800);font:650 14px/1 Bahnschrift,sans-serif}.conflict-pill{color:#b6423c;background:#fff0ef;align-items:center;gap:4px;padding:4px 7px;font-size:10px;display:inline-flex}.muted-cell{color:#a0abb1}.note-cell{max-width:300px;color:#667983!important}.table-actions{justify-content:flex-end;gap:5px;display:flex}.empty-state-panel{color:#78909b;background:#ffffffad;border:1px dashed #aab9c1;flex-direction:column;justify-content:center;align-items:center;min-height:310px;display:flex}.empty-state-panel h2{color:var(--navy-800);margin:12px 0 5px;font:650 20px/1.1 Bahnschrift,Microsoft YaHei,sans-serif}.empty-state-panel p{margin:0 0 16px;font-size:12px}.empty-avatar-stack{padding-left:26px;display:flex}.empty-avatar-stack span{color:#496778;background:#dce7ec;border:3px solid #eef3f5;border-radius:50%;place-items:center;width:48px;height:48px;margin-left:-13px;font-weight:700;display:grid}.modal-backdrop,.drawer-backdrop{z-index:300;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#07121b85;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-panel{background:#fff;border:1px solid #78909e;flex-direction:column;width:min(680px,100vw - 40px);max-height:calc(100vh - 40px);display:flex;box-shadow:0 28px 80px #04101859}.small-modal{width:min(520px,100vw - 40px)}.modal-header,.drawer-header{border-bottom:1px solid var(--grid);background:#f4f7f8;justify-content:space-between;align-items:center;min-height:68px;padding:14px 17px;display:flex}.modal-header h2,.drawer-header h2{color:var(--navy-900);margin:4px 0 0;font:650 20px/1.1 Bahnschrift,Microsoft YaHei,sans-serif}.modal-body{padding:18px;overflow-y:auto}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.single-column{grid-template-columns:1fr}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:#687d89;font-size:10px;font-weight:700}.field input,.field select,.field textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #c7d3d9;border-radius:2px;padding:8px 9px}.field input,.field select{height:38px}.field textarea{resize:vertical}.field-span-2{grid-column:1/-1}.field-row{gap:6px;display:flex}.field-row input{flex:1}.field-eye{color:#687d89;background:#fff;border:1px solid #c7d3d9;flex:none;place-items:center;width:38px;height:38px;display:grid}.field-eye:hover{color:var(--ink);border-color:#9cafb9}.field-hint{color:#167653;font-size:9px}.check-option{color:#40525d;cursor:pointer;align-items:flex-start;gap:7px;font-size:11px;line-height:1.5;display:flex}.check-option input{accent-color:var(--focus);margin-top:2px}.form-error{border-left:3px solid var(--warning);background:var(--warning-soft);color:#aa3f39;padding:9px 11px;font-size:11px}.assignment-project-readout,.ship-period-readout{color:#547080;background:#f7f9fa;border:1px solid #d5dfe4;align-items:center;gap:10px;min-height:52px;padding:9px 11px;display:flex}.assignment-project-readout>div{flex-direction:column;gap:3px;display:flex}.assignment-project-readout span,.ship-period-readout span{color:var(--muted);font-size:9px}.assignment-project-readout strong,.ship-period-readout strong{color:#294557;font-size:11px}.project-dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block;box-shadow:0 0 0 2px #0f233014}.switch-row{background:#f7f9fa;border:1px solid #d6e0e4;align-items:flex-start;gap:9px;padding:10px;display:flex}.switch-row input{accent-color:var(--navy-800);margin-top:3px}.switch-row span{flex-direction:column;gap:3px;display:flex}.switch-row strong{color:#314d5d;font-size:11px}.switch-row small{color:var(--muted);font-size:9px}.color-field{grid-template-columns:45px 1fr 32px;gap:7px;display:grid}.color-field input[type=color]{padding:3px}.color-swatch{border:1px solid #bcc9d0;width:32px;height:38px}.modal-footer{border-top:1px solid var(--grid);background:#f8fafb;justify-content:space-between;align-items:center;gap:12px;min-height:62px;padding:12px 17px;display:flex}.modal-actions{gap:8px;margin-left:auto;display:flex}.modal-footer-hint{color:var(--muted);align-items:center;gap:6px;font-size:9px;display:flex}.sync-status{background:#f7f9fa;border:1px solid #d5dfe4;align-items:center;gap:10px;padding:11px 12px;display:flex}.sync-status>div{flex-direction:column;gap:3px;display:flex}.sync-status strong{color:#294557;font-size:11px}.sync-status small{color:var(--muted);font:9px/1.3 Consolas,Microsoft YaHei,monospace}.sync-dot{background:#c2ced5;border-radius:50%;flex:none;width:9px;height:9px;box-shadow:0 0 0 3px #0f23300f}.sync-dot.is-live{background:var(--success);box-shadow:0 0 0 3px #16845b29}.sync-link{color:var(--focus);align-items:center;gap:4px;margin-left:auto;font-size:10px;text-decoration:none;display:inline-flex}.sync-link:hover{text-decoration:underline}.sync-actions{flex-wrap:wrap;gap:8px;display:flex}.sync-note{color:#8a5e07;background:#fdf4e3;border:1px solid #e8c98a;align-items:flex-start;gap:8px;padding:10px 11px;display:flex}.sync-note>svg{flex:none;margin-top:1px}.sync-note strong{margin-bottom:5px;font-size:11px;display:block}.sync-note p{color:#94743a;margin:0 0 3px;font-size:10px;line-height:1.5}.sync-note p:last-child{margin-bottom:0}.sync-note code{background:#8a5e071f;padding:0 3px;font:10px/1 Consolas,monospace}.sync-section{border:1px solid var(--grid);background:#f8fafb;flex-direction:column;gap:8px;padding:11px 12px;display:flex}.sync-section h3{color:#294557;margin:0;font-size:11px}.sync-section p{color:var(--muted);margin:0;font-size:10px;line-height:1.55}.sync-section-meta{font:9px/1.3 Consolas,Microsoft YaHei,monospace}.sync-conflict{border:1px solid #dfaaa6;border-left:4px solid var(--warning);background:#fdf6f5;flex-direction:column;gap:9px;padding:11px 12px;display:flex}.sync-conflict>svg{color:var(--warning)}.sync-conflict strong{color:#7a3129;margin-bottom:3px;font-size:11px;display:block}.sync-conflict p{color:#95504a;margin:0;font-size:10px;line-height:1.5}.hr-preview{border:1px solid var(--grid);background:#fff;flex-direction:column;gap:9px;padding:10px 11px;display:flex}.hr-preview-summary{flex-wrap:wrap;gap:6px;display:flex}.hr-preview-summary b{color:var(--navy-800);background:#eef3f6;border:1px solid #d5e0e6;padding:3px 8px;font-size:10px}.hr-preview-list{color:#40525d;flex-direction:column;gap:5px;max-height:180px;margin:0;padding:0;font-size:11px;list-style:none;display:flex;overflow-y:auto}.hr-preview-list li.is-added{color:#167653}.hr-preview-list li.is-deactivated{color:#a73d38}.hr-preview-list small{color:var(--muted);margin-left:4px}.hr-id-tag{color:var(--muted);background:#eef3f6;border:1px solid #d5e0e6;margin-left:6px;padding:1px 5px;font:9px/1.4 Consolas,monospace;display:inline-block}.people-readonly-note{margin-top:14px}.startup-mask{z-index:500;-webkit-backdrop-filter:blur(6px);background:#e9f2f0b8;place-items:center;display:grid;position:fixed;inset:0}.startup-mask-card{background:#fffffff0;border:1px solid #ffffffb3;border-radius:14px;flex-direction:column;align-items:center;gap:10px;padding:26px 36px;display:flex;box-shadow:0 24px 48px -18px #073e3959}.startup-mask-card strong{color:#0b4f49;font-size:14px}.startup-mask-card small{text-align:center;max-width:320px;color:var(--ink-soft);font-size:11px;line-height:1.6}.startup-mask-card svg{color:#0f766e}.gist-format{border:1px solid var(--grid);color:#40525d;white-space:pre;background:#f4f7f9;margin:0;padding:9px 11px;font:10px/1.6 Consolas,monospace;overflow-x:auto}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.snapshot-body{flex-direction:column;gap:12px;display:flex}.snapshot-intro{border-left:3px solid var(--focus);color:#3d5a70;background:#eef4fa;margin:0;padding:9px 11px;font-size:11px;line-height:1.6}.snapshot-empty{color:#78909b;border:1px dashed #aab9c1;justify-content:center;align-items:center;gap:8px;min-height:110px;font-size:12px;display:flex}.snapshot-list{flex-direction:column;gap:7px;margin:0;padding:0;list-style:none;display:flex}.snapshot-list li{border:1px solid var(--grid);background:#f8fafb;justify-content:space-between;align-items:center;gap:10px;padding:9px 11px;display:flex}.snapshot-list strong{color:var(--navy-900);font-size:12px;display:block}.snapshot-list small{color:var(--muted);margin-top:2px;font:9px/1.3 Consolas,Microsoft YaHei,monospace;display:block}.snapshot-notice{border-left:3px solid var(--success);color:#167653;background:#eaf7f1;padding:8px 10px;font-size:11px}.roster-body{flex-direction:column;gap:12px;display:flex}.roster-controls{flex-wrap:wrap;gap:8px;display:flex}.roster-controls .compact-field input[type=date]{min-width:128px;height:30px;color:var(--ink);background:#fff;border:0;padding:0 8px;font-size:12px}.roster-results{flex-direction:column;gap:9px;display:flex}.roster-project{border:1px solid var(--grid);background:#f8fafb;padding:10px 11px}.roster-project-head{align-items:center;gap:7px;display:flex}.roster-project-head strong{color:var(--navy-900);font:650 12px/1.2 Microsoft YaHei,sans-serif}.roster-project-head em{color:var(--muted);margin-left:auto;font-size:10px;font-style:normal}.roster-person{color:#40525d;border-top:1px dashed #e1e7ea;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-top:7px;padding-top:7px;font-size:11px;display:flex}.roster-person>span{white-space:nowrap;font-weight:650}.roster-person>span i{color:var(--muted);margin-left:6px;font-size:10px;font-style:normal;font-weight:400}.roster-person>small{color:#5f7480;text-align:right;font:10px/1.5 Consolas,Microsoft YaHei,monospace}.roster-person>small b{color:var(--navy-800);background:#eef3f6;border:1px solid #d5e0e6;margin-left:8px;padding:1px 5px;font-weight:650}.roster-person.is-inactive{opacity:.55}.roster-empty{color:#78909b;border:1px dashed #aab9c1;justify-content:center;align-items:center;gap:8px;min-height:110px;font-size:12px;display:flex}.roster-totals{background:var(--navy-900);color:#d7e5ee;white-space:nowrap;align-self:flex-end;padding:4px 10px;font-size:10px}.drawer-backdrop{place-items:stretch end;padding:0}.conflict-drawer{background:#fff;flex-direction:column;width:min(430px,94vw);height:100%;display:flex;box-shadow:-18px 0 50px #04101840}.drawer-body{background:#edf2f4;flex:1;padding:14px;overflow-y:auto}.clean-state{text-align:center;color:#6f818a;flex-direction:column;justify-content:center;align-items:center;min-height:240px;display:flex}.clean-state-icon{width:48px;height:48px;color:var(--success);background:#dff2e8;border-radius:50%;place-items:center;margin-bottom:12px;font-size:24px;display:grid}.clean-state strong{color:#284655}.clean-state p{font-size:11px}.conflict-card{border:1px solid #dfaaa6;border-left:4px solid var(--warning);background:#fff;margin-bottom:10px;padding:13px}.conflict-card-title{color:var(--warning);align-items:center;gap:9px;display:flex}.conflict-card-title>div{flex-direction:column;display:flex}.conflict-card-title strong{color:#283f4d}.conflict-card-title span{color:var(--muted);font-size:10px}.conflict-overlap{color:#a73d38;background:#fff0ef;margin:9px 0;padding:6px 8px;font:10px/1 Consolas,Microsoft YaHei,monospace}.conflict-assignment{text-align:left;cursor:pointer;background:#f8fafb;border:1px solid #dbe3e7;grid-template-columns:10px 1fr 16px;align-items:center;gap:8px;width:100%;margin-top:5px;padding:8px;display:grid}.conflict-assignment:hover{background:#fff;border-color:#9cafb9}.conflict-assignment>span:nth-child(2){flex-direction:column;gap:2px;display:flex}.conflict-assignment strong{color:#294655;font-size:10px}.conflict-assignment small{color:var(--muted);font:9px/1 Consolas,monospace}.toast{z-index:500;background:var(--navy-900);color:#fff;align-items:center;gap:8px;padding:11px 14px;font-size:12px;animation:.18s ease-out toast-in;display:flex;position:fixed;bottom:22px;right:22px;box-shadow:0 12px 36px #05131c47}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media (width<=1120px){.topbar{gap:10px;padding:8px 12px}.brand-block{min-width:0}.main-navigation button{padding:5px 9px}.save-status{display:none}.page{padding-left:14px;padding-right:14px}.schedule-toolbar{flex-wrap:wrap}.toolbar-spacer{display:none}}@media (width<=860px){.app-shell{padding:8px 8px 0}.topbar{flex-wrap:wrap;gap:8px}.main-navigation{order:3;width:100%}.main-navigation button{flex:1;justify-content:center}.topbar-actions{margin-left:auto}.app-main{min-height:0}.page-heading{flex-direction:column;align-items:flex-start}.heading-metrics{align-self:stretch}.heading-metrics>div{flex:1;align-items:flex-start}.people-stat-strip{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.field-span-2{grid-column:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.project-multi-select{border:1px solid var(--grid);background:#fff;align-items:center;height:32px;display:flex;position:relative}.project-multi-label{color:var(--muted);border-right:1px solid var(--grid);padding:0 7px;font-size:10px}.project-multi-trigger{min-width:118px;max-width:230px;height:30px;color:var(--ink);cursor:pointer;background:#fff;border:0;justify-content:space-between;align-items:center;gap:12px;padding:0 8px;font-size:12px;display:flex}.project-multi-menu{z-index:120;border:1px solid var(--grid-strong);background:#fff;min-width:240px;max-height:330px;padding:6px;position:absolute;top:100%;left:0;overflow:auto;box-shadow:0 10px 30px #0f233029}.project-multi-actions{border-bottom:1px solid var(--grid);justify-content:flex-end;gap:10px;padding:5px 8px;display:flex}.project-multi-actions button{color:var(--navy-900);cursor:pointer;background:0 0;border:0;padding:3px 6px;font-size:11px}.project-multi-option{cursor:pointer;align-items:center;gap:8px;padding:7px 8px;font-size:12px;display:flex}.project-multi-option:hover{background:#f1f6f7}.project-multi-option input{accent-color:var(--navy-900);margin:0}.project-multi-option i{border-radius:50%;flex:none;width:9px;height:9px}.ship-simple-bar{z-index:3;background:var(--project-color);border-radius:2px;height:20px;position:absolute;top:12px}
