:root{--easyjet-orange:#ff6900;--bg:#f5f5f7;--surface:#fff;--text:#1a1a1a;--text-secondary:#666;--border:#ccc;--border-subtle:#e0e0e0;--error-text:#d32f2f;--error-bg:#fdecea;--warning-text:#b45309;--warning-bg:#fff4e5;--success:#2e7d32;--rv-bg:#f5f5f7;--rv-card-bg:#fff;--rv-card-border:#e0e0e0;--rv-text:#1a1a1a;--rv-subtext:#666;--rv-flight:#1c5cab;--rv-time-actual:#c0392b;--rv-standby:#007a86;--rv-dayoff:#2e7d32;--rv-pending-bg:#fbe4e2;--rv-pending-border:#c1392b;--rv-pending-text:#c1392b;--rv-header-bg:var(--easyjet-orange);--rv-header-text:#fff;--band-short-dot:#2a78d6;--band-short-text:#1c5cab;--band-short-row-bg:#e8f1fc;--band-medium-dot:#1baf7a;--band-medium-text:#0f7a52;--band-medium-row-bg:#e3f7ef;--band-long-dot:#eda100;--band-long-text:#8a6100;--band-long-row-bg:#fdf1dc;--band-extra-long-dot:#e34948;--band-extra-long-text:#c1392b;--band-extra-long-row-bg:#fdeceb}:root[data-theme=dark]{--bg:#1c1c1e;--surface:#2a2a2d;--text:#f0f0f0;--text-secondary:#a0a0a5;--border:#4a4a4d;--border-subtle:#3a3a3d;--error-text:#ff6b6b;--error-bg:#3d1f1f;--warning-text:#ffb74d;--warning-bg:#3d2f1a;--success:#66bb6a;--rv-bg:#1c1c1e;--rv-card-bg:#2a2a2d;--rv-card-border:#2a2a2d;--rv-text:#f0f0f0;--rv-subtext:#a0a0a5;--rv-flight:#5b9bf5;--rv-time-actual:#ff8a80;--rv-standby:#4dd0e1;--rv-dayoff:#9ccc65;--rv-pending-bg:#3d1f1f;--rv-pending-border:#e53935;--rv-pending-text:#ff6b6b;--rv-header-bg:#17171a;--rv-header-text:var(--easyjet-orange);--band-short-dot:#3987e5;--band-short-text:#6fa8f0;--band-short-row-bg:#16233a;--band-medium-dot:#199e70;--band-medium-text:#4dd9a8;--band-medium-row-bg:#132922;--band-long-dot:#c98500;--band-long-text:#f0b93d;--band-long-row-bg:#2e2410;--band-extra-long-dot:#e66767;--band-extra-long-text:#f08a89;--band-extra-long-row-bg:#33191a}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg:#1c1c1e;--surface:#2a2a2d;--text:#f0f0f0;--text-secondary:#a0a0a5;--border:#4a4a4d;--border-subtle:#3a3a3d;--error-text:#ff6b6b;--error-bg:#3d1f1f;--warning-text:#ffb74d;--warning-bg:#3d2f1a;--success:#66bb6a;--rv-bg:#1c1c1e;--rv-card-bg:#2a2a2d;--rv-card-border:#2a2a2d;--rv-text:#f0f0f0;--rv-subtext:#a0a0a5;--rv-flight:#5b9bf5;--rv-time-actual:#ff8a80;--rv-standby:#4dd0e1;--rv-dayoff:#9ccc65;--rv-pending-bg:#3d1f1f;--rv-pending-border:#e53935;--rv-pending-text:#ff6b6b;--rv-header-bg:#17171a;--rv-header-text:var(--easyjet-orange);--band-short-dot:#3987e5;--band-short-text:#6fa8f0;--band-short-row-bg:#16233a;--band-medium-dot:#199e70;--band-medium-text:#4dd9a8;--band-medium-row-bg:#132922;--band-long-dot:#c98500;--band-long-text:#f0b93d;--band-long-row-bg:#2e2410;--band-extra-long-dot:#e66767;--band-extra-long-text:#f08a89;--band-extra-long-row-bg:#33191a}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#app{flex-direction:column;min-height:100vh;display:flex}.screen{width:100%;max-width:480px;margin:0 auto;padding:24px 20px}h1{color:var(--easyjet-orange);margin-bottom:12px;font-size:1.5rem}.loading{text-align:center;color:var(--text-secondary);padding:40px 20px}.error{color:var(--error-text);background:var(--error-bg);border-radius:8px;padding:12px;font-size:.9rem}.warning{color:var(--warning-text);background:var(--warning-bg);border-radius:8px;margin-bottom:16px;padding:12px;font-size:.85rem}.status-ok{color:var(--success);font-weight:600}.status-list{margin:16px 0;padding:0;list-style:none}.status-list li{border-bottom:1px solid var(--border-subtle);padding:10px 0;font-size:.9rem}.next-step{color:var(--text-secondary);margin-top:24px;font-size:.85rem;font-style:italic}.field-note{color:var(--text-secondary);margin-top:4px;font-size:.8rem;display:block}.legacy-routes-details{border:1px solid var(--border-subtle);border-radius:8px;margin:16px 0;padding:10px 14px}.legacy-routes-details summary{cursor:pointer;color:var(--text-secondary);font-size:.9rem}.legacy-routes-details .status-list{margin-bottom:0}.route-finder{border:1px solid var(--border-subtle);background:var(--surface);border-radius:8px;margin:16px 0;padding:14px}.route-finder #rd-finder-result:not(:empty){margin-top:10px}.route-finder #rd-finder-result .status-list{margin:0}.disclaimer-box{background:var(--warning-bg);border-radius:8px;margin-bottom:16px;padding:12px;font-size:.85rem}.disclaimer-box p+p{margin-top:8px}.theme-toggle-btn{width:auto;padding:10px 14px;font-size:.85rem}form{flex-direction:column;gap:12px;margin-top:20px;display:flex}label{flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;display:flex}.checkbox-label{flex-direction:row;align-items:flex-start;gap:8px;font-size:.85rem;font-weight:400;display:flex}.checkbox-label input{width:auto;margin-top:3px}input,select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:14px;font-family:inherit;font-size:1rem;font-weight:400}button{color:#fff;background:var(--easyjet-orange);cursor:pointer;border:none;border-radius:8px;padding:14px;font-size:1rem;font-weight:600}button:active{opacity:.85}.secondary-btn{color:var(--text);border:1px solid var(--border);background:0 0}.calendar-option-btn{text-align:left;background:var(--surface);width:100%;color:var(--text);border:1px solid var(--border);display:block}.calendar-option-btn .field-note{margin-top:0;display:inline}.snc-decision-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.snc-decision-actions .checkbox-label{flex-basis:100%;font-size:.8rem}.band-dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.band-dot.band-short{background:var(--band-short-dot)}.band-dot.band-medium{background:var(--band-medium-dot)}.band-dot.band-long{background:var(--band-long-dot)}.band-dot.band-extra-long{background:var(--band-extra-long-dot)}.band-label{text-transform:uppercase;letter-spacing:.02em;font-weight:700}.band-label.band-short{color:var(--band-short-text)}.band-label.band-medium{color:var(--band-medium-text)}.band-label.band-long{color:var(--band-long-text)}.band-label.band-extra-long{color:var(--band-extra-long-text)}.band-legend{color:var(--text-secondary);flex-wrap:wrap;gap:12px;margin:12px 0;font-size:.8rem;display:flex}.band-legend-item{align-items:center;display:inline-flex}.status-list .band-row{border-bottom:none;border-left:4px solid #0000;border-radius:0 8px 8px 0;margin-bottom:6px;padding:10px}.band-row.band-short{background:var(--band-short-row-bg);border-left-color:var(--band-short-dot)}.band-row.band-medium{background:var(--band-medium-row-bg);border-left-color:var(--band-medium-dot)}.band-row.band-long{background:var(--band-long-row-bg);border-left-color:var(--band-long-dot)}.band-row.band-extra-long{background:var(--band-extra-long-row-bg);border-left-color:var(--band-extra-long-dot)}.snc-decision-actions button{width:auto;padding:8px 14px;font-size:.85rem}.roster-view{background:var(--rv-bg);color:var(--rv-text);border-radius:0;margin:-24px -20px;padding:24px 20px}.roster-view .rv-heading{background:var(--rv-header-bg);color:var(--rv-header-text);margin:-24px -20px 16px;padding:20px}.roster-view .rv-subtext{color:var(--rv-subtext);font-size:.8rem}.roster-view-day{background:var(--rv-card-bg);border:1px solid var(--rv-card-border);border-right:4px solid #0000;border-radius:8px;margin-bottom:10px;padding:12px 14px}.roster-view-day.rv-accent-dayoff{border-right-color:var(--rv-dayoff)}.roster-view-day.rv-accent-standby{border-right-color:var(--rv-standby)}.roster-view-day.rv-accent-flying{border-right-color:var(--rv-flight)}.rv-date{color:var(--rv-text);margin-bottom:6px;font-weight:700}.rv-flight-row{margin:2px 0;font-size:.9rem}.rv-flight,.rv-flightnum{color:var(--rv-flight);font-size:.9rem;font-weight:700}.rv-time{color:var(--rv-text);font-weight:400}.rv-time-actual{color:var(--rv-time-actual)}.rv-airport{color:var(--rv-text);font-weight:700}.rv-code.rv-standby{color:var(--rv-standby);font-weight:700}.rv-code.rv-dayoff{color:var(--rv-dayoff);font-weight:700}.roster-view-day.pending-change{background:var(--rv-pending-bg);border-left:4px solid var(--rv-pending-border);border-right-color:var(--rv-pending-border)}.roster-view-day.pending-change .rv-flight,.roster-view-day.pending-change .rv-flightnum,.roster-view-day.pending-change .rv-time,.roster-view-day.pending-change .rv-airport,.roster-view-day.pending-change .rv-code,.roster-view-day.pending-change .rv-date{color:var(--rv-pending-text)}.rv-confirm-btn{background:var(--rv-pending-border);width:auto;margin-top:8px;padding:8px 12px;font-size:.8rem}
