:root{--ink-900: #0f172a;--ink-700: #334155;--ink-600: #475569;--ink-500: #64748b;--ink-400: #94a3b8;--line-strong: #cbd5e1;--line: #e2e8f0;--line-faint: #f1f5f9;--surface: #ffffff;--surface-alt: #fafbfc;--blue-700: #1d4ed8;--blue-600: #2563eb;--blue-500: #3b82f6;--blue-100: #dbeafe;--blue-ghost: rgba(59,130,246,.25);--hist-bar: rgba(148,163,184,.7);--ok: #16a34a;--ok-strong: #15803d;--ok-bg: rgba(22,163,74,.1);--warn: #d97706;--warn-bg: rgba(217,119,6,.1);--bad: #dc2626;--bad-strong: #b91c1c;--bad-bg: rgba(220,38,38,.1);--band-current: #eef1f6;--band-vital: #e7edf7;--band-scope: #eef1f6;--warn-muted: #c79a5e;--bad-muted: #c98b8b;--cat-1: #5B86A6;--cat-2: #97AC73;--cat-3: #C47E6E;--cat-4: #D3A45D;--cat-5: #8A7AA4;--cat-6: #5E6A78;--fs-hero: clamp(28px, 3vw, 40px);--fs-xl: 20px;--fs-lg: 16px;--fs-md: 14px;--fs-sm: 12.5px;--fs-xs: 11px;--fs-2xs: 10px;--r-ctl: 4px;--r-card: 8px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--date-emph-weight: 600;--btn-height: 32px;--color-background: var(--surface-alt);--color-surface: var(--surface);--color-border: var(--line);--color-primary-text: var(--ink-700);--color-secondary-text: var(--ink-500);--color-accent: var(--blue-600);--color-accent-hover: var(--blue-700);--color-sev-normal: #60A5FA;--color-sev-watch: #F59E0B;--color-sev-critical: var(--bad);--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08)}.v4-tabular{font-variant-numeric:tabular-nums}.btn-primary-v4,.btn-secondary-v4,.btn-ghost-v4{display:inline-flex;align-items:center;justify-content:center;height:var(--btn-height);padding:0 var(--sp-4);font-size:var(--fs-sm);font-weight:600;border-radius:var(--r-ctl);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.btn-primary-v4{background:var(--blue-600);color:var(--surface);border:1px solid var(--blue-600)}.btn-primary-v4:hover{background:var(--blue-700);border-color:var(--blue-700)}.btn-secondary-v4{background:var(--surface);color:var(--ink-700);border:1px solid var(--line)}.btn-secondary-v4:hover{background:var(--line-faint);border-color:var(--line-strong)}.btn-ghost-v4{background:transparent;color:var(--ink-600);border:1px solid transparent}.btn-ghost-v4:hover{background:var(--line-faint);color:var(--ink-700)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--color-background);color:var(--color-primary-text);font-size:14px}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.login-page{min-height:100vh;background:#fff}.login-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 2rem;border-bottom:1px solid var(--line)}.login-center{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 80px)}.login-form{background:#fff;padding:2.5rem 2rem;border-radius:10px;border:1px solid var(--line);box-shadow:var(--shadow-md);width:100%;max-width:360px;display:flex;flex-direction:column;gap:.85rem}.login-form h2{text-align:center;font-size:1.3rem;font-weight:700;color:#2c3e50;margin-bottom:.25rem}.login-form input[type=text],.login-form input[type=password]{width:100%;padding:.7rem .9rem;border:1px solid var(--line-strong);border-radius:6px;font-size:.9rem;color:#2c3e50;outline:none;transition:border-color .2s}.login-form input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2563eb1f}.login-error{background:#fef2f2;color:#dc2626;padding:.5rem .75rem;border-radius:6px;font-size:.85rem;border:1px solid #fecaca}.btn-primary{width:100%;padding:.7rem;font-size:.95rem;font-weight:600;border:1px solid var(--color-accent);background:var(--color-accent);color:#fff;border-radius:6px;cursor:pointer;transition:background .15s}.btn-primary:hover{background:var(--color-accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.logo-text{font-size:1.1rem;font-weight:800;letter-spacing:2px;color:var(--color-primary-text)}.app-header{flex-shrink:0;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.6rem 1.25rem;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:.5rem}.header-right{display:flex;align-items:center;gap:1rem}.project-controls{display:flex;align-items:center;gap:.4rem}.label{font-size:.82rem;font-weight:500;color:var(--color-secondary-text);white-space:nowrap}.header-select{padding:.35rem .5rem;border:1px solid var(--line-strong);border-radius:4px;font-size:.85rem;color:#2c3e50;background:#fff;cursor:pointer;max-width:280px;outline:none}.header-select:focus{border-color:var(--color-accent)}.header-date{font-size:.85rem;font-weight:500;color:var(--color-primary-text);padding:.3rem .5rem;background:var(--line-faint);border-radius:4px}.header-date-input{padding:.3rem .4rem;border:1px solid var(--line-strong);border-radius:4px;font-size:.82rem;color:var(--color-primary-text);background:#fff;cursor:pointer;outline:none}.header-date-input:focus{border-color:var(--color-accent)}.header-plan-display{padding:.3rem .5rem;font-size:.82rem;color:var(--ink-500);background:var(--line-faint);border:1px solid var(--line);border-radius:4px}.header-error{color:var(--color-sev-critical);font-size:.8rem}.nav-button{padding:.35rem .75rem;font-size:.8rem;font-weight:500;border:1px solid var(--line-strong);background:#fff;color:var(--color-primary-text);border-radius:4px;cursor:pointer;transition:background .15s}.nav-button:hover{background:var(--line-faint)}.app-main{padding:.75rem 1.25rem;flex:1;min-height:0;display:flex;flex-direction:column}.spinner-overlay{display:flex;justify-content:center;align-items:center;padding:3rem 0}.spinner-box{text-align:center;color:var(--color-secondary-text)}.spinner-ring{width:40px;height:40px;margin:0 auto 1rem;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.v4-error{background:#fef2f2;color:#dc2626;padding:.75rem 1rem;border-radius:6px;margin-bottom:.75rem;border:1px solid #fecaca}.chart-area{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface-alt);position:relative}.chart-title{padding:.5rem .75rem 0;font-size:.9rem;font-weight:600;color:var(--color-primary-text)}.chart-canvas-wrapper{flex:1;min-height:0;position:relative;padding:0 var(--sp-2);background:var(--surface)}.chart-empty{padding:4rem;text-align:center;color:var(--color-secondary-text);font-size:.9rem}.promoted-gantt-bar{flex-shrink:0;height:44px;position:relative;border-top:1px solid var(--line);background:var(--surface-alt);overflow:hidden}.promoted-status-line{position:absolute;top:0;bottom:0;width:1px;background:var(--line-strong);z-index:3;pointer-events:none}.promoted-bar{position:absolute;pointer-events:none}.promoted-drag-handle{position:absolute;width:20px;min-height:20px;margin-left:-10px;cursor:ew-resize;z-index:5;border-radius:var(--r-ctl);background:var(--blue-ghost);border:1px solid var(--blue-500);transition:background .15s,transform .15s,box-shadow .15s;display:flex;align-items:center;justify-content:center}.promoted-drag-handle:hover{background:var(--blue-100);transform:scaleX(1.15);box-shadow:var(--shadow-sm)}.promoted-drag-grip{font-size:var(--fs-sm);line-height:1;color:var(--blue-600);pointer-events:none;-webkit-user-select:none;user-select:none}.promoted-drag-handle:hover .promoted-drag-grip{color:var(--blue-700)}.promoted-drag-hint{position:absolute;top:-22px;left:50%;transform:translate(-50%);font-size:.65rem;color:var(--ink-500);white-space:nowrap;pointer-events:none;opacity:1;transition:opacity .3s}.promoted-drag-handle:active .promoted-drag-hint,.promoted-start-handle{opacity:0}.promoted-gantt-bar:hover .promoted-start-handle,.promoted-start-handle:active{opacity:1}.promoted-start-handle[data-start-clamped=y],.promoted-drag-handle[data-finish-clamped=y]{opacity:1;border-color:var(--bad);box-shadow:0 0 0 2px var(--bad-bg)}.gantt-drag-handle[data-finish-clamped=y]{border-color:var(--bad);box-shadow:0 0 0 2px var(--bad-bg)}.chart-legend-toggle{position:absolute;bottom:56px;right:8px;width:24px;height:24px;border-radius:50%;background:var(--line-faint);border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;transition:background .15s}.chart-legend-toggle:hover{background:var(--line)}.chart-legend-toggle:hover .chart-legend-popover{display:flex}.chart-legend-popover{display:none;position:absolute;bottom:calc(100% + 6px);right:0;background:#2b3140f5;border-radius:6px;padding:8px 12px;flex-direction:column;gap:5px;box-shadow:0 4px 12px #0000002e;white-space:nowrap;z-index:20;font-size:11px;color:var(--line)}.legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.legend-bar{display:inline-block;width:16px;height:10px;border-radius:2px}.chart-loading-indicator{text-align:center;padding:.4rem;font-size:.8rem;color:var(--color-accent);background:#eff6ff}.v4-summary{border-left:1.5px solid var(--ink-400);border-right:1.5px solid var(--ink-400);border-bottom:1.5px solid var(--ink-400);background:#fff;padding:0;overflow-x:auto}.v4-summary-table{width:100%;border-collapse:collapse;font-size:.8rem}.v4-summary-table th,.v4-summary-table td{padding:.4rem .6rem;text-align:center;border-bottom:1px solid var(--line)}.v4-summary-section-row th{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-secondary-text);background:var(--surface-alt);padding:.3rem .5rem}.v4-summary-column-row th{font-size:.87rem;font-weight:600;color:var(--color-secondary-text);background:#fafafa;line-height:1.3;padding:.35rem .4rem}.v4-sub{font-weight:400;font-size:.75rem;color:var(--ink-400)}.v4-sep-right{border-right:2px solid var(--line-strong)!important}.v4-summary-table td{font-size:1rem;font-weight:700;color:var(--color-primary-text);font-family:SF Mono,Consolas,Courier New,monospace}.v4-muted{color:var(--ink-400)!important}.v4-table-container{margin-top:.75rem;overflow-x:auto}.v4-table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:6px;overflow:hidden;box-shadow:var(--shadow-sm)}.v4-table th,.v4-table td{padding:.5rem .75rem;text-align:center;white-space:nowrap}.v4-header-row .section-header{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:.45rem .75rem;border-bottom:1px solid var(--color-border)}.v4-header-row .core-section,.v4-column-headers .col-pct,.v4-row .col-pct,.v4-overall .col-pct,.v4-header-row .vital4-section,.v4-column-headers .col-impact,.v4-row .col-impact,.v4-overall .col-impact,.v4-header-row .float-section,.v4-column-headers .col-float-var,.v4-row .col-float-var,.v4-overall .col-float-var{border-right:1px solid var(--line-strong)}.core-section{background:var(--line-faint);color:var(--color-secondary-text)}.vital4-section{background:#eef2f7;color:var(--color-accent)}.carryover-section{background:#fefce8;color:#92400e}.v4-column-headers th{font-size:.9rem;font-weight:600;color:var(--color-secondary-text);background:#fafafa;border-bottom:2px solid var(--color-border);padding:.4rem .5rem;line-height:1.3}.col-description{text-align:left!important;min-width:180px}.col-pct{min-width:85px}.col-rate{min-width:95px}.col-bwi{min-width:100px}.col-impact,.col-cpm-float{min-width:90px}.col-float-var{min-width:85px}.col-carryover{min-width:120px}.v4-row{cursor:pointer;transition:background .1s;border-bottom:1px solid var(--line-faint)}.v4-row:hover{background:#f8fafc}.v4-row td{font-size:.95rem;font-weight:500;color:var(--color-primary-text);font-family:SF Mono,Consolas,Courier New,monospace}.v4-row .col-description{font-family:inherit;font-weight:500}.row-name{font-weight:600;color:var(--color-primary-text)}.row-unit{font-weight:400;color:var(--color-secondary-text);margin-left:.35rem;font-size:.85rem}.v4-overall{background:#f8fafc;border-bottom:2px solid var(--color-border)!important}.v4-overall td{font-weight:700;font-size:1rem}.v4-overall .row-name{font-weight:800}.v4-selected{background:#eff6ff!important;box-shadow:inset 3px 0 0 var(--color-accent)}.v4-empty{text-align:center!important;padding:2.5rem!important;color:var(--color-secondary-text)!important;font-family:inherit!important;font-style:italic}.bwi-critical{color:var(--color-sev-critical)!important;font-weight:700!important}.bwi-watch{color:var(--color-sev-watch)!important;font-weight:700!important}.bwi-elevated{color:#d97706!important;font-weight:600!important}.bwi-normal{color:#16a34a!important}.impact-critical{color:var(--color-sev-critical)!important;font-weight:700!important}.impact-watch{color:var(--color-sev-watch)!important;font-weight:600!important}.scenario-filter-bar{display:flex;justify-content:space-between;align-items:center;padding:.45rem .75rem;background:#fafafa;font-size:13px;font-weight:500;color:var(--ink-700);border-bottom:1px solid var(--line-strong);position:relative;margin-bottom:0}.cfb-toggle{cursor:pointer}.cfb-toggle:hover{color:var(--color-accent)}.cfb-ref{cursor:default;color:var(--ink-500)}.cfb-ref:hover{color:var(--ink-500)}.dropdown-panel{position:absolute;background:#fff;border:1px solid var(--line-strong);border-radius:6px;box-shadow:var(--shadow-md);padding:.75rem 1.25rem;z-index:150;top:100%;margin-top:4px;max-width:500px}.filter-panel{left:0}.scenario-panel{right:0;min-width:500px}.filter-section{display:flex;align-items:center;gap:.75rem;padding:.35rem 0}.filter-label{font-size:.82rem;font-weight:500;color:var(--ink-700);white-space:nowrap;min-width:110px}.filter-values{display:flex;flex-wrap:wrap;gap:4px}.filter-value-btn{padding:.25rem .5rem;font-size:.78rem;font-weight:500;border:1px solid var(--line-strong);background:#fff;color:var(--color-primary-text);border-radius:4px;cursor:pointer;transition:all .15s}.filter-value-btn:hover{background:#f0f9ff;border-color:var(--color-accent)}.filter-value-btn.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.scenario-group-buttons{display:flex;flex-wrap:wrap;gap:6px}.scenario-group-btn{display:flex;flex-direction:column;padding:.45rem .75rem;border:1px solid var(--line-strong);background:#fff;border-radius:6px;cursor:pointer;transition:all .15s;min-width:120px;text-align:left}.scenario-group-btn:hover{background:#f0f9ff;border-color:var(--color-accent)}.scenario-group-btn.active{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.sgb-name{font-size:.82rem;font-weight:600}.sgb-desc{font-size:.7rem;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.slider-bar{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--surface-alt);border:1px solid var(--line);border-radius:6px;margin-bottom:.5rem}.slider-label{font-size:.82rem;font-weight:600;color:var(--color-primary-text);white-space:nowrap;min-width:130px}.slider-track-wrap{flex:1}.what-if-slider{width:100%;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,#fefce8 var(--pct, 0%),var(--line) var(--pct, 0%));border-radius:3px;outline:none;cursor:pointer}.what-if-slider::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#ca8a04;border:2px solid white;box-shadow:0 1px 3px #0003;cursor:grab}.what-if-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#ca8a04;border:2px solid white;box-shadow:0 1px 3px #0003;cursor:grab}.slider-reset-btn{padding:.3rem .6rem;font-size:.75rem;font-weight:600;border:1px solid var(--line-strong);background:#fff;color:var(--color-primary-text);border-radius:4px;cursor:pointer;white-space:nowrap}.slider-reset-btn:hover{background:var(--line-faint)}.v4-clickable{cursor:pointer}.v4-clickable:hover{background:#fffbeb!important}.has-tooltip{cursor:help;text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--ink-400);text-underline-offset:3px}.compression-tag{font-size:.6rem;font-weight:700;color:var(--color-sev-watch);background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);border-radius:3px;padding:1px 5px;margin-left:6px;vertical-align:middle}.compression-badge{display:inline-block;font-size:.6rem;font-weight:700;color:var(--ink-500);background:#6b72801a;border:1px solid rgba(107,114,128,.25);border-radius:3px;padding:0 3px;margin-left:4px;vertical-align:middle;line-height:1.3}td.sev-critical{color:var(--color-sev-critical)!important}td.sev-watch{color:var(--color-sev-watch)!important}td.sev-normal{color:var(--color-sev-normal)!important}.v4-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffc;display:flex;align-items:center;justify-content:center;z-index:50}.v4-view{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--surface-alt);position:relative;overflow:hidden}.pct-summary-tooltip-cell{position:relative;cursor:help}.pct-value{text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--ink-400);text-underline-offset:3px}.pct-summary-tooltip{position:absolute;top:100%;left:0;margin-top:6px;background:#2b3140f5;color:#fff;border-radius:6px;padding:10px 14px;z-index:200;white-space:nowrap;font-size:14px;box-shadow:0 4px 12px #00000026;pointer-events:none}.pct-tooltip-cell{position:relative;cursor:help}.pct-tooltip{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:6px;background:#2b3140f5;color:#fff;border-radius:6px;padding:10px 14px;z-index:200;white-space:nowrap;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;box-shadow:0 4px 12px #00000026;pointer-events:none}.pct-tooltip.pct-tooltip-below,.pct-tooltip-below{bottom:auto;top:100%;margin-bottom:0;margin-top:6px}.pct-tooltip-row{display:flex;justify-content:space-between;gap:16px;padding:2px 0}.pct-tooltip-row span{color:#b0b7c3}.pct-tooltip-row strong{color:#fff;font-weight:600}.v4-max-trigger{display:inline-block;margin-left:6px;cursor:pointer;font-size:15px;opacity:.7;vertical-align:middle;transition:opacity .15s}.v4-max-trigger:hover{opacity:.85}.v4-max-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:199}.v4-max-popup{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:8px;z-index:200;background:#fff;border:1px solid var(--line-strong);border-radius:8px;padding:12px 16px;box-shadow:0 8px 24px #00000026;display:flex;flex-direction:column;gap:8px;white-space:nowrap}.v4-max-popup-row{display:flex;align-items:center;gap:8px}.v4-max-popup-row label{font-size:13px;font-weight:600;color:var(--ink-600);white-space:nowrap;min-width:110px}.v4-max-popup-row input{width:100px;padding:5px 8px;border:1px solid var(--line-strong);border-radius:4px;font-size:13px;text-align:right}.v4-max-popup-row input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.v4-max-popup-row button{padding:5px 14px;background:var(--ink-700);color:#fff;border:none;border-radius:4px;font-size:12px;font-weight:600;cursor:pointer}.v4-max-popup-row button:hover{background:var(--ink-700)}.v4-big-num{font-size:24px;font-weight:700}.v4-unit-label{font-size:15px;font-weight:400;color:var(--ink-500)}.v4-required-pace{color:#dc2626}.v4-table-container{overflow:visible}.pct-fixed-tooltip{position:fixed;background:#2b3140f5;color:#fff;border-radius:6px;padding:10px 14px;z-index:300;white-space:nowrap;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;box-shadow:0 4px 12px #00000026;pointer-events:none}.filter-section-block{margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--line-faint)}.filter-section-block:last-child{margin-bottom:0;border-bottom:none}.filter-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-secondary-text);padding:.25rem 0}.filter-value-list{max-height:210px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.filter-value-list::-webkit-scrollbar{width:5px}.filter-value-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}.filter-value-row{display:flex;align-items:center;padding:.35rem .5rem;cursor:pointer;border-radius:4px;transition:background .1s;gap:.75rem}.filter-value-row:hover{background:#f0f9ff}.filter-value-row.active{background:#eff6ff;font-weight:600}.fvr-name{flex:1;font-size:.82rem;font-weight:500;color:var(--color-primary-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:100px}.fvr-date{font-size:.78rem;font-weight:500;color:var(--color-secondary-text);font-family:SF Mono,Consolas,monospace;min-width:80px;text-align:right}.fvr-impact{font-size:.82rem;font-weight:700;color:var(--color-sev-critical);font-family:SF Mono,Consolas,monospace;min-width:50px;text-align:right}.filter-clear-row{margin-top:.5rem;padding:.5rem;text-align:center;font-size:.82rem;font-weight:500;color:var(--color-secondary-text);border:1px solid var(--line);border-radius:20px;cursor:pointer;transition:all .15s}.filter-clear-row:hover{background:#f8fafc;border-color:var(--color-accent);color:var(--color-accent)}.sgb-metrics{display:flex;gap:.5rem;margin-top:2px}.sgb-date{font-size:.72rem;font-weight:500;color:var(--color-secondary-text);font-family:SF Mono,Consolas,monospace}.sgb-impact{font-size:.75rem;font-weight:700;color:var(--color-sev-critical);font-family:SF Mono,Consolas,monospace}.scenario-group-btn.active .sgb-date{color:#ffffffbf}.scenario-group-btn.active .sgb-impact{color:#ffffffe6}.dropdown-panel.filter-panel{min-width:380px;max-width:500px}.scenario-group-list{display:flex;flex-direction:column;gap:0;min-width:580px}.scenario-row{display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;border-bottom:1px solid #eaedf2;transition:background .15s}.scenario-row:last-child{border-bottom:none}.scenario-row:hover{background:var(--line-faint)}.scenario-row.active{background:#2563eb;color:#fff}.scenario-row.active .sr-desc{color:#fffc}.scenario-row.active .sr-date{color:#ffffffe6}.scenario-row.active .sr-impact{color:#fbbf24!important}.sr-name{font-weight:700;font-size:15px;min-width:160px;flex-shrink:0}.sr-desc{flex:1;font-size:13px;color:var(--ink-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-date{font-size:13px;font-weight:500;min-width:80px;text-align:right;flex-shrink:0}.sr-impact{font-size:13px;font-weight:700;min-width:60px;text-align:right;flex-shrink:0;padding-right:2px}.dropdown-panel.scenario-panel{right:0;min-width:600px;overflow:visible}.v4-dashed-underline{text-decoration:underline;text-decoration-style:dotted;text-decoration-color:var(--ink-400);text-underline-offset:3px}.pct-tooltip-header{display:grid;grid-template-columns:120px 80px 80px 80px;gap:4px;font-size:11px;font-weight:700;color:var(--ink-400);text-transform:uppercase;letter-spacing:.5px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.15);margin-bottom:4px}.pct-tooltip-header~.pct-tooltip-row{display:grid;grid-template-columns:120px 80px 80px 80px;gap:4px;padding:2px 0}.pct-tooltip-header~.pct-tooltip-row span{text-align:right}.pct-tooltip-header~.pct-tooltip-row span:first-child{text-align:left}.pct-tooltip-header~.pct-tooltip-row strong{text-align:right}.pct-tooltip-pct-row{border-top:1px solid rgba(255,255,255,.15);margin-top:2px;padding-top:4px!important}.pct-fixed-tooltip .pct-tooltip-row:not(.pct-tooltip-header~.pct-tooltip-row),.pct-tooltip .pct-tooltip-row:not(.pct-tooltip-header~.pct-tooltip-row){display:flex;justify-content:space-between;gap:16px;padding:2px 0;min-width:220px}.v4-unit-label{color:var(--ink-600)}.v4-sub{color:var(--ink-500)}.sev-ahead,.impact-ahead{color:#2563eb}.v4-summary{overflow:visible}.v4-gear-wrapper{position:relative;display:inline-block}.v4-max-popup{position:absolute;z-index:9999;right:0;top:100%;min-width:320px}.mode-toggle-group{display:flex;gap:4px;align-items:center}.mode-toggle-group+.mode-toggle-group{margin-left:4px;padding-left:8px;border-left:1px solid var(--line)}.mode-toggle-spacer{flex:1;min-width:20px}.v4-scale-date-group{display:flex;align-items:center;gap:4px;margin-right:8px;flex-shrink:0}.v4-scale-date-label{font-size:12px;color:var(--ink-400);font-weight:500;white-space:nowrap}.v4-scale-date-picker{font-size:12px;padding:4px 8px;border:1px solid var(--line);border-radius:4px;color:var(--ink-600);background:var(--surface-alt);width:130px;outline:none}.v4-scale-date-picker:focus{border-color:#2563eb}.v4-scale-date-clear{background:none;border:none;color:var(--ink-400);font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.v4-scale-date-clear:hover{color:var(--ink-600)}.mode-toggle-bar{display:flex;gap:0;border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden;width:fit-content;flex-shrink:0}.mode-toggle-btn{height:var(--btn-height);padding:0 var(--sp-4);font-size:var(--fs-sm);font-weight:600;color:var(--ink-600);background:var(--surface);border:none;cursor:pointer;transition:background .15s,color .15s}.mode-toggle-btn:not(:last-child){border-right:1px solid var(--line)}.mode-toggle-btn:hover{background:var(--line-faint)}.mode-toggle-active{background:var(--blue-600)!important;color:var(--surface)!important}.mode-toggle-active:hover{background:var(--blue-700)!important}.mode-reset-btn{border:1px solid var(--line);border-radius:var(--r-ctl);height:var(--btn-height);padding:0 var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--ink-500);background:var(--surface)}.mode-reset-btn:hover{background:var(--line-faint);color:var(--ink-700)}.v4-pager{display:flex;gap:0;border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden;width:fit-content;flex-shrink:0}.v4-pager-btn{height:var(--btn-height);padding:0 var(--sp-4);font-size:var(--fs-sm);font-weight:600;color:var(--ink-600);background:var(--surface);border:none;cursor:pointer;transition:background .15s,color .15s}.v4-pager-btn:not(:last-child){border-right:1px solid var(--line)}.v4-pager-btn:hover{background:var(--line-faint)}.v4-pager-active{background:var(--blue-600);color:var(--surface)}.v4-pager-active:hover{background:var(--blue-700)}.gantt-wrapper{margin-top:0;background:var(--surface);font-size:var(--fs-md);border:1px solid var(--line);border-top:none;border-radius:0 0 var(--r-card) var(--r-card);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;flex:1;min-height:0}.gantt-scroll-body{overflow-y:auto;flex:1;min-height:0}.gantt-header{display:flex;flex-direction:column;z-index:20;background:var(--surface-alt);min-height:72px;position:sticky;top:0;flex-shrink:0}.gantt-header-row{display:flex;align-items:stretch}.gantt-header-row1,.gantt-header-row2{border-bottom:1px solid var(--line)}.gantt-cols-half{display:flex;align-items:stretch;flex-shrink:0;background:var(--surface-alt);border-right:1px solid var(--line)}.gantt-bars-half{flex:1;min-width:0;background:var(--surface-alt)}.gantt-group-label{display:flex;align-items:center;justify-content:center;font-size:var(--fs-md);font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:8px 10px;white-space:nowrap}.gantt-group-spacer{border-right:none}.gantt-group-ref{flex-shrink:0;color:transparent;background:transparent}.gantt-group-v4{flex:0 1 auto;color:#3b82f6;background:transparent;text-align:center}.gantt-group-v4-pair,.gantt-group-v4-span{display:flex;align-items:center;position:relative;flex-shrink:0}.gantt-group-v4-label{position:absolute;left:0;right:0;text-align:center;font-size:var(--fs-sm);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-600);pointer-events:none}.gantt-year-row{position:relative}.gantt-year-label{position:absolute;top:0;height:100%;display:flex;align-items:center;justify-content:center;font-size:var(--fs-md);font-weight:600;color:var(--ink-700)}.gantt-year-label:nth-child(2n){background:#00000005}.gantt-month-row{position:relative}.gantt-header .gantt-col{font-size:var(--fs-md);font-weight:700;color:var(--ink-900);text-transform:uppercase;letter-spacing:.3px;text-align:center;justify-content:center;line-height:1.2;padding:6px 10px 8px;white-space:normal;flex-direction:column}.gantt-header .gantt-col-swimlane{font-size:var(--fs-md);font-weight:700;color:var(--ink-900);text-transform:uppercase;letter-spacing:.3px;text-align:left;align-items:flex-start}.gantt-header .gantt-col-name{text-align:left;align-items:flex-start}.gantt-header .gantt-col-pctc,.gantt-header .gantt-col-pace,.gantt-header .gantt-col-pace-v4,.gantt-header .gantt-col-start,.gantt-header .gantt-col-var,.gantt-header .gantt-col-co{text-align:right;align-items:flex-end}.gantt-header .gantt-col-bwi{text-align:center;align-items:center}.gantt-header .gantt-col-subswimlane{font-size:10px;color:var(--ink-400);font-weight:500;text-transform:none;letter-spacing:0}.gantt-col-sub{font-weight:500;font-size:10px;color:var(--ink-600);text-transform:none;letter-spacing:0}.gantt-col-sub-grey{font-weight:400;font-size:10px;color:var(--ink-500);text-transform:none;letter-spacing:0}.gantt-bars-header{flex:1;position:relative;min-width:220px;min-height:36px}.gantt-tick-label{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:var(--fs-sm);font-weight:400;color:var(--ink-400);white-space:nowrap}.gantt-has-tooltip{cursor:help;position:relative}.gantt-row{display:flex;min-height:clamp(30px,1.64vw,42px);align-items:stretch;cursor:pointer;transition:background .1s;gap:0;background:transparent}.gantt-row .gantt-cols{background:var(--surface);border-left:none;border-right:1px solid var(--line)}.gantt-row .gantt-bars-area{background:var(--surface);border-left:none;border-right:none;border-bottom-color:var(--sl-sep-color, var(--line-faint))}.gantt-row:last-child .gantt-cols{border-bottom:.5px solid var(--line);border-radius:0}.gantt-row:last-child .gantt-bars-area{border-bottom:.5px solid var(--line);border-radius:0}.gantt-row:hover>.gantt-cols,.gantt-row:hover>.gantt-bars-area{background:#2563eb05}.gantt-row-selected>.gantt-cols>.gantt-col:not(.gantt-sidebar){background:var(--sl-select-bg, var(--blue-ghost))!important}.gantt-row-selected>.gantt-bars-area{background:var(--sl-select-bg, var(--blue-ghost))!important}.gantt-row-selected>.gantt-cols>.gantt-col-pctc,.gantt-row-selected>.gantt-cols>.gantt-col-pace,.gantt-row-selected>.gantt-cols>.gantt-col-pace-v4{color:var(--ink-900);font-weight:700}.gantt-row-selected>.gantt-cols>.gantt-col-start,.gantt-row-selected>.gantt-cols>.gantt-col-var,.gantt-row-selected>.gantt-cols>.gantt-col-co>span,.gantt-row-selected>.gantt-cols>.gantt-col-bwi .gantt-bwi-badge{font-weight:800!important}.gantt-row-overall{min-height:clamp(33px,1.88vw,47px);font-weight:600;font-size:clamp(13px,.7vw,17px)}.gantt-row-overall .gantt-sidebar{border-left:none}.gantt-row-overall>.gantt-cols{border-bottom:.5px solid var(--line-strong)}.gantt-row-overall>.gantt-bars-area{border-bottom:.5px solid var(--line-strong)}.gantt-row-sl{min-height:clamp(33px,1.88vw,47px);margin-top:8px;font-weight:600;font-size:clamp(13px,.7vw,17px)}.gantt-row-sl>.gantt-cols{border-bottom:.5px solid var(--line-strong)}.gantt-row-sl .gantt-sidebar{border-left:none}.gantt-row-ssl{min-height:clamp(30px,1.7vw,42px);margin-top:6px;font-weight:500}.gantt-row-parent{min-height:clamp(28px,1.52vw,39px)}.gantt-row-parent>.gantt-cols,.gantt-row-parent>.gantt-bars-area{background:var(--surface);border-bottom:.5px solid var(--line-faint)}.gantt-row-parent .gantt-col-name{font-weight:600}.gantt-row-child{min-height:clamp(26px,1.41vw,36px);font-weight:400;font-size:clamp(12px,.62vw,16px)}.gantt-cols{display:flex;flex-shrink:0;width:auto;border-bottom:none;border-right:1px solid var(--line);position:relative;overflow:hidden;font-size:clamp(16px,.94vw,24px)}.gantt-row .gantt-cols:after{content:"";position:absolute;bottom:0;left:3px;right:0;height:1px;background:var(--sl-sep-color, var(--line-faint));z-index:1;pointer-events:none}.gantt-row-overall .gantt-cols:after,.gantt-row-sl .gantt-cols:after,.gantt-row:last-child .gantt-cols:after{background:var(--line)}.gantt-col{display:flex;align-items:center;padding:0 clamp(8px,.78vw,20px);border-right:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.gantt-col-swimlane{width:clamp(130px,7.81vw,200px);min-width:clamp(110px,7.81vw,200px);flex-shrink:0;color:var(--ink-600);font-weight:500;font-size:13px;text-align:left;justify-content:flex-start}.gantt-sidebar{display:flex;align-items:center;padding:0 6px 0 10px!important;overflow:hidden}.gantt-sidebar-text{color:inherit;font-size:clamp(13px,.66vw,16px);font-weight:600;text-transform:none;letter-spacing:normal;white-space:normal;word-break:break-word;line-height:1.15;text-align:left;padding:2px;overflow:hidden;max-height:100%}.gantt-sidebar-text-h{color:var(--ink-600);font-size:13px;font-weight:500;text-transform:none;letter-spacing:normal;line-height:1.15;text-align:left}.gantt-col-subswimlane{display:none}.gantt-col-name{width:clamp(180px,11vw,280px);min-width:clamp(140px,7.81vw,200px);max-width:320px;flex-shrink:1;flex-grow:0;font-weight:500;color:#111827;gap:0;font-size:clamp(12px,.62vw,16px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:4px 12px}.gantt-row-overall .gantt-col-name{font-size:clamp(13px,.66vw,17px);font-weight:600}.gantt-row-sl .gantt-col-name{font-size:clamp(13px,.7vw,16px);font-weight:600}.gantt-row-ssl .gantt-col-name{font-size:clamp(12px,.62vw,15px);font-weight:500}.gantt-name-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-break:break-word}.gantt-name-unit{color:var(--ink-400);font-weight:400;font-style:italic;font-size:12px;flex-shrink:0}.gantt-sep-dark,.gantt-sep-light{width:0;min-width:0;flex-shrink:0;border-right:none}.gantt-col-num{display:none}.gantt-col-pct{width:50px;min-width:0;justify-content:flex-end;font-variant-numeric:tabular-nums;color:var(--ink-700);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right;font-size:14px}.gantt-col-bwi{width:clamp(65px,3.5vw,90px);min-width:clamp(65px,3.5vw,90px);display:flex;align-items:center;justify-content:center;padding:0 10px;flex-shrink:0}.gantt-bwi-badge{display:inline-block;padding:0;border-radius:0;background:none;font-weight:600;font-size:clamp(16px,.94vw,22px);font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap}.gantt-col-start,.gantt-col-var{width:clamp(70px,3.9vw,100px);min-width:clamp(70px,3.9vw,100px);display:flex;align-items:center;justify-content:flex-end;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15;padding:0 clamp(12px,.78vw,18px);border-left:none;border-right:none;font-variant-numeric:tabular-nums;font-size:clamp(18px,1.02vw,26px);color:var(--ink-700)}.gantt-col-co{width:clamp(100px,6vw,150px);min-width:clamp(85px,5.5vw,130px);display:flex;align-items:center;justify-content:flex-end;padding:0 clamp(12px,.78vw,18px);flex-shrink:0;border-left:none;border-right:none;font-size:clamp(16px,.94vw,24px);font-variant-numeric:tabular-nums;white-space:nowrap}.gantt-col-pctc{width:clamp(70px,3.91vw,100px);min-width:clamp(60px,3.52vw,90px);flex-shrink:0;justify-content:flex-end;text-align:right;font-variant-numeric:tabular-nums;font-size:clamp(16px,.94vw,24px);padding:0 clamp(12px,.78vw,18px);color:var(--ink-500);background:transparent}.gantt-col-pace{width:clamp(100px,6vw,150px);min-width:clamp(85px,5.5vw,130px);flex-shrink:0;justify-content:flex-end;text-align:right;font-variant-numeric:tabular-nums;font-size:clamp(16px,.94vw,24px);padding:0 clamp(12px,.78vw,18px);color:var(--ink-500);background:transparent}.gantt-col-pace-v4{width:clamp(100px,6vw,150px);min-width:clamp(85px,5.5vw,130px);flex-shrink:0;justify-content:flex-end;text-align:right;font-variant-numeric:tabular-nums;font-size:clamp(16px,.94vw,24px);padding:0 clamp(12px,.78vw,18px)}.gantt-indent-parent,.gantt-disc-parent{font-weight:700!important;padding-left:6px!important}.gantt-indent-child,.gantt-disc-child{padding-left:36px!important;font-weight:400!important;font-style:italic!important;font-size:15px!important;color:var(--ink-600)!important}.gantt-row-overall .gantt-col-start,.gantt-row-overall .gantt-col-var{font-size:clamp(16px,.94vw,24px);font-weight:700}.gantt-row-sl .gantt-col-start,.gantt-row-sl .gantt-col-var{font-size:clamp(16px,.94vw,24px);font-weight:600}.gantt-row-ssl .gantt-col-start,.gantt-row-ssl .gantt-col-var{font-size:clamp(15px,.86vw,22px);font-weight:500}.gantt-row-parent .gantt-col-start,.gantt-row-parent .gantt-col-var{font-size:clamp(14px,.86vw,22px)}.gantt-row-child .gantt-col-start,.gantt-row-child .gantt-col-var{font-size:clamp(13px,.78vw,20px)}.gantt-disc-context{font-style:italic;color:var(--ink-400);font-weight:400}.gantt-bars-area{flex:1;position:relative;min-width:220px;border-bottom:.5px solid var(--line-faint);overflow:hidden;padding-right:var(--sp-1);background:var(--surface);transition:background .2s ease}.gantt-bar{position:absolute;border-radius:3px}.gantt-bar-overflow{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:9px;font-weight:700;color:var(--ink-500);background:#ffffffd9;padding:0 3px;border-radius:2px;white-space:nowrap;pointer-events:none;z-index:5}.gantt-bar-grey{top:16px;height:20px;background:var(--hist-bar);opacity:.9;z-index:2;border-radius:3px 0 0 3px;transition:width .2s ease,left .2s ease;box-sizing:border-box}.gantt-bar-blue{top:16px;height:20px;background:var(--blue-600);opacity:.9;z-index:2;border-radius:0 3px 3px 0;transition:width .2s ease,left .2s ease}.gantt-bar-red,.gantt-bar-green{top:16px;height:20px;background:var(--blue-100);border:1px solid var(--blue-500);opacity:.95;z-index:2;border-radius:0 3px 3px 0;transition:width .2s ease,left .2s ease}.gantt-bar-forecast{top:38px;height:5px;background:var(--ink-400);opacity:.7;z-index:1}.gantt-global-status-line{position:absolute;top:0;height:100%;width:2px;background:var(--ink-500);opacity:.4;z-index:5;pointer-events:none}.gantt-finish-line{position:absolute;top:0;height:100%;width:0;border-left:1px dashed var(--ink-400);opacity:.4;z-index:4;pointer-events:none}.gantt-finish-line-whatif{border-left-color:var(--ink-500);opacity:.3}.gantt-bar-date{position:absolute;top:-2px;transform:translate(calc(-100% - 12px));font-size:9px;font-weight:600;color:var(--ink-500);white-space:nowrap;pointer-events:none;z-index:4}.gantt-bar-date-whatif{top:auto;bottom:-1px;color:var(--ink-400);font-weight:500}.gantt-tick-line{position:absolute;top:0;bottom:0;width:1px;background:var(--line)}.gantt-drag-handle{position:absolute;top:12px;width:10px;height:28px;margin-left:-5px;cursor:ew-resize;z-index:10;border-radius:var(--r-ctl);background:var(--blue-ghost);border:1px solid var(--blue-500);transition:background .15s,transform .15s,box-shadow .15s;touch-action:none}.gantt-drag-handle:hover,.gantt-drag-handle:active{background:var(--blue-100);border-color:var(--blue-600);box-shadow:var(--shadow-sm);transform:scaleX(1.1)}.gantt-drag-handle-start{margin-left:-5px}.gantt-drag-handle-start[data-start-clamped=y]{border-color:var(--bad);box-shadow:0 0 0 2px var(--bad-bg)}.gantt-bar-date-start{transform:translate(4px);color:var(--ink-600);font-weight:600}.gantt-global-status-line[data-pulse=y]{background:var(--bad);width:2px;animation:gantt-status-pulse .9s ease-in-out infinite}@keyframes gantt-status-pulse{0%,to{opacity:1}50%{opacity:.35}}.gantt-start-clamp-hint{position:absolute;top:var(--sp-2);z-index:30;padding:var(--sp-1) var(--sp-2);background:var(--surface);border:1px solid var(--bad);border-radius:var(--r-ctl);color:var(--bad-strong);font-size:var(--fs-xs);font-weight:600;white-space:nowrap;box-shadow:var(--shadow-md);pointer-events:none}.gantt-overflow-badge:hover{background:#b91c1c1a!important;border-color:#b91c1c66!important}.gantt-row-sl>.gantt-bars-area{border-bottom:.5px solid var(--line-strong)}.gantt-row-ssl>.gantt-bars-area{border-bottom-color:var(--sl-sep-color, var(--line-faint))}.gantt-ot-name-aligned{padding-left:4px!important}.gantt-ot-disc.gantt-row-parent>.gantt-cols,.gantt-ot-disc.gantt-row-parent>.gantt-bars-area,.gantt-ot-disc.gantt-row-child>.gantt-cols,.gantt-ot-disc.gantt-row-child>.gantt-bars-area{background:var(--surface)}.gantt-sidebar-sl{min-height:auto}.gantt-sidebar-ssl .gantt-sidebar-text-ssl{font-size:11px;font-weight:600;letter-spacing:normal;color:inherit}.gantt-row-ssl .gantt-sidebar-text,.gantt-row-ssl .gantt-sidebar-text-ssl{padding-left:10px;font-size:12px;color:inherit}.gantt-row-ssl .gantt-ot-name-aligned{padding-left:22px!important}.gantt-ot-disc .gantt-ot-name-aligned{padding-left:34px!important}.gantt-ot-disc.gantt-row-child .gantt-ot-name-aligned{padding-left:64px!important}.gantt-row-child .gantt-ot-name-aligned .gantt-name-text,.gantt-row-child .gantt-ot-name-aligned .gantt-name-unit{font-style:italic}.gantt-row-sl,.gantt-row-overall{margin-top:var(--sp-2)}.gantt-row-sl>.gantt-cols>.gantt-col-swimlane,.gantt-row-overall>.gantt-cols>.gantt-col-swimlane{border-top-left-radius:var(--r-card)}.gantt-row-sl>.gantt-bars-area,.gantt-row-overall>.gantt-bars-area{border-top-right-radius:var(--r-card)}.gantt-row{min-height:52px;transition:background .15s ease}.gantt-row:hover>.gantt-cols,.gantt-row:hover>.gantt-bars-area{background-color:var(--line-faint)}.gantt-expand-chevron{cursor:pointer;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-ctl);-webkit-user-select:none;user-select:none;font-size:var(--fs-lg);line-height:1;display:inline-flex;align-items:center;justify-content:center;min-width:var(--btn-height);min-height:var(--btn-height);flex-shrink:0;color:var(--ink-400);transition:transform .2s ease,color .15s ease}.gantt-expand-chevron:hover{background:#00000014}.gantt-expand-chevron.expanded{color:var(--ink-700)}.gantt-expand-spacer{display:inline-flex;min-width:24px;min-height:24px;padding:4px 8px;flex-shrink:0}.gantt-ssl-parent-label{font-style:italic;color:var(--ink-400)}.gantt-expand-panel{cursor:default;animation:gantt-expand-in .25s ease;background:var(--surface-alt);border-bottom:none}.gantt-expand-separator{flex-shrink:0;height:0;border-top:2px solid var(--ink-600);margin:0;z-index:3}.gantt-expand-separator-top{margin-bottom:0}.gantt-expand-separator-bottom{margin-top:0}@keyframes gantt-expand-in{0%{opacity:0;max-height:0}to{opacity:1;max-height:560px}}.gantt-expand-panel-inner{--expand-chart-h: 292px;display:flex;flex-direction:row;align-items:stretch;position:relative;border-bottom:1px solid var(--line)}.gantt-expand-left{flex-shrink:0;display:flex;flex-direction:column;align-items:stretch;position:relative;border-right:1px solid var(--line)}.gantt-expand-cols-spacer{flex:0 0 0;height:0;min-height:0;overflow:hidden;border-right:none;border-bottom:none;pointer-events:none}.gantt-expand-cols-spacer:after{display:none}.gantt-expand-cols-spacer>.gantt-col,.gantt-expand-cols-spacer>.gantt-sep-dark,.gantt-expand-cols-spacer>.gantt-sep-light{height:0;min-height:0;padding:0;border:none;overflow:hidden}.gantt-expand-scope-area{flex:1 1 auto;display:flex;align-items:center;min-height:0}.gantt-expand-chart-zone{position:relative;background:var(--surface-alt);padding:0;border-bottom:none;overflow:visible;align-self:stretch;cursor:pointer;min-height:var(--expand-chart-h);flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-end}.gantt-expand-bars{position:relative;width:100%;padding:0 0 var(--sp-1);z-index:1}.gantt-expand-bars canvas{display:block;width:100%!important;height:100%!important}.gantt-expand-band-gap{flex-shrink:0;height:var(--sp-3)}.gantt-expand-band-wrap{width:100%;z-index:15;background:transparent;padding:0;box-shadow:none;pointer-events:auto;display:flex;align-items:center}.gantt-expand-band-wrap .gantt-expand-band-inner{width:100%;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);align-items:stretch}.gantt-expand-zone.v4-zone{min-height:0!important;height:auto!important;box-shadow:none}.gantt-expand-zone.v4-zone-current{flex:0 0 150px!important;grid-template-rows:22px 40px 40px 48px!important}.gantt-expand-zone.v4-zone-current .v4-zone-head{height:22px;font-size:var(--fs-xs)}.gantt-expand-zone .v4-stat-pct{padding-top:var(--sp-1);gap:var(--sp-1)}.gantt-expand-zone .v4-stat-pace{padding-bottom:var(--sp-1);gap:0}.gantt-expand-zone .v4-stat-label{font-size:var(--fs-sm)}.gantt-expand-zone .v4-stat-value{font-size:clamp(18px,1.2vw,24px)}.gantt-expand-zone .v4-pill{font-size:var(--fs-xs);padding:1px 5px}.gantt-expand-zone.v4-zone-vital{flex:1 1 auto!important;min-width:0;grid-template-columns:[lbl] 72px [m1] minmax(0,1fr) [m2] minmax(0,1fr) [m3] minmax(0,1fr) [m4] minmax(0,1fr);grid-template-rows:22px 38px 35px 35px!important}.gantt-expand-zone.v4-zone-vital .v4-zone-head{height:22px;font-size:var(--fs-xs)}.gantt-expand-zone .v4-vcolh{padding:0 var(--sp-2) var(--sp-1)}.gantt-expand-zone .v4-vcoltitle{font-size:var(--fs-xs)}.gantt-expand-zone .v4-vcolsub{font-size:var(--fs-2xs)}.gantt-expand-zone .v4-vlbl{font-size:var(--fs-sm);padding-left:var(--sp-2)}.gantt-expand-zone .v4-vcell{font-size:clamp(16px,1.05vw,22px);padding:0 var(--sp-2)}.gantt-expand-zone.v4-zone-scope{flex:0 0 170px!important}.gantt-expand-zone.v4-zone-scope .v4-zone-head{height:22px;font-size:var(--fs-xs)}.gantt-expand-zone .v4-stbl-wrap{padding:var(--sp-1) var(--sp-2)}.gantt-expand-zone .v4-stbl{font-size:var(--fs-xl)}.gantt-expand-zone .v4-stbl th,.gantt-expand-zone .v4-stbl td{padding:var(--sp-1) var(--sp-3) var(--sp-1) var(--sp-2)}.gantt-expand-zone .v4-stbl thead th{font-size:var(--fs-sm)}.gantt-expand-zone.v4-zone-scope-wide{flex:1 1 auto!important;border:2px solid var(--ink-400);border-radius:var(--r-card);overflow:hidden}.gantt-expand-band-inner .v4-band-row2{gap:var(--sp-1)}.v4-header{flex:0 0 auto;display:flex;flex-direction:column;position:relative;z-index:30;background:var(--surface)}.v4-main-pane{flex:1 1 auto;min-height:0;position:relative;display:flex;flex-direction:column}.v4-pages{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column}.v4-page{height:100%;display:flex;flex-direction:column;min-height:0;overflow:hidden}.v4-page-chart{background:var(--surface-alt)}.v4-page-gantt{background:var(--line-faint)}.v4-chart-row{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;z-index:15;background:var(--surface-alt);overflow:hidden}.v4-band{background:var(--surface);padding:var(--sp-8);border-top:2px solid var(--ink-700)}.v4-band-inner{display:flex;gap:var(--sp-6);align-items:flex-start;box-shadow:var(--shadow-sm);border-radius:var(--r-card);padding:var(--sp-2);background:var(--surface)}.v4-band-placeholder{padding:var(--sp-8);text-align:center;color:var(--ink-400);font-size:var(--fs-sm)}.v4-pill{font-size:var(--fs-xs);font-weight:600;padding:3px 9px;border-radius:var(--r-ctl);white-space:nowrap}.v4-pill-bad{color:var(--bad-strong);background:var(--bad-bg)}.v4-pill-ok{color:var(--ok-strong);background:var(--ok-bg)}.v4-pill-neutral{color:var(--ink-500);background:var(--line-faint)}.v4-zone{border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;display:grid;min-height:260px;box-shadow:var(--shadow-sm)}.v4-zone-head{font-size:var(--fs-lg);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-700);display:flex;align-items:center;justify-content:center;height:34px;border-bottom:1px solid var(--line)}.v4-zone-current{flex:0 0 200px;grid-template-rows:34px 76px 71px 71px}.v4-zone-current .v4-zone-head{grid-row:1;background:var(--band-current)}.v4-cur-pct{grid-row:2;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:0 var(--sp-3);border-bottom:1px solid var(--line)}.v4-cur-pace{grid-row:3 / 5;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:0 var(--sp-3)}.v4-cur-lbl{display:flex;flex-direction:column;flex:0 1 70px;min-width:0;text-align:left;font-size:var(--fs-sm);font-weight:600;letter-spacing:.01em;color:var(--ink-500);line-height:1.18}.v4-cur-paceunit{font-weight:500;color:var(--ink-400);font-size:var(--fs-2xs);margin-top:1px}.v4-zone-current .v4-stat-value{flex:0 0 auto}.v4-stat{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);text-align:center;padding:0 var(--sp-3)}.v4-stat-pct{grid-row:3;justify-content:center}.v4-stat-pace{grid-row:4;border-top:1px solid var(--line-faint);gap:var(--sp-1);justify-content:center}.v4-stat-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-500);white-space:nowrap}.v4-stat-value{font-size:var(--fs-hero);font-weight:500;line-height:1;color:var(--ink-900);font-variant-numeric:tabular-nums}.v4-pctsign{font-size:.55em;color:var(--ink-400);margin-left:2px}.v4-stat-sub{font-size:var(--fs-xs);color:var(--ink-400)}.v4-zone-vital{flex:1 1 auto;min-width:0;grid-template-columns:[lbl] 134px [m1] minmax(0,1fr) [m2] minmax(0,1fr) [m3] minmax(0,1fr) [m4] minmax(0,1fr);grid-template-rows:34px 76px 71px 71px}.v4-zone-vital .v4-zone-head{grid-row:1;grid-column:1 / -1;background:var(--band-vital)}.v4-vcolh{grid-row:2;text-align:right;padding:0 var(--sp-4) var(--sp-3);border-bottom:1px solid var(--line);align-self:end;line-height:1.2}.v4-vcolh.vm1{grid-column:m1}.v4-vcolh.vm2{grid-column:m2}.v4-vcolh.vm3{grid-column:m3}.v4-vcolh.vm4{grid-column:m4}.v4-vcoltitle{display:block;font-size:var(--fs-md);font-weight:700;color:var(--ink-900)}.v4-vcolsub{display:block;font-size:var(--fs-xs);font-weight:500;color:var(--ink-400)}.v4-vcorner{grid-row:2;grid-column:lbl;border-bottom:1px solid var(--line)}.v4-vlbl{grid-column:lbl;display:flex;align-items:center;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;padding-left:var(--sp-4)}.v4-vlbl.vplan{grid-row:3;color:var(--ink-500)}.v4-vlbl.vwhatif{grid-row:4;color:var(--ink-700)}.v4-vsub{font-weight:500;color:var(--ink-400);margin-left:5px}.v4-vcell{display:flex;align-items:center;justify-content:flex-end;padding:0 var(--sp-4);font-size:var(--fs-hero);font-weight:500;border-left:1px solid var(--line-faint);font-variant-numeric:tabular-nums}.v4-vcell.vm1{grid-column:m1}.v4-vcell.vm2{grid-column:m2}.v4-vcell.vm3{grid-column:m3}.v4-vcell.vm4{grid-column:m4}.v4-vcell.vplan{grid-row:3;color:var(--ink-400)}.v4-vcell.vwhatif{grid-row:4;color:var(--ink-900);border-top:1px solid var(--line-faint)}.v4-crit-warn.vplan{color:var(--warn-muted)}.v4-crit-warn.vwhatif{color:var(--warn)}.v4-zone-scope{flex:0 0 372px;grid-template-rows:34px 1fr}.v4-zone-scope .v4-zone-head{grid-row:1;background:var(--band-scope)}.v4-stbl-wrap{grid-row:2;padding:var(--sp-3) var(--sp-4);display:flex;flex-direction:column;justify-content:center}.v4-stbl{border-collapse:collapse;font-size:var(--fs-md);width:100%;font-variant-numeric:tabular-nums}.v4-stbl th,.v4-stbl td{padding:var(--sp-2) 0 var(--sp-2) var(--sp-6);text-align:right;border-bottom:1px solid var(--line-faint)}.v4-stbl thead th{font-size:var(--fs-sm);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-600);border-bottom:1px solid var(--line)}.v4-stbl .v4-stbl-label{text-align:left;padding-left:0;padding-right:var(--sp-6);color:var(--ink-600);font-weight:500}.v4-stbl-cur{color:var(--ink-700);font-weight:600}.v4-stbl-plan{color:var(--ink-400)}.v4-stbl-var{color:var(--ink-500)}.v4-stbl-maxrow td{border-top:1px solid var(--line);border-bottom:none;padding-top:var(--sp-2)}.v4-stbl-var-warn{color:var(--warn);font-weight:600}.v4-stbl-var-bad{color:var(--bad-strong);font-weight:600}.v4-band-stacked{flex-direction:column;align-items:stretch;gap:var(--sp-3)}.v4-band-row2{display:flex;gap:var(--sp-6);align-items:stretch}.v4-zone-scope-wide{flex:1 1 auto;min-height:0;grid-template-rows:34px auto}.v4-zone-scope-wide .v4-stbl-wrap{padding:var(--sp-2) var(--sp-6);justify-content:center}.v4-stbl-t{width:100%}.v4-stbl-t th,.v4-stbl-t td{padding:var(--sp-2) var(--sp-4);text-align:right;white-space:nowrap}.v4-stbl-t tbody td{border-bottom:none}.v4-stbl-t .v4-stbl-label{text-align:left;padding-left:var(--sp-2);padding-right:var(--sp-6);width:92px}.v4-stbl-t .v4-stbl-planrow td{border-bottom:1px solid var(--line-strong)}.v4-stbl-t .v4-stbl-maxcol{border-left:1px solid var(--line);padding-left:var(--sp-6)}.v4-zone-vital-compact{min-height:0;grid-template-rows:34px 56px 50px 50px}.v4-zone-vital-compact .v4-vcolh{padding-bottom:var(--sp-2)}.v4-zone-vital-compact .v4-vcell{font-size:var(--fs-xl)}.v4-band-sxs{flex-direction:row;align-items:stretch;gap:0;padding:0;overflow:hidden}.v4-band-sxs>.v4-zone{border:none;border-radius:0;box-shadow:none;min-height:0}.v4-band-sxs>.v4-zone-current{flex:0 0 196px}.v4-band-sxs>.v4-zone-vital{flex:1 1 41%}.v4-band-sxs>.v4-zone-scope{flex:1 1 47%}.v4-band-sxs .v4-vcell{padding-left:var(--sp-3);padding-right:var(--sp-3)}.v4-band-sxs .v4-stbl-t th,.v4-band-sxs .v4-stbl-t td{padding-left:var(--sp-1);padding-right:var(--sp-1)}.v4-band-sxs .v4-stbl-t .v4-stbl-maxcol{padding-left:var(--sp-2)}.v4-band-sxs .v4-stbl-t .v4-stbl-label{width:64px;padding-right:var(--sp-2)}.v4-band-divider{height:1px;background:var(--line);flex:0 0 auto}.v4-band-sxs>.v4-band-divider{width:2px;height:auto;align-self:stretch;background:var(--line-strong)}.v4-band-inner.v4-band-sxs{border:2px solid var(--line-strong)}.v4-band-sxs .v4-stbl-t .v4-stbl-cur{font-size:calc(var(--fs-hero) * .8)}.v4-band-sxs .v4-stbl-t .v4-stbl-plan,.v4-band-sxs .v4-stbl-t .v4-stbl-var{font-size:var(--fs-xl)}.v4-band-sxs .v4-stbl-currow .v4-stbl-label{color:var(--ink-700);font-weight:700}.v4-band-sxs .v4-stat-value,.v4-band-sxs .v4-vcell.vwhatif{font-weight:700}.v4-band-sxs .v4-vcell.vplan{font-size:calc(var(--fs-hero) * .7);font-weight:400}.v4-band-sxs .v4-crit-warn.vplan{color:var(--ink-400)}.v4-band-sxs .v4-cur-pace{grid-row:4}.v4-band-sxs>.v4-zone-vital,.v4-band-sxs>.v4-zone-scope{min-width:0}.v4-stbl-wrap{overflow-x:auto}@media(max-width:1500px){:root{--fs-hero: clamp(20px, 2.3vw, 32px)}.v4-band{padding:var(--sp-3) var(--sp-4)}.v4-zone-current,.v4-zone-vital{grid-template-rows:30px 64px 58px 58px}.v4-zone{min-height:210px}.v4-zone-vital{grid-template-columns:[lbl] 106px [m1] minmax(0,1fr) [m2] minmax(0,1fr) [m3] minmax(0,1fr) [m4] minmax(0,1fr)}.v4-band-sxs>.v4-zone-current{flex:0 0 168px}.v4-vcoltitle{font-size:var(--fs-sm)}.v4-vcolsub{font-size:var(--fs-2xs)}.v4-vcolh{padding:0 var(--sp-2) var(--sp-2)}.v4-vcell{padding-left:var(--sp-2);padding-right:var(--sp-2)}.v4-stbl{font-size:var(--fs-sm)}.v4-stbl th,.v4-stbl td{padding-top:var(--sp-1);padding-bottom:var(--sp-1)}.v4-page-chart{overflow-y:auto}.v4-chart-row{min-height:300px}}.gantt-expand-ref-row{display:flex;align-items:center;height:30px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}.gantt-expand-ref-row .v4-ref-label{font-size:var(--fs-lg);font-weight:600;color:var(--ink-500);white-space:nowrap}.gantt-expand-ref-row .gantt-col-pace{overflow:visible}.gantt-expand-ref-row .v4-ref-num{color:var(--ink-400);font-weight:500}.gantt-expand-ref-row .gantt-col-bwi.v4-ref-num{font-size:clamp(16px,.94vw,24px)}.gantt-expand-ref-head{display:flex;align-items:flex-end;height:26px}.gantt-expand-ref-head .gantt-col{font-size:var(--fs-xs);font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.3px;line-height:1.1;flex-direction:column;justify-content:flex-end}.gantt-expand-ref-head .gantt-col-pace-v4,.gantt-expand-ref-head .gantt-col-start,.gantt-expand-ref-head .gantt-col-var,.gantt-expand-ref-head .gantt-col-co{text-align:right;align-items:flex-end}.gantt-expand-ref-head .gantt-col-bwi{text-align:center;align-items:center}.v4-scope-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:6px 12px;background:var(--surface-alt);border-bottom:1px solid var(--line);flex-shrink:0;min-height:42px;box-sizing:border-box}.v4-scope-item{display:flex;align-items:center;gap:3px;position:relative}.v4-scope-label{font-size:.78rem;font-weight:700;color:var(--ink-500);letter-spacing:.03em;white-space:nowrap}.v4-scope-select{font-size:var(--fs-sm);padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);width:190px;cursor:pointer;height:var(--btn-height);display:flex;align-items:center;justify-content:space-between;text-align:left}.v4-scope-select-disabled{background:var(--line-faint);color:var(--ink-400);cursor:default}.v4-scope-select-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.v4-scope-select-arrow{font-size:.65rem;color:var(--ink-400);margin-left:4px;flex-shrink:0}.v4-scope-menu{position:absolute;top:100%;left:24px;width:220px;max-height:300px;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);z-index:200;padding:4px 0}.v4-scope-menu-item{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;cursor:pointer;font-size:.84rem;color:var(--ink-700);transition:background .1s}.v4-scope-menu-item:hover{background:var(--line-faint)}.v4-scope-menu-active{background:var(--blue-100);font-weight:600}.v4-scope-menu-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v4-scope-menu-var{font-size:.78rem;font-weight:600;margin-left:8px;white-space:nowrap;font-variant-numeric:tabular-nums}.v4-scope-clear{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:50%;background:var(--line);color:var(--ink-500);font-size:.65rem;cursor:pointer;padding:0;line-height:1;flex-shrink:0;transition:background .12s}.v4-scope-clear:hover{background:var(--line-strong);color:var(--ink-700)}.v4-scope-reset{font-size:var(--fs-sm);font-weight:600;color:var(--ink-500);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-3);cursor:pointer;white-space:nowrap;height:var(--btn-height);transition:background .12s,color .12s}.v4-scope-reset:hover{background:var(--line-faint);color:var(--ink-700)}.v4-scope-spacer{flex:1}.v4-swimlane-btn{display:inline-flex;align-items:center;justify-content:center;height:var(--btn-height);padding:0 var(--sp-4);font-size:var(--fs-sm);font-weight:600;border-radius:var(--r-ctl);background:var(--blue-600);color:var(--surface);border:1px solid var(--blue-600);cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .15s,border-color .15s}.v4-swimlane-btn:hover{background:var(--blue-700);border-color:var(--blue-700)}.v4-gantt-tab-bar{display:flex;align-items:center;padding:var(--sp-2) var(--sp-3);background:var(--surface);border-bottom:1px solid var(--line);gap:var(--sp-2);flex-shrink:0}.v4-gantt-tab-spacer{flex:1}.v4-gantt-depth-label{font-size:var(--fs-sm);font-weight:600;color:var(--ink-500)}.v4-gantt-depth{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-ctl);overflow:hidden}.v4-gantt-depth .mode-toggle-btn{border:none;border-radius:0;border-left:1px solid var(--line)}.v4-gantt-depth .mode-toggle-btn:first-child{border-left:none}.mode-toggle-custom,.mode-toggle-custom:disabled{cursor:default;opacity:1}.v4-gantt-fullscreen{flex:1 1 auto;min-height:0;overflow:hidden;background:var(--line-faint);display:flex;flex-direction:column}.v4-chart-overlay{display:none;position:absolute;top:0;right:0;bottom:0;left:0;z-index:200;background:var(--surface-alt);flex-direction:column;overflow:hidden}.v4-chart-overlay.open{display:flex}.v4-chart-overlay-inner{flex:1;min-height:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.v4-chart-overlay .v4-page-chart{flex:1;min-height:0;height:100%}.v4-chart-wrapper{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-sm)}.v4-chart-title-row{display:flex;align-items:baseline;padding:var(--sp-3) var(--sp-4) var(--sp-2);gap:var(--sp-4);flex-shrink:0}.v4-chart-project-name{font-size:var(--fs-sm);font-weight:500;color:var(--ink-500);white-space:nowrap;flex-shrink:0}.v4-chart-title{font-size:var(--fs-xl);font-weight:700;color:var(--ink-700);flex:1;text-align:center}.v4-chart-filter-bar{flex-shrink:0;position:relative;background:var(--surface);border-left:1px solid var(--line-strong);border-right:1px solid var(--line-strong);z-index:100;overflow:visible}.v4-chart-filter-bar .scenario-filter-bar{border-bottom:1px solid var(--line);margin-bottom:0}.v4-title-row{display:flex;justify-content:center;align-items:baseline;padding:4px 8px 8px}.v4-title-text{font-size:20px;font-weight:700;color:var(--ink-700);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v4-filter-row{position:relative;border-top:1px solid var(--line)}.v4-filter-row .scenario-filter-bar{padding:2px 12px;background:transparent;font-size:11px;color:var(--ink-500);border-bottom:none;margin-bottom:0}.v4-hero-row{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0}.v4-hero-cell{display:flex;flex-direction:column;align-items:center;padding:6px 8px;border-radius:4px}.v4-hero-cell:not(:last-child){border-right:1px solid var(--line)}.v4-hero-label{font-size:11px;color:var(--ink-400);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;margin-bottom:2px}.v4-hero-value{font-size:26px;font-weight:700;color:var(--ink-700);font-variant-numeric:tabular-nums;line-height:1.2}.v4-hero-unit{font-size:12px;font-weight:500;color:var(--ink-400)}.v4-bwi-badge{display:inline-block;padding:2px 10px;border-radius:4px;font-weight:700;font-size:28px;font-variant-numeric:tabular-nums;line-height:1.2}.trend-arrow{font-size:.7em;margin-left:4px}.trend-arrow-sm{font-size:8px;margin-left:2px;vertical-align:middle}.trend-worse{color:#dc2626}.trend-better{color:#16a34a}.v4-assurance-row{display:block;flex:1;min-height:0;padding-top:8px}.v4-assurance-plan{width:100%;min-width:0;border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:#fafafa}.v4-assurance-float{width:100%;min-width:0;display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin-top:6px;background:#fafafa}.v4-assurance-title{font-size:11px;font-weight:600;color:var(--ink-400);text-transform:uppercase;letter-spacing:.5px;padding:2px 0}.v4-at-header-row{display:grid;grid-template-columns:auto 70px 70px 60px;padding:1px 0 4px;border-bottom:1px solid var(--line-strong);margin-bottom:2px}.v4-at-header-row>div{font-size:11px;font-weight:700;color:var(--ink-500);text-transform:uppercase;text-align:right}.v4-at-header-row>div:first-child{text-align:left}.v4-at-row{display:grid;grid-template-columns:auto 70px 70px 60px;padding:4px;border-bottom:1px solid #f0f0f0}.v4-at-row:last-child{border-bottom:none}.v4-at-row:nth-child(2n){background:transparent}.v4-at-label{font-size:12px;color:var(--ink-500);text-align:left}.v4-at-val{font-size:13px;font-weight:600;text-align:right;font-variant-numeric:tabular-nums}.v4-at-separator{border-top:1px solid var(--line);margin:2px 0}.v4-float-header-row{display:grid;grid-template-columns:auto 70px;padding:1px 0}.v4-float-header-row>div{font-size:9px;font-weight:600;color:var(--ink-400);text-transform:uppercase;text-align:right}.v4-float-header-row>div:first-child{text-align:left}.v4-float-row{display:grid;grid-template-columns:auto 70px;padding:2px 4px}.v4-float-row:nth-child(2n){background:var(--surface-alt);border-radius:2px}.v4-float-row .v4-at-label{font-size:11px}.v4-float-row .v4-at-val{font-size:12px}.v4-assurance-float .v4-at-label{font-size:10px;color:var(--ink-400);white-space:nowrap}.v4-assurance-float .v4-at-val{font-size:11px;font-weight:600;white-space:nowrap}.v4-tile-placeholder{display:flex;align-items:center;justify-content:center;flex:1;color:var(--ink-400);font-size:13px}.v4-carryover-row{display:flex;justify-content:space-between;align-items:baseline;padding:8px 12px;border-top:1px solid var(--line);border-radius:4px;margin-top:4px}.v4-carryover-row .v4-hero-value{font-size:24px;font-weight:800}.v4-details-toggle{display:block;width:100%;padding:6px 0 2px;font-size:13px;font-weight:700;color:var(--ink-600);background:none;border:none;cursor:pointer;text-align:left;letter-spacing:.5px;text-transform:uppercase}.v4-details-toggle:hover{color:var(--ink-700)}.planning-carryover-note{font-size:.72rem;color:var(--ink-500);padding:2px 8px;font-style:italic}.admin-page{max-width:1100px;margin:0 auto;padding:1.5rem 2rem}.admin-header-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.admin-title{font-size:1.4rem;font-weight:700;color:var(--color-primary-text)}.admin-loading{text-align:center;padding:3rem;color:var(--color-secondary-text)}.admin-error{background:#fef2f2;color:#dc2626;padding:.6rem 1rem;border-radius:6px;margin-bottom:1rem;border:1px solid #fecaca;font-size:.85rem}.planning-conflict-banner{display:flex;align-items:center;gap:var(--sp-3);background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn);border-radius:var(--r-ctl);padding:var(--sp-2) var(--sp-4);margin:var(--sp-2) 0;font-size:var(--fs-sm);font-weight:600}.planning-save-retrying{display:inline-flex;align-items:center;gap:var(--sp-2);background:var(--line-faint);color:var(--ink-500);border:1px solid var(--line);border-radius:var(--r-ctl);padding:var(--sp-1) var(--sp-3);margin:var(--sp-2) 0;font-size:var(--fs-xs);font-weight:600}.admin-tabs{display:flex;gap:0;border-bottom:2px solid var(--color-border);margin-bottom:1.25rem}.admin-tab{padding:.55rem 1.25rem;font-size:.88rem;font-weight:600;color:var(--color-secondary-text);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s,border-color .15s}.admin-tab:hover{color:var(--color-primary-text)}.admin-tab-active{color:var(--color-accent);border-bottom-color:var(--color-accent)}.admin-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.admin-btn{width:auto;padding:.45rem 1rem;font-size:.85rem}.admin-btn-danger{background:#dc2626;border-color:#dc2626}.admin-btn-danger:hover{background:var(--bad-strong)}.admin-btn-danger:disabled{opacity:.5;cursor:not-allowed}.admin-table{width:100%;border-collapse:collapse;background:var(--color-surface);border-radius:6px;overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--color-border)}.admin-table th{font-size:.8rem;font-weight:600;color:var(--color-secondary-text);text-transform:uppercase;letter-spacing:.03em;background:var(--surface-alt);padding:.55rem .75rem;text-align:left;border-bottom:2px solid var(--color-border)}.admin-table td{padding:.55rem .75rem;font-size:.88rem;color:var(--color-primary-text);border-bottom:1px solid var(--line-faint)}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:#f8fafc}.admin-empty{text-align:center;color:var(--color-secondary-text);padding:2rem;font-style:italic}.admin-badge-pending{display:inline-block;font-size:.65rem;font-weight:700;color:#d97706;background:#fffbeb;border:1px solid #fde68a;border-radius:3px;padding:1px 5px;margin-left:6px;vertical-align:middle;text-transform:uppercase}.admin-action-btn{padding:.3rem .6rem;font-size:.78rem;font-weight:500;border:1px solid var(--line-strong);background:#fff;color:var(--color-primary-text);border-radius:4px;cursor:pointer;margin-right:4px;transition:background .15s}.admin-action-btn:hover{background:var(--line-faint)}.admin-action-delete{color:#dc2626;border-color:#fecaca}.admin-action-delete:hover{background:#fef2f2}.admin-toggle{position:relative;display:inline-block;width:36px;height:20px}.admin-toggle input{opacity:0;width:0;height:0}.admin-toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--line-strong);border-radius:20px;transition:background .2s}.admin-toggle-slider:before{content:"";position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s}.admin-toggle input:checked+.admin-toggle-slider{background:#16a34a}.admin-toggle input:checked+.admin-toggle-slider:before{transform:translate(16px)}.admin-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.admin-modal{background:#fff;border-radius:10px;padding:1.75rem 2rem;width:100%;max-width:420px;box-shadow:0 20px 60px #0003}.admin-modal h3{font-size:1.15rem;font-weight:700;color:var(--color-primary-text);margin-bottom:1rem}.admin-modal p{font-size:.9rem;color:var(--color-primary-text);margin-bottom:.75rem;line-height:1.5}.admin-field{margin-bottom:.85rem}.admin-field label{display:block;font-size:.82rem;font-weight:500;color:var(--color-secondary-text);margin-bottom:.3rem}.admin-field input[type=text],.admin-field input[type=password],.admin-field select{width:100%;padding:.55rem .75rem;border:1px solid var(--line-strong);border-radius:6px;font-size:.88rem;color:var(--color-primary-text);background:var(--surface);outline:none;transition:border-color .2s}.admin-field input:focus,.admin-field select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #2563eb1f}.admin-field input:disabled,.admin-field select:disabled{background:var(--line-faint);color:var(--ink-400)}.admin-checkbox-row label{display:flex;align-items:center;gap:.5rem;font-size:.88rem;font-weight:500;color:var(--color-primary-text);cursor:pointer}.admin-checkbox-row input[type=checkbox]{width:16px;height:16px;cursor:pointer}.admin-modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem}.admin-danger-text{color:#dc2626;font-weight:600;font-size:.85rem}.admin-confirm-input{width:100%;padding:.55rem .75rem;border:2px solid #fecaca;border-radius:6px;font-size:.9rem;color:var(--color-primary-text);outline:none;margin-bottom:.5rem}.admin-confirm-input:focus{border-color:#dc2626}.admin-select-label{font-size:.85rem;font-weight:600;color:var(--color-secondary-text)}.admin-user-select{min-width:200px}.admin-access-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.5rem;padding:.5rem 0}.admin-access-item{display:flex;align-items:center;gap:.5rem;padding:.55rem .75rem;border:1px solid var(--color-border);border-radius:6px;background:#fff;cursor:pointer;transition:background .15s,border-color .15s}.admin-access-item:hover{background:#f0f9ff;border-color:var(--color-accent)}.admin-access-item input[type=checkbox]{width:16px;height:16px;cursor:pointer;flex-shrink:0}.admin-access-name{font-size:.88rem;font-weight:500;color:var(--color-primary-text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-access-id{font-size:.75rem;color:var(--color-secondary-text);flex-shrink:0}.admin-access-assign{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0;cursor:pointer}.admin-access-plan{display:flex;align-items:center;gap:.35rem;flex-shrink:0;padding-left:.6rem;border-left:1px solid var(--color-border);font-size:.75rem;color:var(--color-secondary-text);cursor:pointer}.admin-access-plan input:disabled{cursor:not-allowed}.admin-access-plan:has(input:disabled){opacity:.45;cursor:not-allowed}.planning-meta{display:flex;align-items:center;gap:var(--sp-3);margin:var(--sp-3) 0 var(--sp-2);font-size:var(--fs-sm)}.planning-rosters{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:var(--sp-2) 0 var(--sp-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}.planning-rosters>.planning-roster{background:transparent;border:none;border-radius:0}.planning-rosters>.planning-roster:first-child{border-right:1px solid var(--line)}.planning-string-slot{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-3)}.planning-string-card{padding:var(--sp-4) var(--sp-6)}.planning-card-zones{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);padding:var(--sp-4) var(--sp-4) var(--sp-3);margin:var(--sp-2) 0 var(--sp-3);zoom:1.25}.planning-card-fedby{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0 var(--sp-2);font-size:var(--fs-sm);color:var(--ink-700)}.planning-card-fedby-text{font-weight:600}.planning-card-stamp{margin-left:auto;font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-2xs);color:var(--ink-400)}.planning-string-box-foot{display:flex;align-items:center;gap:var(--sp-3)}.planning-studio{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--surface-alt);overflow:auto;display:flex;justify-content:center}.planning-studio-page{width:min(1920px,95vw);margin:var(--sp-6) auto var(--sp-8)}.planning-studio-frame{background:var(--surface);border:0;border-radius:var(--r-card);padding:var(--sp-6) var(--sp-6) var(--sp-8);color:var(--ink-900)}.planning-studio-snip{border:2px solid var(--ink-900);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-4) var(--sp-2)}.planning-studio-back{border:1px solid var(--line);background:var(--surface);color:var(--ink-700);height:32px;padding:0 var(--sp-3);border-radius:var(--r-ctl);font-size:var(--fs-sm);font-weight:600;cursor:pointer}.planning-studio-back:hover{background:var(--surface-alt)}.planning-studio-header{display:flex;gap:var(--sp-2);align-items:center;margin:0 0 var(--sp-3)}.planning-studio-top{margin:0 0 var(--sp-4)}.planning-studio-title{font-size:var(--fs-xl);font-weight:700;color:var(--ink-900);display:flex;align-items:baseline;gap:var(--sp-2);margin:0 0 var(--sp-3)}.planning-studio-weeks{color:var(--ink-500);font-weight:600}.planning-studio-chip{font-size:var(--fs-sm);font-weight:700;padding:2px var(--sp-2);border-radius:var(--r-ctl);background:var(--ok-bg);color:var(--ok-strong);border:1px solid var(--ok-strong)}.planning-studio-chip.is-late{background:var(--bad-bg);color:var(--bad-strong);border-color:var(--bad-strong)}.planning-studio-notes{width:100%;min-height:72px;resize:none;overflow:hidden;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-3);font-size:var(--fs-md);color:var(--ink-700);font-family:inherit;line-height:1.5}.planning-studio-notes:focus{outline:none;border-color:var(--ink-400)}.planning-studio-canvas{margin:var(--sp-6) 0 var(--sp-4)}.planning-studio-rule{height:3px;background:var(--ink-900);border-radius:1px;margin:var(--sp-6) calc(-1 * var(--sp-6)) var(--sp-6)}.planning-studio-editor .planning-roster-create,.planning-studio-editor .planning-string-card{border:0;background:transparent;margin:0;padding:0}.planning-studio-editor .planning-card-zones{zoom:1;border-color:var(--line);background:var(--surface-alt);padding:var(--sp-3);margin:0 0 var(--sp-4)}.planning-studio-editor .planning-tie-title{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3)}.planning-studio-editor .planning-editor-name{font-size:var(--fs-lg);font-weight:700;color:var(--ink-900)}.planning-studio-editor .planning-dlg-head{font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-500);margin:var(--sp-4) 0 var(--sp-2)}.planning-studio-editor .planning-string-steps{gap:var(--sp-2)}.planning-studio-editor .planning-string-step input[type=text],.planning-studio-editor .planning-string-step input[type=number],.planning-studio-editor .planning-tie-field input,.planning-studio-editor .planning-tie-field select{font-size:var(--fs-md);color:var(--ink-700)}.planning-studio-editor .planning-string-step input[type=number]{width:68px}.planning-studio-editor .planning-conn-sentence,.planning-studio-editor .planning-roster-create-hint{font-size:var(--fs-sm);color:var(--ink-600)}.planning-studio-editor .planning-string-box-foot{margin-top:var(--sp-4)}.planning-string-connrow{display:flex;gap:var(--sp-6);align-items:flex-start}.planning-string-connhalf{flex:1 1 0;min-width:0}.planning-string-connhalf>.planning-dlg-head{margin-top:var(--sp-3)}.planning-string-connhalf .planning-tie-field select,.planning-string-connhalf .planning-conn-row{max-width:100%}@media(max-width:980px){.planning-string-connrow{flex-direction:column;gap:0}}.planning-studio-svg{display:block;width:100%}.planning-studio-empty{color:var(--ink-400);font-size:var(--fs-md);padding:var(--sp-6);text-align:center}.planning-studio-pass{font-size:calc(var(--fs-2xs) * 1.35)}.planning-studio-steplabel{font-size:var(--fs-lg);font-weight:600;fill:var(--ink-900)}.planning-studio-steplabel-lifted{font-size:var(--fs-md)}.planning-studio-seat{font-size:var(--fs-md);font-weight:600;fill:var(--ink-700)}.planning-studio-mini{font-size:var(--fs-xs);fill:var(--ink-500)}.planning-studio-wait{font-size:var(--fs-sm);font-weight:600;fill:var(--ink-700)}.planning-studio-ruler-label{font-size:var(--fs-xs);fill:var(--ink-600);font-weight:600;font-variant-numeric:tabular-nums}.planning-studio-endlabel{font-size:var(--fs-sm);font-weight:700;fill:var(--ink-500)}.planning-studio-passarrow{font-size:200%}.planning-studio-bufchip{font-size:var(--fs-sm);font-weight:700;fill:var(--ok-strong);font-variant-numeric:tabular-nums}.planning-studio-bufchip.is-late{fill:var(--bad-strong)}.planning-flag-system{pointer-events:none}.planning-roster-row-system{cursor:default}.planning-roster-row-system .planning-roster-name{color:var(--ink-400);font-style:italic}.planning-roster-row-system .planning-roster-date{color:var(--ink-400)}.planning-flag-system .planning-frag-label{fill:var(--ink-400);font-style:italic;font-weight:600}.planning-flag-system .planning-flag-datelabel{fill:var(--ink-400)}.planning-flag-system path,.planning-flag-system polygon,.planning-flag-system rect{fill:var(--ink-400)}.planning-msband-addstring{margin-left:var(--sp-2)}.planning-slfilter{height:24px;padding:0 var(--sp-1);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-600);font-size:var(--fs-xs)}.planning-string-box{display:flex;flex-direction:column;gap:var(--sp-2)}.planning-string-steps{display:flex;flex-direction:column;gap:var(--sp-1)}.planning-string-step{display:flex;align-items:center;gap:var(--sp-2)}.planning-string-step input[type=text]{flex:1 1 auto;min-width:0}.planning-string-step input[type=number]{width:56px;flex:0 0 auto}.planning-roster{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-2) var(--sp-3)}.planning-roster-head{font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-500);margin-bottom:var(--sp-1);position:sticky;top:0;background:var(--surface)}.planning-roster-pairs{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--sp-3);align-items:start}.planning-roster-pairs[data-two=y]>.planning-roster-col:first-child{border-right:1px solid var(--line-faint);padding-right:var(--sp-3)}.planning-roster-col{display:flex;flex-direction:column;min-width:0}.planning-roster-row{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:24px;border:0;background:none;padding:0 var(--sp-1);font-size:var(--fs-sm);color:var(--ink-700);border-radius:var(--r-ctl);cursor:pointer;text-align:left}.planning-roster-row:hover{background:var(--line-faint)}.planning-roster-dia{width:7px;height:7px;transform:rotate(45deg);flex:0 0 auto}.planning-roster-name{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-roster-date{font-size:calc(var(--fs-sm) * 1.2);font-variant-numeric:tabular-nums;color:var(--ink-600);flex:0 0 auto}.planning-roster-badge{font-size:var(--fs-2xs);font-weight:600;padding:0 var(--sp-1);border-radius:var(--r-ctl);font-variant-numeric:tabular-nums;flex:0 0 auto}.planning-roster-badge[data-ok=y]{color:var(--ok-strong);background:var(--ok-bg)}.planning-roster-badge[data-ok=n]{color:var(--bad-strong);background:var(--bad-bg)}.planning-mirror-badge{font-size:var(--fs-2xs);font-weight:700;color:var(--ink-500);background:var(--line-faint);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-1);white-space:nowrap;font-variant-numeric:tabular-nums;flex:0 0 auto}.planning-roster-empty{font-size:var(--fs-sm);color:var(--ink-400);padding:var(--sp-1) 0 var(--sp-2)}.planning-roster-head{display:flex;align-items:center;justify-content:space-between}.planning-roster-add{border:1px solid var(--line);background:var(--surface);color:var(--ink-600);font-size:var(--fs-xs);font-weight:600;border-radius:var(--r-ctl);padding:0 var(--sp-2);height:20px;cursor:pointer}.planning-roster-add:hover{border-color:var(--line-strong);color:var(--ink-700)}.planning-roster-create{border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface-alt);padding:var(--sp-2) var(--sp-3);margin:var(--sp-1) 0 var(--sp-2)}.planning-roster-create-hint{font-size:var(--fs-xs);color:var(--ink-500);margin-bottom:var(--sp-2)}.planning-roster-create-fields{display:flex;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap}.planning-jumplink{border:none;background:none;padding:0;font-size:var(--fs-xs);font-weight:600;color:var(--blue-600);cursor:pointer}.planning-jumplink:hover{color:var(--blue-700);text-decoration:underline}.planning-zband{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);margin:0 0 var(--sp-2);overflow:hidden}.planning-zband-head{display:flex;align-items:baseline;justify-content:space-between;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line);background:var(--surface-alt)}.planning-zband-title{font-size:var(--fs-sm);font-weight:600;color:var(--ink-500)}.planning-zband-count{font-size:var(--fs-xs);color:var(--ink-400);font-variant-numeric:tabular-nums}.planning-zband-controls{display:flex;align-items:center;gap:var(--sp-2)}.planning-zband-ctl{height:24px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-600);font-size:var(--fs-xs);font-weight:600;cursor:pointer}.planning-zband-ctl:hover{background:var(--surface-alt)}.planning-zband-ctl.is-active{background:var(--blue-600);color:var(--surface);border-color:var(--blue-600)}.planning-zband-ctl:disabled{opacity:.5;cursor:default}.planning-zband-slfilter{height:24px;padding:0 var(--sp-1);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-600);font-size:var(--fs-xs)}.planning-zband-empty{padding:var(--sp-4) var(--sp-3);color:var(--ink-400);font-size:var(--fs-sm);text-align:center}.planning-zband-stamp{font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-2xs);color:var(--ink-400);text-align:right;padding:0 var(--sp-2) var(--sp-1)}.planning-zband-scroll{overflow-y:auto;max-height:80vh;position:relative}.planning-zband-card{border-left:3px solid var(--cat-6);border-bottom:1px solid var(--line);background:var(--surface)}.planning-zband-card.is-selected{background:var(--blue-100);border-left-width:4px}.planning-zband-card.is-expanded{background:var(--surface-alt)}.planning-zband-row{display:flex;align-items:center;height:44px}.planning-zband-expand{flex:none;width:28px;height:44px;border:none;background:none;color:var(--ink-400);cursor:pointer;font-size:var(--fs-sm);line-height:1}.planning-zband-expand:hover{color:var(--ink-700)}.planning-zband-select{flex:1;min-width:0;height:44px;display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-3) 0 0;border:none;background:none;text-align:left;cursor:pointer;font:inherit}.planning-zband-select:hover .planning-zband-name{text-decoration:underline}.planning-zband-expanded{padding:0 var(--sp-3) var(--sp-2)}.planning-zband-namecol{flex:0 0 320px;min-width:0;display:flex;align-items:center;gap:var(--sp-2)}.planning-zband-name{font-size:var(--fs-md);font-weight:600;color:var(--ink-900);flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-zband-drivenby{flex:0 0 260px;min-width:0;font-size:var(--fs-sm);color:var(--ink-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-zband-drivenby.is-empty{color:var(--ink-400);font-style:italic}.planning-zband-pill{font-size:var(--fs-xs);font-weight:600;color:var(--ok-strong);background:var(--ok-bg);border:1px solid var(--ok-strong);border-radius:var(--r-ctl);padding:1px var(--sp-1);flex:none;font-variant-numeric:tabular-nums}.planning-zband-pill.is-late{color:var(--bad-strong);background:var(--bad-bg);border-color:var(--bad-strong)}.planning-zband-drive{font-size:var(--fs-sm);color:var(--ink-500);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-punchline{display:flex;border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);margin:0 0 var(--sp-2);overflow:hidden;font-variant-numeric:tabular-nums}.planning-punchline-card{width:330px;flex:none;border-left:4px solid var(--cat-6);padding:var(--sp-2) var(--sp-3);display:flex;gap:var(--sp-2);align-items:center}.planning-punchline-cardmain{flex:1;min-width:0}.planning-punchline-title{font-size:var(--fs-lg);font-weight:700;color:var(--ink-900);line-height:1.25}.planning-punchline-tot{font-weight:600;color:var(--ink-500);font-size:var(--fs-md)}.planning-punchline-muststart{font-size:var(--fs-sm);color:var(--ink-500);font-weight:600;margin-top:2px}.planning-punchline-muststart b{color:var(--ink-900)}.planning-punchline-muststart b[data-pl-late=y]{color:var(--bad-strong)}.planning-punchline-unaimed{color:var(--warn);font-weight:700}.planning-punchline-pending{color:var(--ink-400);font-weight:600}.planning-punchline-cardpill{flex:none}.planning-punchline-lane{flex:1;position:relative;border-left:1px solid var(--line-faint)}.planning-punchline-today{position:absolute;top:0;bottom:0;border-left:1.5px solid var(--bad);opacity:.45;pointer-events:none}.planning-punchline-driver{position:absolute;transform:translate(-103%);font-size:var(--fs-sm);font-weight:700;color:var(--ink-600);white-space:nowrap}.planning-punchline-wait{position:absolute;font-size:var(--fs-xs);font-weight:600;color:var(--warn);white-space:nowrap}.planning-punchline-feedmark{position:absolute;width:8px;height:8px;transform:translate(-50%,-50%) rotate(45deg);background:var(--warn);border:1px solid var(--surface);z-index:2;pointer-events:none}.planning-punchline-feedgap{position:absolute;height:0;border-top:2px dotted var(--warn);opacity:.75;pointer-events:none}.planning-punchline-bufline{position:absolute;height:0;border-top:2px solid var(--ok-strong);opacity:.8;pointer-events:none}.planning-punchline-bufline.is-late{border-top:3px solid var(--bad-strong);opacity:1}.planning-punchline-bufdrop{position:absolute;width:0;border-left:1px dashed var(--line-strong);pointer-events:none}.planning-punchline-bufdrop.is-late{border-left:1.5px dashed var(--bad-strong)}.planning-punchline-target{position:absolute;font-size:var(--fs-xs);font-weight:700;color:var(--ok-strong);white-space:nowrap;z-index:2}.planning-punchline-target.is-late{color:var(--bad-strong)}.planning-punchline-seg{position:absolute;box-sizing:border-box;border:1.5px solid var(--line-strong);border-left:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--fs-sm);font-weight:700;color:var(--ink-700);text-align:center}.planning-punchline-fdate{position:absolute;font-size:var(--fs-2xs);font-weight:700;color:var(--ink-700);white-space:nowrap}.planning-punchline-ldate{position:absolute;font-size:var(--fs-2xs);font-weight:700;color:var(--warn);white-space:nowrap}.planning-punchline-fincluster{position:absolute;margin-left:10px;font-size:var(--fs-sm);font-weight:700;color:var(--ink-900);white-space:nowrap;line-height:1.3}.planning-punchline-needline{font-size:var(--fs-xs);font-weight:700;color:var(--ink-600)}.planning-punchline-needpending{color:var(--ink-400);font-weight:600}.planning-punchline-aim{display:inline-block;margin-top:2px;padding:1px 8px;font-size:var(--fs-xs);font-weight:700;color:var(--warn);border:1px dashed var(--warn);border-radius:var(--r-ctl);background:var(--warn-bg)}.planning-punchline-dia{position:absolute;width:9px;height:9px;transform:translate(-50%,-50%) rotate(45deg);background:var(--ink-600)}.planning-reports-stringreport{display:block;width:100%;text-align:left;font-weight:700;color:var(--ink-700);margin-bottom:var(--sp-2)}.planning-reports-stringreport.is-selected{color:var(--blue-700)}.planning-strreport-sort{display:flex;gap:var(--sp-1);margin:0 0 var(--sp-3)}.planning-strreport-head{font-size:var(--fs-sm);font-weight:700;color:var(--ink-600);margin:var(--sp-4) 0 var(--sp-2);font-variant-numeric:tabular-nums}.planning-strreport-row{display:block;width:100%;border:none;background:none;padding:0;text-align:left;cursor:pointer}.planning-strreport-row:hover .planning-punchline{border-color:var(--blue-500)}.planning-gantt[data-isolate=y] [data-msrow]:not([data-iso=y]),.planning-gantt[data-isolate=y] [data-flag]:not([data-iso=y]),.planning-gantt[data-isolate=y] [data-km]:not([data-iso=y]),.planning-gantt[data-isolate=y] rect.planning-bar{opacity:.12;transition:opacity .15s ease}.planning-isolate-banner{position:sticky;top:0;z-index:40;background:var(--ink-900);color:var(--surface);font-size:var(--fs-sm);font-weight:600;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-ctl);margin:0 0 var(--sp-2)}.planning-roster-create-fields .planning-tie-field input,.planning-roster-create-fields .planning-tie-field select{min-width:140px}.planning-roster-create-fields input[data-invalid=y]{border-color:var(--bad)}.planning-meta-spacer{flex:1}.planning-scenario-pill{background:var(--blue-100);color:var(--blue-700);font-weight:600;padding:2px var(--sp-2);border-radius:var(--r-ctl)}.planning-meta-dates{color:var(--ink-500);font-variant-numeric:tabular-nums}.planning-scenario-label{font-weight:600;color:var(--ink-500);text-transform:uppercase;font-size:var(--fs-xs);letter-spacing:.02em}.planning-scenario-select{height:32px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);font-weight:600;padding:0 var(--sp-2);max-width:280px}.planning-scenario-select:focus{outline:2px solid var(--blue-500);outline-offset:-1px}.planning-window-select{max-width:150px}.planning-behind-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--r-ctl);background:var(--bad-bg);color:var(--bad-strong);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.planning-scenario-state{font-size:var(--fs-xs);color:var(--ink-400);font-style:italic}.planning-viewonly-chip{display:inline-flex;align-items:center;padding:2px var(--sp-2);border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--surface-alt);color:var(--ink-500);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.planning-section-title{font-size:var(--fs-lg);color:var(--ink-700);margin:var(--sp-6) 0 var(--sp-2)}.admin-page{--planning-label-w: 320px}.planning-gantt{border:1px solid var(--line);border-radius:var(--r-card);overflow:clip;background:var(--surface)}.planning-gantt-head{display:flex;flex-direction:column;border-bottom:1px solid var(--line);background:var(--surface-alt);position:sticky;top:48px;z-index:4}.planning-snip .planning-gantt-head{top:0}.planning-gantt-headrow{display:flex;align-items:stretch}.planning-gantt-flagrail{display:flex;align-items:stretch;border-top:1px solid var(--line-faint)}.planning-flagrail-gutter{width:var(--planning-label-w);flex:0 0 var(--planning-label-w);border-right:1px solid var(--line);padding:0 var(--sp-3);display:flex;align-items:center;font-size:var(--fs-2xs);font-weight:600;color:var(--ink-400);letter-spacing:.06em;text-transform:uppercase}.planning-flagrail-track{flex:1;min-width:0}.planning-gantt-labelhead{width:var(--planning-label-w);flex:0 0 var(--planning-label-w);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);font-weight:600;color:var(--ink-500);border-right:1px solid var(--line);display:flex;align-items:flex-end}.planning-gantt-axis{flex:1;min-width:0}.planning-annot-bar{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0 var(--sp-1);font-size:var(--fs-sm)}.planning-annot-title{font-weight:600;color:var(--ink-500);text-transform:uppercase;font-size:var(--fs-xs);letter-spacing:.02em}.planning-annot-count-wrap{position:relative}.planning-annot-count{border:none;background:none;padding:0;color:var(--ink-500);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;cursor:pointer}.planning-annot-count:hover{color:var(--ink-700)}.planning-annot-menu{position:absolute;top:calc(100% + var(--sp-1));left:0;z-index:20;min-width:280px;max-height:320px;overflow-y:auto;padding:var(--sp-1) 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md)}.planning-annot-menu-head{padding:var(--sp-1) var(--sp-3);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-400)}.planning-annot-menu-item{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);width:100%;border:none;background:none;text-align:left;padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);color:var(--ink-700);cursor:pointer}.planning-annot-menu-item:hover{background:var(--line-faint)}.planning-annot-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-annot-menu-date{font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-xs);color:var(--ink-400);flex-shrink:0}.planning-annot-menu-empty{padding:var(--sp-2) var(--sp-3);color:var(--ink-400);font-style:italic;font-size:var(--fs-sm)}.planning-annot-hint{color:var(--ink-400);font-size:var(--fs-xs);font-style:italic}.planning-tie-editor{position:sticky;top:0;z-index:5;height:48px;display:flex;align-items:center;gap:var(--sp-2);flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;margin:0 0 var(--sp-2);padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface-alt);font-size:var(--fs-sm)}.planning-tie-editor>*{flex-shrink:0}.planning-tie-title{font-weight:600;color:var(--ink-900);display:inline-flex;align-items:baseline;gap:var(--sp-2)}.planning-editor-kind{font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-400)}.planning-editor-name{font-size:var(--fs-md);font-weight:600;color:var(--ink-900);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-editor-empty{color:var(--ink-400);font-style:italic}.planning-del-btn{color:var(--bad-strong)}.planning-tie-field{display:inline-flex;align-items:center;gap:var(--sp-1);color:var(--ink-500);font-size:var(--fs-xs)}.planning-tie-field select,.planning-tie-field input{height:28px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);padding:0 var(--sp-1)}.planning-tie-field input[type=number]{width:64px}.planning-tie-field select{max-width:200px}.planning-succ{position:relative;display:inline-block}.planning-succ-trigger{height:28px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);padding:0 var(--sp-2);cursor:pointer}.planning-succ-trigger.is-broken{border-color:var(--warn);color:var(--warn)}.planning-succ-panel{position:fixed;z-index:300;width:380px;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2)}.planning-succ-pin{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);margin-bottom:var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface-alt);font-size:var(--fs-xs);color:var(--ink-700)}.planning-succ-pin.is-broken{border-color:var(--warn);color:var(--warn)}.planning-succ-pin-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-succ-search{width:100%;height:28px;border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-2);font-size:var(--fs-sm);color:var(--ink-700);margin-bottom:var(--sp-2)}.planning-succ-search:focus{outline:none;border-color:var(--blue-500)}.planning-succ-list{max-height:300px;overflow-y:auto}.planning-succ-slhead,.planning-succ-item{display:flex;align-items:center;gap:var(--sp-2);width:100%;text-align:left;border:none;background:none;cursor:pointer;border-radius:var(--r-ctl);padding:var(--sp-1) var(--sp-2);font-size:var(--fs-sm);color:var(--ink-700)}.planning-succ-slhead{font-weight:600;color:var(--ink-600)}.planning-succ-slhead:hover{background:var(--line-faint)}.planning-succ-caret{width:12px;color:var(--ink-400)}.planning-succ-sslhead{display:flex;align-items:center;gap:var(--sp-2);width:100%;text-align:left;border:none;background:none;cursor:pointer;border-radius:var(--r-ctl);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-400);padding:var(--sp-1) var(--sp-2) 2px var(--sp-4)}.planning-succ-sslhead:hover{background:var(--line-faint)}.planning-succ-descrow{display:flex;align-items:center;gap:var(--sp-2);width:100%;text-align:left;border:none;background:none;cursor:pointer;border-radius:var(--r-ctl);font-size:var(--fs-sm);color:var(--ink-700);padding:var(--sp-1) var(--sp-2)}.planning-succ-descrow--par{padding-left:calc(var(--sp-6) + var(--sp-1))}.planning-succ-descrow--chl{padding-left:calc(var(--sp-8) + var(--sp-2))}.planning-succ-descrow:hover{background:var(--line-faint)}.planning-succ-slhead.is-active,.planning-succ-sslhead.is-active,.planning-succ-descrow.is-active{background:var(--blue-100)}.planning-succ-slhead.is-tied,.planning-succ-sslhead.is-tied,.planning-succ-descrow.is-tied{color:var(--blue-700)}.planning-succ-level{flex:none;font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-400);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 4px}.planning-succ-item{padding-left:var(--sp-6)}.planning-succ-item.is-active{background:var(--blue-100)}.planning-succ-item.is-tied .planning-succ-name{font-weight:600;color:var(--blue-700)}.planning-succ-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-succ-detail{font-size:var(--fs-2xs);color:var(--ink-500);font-family:SF Mono,ui-monospace,monospace;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-succ-unit{font-size:var(--fs-2xs);color:var(--ink-400);font-family:SF Mono,ui-monospace,monospace}.planning-succ-crumb{font-size:var(--fs-2xs);color:var(--ink-400);white-space:nowrap}.planning-succ-empty{padding:var(--sp-2);color:var(--ink-400);font-size:var(--fs-xs)}.planning-date-wrap{position:relative;display:inline-flex;align-items:center;gap:2px}.planning-date-cal-wrap{position:relative;display:inline-flex}.planning-date-cal{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:var(--r-ctl);background:transparent;color:var(--ink-400);cursor:pointer;padding:0}.planning-date-cal:hover{color:var(--blue-600);background:var(--blue-100)}.planning-date-cal-native{position:absolute;left:0;bottom:0;width:1px;height:1px;opacity:0;border:0;padding:0;pointer-events:none}.planning-tie-field input.planning-date-entry{width:96px;font-variant-numeric:tabular-nums}.planning-tie-field input.planning-date-entry[data-invalid=y]{border-color:var(--bad);color:var(--bad-strong)}.gantt-heat-tick{position:absolute;top:1px;bottom:1px;width:1px;background:var(--surface);opacity:.75;pointer-events:none}@keyframes planning-flash-pulse{0%{opacity:1}50%{opacity:.25}to{opacity:1}}.planning-flash{animation:planning-flash-pulse .55s ease-in-out 2}.planning-table input.planning-stag-entry{width:52px;border:1px solid transparent;border-radius:var(--r-ctl);background:transparent;color:var(--ink-700);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;text-align:right;padding:1px var(--sp-1)}.planning-table input.planning-stag-entry:hover{border-color:var(--line)}.planning-table input.planning-stag-entry:focus{border-color:var(--blue-500);background:var(--surface);outline:none}.planning-table input.planning-stag-entry[data-invalid=y]{border-color:var(--bad);color:var(--bad-strong)}.planning-rp-selects{display:inline-flex;align-items:center;gap:var(--sp-1)}.planning-rp-dot{color:var(--ink-400)}.planning-table select.planning-rp-select{max-width:118px;border:1px solid transparent;border-radius:var(--r-ctl);background:transparent;color:var(--ink-700);font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-xs);padding:1px var(--sp-1);cursor:pointer}.planning-table select.planning-rp-select:hover{border-color:var(--line)}.planning-table select.planning-rp-select:focus{border-color:var(--blue-500);background:var(--surface);outline:none}.planning-rp-cell[data-ramp-override=y] select.planning-rp-select[data-rp=ramp],.planning-rp-cell[data-profile-override=y] select.planning-rp-select[data-rp=profile]{color:var(--blue-700);font-weight:600}.planning-heat-peak{font-size:var(--fs-sm);font-weight:700;font-variant-numeric:tabular-nums;paint-order:stroke}.planning-bar-name{font-size:var(--fs-sm);font-weight:600}.planning-heat-peak .planning-heat-max{font-size:var(--fs-2xs);font-weight:600;letter-spacing:.08em}.planning-heat-peak--right{fill:var(--ink-700)}.planning-heat-peak--right .planning-heat-max{fill:var(--ink-400)}.planning-heat-peak--in{fill:var(--surface);stroke:var(--ink-900);stroke-width:2.5px}.planning-heat-peak--in .planning-heat-max{fill:var(--surface)}.planning-tie-buffer{font-weight:600;font-variant-numeric:tabular-nums;padding:2px var(--sp-2);border-radius:var(--r-ctl)}.planning-tie-buffer[data-ok=y]{color:var(--ok-strong);background:var(--ok-bg)}.planning-tie-buffer[data-ok=n]{color:var(--bad-strong);background:var(--bad-bg)}.planning-tie-buffer[data-ok=warn]{color:var(--warn);background:var(--warn-bg)}.planning-tie-field select.is-broken{border-color:var(--warn);outline:2px solid var(--warn);outline-offset:-1px}.planning-gantt-bands{display:flex;align-items:stretch;border-bottom:1px solid var(--line);background:var(--surface-alt)}.planning-gantt-bandlabels{width:var(--planning-label-w);flex:0 0 var(--planning-label-w);border-right:1px solid var(--line)}.planning-band-label{display:flex;align-items:center;padding-left:var(--sp-3);font-size:var(--fs-xs);font-weight:600;color:var(--ink-500)}.planning-gantt-bandtrack{flex:1;min-width:0}.planning-annot text{-webkit-user-select:none;user-select:none;pointer-events:none}.planning-annot text.planning-annot-name{pointer-events:auto;cursor:pointer}.planning-annot:hover .planning-annot-guide{stroke:var(--blue-600)}.planning-gantt-grid{display:flex;align-items:stretch}.planning-gantt-labels{width:var(--planning-label-w);flex:0 0 var(--planning-label-w);border-right:1px solid var(--line)}.planning-lab{display:flex;align-items:center;gap:4px;font-size:var(--fs-sm);color:var(--ink-700);padding-left:6px;overflow:hidden}.planning-lab.is-div-strong{border-top:2px solid var(--line-strong)}.planning-lab.is-div-medium{border-top:1px solid var(--line-strong)}.planning-lab.is-div-faint{border-top:1px solid var(--line-faint)}.planning-lab.is-div-dark{border-top:1px solid var(--ink-500)}.planning-lab-overall,.planning-lab-sl{color:var(--surface)}.planning-lab-sl{position:relative}.planning-lab-ssl{font-weight:600;color:var(--ink-900)}.planning-lab-desc{font-weight:400;color:var(--ink-700)}.planning-lab-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-caret-onDark{color:var(--surface);opacity:.85}.planning-caret-onDark:hover{color:var(--surface);opacity:1}.planning-lab-strrow{font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none}.planning-lab-strrow.is-row-dragging{opacity:.5;cursor:grabbing}.planning-lab-strrow-text{font-size:var(--fs-xs)}.planning-row-grip{opacity:.55;font-size:var(--fs-2xs);letter-spacing:-1px;flex-shrink:0;cursor:grab;padding:4px 2px}.planning-row-grip:hover{opacity:1}.planning-row-add{margin-left:auto;border:none;background:none;color:var(--surface);font-size:var(--fs-md);font-weight:600;line-height:1;cursor:pointer;opacity:0;padding:0 4px}.planning-lab-sl:hover .planning-row-add{opacity:.85}.planning-row-add:hover{opacity:1!important}.planning-row-del{margin-left:auto;border:none;background:none;color:var(--ink-400);font-size:var(--fs-sm);line-height:1;cursor:pointer;opacity:0;padding:0 4px}.planning-lab-strrow:hover .planning-row-del{opacity:1}.planning-row-del:hover{color:var(--bad)}.planning-lab-strrow.is-row-selected{outline:2px solid var(--blue-600);outline-offset:-2px}.planning-row-edit{margin-left:auto;border:none;background:none;color:var(--ink-400);font-size:var(--fs-xs);line-height:1;cursor:pointer;opacity:0;padding:0 3px;flex-shrink:0}.planning-lab-strrow:hover .planning-row-edit{opacity:1}.planning-row-edit:hover{color:var(--ink-700)}.planning-row-edit+.planning-row-eye{margin-left:0}.planning-row-name-input{height:24px;font-size:var(--fs-sm);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-2);min-width:180px}.planning-row-name-input:focus{outline:2px solid var(--blue-500);outline-offset:-1px}input.planning-name-input{height:26px;min-width:160px;max-width:260px;font-size:var(--fs-md);font-weight:600;color:var(--ink-900);background:none;border:1px solid transparent;border-radius:var(--r-ctl);padding:0 var(--sp-1)}input.planning-name-input:hover{border-color:var(--line)}input.planning-name-input:focus{background:var(--surface);border-color:var(--blue-500);outline:2px solid var(--blue-500);outline-offset:-1px}.planning-row-member-note{color:var(--ink-400);font-size:var(--fs-xs)}.planning-tie-editor .nav-button:disabled{opacity:.45;cursor:not-allowed}.planning-row-eye{margin-left:auto;border:none;background:none;color:var(--ink-400);line-height:0;cursor:pointer;opacity:0;padding:0 3px;flex-shrink:0}.planning-row-eye+.planning-row-del{margin-left:0}.planning-lab-strrow:hover .planning-row-eye,.planning-row-eye.is-off{opacity:1}.planning-row-eye:hover{color:var(--ink-700)}.planning-row-eye svg path,.planning-row-eye svg line{stroke:currentColor;stroke-width:1.2px}.planning-row-eye svg circle{fill:currentColor}.planning-lab-strrow.is-hidden{opacity:.45}.planning-eye{opacity:0;cursor:pointer;color:var(--ink-500)}.planning-eye path,.planning-eye line{stroke:currentColor;stroke-width:1.2px}.planning-eye circle{fill:currentColor;stroke:none}.planning-annot:hover .planning-eye{opacity:1}.planning-eye.is-off{opacity:1;color:var(--ink-700)}.planning-eye:hover{color:var(--ink-900)}.planning-bar-handle.is-pinned{cursor:not-allowed}.planning-lock{display:inline-flex;color:var(--ink-400);margin-right:var(--sp-1);vertical-align:-1px}.planning-conn{pointer-events:none}.planning-ties-toggle{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);color:var(--ink-500);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.planning-filter{display:inline-flex}.planning-filter-btn{height:32px;padding:0 var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--ink-500);background:var(--surface);border:1px solid var(--line);border-left-width:0;cursor:pointer}.planning-filter-btn:first-child{border-left-width:1px;border-radius:var(--r-ctl) 0 0 var(--r-ctl)}.planning-filter-btn:last-child{border-radius:0 var(--r-ctl) var(--r-ctl) 0}.planning-filter-btn:hover{color:var(--ink-700);background:var(--surface-alt)}.planning-filter-btn.is-active{color:var(--surface);background:var(--blue-600);border-color:var(--blue-600)}.planning-slot-line{position:absolute;left:0;right:0;height:2px;background:var(--blue-600);pointer-events:none;z-index:2}.planning-gantt.is-row-drag{-webkit-user-select:none;user-select:none}.planning-gantt.is-row-drag *{cursor:grabbing!important}.planning-gantt.is-marker-drag{-webkit-user-select:none;user-select:none}.planning-gantt.is-marker-drag *{cursor:grabbing!important}.planning-gantt.is-edge-drag{-webkit-user-select:none;user-select:none}.planning-gantt.is-edge-drag *{cursor:ew-resize!important}.planning-gantt-track{flex:1;min-width:0}.admin-page:has(.planning-gantt){max-width:none}.planning-header-actions{display:inline-flex;gap:var(--sp-2)}.admin-page.planning-snip{background:var(--surface)}body:has(.planning-snip){background:var(--surface)}.planning-snip .planning-meta,.planning-snip .planning-annot-bar,.planning-snip .planning-tie-editor,.planning-snip .planning-section-title,.planning-snip .planning-table,.planning-snip .planning-back-btn,.planning-snip-staging{display:none}.planning-snip .planning-snip-staging{display:inline-flex;gap:var(--sp-1)}.planning-snip .planning-snip-btn{border-color:transparent;background:none;color:var(--ink-400)}.planning-snip .planning-snip-btn:hover{color:var(--ink-700)}.admin-page.planning-viewmode{background:var(--surface)}body:has(.planning-viewmode){background:var(--surface)}.planning-viewmode .planning-section-title,.planning-viewmode .planning-table,.planning-viewmode .planning-gantt-flagrail,.planning-viewmode .planning-tie-editor,.planning-viewmode .planning-annot-bar .nav-button,.planning-viewmode .planning-meta .nav-button,.planning-viewmode .planning-roster-add{display:none}.planning-viewmode .planning-gantt-labels{background:var(--surface)}.planning-viewmode .planning-msband-name.is-late{color:var(--ink-700)}.planning-vm-horseshoe{position:absolute;left:0;right:0;border:1px solid var(--ink-600);border-right:none;border-radius:var(--r-ctl) 0 0 var(--r-ctl);pointer-events:none;z-index:2}.planning-vm-card{font-weight:700}.planning-vm-card .planning-msband-title{font-size:var(--fs-md);letter-spacing:.01em}.planning-vm-subhead-text{font-size:var(--fs-sm);font-weight:600;fill:var(--ink-700)}.planning-viewmode .planning-lab-ssl .planning-lab-text{color:var(--ink-700);font-weight:600}.planning-vm-key{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);margin-bottom:var(--sp-2)}.planning-vm-key-toggle{border:none;background:none;cursor:pointer;font-size:var(--fs-sm);font-weight:600;color:var(--ink-500);padding:0}.planning-vm-key-row{display:inline-flex;align-items:center;gap:var(--sp-4)}.planning-vm-key-legend{display:inline-flex;gap:var(--sp-4);font-size:var(--fs-xs);color:var(--ink-500)}.planning-vm-key-glyph{color:var(--ink-700);font-weight:700;margin-right:2px}.planning-vm-key-margin{color:var(--ok-strong)}.planning-chart-head{display:flex;align-items:baseline;gap:var(--sp-3);margin:var(--sp-3) 0 var(--sp-1)}.planning-chart-scope{font-size:var(--fs-sm);font-weight:600;color:var(--ink-900)}.planning-chart-peaks{display:flex;align-items:baseline;gap:var(--sp-3);margin-left:auto;font-size:var(--fs-sm);color:var(--ink-500)}.planning-peak{font-variant-numeric:tabular-nums}.planning-peak b{color:var(--ink-900);font-weight:600}.planning-peak[data-peak=scope] b{color:var(--blue-700)}.planning-peak-live{color:var(--blue-600);font-size:var(--fs-xs)}.planning-chart{background:var(--surface);margin-bottom:var(--sp-2);transition:opacity .12s linear}.planning-chart-grid{display:flex;align-items:stretch;border-left:1px solid transparent;border-right:1px solid transparent}.planning-chart-gutter{width:var(--planning-label-w);flex:0 0 var(--planning-label-w);border-right:1px solid var(--line);position:relative}.planning-chart-unit{position:absolute;top:2px;right:var(--sp-2);font-size:var(--fs-2xs);font-weight:600;color:var(--ink-400);text-transform:uppercase;letter-spacing:.03em}.planning-chart-ytick{position:absolute;right:var(--sp-2);font-size:var(--fs-2xs);color:var(--ink-400);font-variant-numeric:tabular-nums}.planning-chart-plot{flex:1;min-width:0}.planning-chart.is-loading{opacity:.6}.planning-chart-empty{height:250px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line-strong);border-radius:var(--r-card);color:var(--ink-400);font-size:var(--fs-sm);margin-bottom:var(--sp-4)}.planning-bar.is-selected{cursor:pointer}.planning-bar{transition:opacity 80ms linear}.planning-bar-draggable{cursor:grab}.planning-gantt.is-dragging{-webkit-user-select:none;user-select:none}.planning-gantt.is-dragging .planning-bar-draggable{cursor:grabbing}.planning-bar-handle{fill:var(--surface);fill-opacity:.001;cursor:ew-resize}.planning-ghost rect{fill:var(--blue-ghost);stroke:var(--blue-600);stroke-width:1.5;stroke-dasharray:4 3;pointer-events:none}.planning-refghost{fill:none;stroke:var(--blue-600);stroke-width:1;stroke-dasharray:4 3;opacity:.45;pointer-events:none}.planning-ref-toggle{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-sm);color:var(--ink-500);cursor:pointer;-webkit-user-select:none;user-select:none}.planning-ref-toggle input{accent-color:var(--blue-600);cursor:pointer}.planning-caret{border:none;background:none;cursor:pointer;color:var(--ink-400);font-size:var(--fs-2xs);padding:0;width:12px;flex-shrink:0;line-height:1}.planning-caret:hover{color:var(--ink-700)}.planning-caret-spacer{display:inline-block;width:12px;flex-shrink:0}.planning-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin-bottom:var(--sp-8)}.planning-table th{text-align:left;font-size:var(--fs-xs);font-weight:600;color:var(--ink-500);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line-strong);position:sticky;top:0;background:var(--surface)}.planning-table td{padding:4px var(--sp-3);border-bottom:1px solid var(--line-faint);color:var(--ink-700);white-space:nowrap}.planning-num{text-align:right;font-variant-numeric:tabular-nums}.planning-table th.planning-num{text-align:right}.planning-table .planning-thead-groups th{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-400);text-align:left;padding:var(--sp-1) var(--sp-3) 2px;border-bottom:none}.planning-table th.planning-band-start,.planning-table td.planning-band-start{border-left:1px solid var(--line)}.planning-table .planning-thead-groups th{top:0}.planning-table thead tr:nth-child(2) th{top:22px}.planning-zero{color:var(--ink-400)}.planning-peak-bad{color:var(--bad-strong);background:var(--bad-bg);font-weight:600}.planning-tag{font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-xs);color:var(--ink-600);white-space:nowrap}.planning-ramp-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border:1px solid transparent;border-radius:var(--r-ctl);background:var(--bad-bg);color:var(--bad-strong);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer}.planning-ramp-chip.is-active{border-color:var(--bad-strong)}.planning-hovercard{position:fixed;z-index:60;pointer-events:none;min-width:216px;max-width:300px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm)}.planning-status-rule[data-pulse=y]{stroke:var(--bad);animation:planning-status-pulse .9s ease-in-out infinite}@keyframes planning-status-pulse{0%,to{stroke-width:1.5;opacity:.5}50%{stroke-width:3;opacity:1}}.planning-bar[data-start-clamped=y],.planning-bar[data-span-clamped=y]{stroke:var(--bad);stroke-width:2}.planning-clamp-hint{position:fixed;z-index:61;pointer-events:none;transform:translate(var(--sp-3),-160%);max-width:220px;padding:var(--sp-1) var(--sp-2);background:var(--bad);color:var(--surface);font-size:var(--fs-xs);font-weight:600;line-height:1.3;border-radius:var(--r-ctl);box-shadow:var(--shadow-md)}.planning-hover-head{display:flex;align-items:baseline;gap:var(--sp-2);margin-bottom:var(--sp-1)}.planning-hover-name{color:var(--ink-900);font-weight:600}.planning-hover-level{margin-left:auto;color:var(--ink-400);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.planning-hover-grid{display:grid;grid-template-columns:auto 1fr;column-gap:var(--sp-4);row-gap:2px}.planning-hover-lab{color:var(--ink-500);font-size:var(--fs-xs)}.planning-hover-num{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-700);font-weight:600}.planning-hover-zero{color:var(--ink-400);font-weight:400}.planning-hover-dates{margin-top:var(--sp-1);padding-top:var(--sp-1);border-top:1px solid var(--line-faint);font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-xs);color:var(--ink-600)}.planning-date{font-family:SF Mono,ui-monospace,monospace;color:var(--ink-600)}.planning-level{color:var(--ink-400);font-size:var(--fs-xs)}.planning-table-scope{display:flex;align-items:center;gap:4px;max-width:360px;overflow:hidden}.planning-table-scope span{overflow:hidden;text-overflow:ellipsis}.planning-tr.depth-0 td{font-weight:600;color:var(--ink-900);background:var(--surface-alt)}.planning-tr.depth-1 td{font-weight:500}.planning-tr td.planning-cur-date{color:var(--ink-400)}.planning-tr td.planning-delta-late{color:var(--bad-strong);font-weight:600}.admin-empty-state{text-align:center;padding:3rem;color:var(--color-secondary-text);font-size:.95rem}.upload-dropzone{border:2px dashed var(--line-strong);border-radius:10px;padding:3rem 2rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:var(--surface-alt)}.upload-dropzone:hover{border-color:var(--color-accent);background:#f0f7ff}.upload-dropzone-active{border-color:var(--color-accent);background:#eff6ff;border-style:solid}.upload-dropzone-has-file{border-color:#16a34a;background:#f0fdf4}.upload-dropzone-has-file:hover{border-color:#16a34a;background:#ecfdf5}.upload-dropzone-icon{font-size:2.5rem;margin-bottom:.75rem;opacity:.6}.upload-dropzone-text{font-size:.95rem;font-weight:500;color:var(--color-primary-text);margin-bottom:.35rem}.upload-dropzone-hint{font-size:.8rem;color:var(--color-secondary-text)}.upload-file-info{display:flex;flex-direction:column;align-items:center;gap:.25rem}.upload-file-icon{font-size:2.5rem;margin-bottom:.25rem}.upload-file-name{font-size:1rem;font-weight:600;color:var(--color-primary-text);word-break:break-all}.upload-file-size{font-size:.8rem;color:var(--color-secondary-text)}.upload-actions{display:flex;justify-content:center;gap:.75rem;margin-top:1rem}.upload-actions .admin-btn:disabled{opacity:.5;cursor:not-allowed}.upload-validation{margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--ink-700)}.upload-validation-checking{color:var(--ink-500);text-align:center}.upload-validation-clean{border:1px solid var(--ok);background:var(--ok-bg);color:var(--ok-strong);border-radius:var(--r-card);padding:var(--sp-3)}.upload-validation-group{border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-3);margin-bottom:var(--sp-3)}.upload-validation-errors{border-color:var(--bad);background:var(--bad-bg)}.upload-validation-warnings{border-color:var(--warn);background:var(--warn-bg)}.upload-validation-group h4{margin:0 0 var(--sp-2);font-size:var(--fs-md);font-weight:600}.upload-validation-errors h4{color:var(--bad-strong)}.upload-validation-warnings h4{color:var(--warn)}.upload-validation-group ul{margin:0;padding-left:var(--sp-4)}.upload-validation-group li{margin-bottom:var(--sp-2);line-height:1.45}.upload-validation-where{color:var(--ink-500);font-family:SF Mono,ui-monospace,monospace;font-size:var(--fs-xs)}.upload-validation-hint{margin:var(--sp-2) 0 0;color:var(--ink-500);font-size:var(--fs-xs)}.upload-progress-card{background:#fff;border:1px solid var(--color-border);border-radius:10px;padding:2rem;box-shadow:var(--shadow-sm)}.upload-progress-status{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}.upload-spinner{width:22px;height:22px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}.upload-phase-label{font-size:1rem;font-weight:600;color:var(--color-primary-text)}.upload-steps{display:flex;justify-content:center;gap:2rem;margin-bottom:1.5rem}.upload-step{display:flex;align-items:center;gap:.4rem;color:var(--color-secondary-text);font-size:.85rem}.upload-step-indicator{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-strong);display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;flex-shrink:0;transition:all .2s}.upload-step-active .upload-step-indicator{border-color:var(--color-accent);color:var(--color-accent);background:#eff6ff;font-size:1rem}.upload-step-active .upload-step-label{color:var(--color-accent);font-weight:600}.upload-step-done .upload-step-indicator{border-color:#16a34a;background:#16a34a;color:#fff}.upload-step-done .upload-step-label{color:#16a34a}.upload-summary{margin-top:.5rem}.upload-summary-title{font-size:1.1rem;font-weight:700;color:#16a34a;text-align:center;margin-bottom:1.25rem}.upload-summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-bottom:1.5rem}.upload-summary-item{display:flex;flex-direction:column;gap:.15rem;padding:.6rem .75rem;background:var(--surface-alt);border:1px solid var(--color-border);border-radius:6px}.upload-summary-label{font-size:.72rem;font-weight:600;color:var(--color-secondary-text);text-transform:uppercase;letter-spacing:.03em}.upload-summary-value{font-size:.95rem;font-weight:600;color:var(--color-primary-text)}.upload-summary-actions{display:flex;justify-content:center;gap:.75rem}.upload-projects-section{margin-top:2rem}.upload-projects-title{font-size:.9rem;font-weight:600;color:var(--color-secondary-text);margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.03em}.planning-lab-msband{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}.planning-msband-head,.planning-msband-namewrap{flex:none}.planning-msband-head{display:flex;align-items:center;gap:var(--sp-1);border:none;cursor:pointer;padding:0 var(--sp-1) 0 6px;text-align:left}.planning-msband-head:hover{filter:brightness(.92)}.planning-msband-head .planning-msband-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-msband-name{display:flex;align-items:center;gap:var(--sp-1);border:none;background:transparent;cursor:pointer;text-align:left;padding:0 var(--sp-1) 0 calc(var(--sp-2) + 16px);font-size:var(--fs-sm);color:var(--ink-700);white-space:nowrap;overflow:hidden}.planning-msband-name-text{overflow:hidden;text-overflow:ellipsis}.planning-msband-namewrap{display:flex;flex-direction:column;align-items:stretch}.planning-frag-glyph{display:inline-flex;align-items:center;gap:1px;flex:none;color:var(--ink-400);border-radius:var(--r-ctl);padding:0 2px}.planning-frag-glyph:hover{color:var(--blue-600);background:var(--blue-100)}.planning-lab-kmband{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;overflow:hidden}.planning-kmband-head{flex:none;display:flex;align-items:center;gap:var(--sp-1);border:none;padding:0 var(--sp-1) 0 6px;text-align:left}.planning-kmband-head .planning-msband-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-kmband-agenda{position:absolute;left:var(--sp-3);right:var(--sp-2);display:flex;align-items:center;gap:var(--sp-1);height:16px;font-size:var(--fs-sm);color:var(--ink-700);overflow:hidden;white-space:nowrap}.planning-kmband-agenda-dia{width:8px;height:8px;flex-shrink:0;transform:rotate(45deg)}.planning-kmband-agenda-name{overflow:hidden;text-overflow:ellipsis}.planning-km-name{font-size:var(--fs-sm);font-weight:600;fill:var(--ink-900);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.planning-km-date{font-size:var(--fs-sm);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.planning-km-badge{font-size:var(--fs-sm);font-weight:600;font-variant-numeric:tabular-nums}.planning-km-menu select{margin:2px 6px 4px;font-size:var(--fs-sm);max-width:220px}.planning-km-menu-pctrow{display:flex;align-items:center;gap:var(--sp-1);padding-right:var(--sp-2)}.planning-km-menu-pctrow input{width:52px;height:24px;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-1)}.planning-hover-kmhint{color:var(--ink-400);font-size:var(--fs-2xs)}.planning-frag-seatdate,.planning-frag-needdate,.planning-km-date,.planning-studio-pass{font-weight:var(--date-emph-weight);fill:var(--ink-900);font-variant-numeric:tabular-nums}.planning-frag-mirror{font-size:var(--fs-2xs);font-weight:700;fill:var(--ink-500);font-variant-numeric:tabular-nums}.planning-frag-caret{font-size:var(--fs-sm);font-weight:700;fill:var(--ink-400)}.planning-frag-caret:hover{fill:var(--ink-700)}.planning-frag-label{font-size:var(--fs-sm);font-weight:600;fill:var(--ink-900);paint-order:stroke;stroke:var(--surface);stroke-width:2.5px}.planning-flag-datelabel{font-size:var(--fs-sm);font-weight:600;fill:var(--ink-600);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--surface);stroke-width:2px}.planning-ms-dropbuf{font-size:var(--fs-2xs);font-weight:600;paint-order:stroke;stroke:var(--surface);stroke-width:2.5px}.planning-hover-tie{font-size:var(--fs-2xs);color:var(--ink-500);display:flex;align-items:center;gap:3px;margin-top:2px}.planning-bp-pop{position:fixed;z-index:60;min-width:480px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2)}.planning-bp-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:600;color:var(--ok-strong)}.planning-bp-head.is-late{color:var(--bad-strong)}.planning-bp-close{border:none;background:none;color:var(--ink-400);font-size:var(--fs-md);line-height:1;cursor:pointer;padding:0 2px}.planning-bp-close:hover{color:var(--ink-700)}.planning-bp-sub{font-size:var(--fs-2xs);color:var(--ink-500);margin:2px 0 var(--sp-1)}.planning-bp-branchhead{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-500);margin:var(--sp-2) 0 2px;border-top:1px solid var(--line-faint);padding-top:var(--sp-1)}.planning-bp-branchhead.is-driving{color:var(--bad-strong)}.planning-bp-table{width:100%;border-collapse:collapse;font-size:var(--fs-xs);color:var(--ink-700)}.planning-bp-table th{text-align:left;font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-400);border-bottom:1px solid var(--line);padding:2px var(--sp-2) 2px 0}.planning-bp-table td{padding:3px var(--sp-2) 3px 0;border-bottom:1px solid var(--line-faint);font-variant-numeric:tabular-nums;white-space:nowrap}.planning-bp-table tr.is-late td{color:var(--bad-strong)}.planning-tie-adv{display:inline-flex;align-items:center;gap:var(--sp-1)}.planning-tie-adv-btn{border:1px solid var(--line);background:var(--surface);color:var(--ink-400);font-size:var(--fs-2xs);border-radius:var(--r-ctl);padding:2px 5px;cursor:pointer}.planning-tie-adv-btn:hover{color:var(--ink-700);border-color:var(--line-strong)}.planning-frag-rename{position:fixed;z-index:70}.planning-frag-rename input{width:100%;font-size:var(--fs-sm);font-weight:600;padding:3px 6px;border:1px solid var(--blue-600);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-900);box-shadow:var(--shadow-md)}.planning-frag-ins{opacity:0;transition:opacity 80ms linear}[data-frag-lane]:hover .planning-frag-ins{opacity:.45}.planning-frag-ins:hover{opacity:1}.planning-inspick{width:150px}.planning-ms-dialog{position:fixed;top:auto;z-index:55;width:640px;height:auto;max-height:440px;overflow-x:hidden;overflow-y:auto;flex-wrap:wrap;align-items:center;row-gap:var(--sp-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-3)}.planning-frag-editor{position:fixed;z-index:60;width:640px;max-height:360px;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2);display:flex;flex-direction:column;gap:2px}.planning-frag-editor-head{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-xs);font-weight:600;color:var(--ink-700);padding:0 var(--sp-1) var(--sp-1)}.planning-frag-editor-count{color:var(--ink-400);font-weight:400}.planning-tpl-manage{width:460px}.planning-frag-editrow.planning-tpl-row{grid-template-columns:20px 1fr 64px 22px 22px 22px}.planning-tpl-newrow{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-1) 0}.planning-tpl-newrow input{flex:1;font-size:var(--fs-xs);padding:2px 4px;border:1px solid var(--line);border-radius:var(--r-ctl);min-width:0}.planning-tpl-kind{background:none;border:none;cursor:pointer;font-size:var(--fs-sm);color:var(--ink-500);padding:0}.planning-tpl-kind:hover{color:var(--blue-600)}.planning-frag-editor-feederhead{margin-top:var(--sp-1);border-top:1px solid var(--line-faint);padding-top:var(--sp-1);color:var(--ink-500)}.planning-headanchor{display:inline-flex;align-items:center;gap:var(--sp-1)}.planning-frag-editrow{display:grid;grid-template-columns:14px 1fr 110px 52px 92px 92px 22px 22px 22px;align-items:center;gap:var(--sp-1);padding:2px var(--sp-1);border-radius:var(--r-ctl);font-size:var(--fs-xs)}.planning-frag-editrow:hover{background:var(--line-faint)}.planning-frag-editrow.is-selected{background:var(--blue-100)}.planning-frag-editrow input,.planning-frag-editrow select{font-size:var(--fs-xs);padding:2px 4px;border:1px solid var(--line);border-radius:var(--r-ctl);min-width:0;width:100%}.planning-frag-grip{color:var(--ink-400);cursor:grab;letter-spacing:-2px;-webkit-user-select:none;user-select:none}.planning-frag-editrow-nodur{color:var(--ink-400);text-align:center}.planning-frag-editrow-btn{border:none;background:none;color:var(--ink-400);font-size:var(--fs-sm);line-height:1;cursor:pointer;border-radius:var(--r-ctl);padding:2px}.planning-frag-editrow-btn:hover{color:var(--blue-600);background:var(--blue-100)}.planning-frag-editor-foot{display:flex;align-items:center;gap:var(--sp-2);padding-top:var(--sp-1);border-top:1px solid var(--line-faint)}.planning-fragmenu{position:fixed;z-index:60;width:230px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-1);display:flex;flex-direction:column}.planning-fragmenu-head{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.04em;padding:var(--sp-1) var(--sp-2)}.planning-fragmenu-item{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);border:none;background:transparent;cursor:pointer;text-align:left;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-ctl);font-size:var(--fs-xs);color:var(--ink-700)}.planning-fragmenu-item:hover{background:var(--blue-100)}.planning-fragmenu-name{font-weight:600}.planning-fragmenu-steps{font-size:var(--fs-2xs);color:var(--ink-400)}.planning-ms-derived-date{font-size:var(--fs-xs);color:var(--ink-500);font-variant-numeric:tabular-nums;white-space:nowrap}.planning-ms-classchip{display:inline-flex;align-items:center;gap:3px;flex:none;font-size:var(--fs-2xs);font-weight:600}.planning-msband-name:hover{color:var(--blue-600)}.planning-msband-name.is-late{color:var(--bad-strong);font-weight:600}.planning-msband-name.is-selected{color:var(--blue-600);font-weight:600}.planning-msband-name.is-hidden{opacity:.45}.planning-msband-label{font-size:var(--fs-2xs);font-weight:600;fill:var(--ink-500);paint-order:stroke;stroke:var(--surface);stroke-width:3px;font-variant-numeric:tabular-nums}.planning-msband-label.is-untied{fill:var(--warn)}.planning-ms-bufbadge{font-size:var(--fs-sm);font-weight:600;font-variant-numeric:tabular-nums}.planning-msband-badge{font-size:var(--fs-2xs);font-weight:600;font-variant-numeric:tabular-nums}.planning-class-chips{display:inline-flex;gap:var(--sp-1);align-items:center}.planning-class-chip{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);font-size:var(--fs-2xs);font-weight:600;color:var(--ink-600);cursor:pointer}.planning-class-chip:hover{border-color:var(--line-strong)}.planning-class-chip.is-off{opacity:.45}.planning-class-chip.is-off .planning-class-dot{background:var(--ink-400)!important}.planning-class-dot{width:8px;height:8px;border-radius:50%;flex:none}.planning-extra-tie-chip{display:inline-flex;align-items:center;gap:3px;height:22px;padding:0 var(--sp-1) 0 var(--sp-2);border-radius:var(--r-ctl);background:var(--color-background);border:1px solid var(--line);font-size:var(--fs-2xs);font-weight:600;color:var(--ink-600);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planning-extra-tie-chip[data-ok=y]{color:var(--ok-strong);background:var(--ok-bg);border-color:transparent}.planning-extra-tie-chip[data-ok=n]{color:var(--bad-strong);background:var(--bad-bg);border-color:transparent}.planning-extra-tie-x{border:none;background:transparent;color:inherit;cursor:pointer;font-size:var(--fs-sm);line-height:1;padding:0 2px}.planning-extra-tie-x:hover{color:var(--bad-strong)}.planning-extra-tie-editor{position:fixed;z-index:60;display:flex;align-items:center;gap:var(--sp-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2)}.planning-ms-desc input{min-width:150px}.planning-classmgr{position:relative;display:inline-flex}.planning-classmgr-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:var(--r-ctl);background:transparent;color:var(--ink-400);cursor:pointer;font-size:var(--fs-xs);padding:0}.planning-classmgr-btn:hover{color:var(--blue-600);background:var(--blue-100)}.planning-classmgr-panel{position:fixed;z-index:60;width:280px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-2);display:flex;flex-direction:column;gap:var(--sp-1)}.planning-classmgr-head{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-500);text-transform:uppercase;letter-spacing:.04em;padding:0 2px var(--sp-1)}.planning-classmgr-row{display:flex;align-items:center;gap:var(--sp-2)}.planning-classmgr-row input{flex:1;min-width:0;height:24px;border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 var(--sp-1);font-size:var(--fs-xs);color:var(--ink-700)}.planning-classmgr-row input:focus{outline:none;border-color:var(--blue-500)}.planning-classmgr-new{border-top:1px solid var(--line-faint);padding-top:var(--sp-1)}.planning-classmgr-swatches{display:inline-flex;gap:3px}.planning-classmgr-swatch{width:14px;height:14px;border-radius:50%;border:1px solid var(--line);cursor:pointer;padding:0}.planning-classmgr-swatch[aria-pressed=true]{outline:2px solid var(--blue-600);outline-offset:1px}.planning-classmgr-err{font-size:var(--fs-2xs);color:var(--bad-strong);padding:0 2px}.planning-classmgr-note{font-size:var(--fs-2xs);color:var(--ink-400);padding:0 2px}.planning-qc-name input{min-width:170px}.planning-qc-hint{font-size:var(--fs-2xs);color:var(--ink-400);white-space:nowrap}.planning-msband-add{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:var(--sp-1);border-radius:var(--r-ctl);color:var(--surface);opacity:.85;font-size:var(--fs-sm);line-height:1}.planning-msband-add:hover{opacity:1;background:#ffffff2e}.planning-msband-add[data-msband-add],.planning-msband-addstring{width:auto;padding:0 var(--sp-1);flex-shrink:0;white-space:nowrap}.planning-msband-head .planning-msband-title{flex:1 1 auto;min-width:0}.planning-reports{display:flex;flex-direction:column;gap:var(--sp-3)}.planning-reports-toolbar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0}.planning-reports-title{font-size:var(--fs-lg);font-weight:600;color:var(--ink-700)}.planning-reports-jump{height:32px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);padding:0 var(--sp-2);margin-left:auto}.planning-report-btn{height:32px;padding:0 var(--sp-3);border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);font-weight:600;cursor:pointer}.planning-report-btn:hover{border-color:var(--line-strong)}.planning-report-btn-primary{height:32px;padding:0 var(--sp-3);border:1px solid var(--blue-600);border-radius:var(--r-ctl);background:var(--blue-600);color:var(--surface);font-size:var(--fs-sm);font-weight:600;cursor:pointer}.planning-report-btn-primary:hover{background:var(--blue-700);border-color:var(--blue-700)}.planning-reports-body{display:flex;gap:var(--sp-4);align-items:flex-start}.planning-reports-rail{flex:0 0 240px;display:flex;flex-direction:column;gap:var(--sp-1);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-2);position:sticky;top:var(--sp-2)}.planning-reports-new{width:100%;margin-bottom:var(--sp-1)}.planning-reports-railhead{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-400);text-transform:uppercase;letter-spacing:.06em;padding:var(--sp-1) var(--sp-1) 0}.planning-reports-railhead-saved{margin-top:var(--sp-2);border-top:1px solid var(--line);padding-top:var(--sp-2)}.planning-reports-driversearch{height:26px;border:1px solid var(--line);border-radius:var(--r-ctl);font-size:var(--fs-xs);padding:0 var(--sp-2);margin:var(--sp-1) 0}.planning-reports-drivers{overflow-y:auto;max-height:46vh;display:flex;flex-direction:column;gap:1px}.planning-reports-railsl{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-500);padding:var(--sp-1) var(--sp-1) 0}.planning-reports-driveritem{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%;border:none;background:none;text-align:left;cursor:pointer;font-size:var(--fs-sm);color:var(--ink-700);padding:3px var(--sp-2);border-radius:var(--r-ctl)}.planning-reports-driveritem:hover{background:var(--line-faint)}.planning-reports-driveritem.is-selected{background:var(--blue-100);color:var(--ink-900);font-weight:600}.planning-reports-drivername{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-reports-driverbadge{font-size:var(--fs-2xs);font-weight:600;font-variant-numeric:tabular-nums;border:1px solid;border-radius:var(--r-ctl);padding:0 var(--sp-1);flex:none}.planning-reports-driverbadge.is-late{color:var(--bad-strong);border-color:var(--bad-strong);background:var(--bad-bg)}.planning-reports-driverbadge.is-ok{color:var(--ok-strong);border-color:var(--ok-strong);background:var(--ok-bg)}.report-offender-link{cursor:pointer}.report-offender-link:hover{background:var(--line-faint)}.report-aff-halo{paint-order:stroke;stroke:var(--surface);stroke-width:2.5px}.planning-reports-railnote{font-size:var(--fs-xs);color:var(--ink-400);padding:var(--sp-1) var(--sp-1)}.planning-reports-railerr{font-size:var(--fs-2xs);color:var(--bad-strong);padding:0 var(--sp-1)}.planning-reports-item{display:flex;align-items:center;gap:var(--sp-1);border-radius:var(--r-ctl);padding:2px var(--sp-1)}.planning-reports-item.is-selected{background:var(--blue-100)}.planning-reports-itemname{flex:1;display:flex;align-items:center;gap:var(--sp-2);min-width:0;border:none;background:none;cursor:pointer;text-align:left;font-size:var(--fs-sm);color:var(--ink-700);padding:var(--sp-1) 0}.planning-reports-itemname:hover{color:var(--ink-900)}.planning-reports-itemn{font-size:var(--fs-2xs);color:var(--ink-400);flex:none}.planning-reports-itemops{display:inline-flex;gap:2px;flex:none}.planning-reports-op{border:none;background:none;color:var(--ink-400);cursor:pointer;font-size:var(--fs-xs);padding:2px 3px;border-radius:var(--r-ctl)}.planning-reports-op:hover{color:var(--ink-700);background:var(--line-faint)}.planning-reports-op-danger{color:var(--bad-strong);font-weight:600}.planning-reports-rename{flex:1;height:24px;border:1px solid var(--blue-500);border-radius:var(--r-ctl);font-size:var(--fs-sm);color:var(--ink-700);padding:0 var(--sp-1)}.planning-reports-pages{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-6)}.planning-reports-emptymain{color:var(--ink-400);font-size:var(--fs-md);padding:var(--sp-8);text-align:center}.report-page{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-6)}.report-page-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);border-bottom:1px solid var(--line);padding-bottom:var(--sp-3);margin-bottom:var(--sp-4)}.report-page-title{font-size:var(--fs-xl);font-weight:600;color:var(--ink-900);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-page-meta{font-size:var(--fs-2xs);color:var(--ink-400);white-space:nowrap;flex:0 1 auto;margin-left:auto}.report-page-date{font-family:SF Mono,monospace}.report-page-missing{color:var(--ink-400);font-size:var(--fs-sm)}.planning-report-builder{position:fixed;left:50%;top:12vh;transform:translate(-50%);width:640px;max-height:70vh;overflow-y:auto;z-index:60;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-card);box-shadow:var(--shadow-md);padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3)}.planning-report-builder-head{font-size:var(--fs-lg);font-weight:600;color:var(--ink-900)}.planning-report-builder-name{height:32px;border:1px solid var(--line);border-radius:var(--r-ctl);font-size:var(--fs-md);color:var(--ink-700);padding:0 var(--sp-2)}.planning-report-builder-cols{display:flex;gap:var(--sp-4);min-height:0}.planning-report-builder-pick,.planning-report-builder-list{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-2)}.planning-report-builder-sub{font-size:var(--fs-xs);font-weight:600;color:var(--ink-500)}.planning-report-addoff{height:28px;border:1px solid var(--line);border-radius:var(--r-ctl);background:var(--surface);color:var(--ink-700);font-size:var(--fs-sm);font-weight:600;cursor:pointer;text-align:left;padding:0 var(--sp-2)}.planning-report-addoff:hover:not(:disabled){border-color:var(--line-strong)}.planning-report-builder-search{height:28px;border:1px solid var(--line);border-radius:var(--r-ctl);font-size:var(--fs-sm);color:var(--ink-700);padding:0 var(--sp-2)}.planning-report-builder-drivers{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;border:1px solid var(--line-faint);border-radius:var(--r-ctl);padding:var(--sp-1)}.planning-report-builder-sl{font-size:var(--fs-2xs);font-weight:600;color:var(--ink-400);text-transform:uppercase;letter-spacing:.04em;padding:var(--sp-1) var(--sp-1) 2px}.planning-report-builder-driver{border:none;background:none;text-align:left;cursor:pointer;font-size:var(--fs-sm);color:var(--ink-700);padding:2px var(--sp-2);border-radius:var(--r-ctl)}.planning-report-builder-driver:hover:not(:disabled){background:var(--line-faint)}.planning-report-builder-driver:disabled{color:var(--ink-400);cursor:default}.planning-report-builder-none{font-size:var(--fs-xs);color:var(--ink-400);padding:var(--sp-1)}.planning-report-builder-row{display:flex;align-items:center;gap:var(--sp-1);border:1px solid var(--line-faint);border-radius:var(--r-ctl);padding:2px var(--sp-1);font-size:var(--fs-sm);color:var(--ink-700)}.planning-report-builder-rowname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planning-report-builder-count{width:48px;height:22px;border:1px solid var(--line);border-radius:var(--r-ctl);font-size:var(--fs-xs);color:var(--ink-700);padding:0 var(--sp-1);font-variant-numeric:tabular-nums}.planning-report-builder-mv,.planning-report-builder-x{border:none;background:none;color:var(--ink-400);cursor:pointer;font-size:var(--fs-xs);padding:2px 3px;border-radius:var(--r-ctl)}.planning-report-builder-mv:hover,.planning-report-builder-x:hover{color:var(--ink-700);background:var(--line-faint)}.planning-report-builder-err{font-size:var(--fs-xs);color:var(--bad-strong)}.planning-report-builder-actions{display:flex;gap:var(--sp-2);justify-content:flex-end}.report-kicker{font-size:var(--fs-xl);font-weight:700;color:var(--ink-900);margin-bottom:var(--sp-3)}.report-block{margin-top:var(--sp-4)}[data-report-body=impact] .report-block{margin-top:var(--sp-6)}.report-block-title{font-size:var(--fs-sm);font-weight:600;color:var(--ink-500);margin-bottom:var(--sp-2)}.report-block-note{font-size:var(--fs-xs);color:var(--ink-400);margin-top:var(--sp-1)}.report-block-note-inline{font-size:var(--fs-xs);font-weight:400;color:var(--ink-400)}.report-affected{margin-top:var(--sp-2)}.report-mitigation{border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-3)}.report-mit-preview{margin-left:var(--sp-2);font-size:var(--fs-2xs);font-weight:600;color:var(--warn);border:1px solid var(--warn);border-radius:var(--r-ctl);padding:1px var(--sp-1);text-transform:uppercase;letter-spacing:.04em}.report-mit-selector{font-size:var(--fs-sm);color:var(--ink-700);display:inline-block;margin:var(--sp-2) 0}.report-mit-selector input{width:56px;height:26px;border:1px solid var(--line);border-radius:var(--r-ctl);font-size:var(--fs-sm);text-align:right;padding:0 var(--sp-1);font-variant-numeric:tabular-nums}.report-mit-none,.report-mit-note{font-size:var(--fs-sm);color:var(--ink-500)}.report-mit-err{font-size:var(--fs-sm);color:var(--bad-strong)}.report-mit-lines{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:var(--sp-1)}.report-mit-line{display:flex;align-items:baseline;gap:var(--sp-3);font-size:var(--fs-md);color:var(--ink-700)}.report-mit-scopename{font-weight:600;min-width:220px}.report-mit-numbers{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink-900)}.report-mit-was{font-weight:400;color:var(--ink-500)}.report-kicker-mit{color:var(--bad-strong)}.report-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);color:var(--ink-700)}.report-table th{text-align:left;font-size:var(--fs-2xs);font-weight:600;color:var(--ink-400);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line);padding:var(--sp-1) var(--sp-2)}.report-table td{border-bottom:1px solid var(--line-faint);padding:var(--sp-1) var(--sp-2)}.report-num{font-variant-numeric:tabular-nums;white-space:nowrap}[data-report-bp-table] .report-num{text-align:right}[data-report-bp-table] th:not(:first-child){text-align:right}.report-bp-flagged td{background:var(--bad-bg);font-weight:600}.report-badge{display:inline-block;padding:1px var(--sp-2);border-radius:var(--r-ctl);font-size:var(--fs-xs);font-weight:700;font-variant-numeric:tabular-nums;border:1px solid var(--line)}.report-badge-ok{color:var(--ok-strong);background:var(--ok-bg);border-color:var(--ok)}.report-badge-bad{color:var(--bad-strong);background:var(--bad-bg);border-color:var(--bad)}.report-badge-none{color:var(--ink-400)}.report-driving-chip{font-size:var(--fs-2xs);font-weight:700;letter-spacing:.05em;color:var(--bad-strong);background:var(--bad-bg);border-radius:var(--r-ctl);padding:1px var(--sp-1)}.report-actby-line{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1) 0;font-size:var(--fs-md);color:var(--ink-700);min-width:0}.report-actby-name{font-weight:600;color:var(--ink-900);flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-actby-date{font-variant-numeric:tabular-nums;white-space:nowrap}.report-actby-step{color:var(--ink-500);font-size:var(--fs-sm);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-actby-page{font-size:var(--fs-xs);color:var(--ink-400)}.report-summary-lines{margin-top:var(--sp-4);display:flex;flex-direction:column;gap:2px}.report-missing{color:var(--ink-400);font-weight:400}.report-facts{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--ink-500);border-top:1px solid var(--line-faint);padding-top:var(--sp-3)}.report-facts--head{margin-top:0;border-top:none;padding-top:0;margin-bottom:var(--sp-3)}.report-facts strong{color:var(--ink-700);font-variant-numeric:tabular-nums}.report-mono{font-family:SF Mono,monospace;font-size:var(--fs-xs)}.report-description{margin-top:var(--sp-3);padding:var(--sp-3);background:var(--surface-alt);border:1px solid var(--line-faint);border-radius:var(--r-ctl);font-size:var(--fs-sm);color:var(--ink-700);white-space:pre-wrap}.report-offender-row{display:flex;align-items:center;gap:var(--sp-3);border-bottom:1px solid var(--line-faint);padding:var(--sp-1) 0}.report-offender-row>.report-actby-line{flex:1;min-width:0}.report-offender-rank{flex:none;width:22px;text-align:right;font-size:var(--fs-sm);font-weight:700;color:var(--ink-400);font-variant-numeric:tabular-nums}.report-spark{flex:none}.report-spark-none{color:var(--ink-400);font-size:var(--fs-xs)}.report-flagrail{margin-bottom:var(--sp-2)}.planning-snip .planning-reports-toolbar,.planning-snip .planning-reports-rail{display:none}.planning-snip .planning-reports-pages{max-width:1100px;margin:0 auto}.report-print-flagrail{display:none}@media print{@page{size:letter landscape;margin:9mm}body{background:var(--surface)}.admin-header-bar,.planning-reports-toolbar,.planning-reports-rail,[data-room-body]{display:none!important}.admin-page{max-width:none;padding:0;margin:0}.planning-reports-body,.planning-reports-pages{display:block}.report-page{page-break-after:always;break-inside:avoid;border:none;border-radius:0;padding:0 0 var(--sp-4) 0}.report-page:last-child{page-break-after:auto}.report-print-flagrail{display:block;border-bottom:1px solid var(--line);margin-bottom:var(--sp-2)}.report-page,.report-page *{-webkit-print-color-adjust:exact;print-color-adjust:exact}}@media print{.report-page-title{font-size:var(--fs-lg)}.report-page-head{padding-bottom:var(--sp-2);margin-bottom:var(--sp-2)}.report-kicker{font-size:var(--fs-md);margin-bottom:var(--sp-1)}.report-table{font-size:var(--fs-xs)}.report-table td{padding:2px var(--sp-2)}.report-block,[data-report-body=impact] .report-block{margin-top:var(--sp-2)}.report-facts{margin-top:var(--sp-2);padding-top:var(--sp-2)}.report-facts--head{margin-top:0;padding-top:0;margin-bottom:var(--sp-1)}.report-description{margin-top:var(--sp-2);padding:var(--sp-2);font-size:var(--fs-xs)}}.planning-tie-buffer.is-asserted{background:transparent;border:1px dashed currentColor}.planning-reports-railsort{display:flex;gap:2px;padding:0 var(--sp-2) var(--sp-2)}.planning-reports-sortbtn{flex:1;height:24px;font-size:var(--fs-xs);font-weight:600;color:var(--ink-500);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-ctl);cursor:pointer}.planning-reports-sortbtn:hover{color:var(--blue-600);border-color:var(--line-strong)}.planning-reports-sortbtn.is-active{color:var(--surface);background:var(--blue-600);border-color:var(--blue-600)}.report-mit-table{margin-top:var(--sp-3);width:100%}.report-mit-table td,.report-mit-table th{padding:4px var(--sp-2)}.report-mit-table .report-num{font-variant-numeric:tabular-nums;text-align:right}.report-mit-table .report-num.is-worse{color:var(--bad-strong);font-weight:600}.planning-connections{flex-basis:100%;display:flex;flex-direction:column;align-items:stretch;gap:var(--sp-1);border-top:1px solid var(--line);padding-top:var(--sp-2);margin-top:var(--sp-1)}.planning-connections-head{font-size:var(--fs-2xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500)}.planning-conn-row{display:flex;align-items:center;gap:var(--sp-2);min-height:24px}.planning-conn-sentence{font-size:var(--fs-sm);color:var(--ink-700);flex:1;min-width:0}.planning-conn-row[data-ok=warn] .planning-conn-sentence{color:var(--warn)}.planning-dlg-section{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);border-top:1px solid var(--line);padding-top:var(--sp-2);margin-top:var(--sp-1)}.planning-dlg-section[data-dlg-section=identity]{border-top:none;margin-top:0;padding-top:0}.planning-dlg-head{flex-basis:100%;font-size:var(--fs-2xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-500)}.planning-dlg-hint{flex-basis:100%;font-size:var(--fs-xs);color:var(--ink-400)}.planning-conn-edit{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);padding:var(--sp-1) 0 var(--sp-1) var(--sp-4);border-left:2px solid var(--line);margin-left:var(--sp-2)}.planning-conn-pencil{border:none;background:none;cursor:pointer;color:var(--ink-400);font-size:var(--fs-sm);line-height:1;padding:2px 4px;border-radius:var(--r-ctl)}.planning-conn-pencil:hover{color:var(--blue-600);background:var(--line-faint)}.planning-str-delete{margin-left:var(--sp-8);color:var(--bad-strong);border-color:var(--line)}.planning-str-delete:hover{background:var(--bad-bg);border-color:var(--bad)}.planning-str-delete-confirm{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--bad);border-radius:var(--r-card);background:var(--bad-bg)}.planning-str-delete-title{font-size:var(--fs-md);font-weight:600;color:var(--ink-900);margin-bottom:var(--sp-2)}.planning-str-delete-confirm[data-str-delete-blocked=y]{border-color:var(--warn);background:var(--warn-bg)}.planning-problemstrings{background:var(--surface);color:var(--ink-900)}.planning-ps-chrome{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin:var(--sp-3) 0 0}.planning-ps-meta{font-size:var(--fs-sm);color:var(--ink-500);font-variant-numeric:tabular-nums}.planning-ps-pager{display:flex;align-items:center;gap:var(--sp-1);flex-wrap:wrap}@media print{.planning-ps-chrome{display:none}}
