*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #0f1117;--bg-secondary: #1a1d27;--bg-card: #1e2130;--bg-hover: #252840;--bg-expanded: #2a2d42;--border: #2a2d3e;--text-primary: #f1f3f9;--text-secondary: #b0b4c8;--text-muted: #7a7e94;--accent: #818cf8;--accent-hover: #a5b4fc;--green: #4ade80;--green-bg: #0a2618;--green-border: #16a34a33;--red: #f87171;--red-bg: #1a0a0a;--red-border: #dc262633;--orange: #f59e0b;--orange-bg: #1a1508;--blue: #3b82f6;--blue-bg: #0a1628;--yellow: #facc15;--yellow-bg: #1a1808;--override-text: #1a1808;--approved-text: #0a2618;--declined-text: #1a0a0a;--past-bg: #1a1d27;--past-text: #6b7280;--past-override-bg: #1a1d27;--past-override-text: #6b7280;--past-approved-bg: #14532d;--past-approved-text: #6ee7a0;--past-declined-bg: #7f1d1d;--past-declined-text: #fca5a5;--current-bg: rgba(129,140,248,.04);--current-text: #6b6f88;--current-override-bg: #b8a820;--current-override-text: #3a3800;--current-approved-bg: #16a34a;--current-declined-bg: #dc2626;--pink: #f472b6;--pink-bg: #1a0a14;--pink-text: #fbb6d0;--past-pink-bg: #831843;--past-pink-text: #f9a8d4;--current-pink-bg: #db2777;--grey-outage: #3b82f6;--grey-outage-bg: #0a1628;--grey-outage-text: #bfdbfe;--past-grey-bg: #1e3a5f;--past-grey-text: #93c5fd;--current-grey-bg: #2563eb;--today-bg: rgba(129,140,248,.06);--row-readonly-bg: rgba(255,255,255,.02);--login-gradient-start: #2c3e50;--login-gradient-end: #34495e;--login-card-bg: #1e2a38;--login-card-shadow: 0 10px 30px rgba(0,0,0,.3);--login-heading: #ecf0f1;--login-sub: #95a5a6;--login-label: #bdc3c7;--login-input-bg: #2c3e50;--login-input-border: #34495e;--login-input-text: #ecf0f1;--login-input-focus: #3498db;--login-btn-bg: #3498db;--login-btn-hover: #2980b9;--login-btn-disabled: #bdc3c7;--login-footer-text: #7f8c8d;--login-footer-border: #34495e;--login-error-bg: #e74c3c;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 3px rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.2)}[data-theme=light]{--bg-primary: #f5f6fa;--bg-secondary: #e8eaef;--bg-card: #ffffff;--bg-hover: #f0f1f5;--bg-expanded: #ffffff;--border: #d1d5db;--text-primary: #1a1d27;--text-secondary: #4b5563;--text-muted: #6b7280;--accent: #6366f1;--accent-hover: #4f46e5;--green: #16a34a;--green-bg: #dcfce7;--green-border: #16a34a44;--red: #dc2626;--red-bg: #fef2f2;--red-border: #dc262644;--orange: #d97706;--orange-bg: #fffbeb;--blue: #2563eb;--blue-bg: #dbeafe;--yellow: #eab308;--yellow-bg: #fefce8;--shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 2px rgba(0,0,0,.06);--override-text: #713f12;--approved-text: #052e16;--declined-text: #450a0a;--past-bg: #e5e7eb;--past-text: #6b7280;--past-override-bg: #e5e7eb;--past-override-text: #6b7280;--past-approved-bg: #bbf7d0;--past-approved-text: #166534;--past-declined-bg: #fecaca;--past-declined-text: #991b1b;--current-bg: rgba(99,102,241,.06);--current-text: #6b7280;--current-override-bg: #fde047;--current-override-text: #713f12;--current-approved-bg: #4ade80;--current-declined-bg: #f87171;--pink: #f9a8d4;--pink-bg: #fce7f3;--pink-text: #831843;--past-pink-bg: #fbcfe8;--past-pink-text: #9d174d;--current-pink-bg: #f9a8d4;--grey-outage: #60a5fa;--grey-outage-bg: #dbeafe;--grey-outage-text: #1e3a8a;--past-grey-bg: #bfdbfe;--past-grey-text: #1e40af;--current-grey-bg: #93c5fd;--today-bg: rgba(99,102,241,.08);--row-readonly-bg: rgba(0,0,0,.02);--login-gradient-start: #e8eaef;--login-gradient-end: #f5f6fa;--login-card-bg: #ffffff;--login-card-shadow: 0 10px 30px rgba(0,0,0,.08);--login-heading: #1a1d27;--login-sub: #6b7280;--login-label: #374151;--login-input-bg: #f3f4f6;--login-input-border: #d1d5db;--login-input-text: #1a1d27;--login-input-focus: #6366f1;--login-btn-bg: #6366f1;--login-btn-hover: #4f46e5;--login-btn-disabled: #d1d5db;--login-footer-text: #9ca3af;--login-footer-border: #e5e7eb;--login-error-bg: #dc2626}[data-theme=light] .login-logo{filter:brightness(.2)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg-primary);color:var(--text-primary);min-height:100vh;-webkit-font-smoothing:antialiased}#root{min-height:100vh}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .3s ease-out}@media(prefers-reduced-motion:reduce){.fade-in{animation:none}*{transition:none!important}}.app-container{max-width:1600px;margin:0 auto;padding:20px 16px}.header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.header-left{display:flex;align-items:center;gap:12px}.header-logo{width:36px;height:36px;background:linear-gradient(135deg,var(--accent),#a855f7);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;font-weight:700}.header h1{font-size:20px;font-weight:700;letter-spacing:-.3px}.header-sub{font-size:12px;color:var(--text-muted)}.header-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.user-chip{font-size:12px;color:var(--text-secondary)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);transition:all .15s}.btn:hover{background:var(--bg-hover);border-color:var(--text-muted)}.btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-sm{padding:4px 10px;font-size:12px}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.toolbar label{font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.select,.date-input{padding:7px 12px;border-radius:var(--radius-sm);font-size:13px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);outline:none;min-width:160px}.select:focus,.date-input:focus{border-color:var(--accent)}.toolbar-group{display:flex;align-items:center;gap:8px}.grid-wrap{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:auto;max-height:calc(100vh - 220px)}table.schedule{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;font-variant-numeric:tabular-nums}table.schedule th,table.schedule td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:0;white-space:nowrap}table.schedule thead th{background:var(--bg-secondary);color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.4px;font-weight:600;padding:8px 6px;position:sticky;top:0;z-index:3}table.schedule thead th.date-col{left:0;z-index:4}table.schedule tbody th.date-cell{position:sticky;left:0;z-index:2;background:var(--bg-secondary);color:var(--text-primary);font-size:12px;font-weight:600;text-align:left;padding:6px 10px;min-width:130px}table.schedule tbody tr:hover th.date-cell,table.schedule tbody tr:hover td{background:var(--bg-hover)}.cell-input{width:100%;height:28px;padding:4px 6px;text-align:right;background:transparent;border:1px solid transparent;color:var(--text-secondary);font-size:12px;font-variant-numeric:tabular-nums;outline:none;transition:background .12s,border-color .12s,color .12s;-moz-appearance:textfield}.cell-input::-webkit-outer-spin-button,.cell-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cell-input:hover{background:var(--bg-secondary)}.cell-input:focus{border-color:var(--accent);background:var(--bg-secondary);color:var(--text-primary)}.cell-input.override{background:var(--yellow);color:var(--override-text);font-weight:600}.cell-input.override:hover{background:var(--yellow)}.cell-input.override:focus{background:var(--yellow);color:var(--override-text);border-color:var(--accent)}.cell-input.finalized,.cell-input.finalized:hover,.cell-input.finalized:disabled{background:var(--green)!important;color:var(--approved-text)!important;font-weight:600;opacity:1!important}.cell-input.finalized:focus{background:var(--green)!important;color:var(--approved-text)!important;border-color:var(--accent)}.cell-input.approved,.cell-input.approved:hover,.cell-input.approved:disabled{background:var(--green)!important;color:var(--approved-text)!important;font-weight:600;opacity:1!important}.cell-input.approved:focus{background:var(--green)!important;color:var(--approved-text)!important;border-color:var(--accent)}.cell-input.declined,.cell-input.declined:hover,.cell-input.declined:disabled{background:var(--red)!important;color:var(--declined-text)!important;font-weight:600;opacity:1!important}.cell-input.declined:focus{background:var(--red)!important;color:var(--declined-text)!important;border-color:var(--accent)}.cell-input.reason-maintenance,.cell-input.reason-maintenance:hover,.cell-input.reason-maintenance:disabled{background:var(--pink)!important;color:var(--pink-text)!important;font-weight:600;opacity:1!important}.cell-input.reason-outage,.cell-input.reason-outage:hover,.cell-input.reason-outage:disabled{background:var(--grey-outage)!important;color:var(--grey-outage-text)!important;font-weight:600;opacity:1!important}.cell-input.saving{border-color:var(--yellow)}.cell-input.error{border-color:var(--red);background:var(--red-bg);color:var(--red)}.cell-input.saved-flash{background:var(--green-bg)}td.hour-past{background:var(--past-bg)!important}tr.miner-group-row td.hour-past,tr.miner-group-row td.hour-current{background:var(--bg-primary)!important}tr.miner-group-row.row-all-approved td.hour-past,tr.miner-group-row.row-all-approved td.hour-current{background:var(--green-bg)!important}tr.miner-group-row.row-all-submitted td.hour-past,tr.miner-group-row.row-all-submitted td.hour-current{background:var(--yellow-bg)!important}td.hour-past .cell-input,td.hour-past .cell-input:disabled{color:var(--past-text)!important;opacity:1!important}td.hour-past .cell-input.override,td.hour-past .cell-input.override:disabled{background:var(--past-override-bg)!important;color:var(--past-override-text)!important;opacity:1!important}td.hour-past .cell-input.finalized,td.hour-past .cell-input.finalized:disabled{background:var(--past-approved-bg)!important;color:var(--past-approved-text)!important;opacity:1!important}td.hour-past .cell-input.approved,td.hour-past .cell-input.approved:disabled{background:var(--past-approved-bg)!important;color:var(--past-approved-text)!important;opacity:1!important}td.hour-past .cell-input.declined,td.hour-past .cell-input.declined:disabled{background:var(--past-declined-bg)!important;color:var(--past-declined-text)!important;opacity:1!important}td.hour-past .cell-input.reason-maintenance,td.hour-past .cell-input.reason-maintenance:disabled{background:var(--past-pink-bg)!important;color:var(--past-pink-text)!important;opacity:1!important}td.hour-past .cell-input.reason-outage,td.hour-past .cell-input.reason-outage:disabled{background:var(--past-grey-bg)!important;color:var(--past-grey-text)!important;opacity:1!important}tr.date-row td.hour-past{background:var(--past-bg)!important}tr.date-row td.hour-past .total-cell{color:var(--past-text)!important}tr.date-row td.hour-past .total-cell.cell-override{background:var(--past-override-bg)!important;color:var(--past-override-text)!important}tr.date-row td.hour-past .total-cell.cell-finalized,tr.date-row td.hour-past .total-cell.cell-approved{background:var(--past-approved-bg)!important;color:var(--past-approved-text)!important}tr.date-row td.hour-past .total-cell.cell-declined{background:var(--past-declined-bg)!important;color:var(--past-declined-text)!important}tr.date-row td.hour-past .total-cell.cell-maintenance{background:var(--past-pink-bg)!important;color:var(--past-pink-text)!important}tr.date-row td.hour-past .total-cell.cell-outage{background:var(--past-grey-bg)!important;color:var(--past-grey-text)!important}td.hour-current{background:var(--current-bg)!important}td.hour-current .cell-input,td.hour-current .cell-input:disabled{color:var(--current-text)!important;font-weight:600;opacity:1!important}td.today-col.hour-current .cell-input,td.today-col.hour-current .cell-input:disabled{color:var(--accent)!important}td.hour-current .cell-input.override,td.hour-current .cell-input.override:disabled{background:var(--current-override-bg)!important;color:var(--current-override-text)!important;opacity:.75!important}td.hour-current .cell-input.finalized,td.hour-current .cell-input.finalized:disabled{background:var(--current-approved-bg)!important;color:var(--approved-text)!important;opacity:.75!important}td.hour-current .cell-input.approved,td.hour-current .cell-input.approved:disabled{background:var(--current-approved-bg)!important;color:var(--approved-text)!important;opacity:.75!important}td.hour-current .cell-input.declined,td.hour-current .cell-input.declined:disabled{background:var(--current-declined-bg)!important;color:var(--declined-text)!important;opacity:.75!important}td.hour-current .cell-input.reason-maintenance,td.hour-current .cell-input.reason-maintenance:disabled{background:var(--current-pink-bg)!important;color:var(--pink-text)!important;opacity:.75!important}td.hour-current .cell-input.reason-outage,td.hour-current .cell-input.reason-outage:disabled{background:var(--current-grey-bg)!important;color:var(--grey-outage-text)!important;opacity:.75!important}tr.date-row td.hour-current .total-cell{color:var(--current-text)!important}tr.date-row.today td.hour-current .total-cell{color:var(--accent)!important}tr.date-row td.hour-current .total-cell.cell-override{background:var(--current-override-bg)!important;color:var(--current-override-text)!important}tr.date-row td.hour-current .total-cell.cell-finalized{background:var(--current-approved-bg)!important;color:var(--approved-text)!important}tr.date-row td.hour-current .total-cell.cell-approved{background:var(--green-bg)!important;color:var(--accent)!important}tr.date-row td.hour-current .total-cell.cell-declined{background:var(--current-declined-bg)!important;color:var(--declined-text)!important}tr.date-row td.hour-current .total-cell.cell-maintenance{background:var(--current-pink-bg)!important;color:var(--pink-text)!important}tr.date-row td.hour-current .total-cell.cell-outage{background:var(--current-grey-bg)!important;color:var(--grey-outage-text)!important}.today-col{background:var(--today-bg)}th.today-col{color:var(--accent-hover)!important}td.tomorrow-col .cell-input,td.tomorrow-col .cell-input:disabled{color:var(--accent)!important}tr.date-row.tomorrow td .total-cell{color:var(--accent)!important}.toast-container{position:fixed;top:20px;right:20px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:360px}.toast{padding:10px 16px;border-radius:var(--radius-sm);font-size:13px;box-shadow:0 4px 12px #0000004d;animation:fadeIn .3s ease-out}.toast-success{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.toast-error{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,var(--login-gradient-start) 0%,var(--login-gradient-end) 100%)}.login-card{background:var(--login-card-bg);border-radius:12px;padding:40px;width:100%;max-width:400px;box-shadow:var(--login-card-shadow);text-align:center;animation:fadeInUp .6s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,20%,40%,60%,80%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}}.login-card.shake{animation:shake .5s ease-in-out}.login-logo{height:60px;width:auto;margin-bottom:20px}.login-card h2{color:var(--login-heading);font-size:24px;font-weight:700;margin-bottom:8px}.login-sub{color:var(--login-sub);font-size:16px;margin-bottom:0}.login-form{margin-top:30px}.form-group{margin-bottom:20px;text-align:left}.form-group label{display:block;color:var(--login-label);font-weight:700;margin-bottom:8px;font-size:14px;text-transform:none;letter-spacing:normal}.form-group input{width:100%;padding:12px 16px;border:2px solid var(--login-input-border);border-radius:8px;font-size:16px;background:var(--login-input-bg);color:var(--login-input-text);outline:none;transition:border-color .3s ease;box-sizing:border-box}.form-group input:focus{border-color:var(--login-input-focus)}.login-error{background:var(--login-error-bg);color:#fff;padding:12px;border-radius:6px;margin-bottom:15px;font-size:14px;text-align:center}.tc-checkbox{display:flex;align-items:flex-start;gap:8px;margin-bottom:16px;font-size:13px;color:var(--login-footer-text);cursor:pointer;line-height:1.4}.tc-checkbox input[type=checkbox]{margin-top:2px;flex-shrink:0;cursor:pointer;width:16px;height:16px}.tc-checkbox a{color:var(--login-btn-bg);text-decoration:underline}.tc-checkbox a:hover{color:var(--login-btn-hover)}.login-btn{width:100%;background:var(--login-btn-bg);color:#fff;border:none;padding:12px 20px;border-radius:8px;font-size:16px;font-weight:700;cursor:pointer;transition:background-color .3s ease}.login-btn:hover{background:var(--login-btn-hover)}.login-btn:disabled{background:var(--login-btn-disabled);cursor:not-allowed}.login-footer{margin-top:30px;padding-top:20px;border-top:1px solid var(--login-footer-border);color:var(--login-footer-text);font-size:12px}.loading-container{display:flex;align-items:center;justify-content:center;padding:60px 0;color:var(--text-muted)}.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-right:10px}.status-line{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--text-muted);margin-top:8px;flex-wrap:wrap}.legend-dot{width:10px;height:10px;border-radius:2px;display:inline-block;vertical-align:middle;margin-right:5px}.legend-dot.default{background:var(--text-muted)}.legend-dot.override{background:var(--yellow)}.legend-dot.approved{background:var(--green)}.legend-dot.declined{background:var(--red)}.legend-dot.maintenance{background:var(--pink)}.legend-dot.outage{background:var(--grey-outage)}.legend-dot.weather-hot{background:#ef44448c}.legend-dot.weather-warm{background:#fb923c80}.legend-dot.weather-mild{background:var(--text-muted)}.legend-dot.weather-cold{background:#3b82f6a6}.legend-dot.weather-extreme-cold{background:#a855f7bf}td.cell-selected{position:relative;outline:2px solid var(--accent);outline-offset:-2px}td.cell-selected .cell-input,td.cell-selected span.cell-input{filter:brightness(.7)}table.schedule.has-selection{-webkit-user-select:none;user-select:none}.selection-toolbar{display:inline-flex;align-items:center;gap:8px;margin-left:auto}.selection-info{font-size:12px;color:var(--accent);font-weight:500}.fill-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.fill-dialog{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;width:320px;box-shadow:0 8px 32px #00000080}.fill-dialog h3{font-size:16px;margin-bottom:12px}.fill-dialog .form-group{margin-bottom:16px}.fill-dialog .btn-row{display:flex;gap:8px;justify-content:flex-end}.fill-dialog textarea{width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-size:13px;outline:none;font-family:inherit;resize:vertical;min-height:60px}.fill-dialog textarea:focus{border-color:var(--accent)}td.has-comment{position:relative}td.has-comment:before{content:"";position:absolute;top:1px;right:1px;width:0;height:0;border-top:6px solid var(--accent);border-left:6px solid transparent;z-index:1;pointer-events:none}td.has-comment:after{content:attr(data-comment);position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-size:12px;line-height:1.4;white-space:pre-wrap;max-width:250px;width:max-content;box-shadow:0 4px 12px #0006;z-index:100;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s}td.has-comment:hover:after{opacity:1;visibility:visible}.context-menu{position:fixed;z-index:150;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 0;box-shadow:0 8px 24px #0006;min-width:180px}.context-menu button{display:block;width:100%;text-align:left;padding:8px 14px;font-size:13px;color:var(--text-primary);background:none;border:none;cursor:pointer}.context-menu button:hover{background:var(--bg-hover)}.context-menu button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.context-menu .sep{height:1px;background:var(--border);margin:4px 0}.final-cell{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:15px;padding:4px 10px;min-width:50px;transition:opacity .15s}.final-cell:hover{opacity:.8}.final-cell.locked{cursor:not-allowed;opacity:.4}tr.sub-row td.final-col{background:var(--bg-expanded)}.final-check{color:var(--green)}.final-pending{color:var(--yellow);font-size:17px}tr.date-row.today .final-pending,tr.date-row.tomorrow .final-pending,tr.miner-group-row.today .final-pending,tr.miner-group-row.tomorrow .final-pending{color:var(--accent)!important}.final-x{color:var(--text-muted)}.cell-input:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}tr.row-readonly td{background:var(--row-readonly-bg)}tr.sub-row.row-submitted td.td-pending,tr.sub-row.row-submitted td.td-pending.hour-past,tr.sub-row.row-submitted td.td-pending.hour-current{background:var(--yellow-bg)!important}tr.sub-row.row-approved td,tr.sub-row.row-approved td.hour-past,tr.sub-row.row-approved td.hour-current,tr.sub-row.row-approved td.final-col,tr.sub-row.row-approved th.switch-cell{background:var(--green-bg)!important}tr.sub-row.row-approved:hover td,tr.sub-row.row-approved:hover th.switch-cell{background:var(--green-bg)!important;filter:brightness(.95)}tr.sub-row.row-approved td .cell-input.approved,tr.sub-row.row-approved td .cell-input.approved:disabled,tr.sub-row.row-approved td .cell-input.finalized,tr.sub-row.row-approved td .cell-input.finalized:disabled{background:var(--current-approved-bg)!important;color:var(--approved-text)!important;font-weight:600;opacity:1!important}tr.sub-row.row-approved td.hour-past .cell-input.approved:disabled,tr.sub-row.row-approved td.hour-past .cell-input.finalized:disabled{background:var(--past-approved-bg)!important;color:var(--past-approved-text)!important;opacity:1!important}tr.sub-row.row-approved td .cell-input.reason-maintenance,tr.sub-row.row-approved td .cell-input.reason-maintenance:disabled{background:var(--pink)!important;color:var(--pink-text)!important;opacity:1!important}tr.sub-row.row-approved td .cell-input.reason-outage,tr.sub-row.row-approved td .cell-input.reason-outage:disabled{background:var(--grey-outage)!important;color:var(--grey-outage-text)!important;opacity:1!important}tr.sub-row.row-has-approved td,tr.sub-row.row-has-approved td.hour-past,tr.sub-row.row-has-approved td.hour-current,tr.sub-row.row-has-approved td.final-col,tr.sub-row.row-has-approved th.switch-cell{background:var(--green-bg)!important}tr.sub-row.row-has-approved td.td-pending,tr.sub-row.row-has-approved td.td-pending.hour-current{background:var(--yellow-bg)!important}tr.date-row.row-all-approved th.date-cell,tr.date-row.row-all-approved td,tr.date-row.row-all-approved td.hour-past,tr.date-row.row-all-approved td.hour-current,tr.date-row.row-all-approved td.final-summary{background:var(--green-bg)!important}tr.date-row.row-all-approved .total-cell{background:transparent!important}tr.date-row.row-all-submitted th.date-cell,tr.date-row.row-all-submitted td,tr.date-row.row-all-submitted td.hour-past,tr.date-row.row-all-submitted td.hour-current,tr.date-row.row-all-submitted td.final-summary{background:var(--yellow-bg)!important}tr.date-row.row-all-submitted .total-cell{background:transparent!important}tr.date-row.row-tomorrow-pending th.date-cell,tr.date-row.row-today-pending th.date-cell{background:#f59e0b!important;color:var(--accent-hover)!important;font-weight:700}tr.date-row.row-tomorrow-pending td.final-summary,tr.date-row.row-today-pending td.final-summary{background:#f59e0b!important}tr.date-row.row-future-collapsed td .total-cell{color:var(--text-primary)!important;opacity:1}tr.date-row th.date-cell{background:var(--bg-hover);cursor:pointer;font-size:13px;font-weight:700;color:var(--text-primary)}tr.date-row.today th.date-cell,tr.date-row.tomorrow th.date-cell{color:var(--accent-hover)}tr.date-row td{background:var(--bg-hover);padding:0}tr.date-row .total-cell{width:100%;height:28px;padding:4px 6px;text-align:right;font-size:12px;font-weight:700;color:var(--text-secondary);font-variant-numeric:tabular-nums;background:transparent;border:none}tr.date-row .total-cell.cell-override{background:var(--yellow);color:var(--override-text);font-weight:700}tr.date-row .total-cell.cell-finalized{background:var(--green);color:var(--approved-text);font-weight:700}tr.date-row .total-cell.cell-approved{background:var(--green-bg);color:var(--accent);font-weight:700}tr.date-row .total-cell.cell-declined{background:var(--red);color:var(--declined-text);font-weight:700}tr.date-row .total-cell.cell-maintenance{background:var(--pink);color:var(--pink-text);font-weight:700}tr.date-row .total-cell.cell-outage{background:var(--grey-outage);color:var(--grey-outage-text);font-weight:700}tr.date-row td.final-summary{background:var(--bg-hover);color:var(--text-muted);font-size:11px;text-align:center;padding:4px 6px}.expand-btn{display:inline-block;width:18px;text-align:center;font-weight:700;color:var(--accent);margin-right:8px;font-family:monospace;-webkit-user-select:none;user-select:none}tr.miner-group-row th.miner-group-cell{position:sticky;left:0;z-index:2;background:var(--bg-primary);color:var(--text-primary);font-size:13px;font-weight:700;text-align:left;padding:4px 10px 4px 22px;cursor:pointer}tr.miner-group-row td,tr.miner-group-row td.hour-past,tr.miner-group-row td.hour-current{background:var(--bg-primary);padding:0}tr.miner-group-row .total-cell{width:100%;height:28px;padding:4px 6px;text-align:right;font-size:12px;font-weight:600;color:var(--text-secondary);font-variant-numeric:tabular-nums;background:transparent;border:none}tr.miner-group-row td.final-summary{background:var(--bg-primary);color:var(--text-muted);font-size:11px;text-align:center;padding:4px 6px}tr.miner-group-row.row-all-approved th.miner-group-cell,tr.miner-group-row.row-all-approved td,tr.miner-group-row.row-all-approved td.hour-past,tr.miner-group-row.row-all-approved td.hour-current,tr.miner-group-row.row-all-approved td.final-summary{background:var(--green-bg)!important}tr.miner-group-row.row-all-approved .total-cell{background:transparent!important}tr.miner-group-row.row-all-approved .total-cell.cell-maintenance,tr.miner-group-row.row-all-approved .total-cell.cell-outage{background:revert!important}tr.miner-group-row.row-all-submitted th.miner-group-cell,tr.miner-group-row.row-all-submitted td,tr.miner-group-row.row-all-submitted td.hour-past,tr.miner-group-row.row-all-submitted td.hour-current,tr.miner-group-row.row-all-submitted td.final-summary{background:var(--yellow-bg)!important}tr.miner-group-row.row-all-submitted .total-cell{background:transparent!important}tr.miner-group-row.row-all-submitted .total-cell.cell-maintenance,tr.miner-group-row.row-all-submitted .total-cell.cell-outage{background:revert!important}tr.miner-group-row .total-cell.cell-maintenance{background:var(--pink)!important;color:var(--pink-text)!important}tr.miner-group-row .total-cell.cell-outage{background:var(--grey-outage)!important;color:var(--grey-outage-text)!important}tr.miner-group-row td.hour-past .total-cell.cell-maintenance{background:var(--past-pink-bg)!important;color:var(--past-pink-text)!important}tr.miner-group-row td.hour-past .total-cell.cell-outage{background:var(--past-grey-bg)!important;color:var(--past-grey-text)!important}tr.miner-group-row td.hour-current .total-cell.cell-maintenance{background:var(--current-pink-bg)!important;color:var(--pink-text)!important}tr.miner-group-row td.hour-current .total-cell.cell-outage{background:var(--current-grey-bg)!important;color:var(--grey-outage-text)!important}tr.sub-row th.switch-cell{position:sticky;left:0;z-index:2;background:var(--bg-expanded);color:var(--text-primary);font-size:12px;font-weight:700;text-align:left;padding:4px 10px 4px 34px;min-width:220px}tr.sub-row td{background:var(--bg-expanded)}tr.sub-row td.hour-past,tr.sub-row td.hour-current{background:var(--bg-expanded)!important}tr.sub-row:not(.row-submitted):not(.row-approved):hover th.switch-cell,tr.sub-row:not(.row-submitted):not(.row-approved):hover td{background:var(--bg-hover)!important}tr.sub-row.row-readonly th.switch-cell{color:var(--text-muted)}tr.weather-row th.weather-date-cell{cursor:default}tr.weather-row th.weather-date-cell .expand-btn{display:none}.weather-cell{font-size:.8rem;font-weight:600;text-align:center;padding:2px 0;font-variant-numeric:tabular-nums}td.weather-hot{background:#ef44442e;color:var(--red)}td.weather-warm{background:#fb923c26;color:#f59e0b}td.weather-mild{background:transparent}td.weather-cold{background:#3b82f633;color:var(--blue)}td.weather-extreme-cold{background:#a855f740;color:#c084fc}[data-theme=light] td.weather-hot{background:#ef44441f;color:#dc2626}[data-theme=light] td.weather-warm{background:#fb923c1a;color:#d97706}[data-theme=light] td.weather-cold{background:#3b82f626;color:#1d4ed8}[data-theme=light] td.weather-extreme-cold{background:#a855f726;color:#7c3aed}tr.weather-row.weather-past td{opacity:.7}.notification-wrapper{display:inline-flex;align-items:center}.notification-bell{position:relative;font-size:18px;line-height:1;padding:4px 8px;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text-primary)}.notification-bell:hover{background:var(--bg-hover)}.notification-badge{position:absolute;top:-4px;right:-4px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:8px;padding:0 4px}.notification-panel{position:absolute;top:100%;right:0;z-index:1000;width:360px;max-height:420px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000002e;display:flex;flex-direction:column;margin-top:4px}.notification-panel-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);font-weight:600;font-size:14px}.notification-panel-header button{font-size:12px;color:var(--accent);background:none;border:none;cursor:pointer}.notification-panel-header button:hover{text-decoration:underline}.notification-panel-list{overflow-y:auto;flex:1;padding:4px 0}.notification-empty{padding:24px 14px;text-align:center;color:var(--muted);font-size:13px}.notification-item{padding:10px 14px;border-left:3px solid transparent;border-bottom:1px solid var(--border)}.notification-item:last-child{border-bottom:none}.notification-item.type-pending{border-left-color:#eab308}.notification-item.type-approved{border-left-color:#22c55e}.notification-item.type-declined{border-left-color:#ef4444}.notification-item-title{font-weight:600;font-size:13px;margin-bottom:2px}.notification-item-body{font-size:12px;color:var(--muted);line-height:1.4}.notification-item-time{font-size:11px;color:var(--muted);margin-top:4px;opacity:.7}.btn-enable-notif{font-size:12px;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap}.btn-enable-notif:hover{background:var(--accent-hover)}@media(max-width:768px){.header{align-items:flex-start;flex-direction:column}.toolbar{flex-direction:column;align-items:stretch}.toolbar-group{width:100%}.select,.date-input{min-width:0;width:100%}.notification-panel{width:300px}}
