:root{--bg-primary: #121212;--bg-secondary: #1a1a1a;--bg-tertiary: #242424;--bg-card: #1e1e1e;--border: #333333;--border-active: #4d4d4d;--border-row: rgba(51,51,51,.5);--text-primary: #d9d9d9;--text-secondary: #999999;--text-muted: #666666;--accent-drill: #3b82f6;--accent-load: #f59e0b;--accent-blast: #ef4444;--accent-fire: #ff6b35;--accent-green: #10b981;--accent-purple: #8b5cf6;--accent-cyan: #06b6d4;--accent-brand: #e53935;--accent-prep: #14b8a6;--presplit: #a78bfa;--buffer: #38bdf8;--production: #f97316;--waste: #6b7280;--ore: #fbbf24;--yellow-zone: #eab308;--batter: #ef4444;--stab: #a78bfa;--face: #22c55e;--contour: #ec4899;--toe: #14b8a6;--ramp: #8b5cf6;--sump: #06b6d4;--custom-type: #94a3b8;--gantt-prep: #14b8a6;--gantt-drill: #3b82f6;--gantt-load: #f59e0b;--gantt-blast: #ef4444;--gantt-complete: #10b981;--gantt-planned: #374151;--shadow: 0 4px 24px rgba(0,0,0,.5);--radius: 4px;--radius-lg: 4px;--hover-overlay: rgba(255,255,255,.03);--bg-weekend: #1a1a1e;--plan-band-even: transparent;--plan-band-odd: rgba(255,255,255,.03);color-scheme:dark}:root[data-theme=light]{--bg-primary: #c4c4c4;--bg-secondary: #cccccc;--bg-tertiary: #d6d6d6;--bg-card: #e8e8e8;--border: #aaaaaa;--border-active: #888888;--border-row: rgba(160,160,160,.5);--text-primary: #1a1a1a;--text-secondary: #444444;--text-muted: #777777;--gantt-planned: #b8b8b8;--shadow: 0 4px 24px rgba(0,0,0,.15);--hover-overlay: rgba(0,0,0,.04);--bg-weekend: #dcdcdc;--plan-band-even: transparent;--plan-band-odd: rgba(0,0,0,.035);color-scheme:light}:root[data-cb=true]{--accent-blast: #cc3377;--accent-green: #2196f3;--accent-fire: #cc3377;--gantt-blast: #cc3377;--gantt-complete: #2196f3}:root[data-cb=true] .dep-warning{background:#c373;color:var(--accent-blast)}:root[data-cb=true] .dep-ok{background:#2196f333;color:var(--accent-green)}:root[data-cb=true] .badge-blast{background:#cc337726;color:var(--accent-blast)}:root[data-cb=true] .badge-complete{background:#2196f326;color:var(--accent-green)}body,.app-header,.tab-bar,.tab,.stat-card,.data-table-container,.gantt-container,.settings-bar,.pattern-card,.drop-zone,.modal,.tooltip,.context-menu,.btn{transition:background-color .3s ease,color .3s ease,border-color .3s ease}*{margin:0;padding:0;box-sizing:border-box}body{font-family:DM Sans,Arial,Helvetica,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow-x:hidden;min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-active);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--accent-drill)}.app-header{background:linear-gradient(180deg,var(--bg-secondary) 0%,var(--bg-primary) 100%);border-bottom:1px solid var(--border);padding:12px 24px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.app-logo{display:flex;align-items:center;gap:12px}.app-logo svg{width:32px;height:32px}.app-logo img{width:32px;height:32px;border-radius:var(--radius)}.app-logo h1{font-family:JetBrains Mono,monospace;font-size:18px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(135deg,var(--accent-brand),var(--accent-fire));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.app-logo .subtitle{font-size:13px;color:var(--text-muted);font-family:JetBrains Mono,monospace}.header-actions{display:flex;align-items:center;gap:8px}.btn{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;padding:7px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn:hover{border-color:var(--border-active);color:var(--text-primary);background:var(--bg-card)}.btn-primary{background:var(--accent-drill);border-color:var(--accent-drill);color:#fff}.btn-primary:hover{background:#2563eb}.btn-danger{background:var(--accent-blast);border-color:var(--accent-blast);color:#fff}.btn-danger:hover{background:#dc2626}.btn-success{background:var(--accent-green);border-color:var(--accent-green);color:#fff}.btn-warning{background:var(--accent-load);border-color:var(--accent-load);color:#000}.btn svg{width:14px;height:14px}.tab-bar{display:flex;background:var(--bg-secondary);border-bottom:1px solid var(--border);padding:0 24px;gap:0;overflow-x:auto}.tab{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;padding:10px 18px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tab:hover{color:var(--text-secondary)}.tab.active{color:var(--accent-brand);border-bottom-color:var(--accent-brand)}.main-content{padding:16px 24px}.tab-panel{display:none}.tab-panel.active{display:block}.settings-bar{display:flex;flex-wrap:wrap;gap:12px;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;align-items:center}.setting-group{display:flex;align-items:center;gap:6px}.setting-group label{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.setting-group input,.setting-group select{font-family:JetBrains Mono,monospace;font-size:14px;padding:5px 8px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);width:auto;min-width:80px}.setting-group input:focus,.setting-group select:focus{outline:none;border-color:var(--accent-drill)}.gantt-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.gantt-scroll{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 280px)}.gantt-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0}.gantt-table th,.gantt-table td{font-family:JetBrains Mono,monospace;font-size:13px;white-space:nowrap}.gantt-table thead th{position:sticky;background:var(--bg-secondary);z-index:30;padding:6px 4px;border-bottom:1px solid var(--border);color:var(--text-muted);font-weight:500;text-align:center}.gantt-table thead th.sticky-col{position:sticky;left:0;z-index:40;background:var(--bg-secondary)}.gantt-table thead th.sticky-col-2{position:sticky;left:180px;z-index:40;background:var(--bg-secondary)}.header-row-month th,.header-row-week th,.header-row-date th{top:0;box-shadow:0 1px 0 var(--bg-secondary)}.gantt-header-month{font-size:11px;color:var(--accent-cyan);text-transform:uppercase;letter-spacing:1px}.gantt-header-week{font-size:10px;color:var(--text-muted)}.gantt-header-date{font-size:11px;min-width:32px;padding:2px 1px}.gantt-header-date.weekend{color:var(--accent-blast)}.gantt-header-date.today{color:var(--accent-cyan);font-weight:700}.gantt-section-header td{background:var(--bg-tertiary);padding:6px 12px;font-weight:700;font-size:13px;color:var(--text-primary);border-top:2px solid var(--border-active);letter-spacing:1px;text-transform:uppercase;cursor:pointer;-webkit-user-select:none;user-select:none}.gantt-section-header td .collapse-arrow{display:inline-block;width:14px;font-size:10px;transition:transform .2s;margin-right:4px}.gantt-section-header.collapsed td .collapse-arrow{transform:rotate(-90deg)}.gantt-row.section-hidden{display:none}.gantt-section-header td .section-icon{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px;vertical-align:middle}.gantt-row td{padding:3px 1px;border-bottom:1px solid var(--border-row);height:28px;vertical-align:middle;font-size:12px;background:var(--bg-card)}.gantt-row td.sticky-col{position:sticky;left:0;background:var(--bg-card);z-index:20;padding-left:16px;padding-right:8px;min-width:180px;max-width:180px;font-weight:500}.gantt-row td.sticky-col-2{position:sticky;left:180px;background:var(--bg-card);z-index:20;padding:3px 8px;text-align:right;color:var(--text-muted);min-width:90px}.gantt-row:hover td,.gantt-row:hover td.sticky-col,.gantt-row:hover td.sticky-col-2{background:var(--bg-tertiary)}.gantt-cell{min-width:32px;max-width:32px;position:relative}.gantt-bar{position:absolute;top:3px;bottom:3px;left:1px;right:1px;border-radius:3px;cursor:pointer;transition:opacity .15s}.gantt-bar:hover{opacity:.85;filter:brightness(1.15)}.gantt-bar.prep{background:var(--gantt-prep)}.gantt-bar.drill{background:var(--gantt-drill)}.gantt-bar.load{background:var(--gantt-load)}.gantt-bar.blast{background:var(--gantt-blast)}.gantt-bar.complete{background:var(--gantt-complete)}.gantt-bar.planned{background:var(--gantt-planned);border:1px dashed var(--text-muted)}.gantt-bar.milestone{background:var(--accent-fire);clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);width:16px;height:16px;top:50%;left:50%;transform:translate(-50%,-50%)}.gantt-progress-fill{position:absolute;top:0;left:0;right:0;height:50%;background:#10b981b3;border-radius:3px 3px 0 0;pointer-events:none;z-index:1}.progress-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;color:var(--accent-green);background:#10b9811f;border-radius:3px;padding:0 4px;margin-left:3px;vertical-align:1px}.gantt-bar .dep-marker{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--accent-purple);z-index:2;pointer-events:none}.gantt-bar .dep-marker:after{content:attr(data-label);position:absolute;top:-15px;left:50%;transform:translate(-50%);font-family:JetBrains Mono,monospace;font-size:9px;color:var(--accent-purple);white-space:nowrap;font-weight:700}.gantt-bar.drill-load-overlap{background:repeating-linear-gradient(-45deg,var(--gantt-drill),var(--gantt-drill) 3px,var(--gantt-load) 3px,var(--gantt-load) 6px)}.gantt-edit-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:4px;color:var(--text-muted);opacity:.4;cursor:pointer;vertical-align:middle;transition:opacity .15s,color .15s;flex-shrink:0}.gantt-edit-btn:hover{opacity:1;color:var(--accent-brand)}.gantt-row td.sticky-col:hover .gantt-edit-btn{opacity:.8}.gantt-mode-toggle{display:inline-flex;align-items:center;vertical-align:middle;cursor:pointer;margin-right:4px;flex-shrink:0;position:relative}.gantt-mode-toggle input.gantt-mode-cb{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.gantt-mode-slider{display:inline-flex;align-items:center;justify-content:center;width:20px;height:14px;border-radius:3px;font-size:8px;font-family:JetBrains Mono,monospace;font-weight:700;letter-spacing:.3px;transition:background .2s,color .2s,box-shadow .2s;-webkit-user-select:none;user-select:none}.gantt-mode-toggle input:not(:checked)+.gantt-mode-slider{background:#10b98140;color:var(--accent-green);box-shadow:inset 0 0 0 1px #10b98159}.gantt-mode-toggle input:checked+.gantt-mode-slider{background:#f59e0b40;color:var(--accent-load);box-shadow:inset 0 0 0 1px #f59e0b66}.gantt-mode-toggle:hover .gantt-mode-slider{filter:brightness(1.2)}[data-theme=light] .gantt-mode-toggle input:not(:checked)+.gantt-mode-slider{background:#10b9812e}[data-theme=light] .gantt-mode-toggle input:checked+.gantt-mode-slider{background:#f59e0b33}.gantt-block-row td.sticky-col{padding-left:26px;font-size:11px}.block-label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;color:var(--accent-drill);margin-right:2px}.dep-warning{display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;font-size:11px;border-radius:50%;background:#ef444433;color:var(--accent-blast);margin-left:4px;cursor:help;vertical-align:middle}.dep-ok{display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;font-size:11px;border-radius:50%;background:#10b98133;color:var(--accent-green);margin-left:4px;cursor:help;vertical-align:middle}.dep-link-indicator{font-family:JetBrains Mono,monospace;font-size:10px;position:absolute;right:-1px;top:-1px;background:var(--accent-purple);color:#fff;border-radius:2px;padding:0 2px;line-height:12px;z-index:4;pointer-events:none}.gantt-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--accent-cyan);z-index:3;pointer-events:none}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.stat-card .stat-label{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px}.stat-card .stat-value{font-family:JetBrains Mono,monospace;font-size:24px;font-weight:700;color:var(--text-primary)}.stat-card .stat-unit{font-size:13px;color:var(--text-secondary);margin-left:4px}.stat-card .stat-sub{font-size:12px;color:var(--text-muted);margin-top:2px;font-family:JetBrains Mono,monospace}.stat-card.accent-blue{border-left:3px solid var(--accent-drill)}.stat-card.accent-amber{border-left:3px solid var(--accent-load)}.stat-card.accent-red{border-left:3px solid var(--accent-blast)}.stat-card.accent-green{border-left:3px solid var(--accent-green)}.stat-card.accent-purple{border-left:3px solid var(--accent-purple)}.stat-card.accent-cyan{border-left:3px solid var(--accent-cyan)}.data-table-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:16px}.data-table-container .table-title{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:600;padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text-secondary);display:flex;align-items:center;gap:8px}.data-table{width:100%;border-collapse:collapse}.data-table th{font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;padding:8px 12px;text-align:left;border-bottom:1px solid var(--border);background:var(--bg-secondary);position:sticky;top:0}.data-table td{font-family:JetBrains Mono,monospace;font-size:13px;padding:7px 12px;border-bottom:1px solid var(--border-row);color:var(--text-secondary)}.data-table tr:hover td{background:#3b82f60a}[data-theme=light] .data-table tr:hover td{background:#3b82f612}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.badge{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--radius);text-transform:uppercase;letter-spacing:.5px;display:inline-block}.badge-drill{background:#3b82f626;color:var(--accent-drill)}.badge-load{background:#f59e0b26;color:var(--accent-load)}.badge-blast{background:#ef444426;color:var(--accent-blast)}.badge-complete{background:#10b98126;color:var(--accent-green)}.badge-active{background:#06b6d426;color:var(--accent-cyan)}.badge-presplit{background:#a78bfa26;color:var(--presplit)}.badge-buffer{background:#38bdf826;color:var(--buffer)}.badge-production{background:#f9731626;color:var(--production)}.pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:16px}.pattern-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;transition:border-color .15s}.pattern-card:hover{border-color:var(--border-active)}.pattern-card .pattern-id{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700;color:var(--accent-cyan);margin-bottom:8px}.pattern-card .pattern-detail{display:flex;justify-content:space-between;padding:3px 0;font-size:13px}.pattern-card .pattern-detail .label{color:var(--text-muted)}.pattern-card .pattern-detail .value{color:var(--text-primary);font-weight:500;font-family:JetBrains Mono,monospace}.pattern-card-actions{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid var(--border)}.pat-action-btn{display:inline-flex;align-items:center;gap:3px;padding:3px 8px;font-size:10px;font-weight:600;font-family:JetBrains Mono,monospace;text-transform:uppercase;letter-spacing:.3px;color:var(--text-muted);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:color .12s,border-color .12s,background .12s}.pat-action-btn:hover{color:var(--text-primary);border-color:var(--border-active);background:var(--bg-tertiary)}.pat-action-toggle{display:inline-flex;align-items:center;gap:3px;margin-left:auto;cursor:pointer;color:var(--text-muted);-webkit-user-select:none;user-select:none}.pat-action-toggle input[type=checkbox]{accent-color:var(--accent-cyan);width:13px;height:13px;cursor:pointer}.drop-zone{border:2px dashed var(--border-active);border-radius:var(--radius-lg);padding:40px;text-align:center;transition:all .2s;cursor:pointer;margin-bottom:16px;background:#3b82f605}.drop-zone:hover,.drop-zone.dragover{border-color:var(--accent-drill);background:#3b82f60f}.drop-zone .drop-icon{font-size:38px;margin-bottom:12px;opacity:.4}.drop-zone .drop-text{font-family:JetBrains Mono,monospace;font-size:15px;color:var(--text-secondary);margin-bottom:6px}.drop-zone .drop-sub{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-muted)}.drop-zone input[type=file]{display:none}.kap-normals-btn{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;padding:3px 14px;border:1px solid var(--border-active);border-radius:var(--radius-sm);background:var(--bg-secondary);color:var(--text-muted);cursor:pointer;transition:all .15s ease}.kap-normals-btn:hover{border-color:var(--accent-cyan);color:var(--text-primary)}.kap-normals-btn.kap-normals-active{background:var(--accent-cyan);border-color:var(--accent-cyan);color:#fff}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}.modal-overlay.show{opacity:1;pointer-events:auto}.modal{background:var(--bg-card);border:1px solid var(--border-active);border-radius:var(--radius-lg);width:90%;max-width:700px;max-height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow)}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.modal-header h3{font-family:JetBrains Mono,monospace;font-size:16px;font-weight:600}.modal-body{padding:20px;overflow-y:auto;flex:1;min-height:0}.modal-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}#blastModal .modal{max-width:960px}.modal-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin:-20px -20px 16px;padding:0 20px;flex-shrink:0}.modal-tab{padding:10px 18px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s;-webkit-user-select:none;user-select:none}.modal-tab:hover{color:var(--text-primary)}.modal-tab.active{color:var(--accent-cyan);border-bottom-color:var(--accent-cyan)}.modal-tab-pane{display:none}.modal-tab-pane.active{display:block}.modal-close{background:none;border:none;color:var(--text-muted);font-size:20px;cursor:pointer}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.form-field label{display:block;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.form-field input,.form-field select{width:100%;font-family:JetBrains Mono,monospace;font-size:14px;padding:7px 10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary)}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--accent-drill)}.import-log{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:12px;max-height:200px;overflow-y:auto;font-family:JetBrains Mono,monospace;font-size:13px;line-height:1.6}.import-log .log-ok{color:var(--accent-green)}.import-log .log-warn{color:var(--accent-load)}.import-log .log-err{color:var(--accent-blast)}.import-log .log-info{color:var(--accent-cyan)}.conformance-bar{height:8px;background:var(--bg-secondary);border-radius:4px;overflow:hidden;margin-top:6px}.conformance-bar .fill{height:100%;border-radius:4px;transition:width .4s}.tooltip{position:fixed;background:var(--bg-secondary);border:1px solid var(--border-active);border-radius:var(--radius);padding:8px 12px;font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-primary);z-index:2000;pointer-events:none;box-shadow:var(--shadow);max-width:300px;display:none}.tooltip .tt-title{font-weight:700;margin-bottom:4px;color:var(--accent-cyan)}.tooltip .tt-row{display:flex;justify-content:space-between;gap:16px;color:var(--text-secondary)}.tooltip .tt-row .tt-val{color:var(--text-primary)}.context-menu{position:fixed;background:var(--bg-card);border:1px solid var(--border-active);border-radius:var(--radius);box-shadow:var(--shadow);z-index:3000;min-width:180px;padding:4px 0;display:none}.context-menu .ctx-item{padding:7px 14px;font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;gap:8px}.context-menu .ctx-item:hover{background:#3b82f614;color:var(--text-primary)}.context-menu .ctx-divider{height:1px;background:var(--border);margin:4px 0}.flex-between{display:flex;justify-content:space-between;align-items:center}.gap-8{gap:8px}.mb-16{margin-bottom:16px}.mt-8{margin-top:8px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.live-dot{width:6px;height:6px;background:var(--accent-green);border-radius:50%;display:inline-block;animation:pulse 2s infinite;margin-right:6px}.forecast-table{margin-top:12px}.gantt-bar.prep,.gantt-bar.drill,.gantt-bar.load{cursor:grab}.gantt-bar.prep:active,.gantt-bar.drill:active,.gantt-bar.load:active,.gantt-bar.milestone:active,.gantt-bar-dragging{cursor:grabbing;box-shadow:0 2px 12px #3b82f666}.gantt-select-band{border:2px dashed var(--accent-cyan);background:#00c8ff14;pointer-events:none;z-index:9999}.gantt-row-selected td{background:#00c8ff0f!important}.gantt-row-selected .gantt-bar{outline:2px solid var(--accent-cyan);outline-offset:-1px}.gantt-reorder-grip{display:inline-flex;align-items:center;justify-content:center;width:12px;cursor:ns-resize;vertical-align:middle;margin-right:2px;opacity:.3;transition:opacity .15s}.gantt-row:hover .gantt-reorder-grip{opacity:.7}.gantt-reorder-grip:hover{opacity:1!important}.gantt-row-reordering td{background:#3b82f61a!important}.gantt-reorder-target td{border-top:2px solid var(--accent-cyan)!important}.no-drill-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;background:var(--accent-load);color:#000;padding:1px 4px;border-radius:3px;margin-left:4px;vertical-align:middle;letter-spacing:.5px}.gantt-bar.prep.planned,.gantt-bar.drill.planned,.gantt-bar.load.planned,.gantt-bar.milestone{cursor:grab}select[multiple]{font-family:JetBrains Mono,monospace;font-size:13px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);padding:4px}select[multiple] option{padding:3px 6px}select[multiple] option:checked{background:var(--accent-drill);color:#fff}.gantt-cell.maint-overlap{background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(239,68,68,.08) 3px,rgba(239,68,68,.08) 6px)}.theme-toggle{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;transition:all .15s}.theme-toggle:hover{border-color:var(--border-active);color:var(--text-primary)}.theme-toggle svg{width:16px;height:16px}.theme-toggle .icon-sun{display:inline-flex}.theme-toggle .icon-moon,[data-theme=light] .theme-toggle .icon-sun{display:none}[data-theme=light] .theme-toggle .icon-moon{display:inline-flex}.cb-toggle{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;padding:6px 10px;display:inline-flex;align-items:center;gap:6px;transition:all .15s;font-family:JetBrains Mono,monospace;font-size:11px}.cb-toggle:hover{border-color:var(--border-active);color:var(--text-primary)}.cb-toggle svg{width:16px;height:16px}[data-cb=true] .cb-toggle{border-color:var(--accent-purple);color:var(--accent-purple)}#ganttConnectorSvg{position:absolute;top:0;left:0;pointer-events:none;z-index:4;overflow:visible}.gantt-bar .start-time-label{position:absolute;top:-15px;left:0;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--accent-cyan);white-space:nowrap;pointer-events:none;font-weight:700;text-shadow:0 0 4px var(--bg-primary)}.help-container{max-width:960px;margin:0 auto}.help-hero{text-align:center;padding:32px 16px 24px}.help-hero h2{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:700;background:linear-gradient(135deg,var(--accent-brand),var(--accent-fire));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:6px}.help-hero p{font-family:JetBrains Mono,monospace;font-size:14px;color:var(--text-muted)}.help-section{margin-bottom:28px}.help-section h3{font-family:JetBrains Mono,monospace;font-size:15px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;padding-bottom:6px;border-bottom:1px solid var(--border)}.help-steps{display:flex;flex-direction:column;gap:14px}.help-step{display:flex;gap:14px;align-items:flex-start;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.help-step-num{flex-shrink:0;width:32px;height:32px;line-height:32px;text-align:center;border-radius:50%;background:var(--accent-drill);color:#fff;font-family:JetBrains Mono,monospace;font-size:15px;font-weight:700}.help-step strong{font-family:JetBrains Mono,monospace;font-size:14px;color:var(--text-primary);display:block;margin-bottom:4px}.help-step p{font-size:13px;color:var(--text-secondary);line-height:1.5}.help-tab-ref{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;color:var(--accent-brand);letter-spacing:.5px}.help-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.help-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px}.help-card-title{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:700;letter-spacing:1px;text-transform:uppercase;margin-bottom:8px}.help-card p{font-size:13px;color:var(--text-secondary);line-height:1.55}.help-table-wrap{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.help-code{font-family:JetBrains Mono,monospace;font-size:13px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;color:var(--accent-cyan);display:block}.help-tips{list-style:none;padding:0}.help-tips li{font-size:13px;color:var(--text-secondary);padding:8px 12px;border-left:3px solid var(--accent-drill);background:var(--bg-card);border-radius:0 var(--radius) var(--radius) 0;margin-bottom:6px;line-height:1.5}.help-tips li:nth-child(2n){border-left-color:var(--accent-purple)}.help-section p{font-size:13px;color:var(--text-secondary);line-height:1.5}@keyframes breachPulse{0%,to{opacity:1}50%{opacity:.5}}.dep-warning.breach-active{animation:breachPulse 1s infinite;background:#ef44444d}.delay-palette{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:8px;min-width:140px;max-width:160px;flex-shrink:0;position:sticky;top:60px;max-height:calc(100vh - 280px);overflow-y:auto}.palette-section-hdr{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;padding:5px 6px;margin-top:4px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s}.palette-section-hdr:first-child{margin-top:0}.palette-section-hdr:hover{color:var(--text-primary)}.palette-arrow{font-size:8px;display:inline-block;width:10px}.palette-chips{display:flex;flex-direction:column;gap:3px;padding:2px 0 6px}.palette-chip{display:flex;align-items:center;gap:5px;padding:4px 6px;border-radius:var(--radius);border:1px solid var(--border);cursor:grab;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;transition:opacity .15s,transform .1s,border-color .15s;-webkit-user-select:none;user-select:none;background:var(--bg-secondary)}.palette-chip:hover{transform:translate(-2px);border-color:var(--border-active)}.palette-chip:active{cursor:grabbing}.palette-chip-dragging{opacity:.3!important;transform:scale(.95)}.palette-chip-icon{width:16px;height:16px;border-radius:3px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:700;flex-shrink:0}.palette-chip-text{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-primary)}.palette-chip.delay-chip{border:none;padding:5px 8px}.delay-chip-code{font-size:10px;font-weight:700;letter-spacing:.5px;min-width:20px}.delay-chip-label{font-size:9px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-cell.delay-drop-target{background:#3b82f626!important;outline:2px dashed var(--accent-drill);outline-offset:-2px}.gantt-bar.delay-bar{border-radius:2px;font-size:9px;font-family:JetBrains Mono,monospace;font-weight:700;opacity:.85;cursor:default}.gantt-bar.delay-bar:hover{opacity:1;filter:brightness(1.1)}.delay-bar-label{position:absolute;top:50%;left:2px;transform:translateY(-50%);font-size:8px;white-space:nowrap;pointer-events:none}.gantt-resize-handle{position:absolute;top:-2px;bottom:-2px;width:10px;cursor:ew-resize;z-index:10;transition:background .15s,box-shadow .15s;background:#ffffff14}.gantt-resize-handle:hover{background:#ffffff59;box-shadow:0 0 4px #3b82f680}.gantt-resize-handle:active{background:#3b82f680}.gantt-resize-handle.handle-left{left:-3px;border-radius:3px 0 0 3px;border-left:2px solid rgba(255,255,255,.2)}.gantt-resize-handle.handle-right{right:-3px;border-radius:0 3px 3px 0;border-right:2px solid rgba(255,255,255,.2)}.gantt-bar:hover .gantt-resize-handle{background:#ffffff2e;border-color:#ffffff59}.gantt-bar:hover .gantt-resize-handle:hover{background:#3b82f666;border-color:#3b82f699}.gantt-bar-resizing{z-index:50!important;outline:2px solid var(--accent-cyan)!important}.gantt-resize-indicator{position:fixed;padding:2px 6px;background:var(--bg-secondary);border:1px solid var(--accent-cyan);border-radius:4px;font-size:11px;font-weight:600;color:var(--accent-cyan);z-index:9999;pointer-events:none;white-space:nowrap;box-shadow:0 2px 8px #0000004d}.equip-action-btns{display:flex;gap:4px;align-items:center}.btn-equip-action{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;padding:3px 6px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;display:inline-flex;align-items:center;gap:3px;white-space:nowrap;transition:all .15s}.btn-equip-action:hover{border-color:var(--border-active);color:var(--text-primary);background:var(--bg-card)}.btn-equip-action svg{flex-shrink:0}.btn-mobilise:hover{border-color:var(--accent-green);color:var(--accent-green)}.btn-demobilise:hover{border-color:var(--accent-load);color:var(--accent-load)}.btn-remove-equip:hover{border-color:var(--accent-blast);color:var(--accent-blast)}.equip-actions{white-space:nowrap}.badge-demobilised{background:#64748b26;color:#94a3b8}.badge-mobilised{background:#10b98126;color:var(--accent-green)}.drop-feedback{position:fixed;bottom:24px;left:50%;transform:translate(-50%);font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;padding:8px 20px;border-radius:var(--radius-lg);z-index:5000;pointer-events:none;box-shadow:var(--shadow);transition:opacity .4s}.drop-feedback-ok{background:var(--accent-green);color:#fff}.drop-feedback-warn{background:var(--accent-load);color:#000}.drop-feedback-fade{opacity:0}.context-menu .ctx-label{padding:4px 14px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;cursor:default}.palette-chip.crew-chip{background:var(--bg-secondary)}.palette-chip.crew-chip .palette-chip-text{font-size:9px}.palette-chip.pattern-chip{background:var(--bg-secondary)}.palette-chip.pattern-chip .palette-chip-icon{font-size:9px;font-weight:700}.crew-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;padding:1px 4px;border-radius:3px;margin-left:3px;vertical-align:middle;line-height:1.3;white-space:nowrap}.crew-ok{background:#10b98133;color:var(--accent-green)}.crew-warn{background:#fb923c33;color:#fb923c}.crew-empty{background:#ef444426;color:var(--accent-blast)}.fleet-conflict-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:4;background:repeating-linear-gradient(-45deg,transparent,transparent 2px,rgba(239,68,68,.35) 2px,rgba(239,68,68,.35) 4px);border-radius:inherit}.gantt-drill-chip{display:inline-block;font-family:JetBrains Mono,monospace;font-size:8px;font-weight:700;color:var(--accent-cyan);background:#06b6d41a;border:1px solid rgba(6,182,212,.3);border-radius:3px;padding:0 3px;margin-right:2px;cursor:grab;vertical-align:middle;line-height:1.4;white-space:nowrap;transition:all .15s}.gantt-drill-chip:hover{background:#06b6d440;border-color:var(--accent-cyan)}.gantt-drill-chip.chip-dragging{opacity:.4;cursor:grabbing}.gantt-mpu-chip{display:inline-block;font-family:JetBrains Mono,monospace;font-size:8px;font-weight:700;color:var(--accent-load);background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:3px;padding:0 3px;margin-right:2px;cursor:grab;vertical-align:middle;line-height:1.4;white-space:nowrap;transition:all .15s}.gantt-mpu-chip:hover{background:#f59e0b40;border-color:var(--accent-load)}.gantt-mpu-chip.chip-dragging{opacity:.4;cursor:grabbing}.delay-palette.palette-drop-active{box-shadow:inset 0 0 0 2px var(--accent-green),0 0 12px #10b98133}.fleet-conflict-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:8px;font-weight:700;padding:1px 5px;border-radius:3px;margin-left:3px;vertical-align:middle;background:#ef444433;color:#ef4444;white-space:nowrap}.reset-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:9000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.reset-dialog{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 20px 60px #00000080;width:480px;max-width:94vw;max-height:85vh;overflow-y:auto;padding:24px;animation:slideUp .2s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.reset-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.reset-header h3{font-family:JetBrains Mono,monospace;font-size:16px;font-weight:700;color:var(--text-primary);margin:0}.reset-warning{background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:var(--radius);padding:10px 14px;margin-bottom:18px;font-size:12px;line-height:1.5;color:var(--text-secondary)}.reset-warning strong{color:#ef4444}.reset-warning em{color:var(--accent-drill);font-style:normal;font-weight:600}.reset-form{display:flex;flex-direction:column;gap:2px}.reset-section-label{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:6px 0 4px}.reset-option{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius);cursor:pointer;transition:background .1s}.reset-option:hover{background:var(--bg-tertiary)}.reset-option input[type=checkbox]{width:16px;height:16px;accent-color:#ef4444;cursor:pointer;flex-shrink:0}.reset-option-text{font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;color:var(--text-primary)}.reset-option-desc{width:100%;font-size:11px;color:var(--text-muted);padding-left:24px;margin-top:-2px}.reset-option-all{background:#ef44440f;border:1px solid rgba(239,68,68,.2);border-radius:var(--radius)}.reset-option-all:hover{background:#ef44441f}.reset-option-all .reset-option-text{color:#ef4444;font-size:13px}.reset-divider{height:1px;background:var(--border);margin:6px 0}.reset-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border)}.reset-btn-cancel{background:var(--bg-tertiary);color:var(--text-secondary)}.reset-btn-cancel:hover{background:var(--bg-secondary);color:var(--text-primary)}.reset-btn-confirm{background:#ef4444;border-color:#ef4444;color:#fff;display:inline-flex;align-items:center;gap:4px}.reset-btn-confirm:hover:not(:disabled){background:#dc2626}.reset-btn-confirm:disabled{opacity:.4;cursor:not-allowed}.export-menu{position:fixed;z-index:8000;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 12px 40px #00000080;min-width:280px;padding:6px;animation:fadeIn .12s ease-out}.export-menu-item{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius);cursor:pointer;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;color:var(--text-primary);transition:background .1s}.export-menu-item:hover{background:var(--bg-tertiary)}.export-menu-item svg{flex-shrink:0}.export-menu-hint{width:100%;font-size:10px;font-weight:400;color:var(--text-muted);padding-left:22px;margin-top:-2px}.startup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:#0a0a0ef5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;transition:opacity .3s ease}.startup-overlay.visible{opacity:1}.startup-dialog{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:40px 48px;max-width:560px;width:90vw;text-align:center;box-shadow:0 24px 80px #0009;transform:translateY(12px);transition:transform .3s ease}.startup-overlay.visible .startup-dialog{transform:translateY(0)}.startup-logo{margin-bottom:12px}.startup-logo img{border-radius:12px}.startup-title{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:700;color:var(--text-primary);margin:0 0 4px;background:linear-gradient(135deg,var(--accent-brand),#ff6f61);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.startup-subtitle{font-size:13px;color:var(--text-muted);margin:0 0 16px}.startup-divider{height:1px;background:var(--border);margin:0 0 20px}.startup-prompt{font-size:15px;font-weight:600;color:var(--text-primary);margin:0 0 20px}.startup-options{display:flex;gap:16px;margin-bottom:20px}.startup-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px 16px;border:2px solid var(--border);border-radius:10px;background:var(--bg-primary);cursor:pointer;transition:border-color .2s,background .2s,transform .15s}.startup-btn:hover{transform:translateY(-2px)}.startup-btn-examples:hover{border-color:var(--accent-drill);background:#3b82f614}.startup-btn-fresh:hover{border-color:var(--accent-green);background:#10b98114}.startup-btn-icon{font-size:32px;line-height:1}.startup-btn-label{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:700;color:var(--text-primary)}.startup-btn-desc{font-size:11px;color:var(--text-muted);line-height:1.4}.startup-hint{font-size:11px;color:var(--text-muted);margin:0}.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:color .15s}.sortable-th:hover{color:var(--accent-cyan);text-decoration:underline}.btn-maint-action{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;padding:2px 6px;margin-right:4px;transition:background .15s,color .15s}.btn-maint-action:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-maint-action.btn-maint-delete:hover{background:#ef444426;color:var(--accent-blast)}.pattern-card[draggable=true]{cursor:grab}.pattern-card[draggable=true]:active{cursor:grabbing;opacity:.7}.pattern-card.dragging{opacity:.5;outline:2px dashed var(--accent-cyan)}.blast-drop-highlight{background:#3b82f61f!important;outline:2px dashed var(--accent-cyan);outline-offset:-2px}.pattern-alloc-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:5000}.pattern-alloc-dialog{background:var(--bg-card);border:1px solid var(--border-active);border-radius:var(--radius-lg);padding:24px;min-width:380px;max-width:480px;box-shadow:var(--shadow)}.pattern-alloc-dialog h3{margin:0 0 16px;font-size:16px;color:var(--text-primary)}.pattern-alloc-dialog .form-row{display:flex;gap:12px;margin-bottom:12px}.pattern-alloc-dialog .form-field{flex:1}.pattern-alloc-dialog .form-field label{display:block;font-size:11px;color:var(--text-muted);margin-bottom:4px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.pattern-alloc-dialog .form-field input,.pattern-alloc-dialog .form-field select{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);font-family:JetBrains Mono,monospace;font-size:13px}.pattern-alloc-dialog .alloc-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.pattern-alloc-dialog .alloc-actions button{padding:8px 20px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;font-size:13px;font-weight:600;transition:background .15s}.pattern-alloc-dialog .alloc-actions button.btn-alloc-save{background:var(--accent-brand);border-color:var(--accent-brand);color:#fff}.pattern-alloc-dialog .alloc-actions button:hover{filter:brightness(1.15)}.plan-week-color-popup{position:absolute;top:100%;left:0;margin-top:4px;background:var(--bg-card);border:1px solid var(--border-active);border-radius:var(--radius);padding:8px 10px;z-index:3000;box-shadow:var(--shadow);min-width:180px}.plan-week-color-popup .pw-row{display:flex;align-items:center;gap:6px;margin-bottom:4px}.plan-week-color-popup .pw-label{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;color:var(--text-secondary);width:36px}.plan-week-color-popup input[type=color]{width:28px;height:20px;border:1px solid var(--border);border-radius:3px;padding:0;cursor:pointer;background:transparent}.plan-week-color-popup .pw-clear{font-size:10px;cursor:pointer;color:var(--text-muted);padding:1px 4px;border-radius:3px}.plan-week-color-popup .pw-clear:hover{color:var(--accent-blast);background:#ef44441a}.plan-week-color-popup .pw-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.blast-sub-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:8px}.blast-sub-tab{padding:8px 18px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;letter-spacing:1px;text-transform:uppercase;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s,border-color .15s;-webkit-user-select:none;user-select:none}.blast-sub-tab:hover{color:var(--text-primary)}.blast-sub-tab.active{color:var(--accent-cyan);border-bottom-color:var(--accent-cyan)}.blast-sub-pane{display:none}.blast-sub-pane.active{display:flex;flex-direction:column}#blastCalendarPane.active{height:calc(100vh - 260px);min-height:500px}.blast-cal-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 4px 8px;flex-wrap:wrap;gap:8px;flex-shrink:0}.blast-cal-nav{display:flex;align-items:center;gap:6px}.blast-cal-month-label{font-family:JetBrains Mono,monospace;font-size:18px;font-weight:700;color:var(--text-primary);margin-left:12px}.blast-cal-filters{display:flex;align-items:center;gap:14px}.blast-cal-toggle{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--toggle-color, var(--text-muted));cursor:pointer;-webkit-user-select:none;user-select:none}.blast-cal-toggle input[type=checkbox]{accent-color:var(--toggle-color, var(--accent-cyan));width:15px;height:15px;cursor:pointer}.blast-calendar{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:auto;grid-auto-rows:1fr;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;flex:1;min-height:0}.blast-cal-header{padding:8px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;text-align:center;color:var(--text-muted);background:var(--bg-secondary);border-bottom:1px solid var(--border)}.blast-cal-cell{min-height:0;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:3px;background:var(--bg-primary);overflow-y:auto;overflow-x:hidden}.blast-cal-cell:nth-child(7n+7){border-right:none}.blast-cal-cell.outside{background:var(--bg-secondary);opacity:.4}.blast-cal-cell.today{background:#06b6d414;box-shadow:inset 0 0 0 2px var(--accent-cyan)}.blast-cal-cell.focus-week{box-shadow:inset 0 2px 0 0 var(--accent-load),inset 0 -2px 0 0 var(--accent-load)}.blast-cal-cell.focus-week.today{box-shadow:inset 0 0 0 2px var(--accent-cyan),inset 0 2px 0 0 var(--accent-load),inset 0 -2px 0 0 var(--accent-load)}.blast-cal-day-num{font-size:13px;font-weight:700;color:var(--text-muted);padding:2px 4px;line-height:1}.blast-cal-month-mark{display:inline;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-left:4px}.blast-cal-cell.today .blast-cal-day-num{color:var(--accent-cyan);font-weight:800}.blast-cal-bars{display:flex;flex-direction:column;gap:2px;margin-top:2px}.blast-cal-bar{height:22px;line-height:22px;font-size:11px;font-weight:700;padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-radius:0;transition:filter .12s,box-shadow .12s}.blast-cal-bar:hover{filter:brightness(1.15);box-shadow:0 1px 4px #00000040}.blast-cal-bar.spacer{visibility:hidden;cursor:default}.blast-cal-bar.bar-start{border-radius:4px 0 0 4px;margin-left:2px}.blast-cal-bar.bar-end{border-radius:0 4px 4px 0;margin-right:2px}.blast-cal-bar.bar-start.bar-end{border-radius:4px;margin-left:2px;margin-right:2px}.blast-cal-bar.prep{background:#14b8a6;color:#fff}.blast-cal-bar.drill{background:#3b82f6;color:#fff}.blast-cal-bar.load{background:#f59e0b;color:#1a1a1a}.blast-cal-bar.blast{background:#ef4444;color:#fff}.btn-sm{padding:4px 10px;font-size:11px;min-width:unset}.cal-legend-swatch{display:inline-block;width:12px;height:12px;border-radius:2px;vertical-align:middle;margin-right:1px}.playback-container{display:flex;height:calc(100vh - 220px);min-height:400px;gap:0;background:#0d0d1a;border-radius:var(--radius-lg);overflow:hidden;border:1px solid var(--border)}.playback-sidebar{width:220px;min-width:220px;background:var(--bg-secondary);border-right:1px solid var(--border);overflow-y:auto;padding:0;flex-shrink:0}.playback-sidebar-header{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);padding:12px 12px 8px;border-bottom:1px solid var(--border)}.playback-sidebar-section{padding:8px 12px;border-bottom:1px solid var(--border)}.playback-sidebar-label{font-family:JetBrains Mono,monospace;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--accent-drill);margin-bottom:6px}.playback-toggle{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-secondary);cursor:pointer;padding:3px 0}.playback-toggle input[type=checkbox]{width:13px;height:13px;accent-color:var(--accent-drill)}.playback-surface-list{max-height:160px;overflow-y:auto}.playback-surface-item{display:flex;flex-direction:column;gap:3px;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.04)}.playback-surface-item:last-child{border-bottom:none}.pb-surf-opacity{width:100%;height:4px;accent-color:var(--accent-drill);cursor:pointer}.playback-empty-msg{font-size:10px;color:var(--text-muted);line-height:1.5;padding:4px 0}.playback-viewport{flex:1;position:relative;overflow:hidden;background:#0d0d1a}.playback-viewport canvas{display:block;width:100%!important;height:100%!important}.playback-camera-presets{position:absolute;top:10px;right:10px;display:flex;gap:4px;z-index:10}.pb-cam-btn{background:#1e1e32d9;border:1px solid rgba(255,255,255,.15);color:var(--text-secondary);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;padding:5px 10px;border-radius:var(--radius);cursor:pointer;transition:all .15s}.pb-cam-btn:hover{background:#3b82f64d;color:#fff;border-color:#3b82f680}.playback-no-data{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#0d0d1ae6;z-index:5;gap:12px}.playback-no-data-icon{color:var(--text-muted);opacity:.4}.playback-no-data-title{font-family:JetBrains Mono,monospace;font-size:16px;font-weight:700;color:var(--text-secondary)}.playback-no-data-text{font-size:12px;color:var(--text-muted);max-width:360px;text-align:center;line-height:1.6}.playback-timeline{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--bg-secondary);border-top:1px solid var(--border);border-radius:0 0 var(--radius-lg) var(--radius-lg);flex-wrap:wrap}.pb-tl-controls{display:flex;gap:2px}.pb-tl-btn{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;padding:4px 8px;border-radius:var(--radius);cursor:pointer;min-width:28px;text-align:center;transition:all .12s}.pb-tl-btn:hover{background:var(--accent-drill);color:#fff;border-color:var(--accent-drill)}.pb-tl-play{background:var(--accent-drill);color:#fff;border-color:var(--accent-drill);padding:4px 12px}.pb-tl-play:hover{background:#2563eb}.pb-tl-info{display:flex;gap:10px;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-primary);white-space:nowrap}.pb-tl-date{color:var(--accent-drill);font-weight:600}.pb-tl-scrubber{flex:1;min-width:120px}.pb-tl-range{width:100%;height:6px;accent-color:var(--accent-drill);cursor:pointer}.pb-tl-speed{display:flex;align-items:center;gap:4px}.pb-tl-speed-label{font-family:JetBrains Mono,monospace;font-size:9px;color:var(--text-muted);text-transform:uppercase;margin-right:2px}.pb-speed-btn{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:9px;font-weight:600;padding:2px 6px;border-radius:var(--radius);cursor:pointer;transition:all .12s}.pb-speed-btn:hover{color:var(--text-primary);border-color:var(--accent-drill)}.pb-speed-btn.active{background:var(--accent-drill);color:#fff;border-color:var(--accent-drill)}.pb-tl-loop{display:flex;align-items:center;gap:4px;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.pb-tl-loop:hover{color:var(--text-secondary)}
