*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.theme-light{--bg: #f8fafc;--bg-card: #ffffff;--bg-card-next:#ffffff;--text: #0f172a;--text-sub: #64748b;--text-dim: #94a3b8;--border: #e2e8f0;--shadow: 0 1px 3px rgba(0,0,0,.08), 0 4px 16px rgba(0,0,0,.06);--shadow-next: 0 4px 24px rgba(0,0,0,.12);--accent: #0f172a;--early: #d97706;--late: #dc2626;--ontime: #16a34a;--sched: #94a3b8;--info: #2563eb;--warning: #d97706;--severe: #dc2626;--toggle-bg: #e2e8f0;--toggle-act: #0f172a;--toggle-text-act: #ffffff}.theme-dark{--bg: #0f172a;--bg-card: #1e293b;--bg-card-next:#1e293b;--text: #f8fafc;--text-sub: #b0bec5;--text-dim: #78909c;--border: #334155;--shadow: 0 1px 3px rgba(0,0,0,.3), 0 4px 16px rgba(0,0,0,.25);--shadow-next: 0 4px 24px rgba(0,0,0,.4);--accent: #f1f5f9;--early: #f59e0b;--late: #f87171;--ontime: #4ade80;--sched: #64748b;--info: #93c5fd;--warning: #f59e0b;--severe: #f87171;--toggle-bg: #1e293b;--toggle-act: #f1f5f9;--toggle-text-act: #0f172a}.app{min-height:100vh;background:var(--bg);color:var(--text);display:flex;flex-direction:column;max-width:480px;margin:0 auto;padding:0 0 env(safe-area-inset-bottom,16px)}.header{padding:20px 20px 14px;border-bottom:1px solid var(--border)}.header-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.header-route{font-size:22px;font-weight:700;letter-spacing:-.5px;color:var(--text)}.header-time{font-size:22px;font-weight:300;color:var(--text-sub);font-variant-numeric:tabular-nums}.header-top-right{display:flex;align-items:center;gap:10px}.dark-btn{background:transparent;border:none;font-size:18px;cursor:pointer;padding:2px 4px;line-height:1;opacity:.7;transition:opacity .15s}.dark-btn:hover{opacity:1}.header-dir{font-size:15px;font-weight:600;color:var(--text);margin-bottom:2px}.header-stop{font-size:13px;color:var(--text-sub);margin-bottom:6px}.header-updated{font-size:12px;color:var(--text-dim);margin-top:4px}.header-updated.stale{color:var(--late);font-weight:500}.cards{flex:1;padding:16px 16px 8px;display:flex;flex-direction:column;gap:10px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)}.card-empty{color:var(--text-dim);font-size:14px;text-align:center;padding:20px}.service-banner{border:1px solid var(--border);border-radius:12px;padding:11px 13px;font-size:13px;display:flex;flex-direction:column;gap:7px}.service-info{background:color-mix(in srgb,var(--info) 9%,transparent);color:var(--text);border-color:color-mix(in srgb,var(--info) 24%,var(--border))}.service-warning{background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--text);border-color:color-mix(in srgb,var(--warning) 34%,var(--border))}.service-severe{background:color-mix(in srgb,var(--severe) 12%,transparent);color:var(--text);border-color:color-mix(in srgb,var(--severe) 38%,var(--border))}.service-alert{display:flex;flex-direction:column;gap:2px}.service-alert-title{display:flex;gap:7px;align-items:baseline;font-weight:650;line-height:1.25}.service-alert-icon{flex:0 0 auto}.service-alert-desc,.data-quality{color:var(--text-sub);line-height:1.3}.data-quality{font-size:12px;padding-top:2px}.card-side{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto auto;align-items:baseline;gap:2px 8px}.card-role{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);grid-column:1}.card-side-time{font-size:20px;font-weight:600;color:var(--text);grid-column:2;grid-row:1 / 3;align-self:center;text-align:right;font-variant-numeric:tabular-nums}.side-mins{font-size:28px;font-weight:700;letter-spacing:-1px}.card-sub{font-size:12px;color:var(--text-sub);grid-column:1}.card-warning{font-size:11px;color:var(--text-dim);grid-column:1 / -1;margin-top:4px}.card-next{background:var(--bg-card-next);border:1.5px solid var(--border);border-radius:18px;padding:22px 22px 18px;box-shadow:var(--shadow-next);display:flex;flex-direction:column;align-items:flex-start;gap:6px}.role-next{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.next-mins{font-size:72px;font-weight:800;letter-spacing:-4px;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}.next-mins-label{font-size:28px;font-weight:400;letter-spacing:0}.next-mins-empty{font-size:18px;color:var(--text-dim);padding:16px 0}.next-detail{font-size:13px;color:var(--text-sub);margin-top:-2px}.time-late{color:var(--late);font-weight:600}.time-early{color:var(--early);font-weight:600}.time-sched{color:var(--text-sub)}.next-mins-late{color:var(--late)}.next-mins-early{color:var(--early)}.badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 8px;border-radius:99px;letter-spacing:.03em}.badge-early{background:color-mix(in srgb,var(--early) 15%,transparent);color:var(--early)}.badge-late{background:color-mix(in srgb,var(--late) 15%,transparent);color:var(--late)}.badge-ontime{background:color-mix(in srgb,var(--ontime) 15%,transparent);color:var(--ontime)}.badge-scheduled{background:color-mix(in srgb,var(--sched) 15%,transparent);color:var(--sched)}.controls{padding:10px 16px 20px;display:flex;flex-direction:column;gap:10px;align-items:center;border-top:1px solid var(--border)}.toggle-group{display:flex;background:var(--toggle-bg);border-radius:10px;padding:3px;gap:2px;width:100%}.toggle-btn{flex:1;padding:8px 4px;border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;background:transparent;color:var(--text-sub);transition:background .15s,color .15s;white-space:nowrap}.toggle-btn.active{background:var(--toggle-act);color:var(--toggle-text-act);font-weight:600}.refresh-btn{background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--text-sub);font-size:13px;padding:8px 20px;cursor:pointer;transition:background .15s}.refresh-btn:hover{background:var(--bg-card)}.error-banner{background:color-mix(in srgb,var(--late) 12%,transparent);color:var(--late);border-radius:10px;padding:10px 14px;font-size:13px}.loading{color:var(--text-dim);text-align:center;padding:40px 0;font-size:15px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f172a;padding:20px}.login-box{width:100%;max-width:320px;display:flex;flex-direction:column;align-items:center;gap:16px}.login-icon{font-size:48px}.login-title{font-size:28px;font-weight:700;color:#f1f5f9;letter-spacing:-1px}.login-input{width:100%;padding:14px 16px;border-radius:12px;border:1px solid #334155;background:#1e293b;color:#f1f5f9;font-size:16px;outline:none;text-align:center;letter-spacing:3px}.login-input::placeholder{letter-spacing:0;color:#64748b}.login-input:focus{border-color:#94a3b8}.login-btn{width:100%;padding:14px;border-radius:12px;border:none;background:#f1f5f9;color:#0f172a;font-size:16px;font-weight:600;cursor:pointer;transition:opacity .15s}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#f87171;font-size:13px;text-align:center}.condition-chip{border-radius:20px;padding:7px 12px;font-size:13px;font-weight:550;cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid transparent;transition:background .15s}.condition-chip-info{background:color-mix(in srgb,var(--info) 10%,transparent);border-color:color-mix(in srgb,var(--info) 22%,var(--border));color:var(--text)}.condition-chip-warning{background:color-mix(in srgb,var(--warning) 12%,transparent);border-color:color-mix(in srgb,var(--warning) 30%,var(--border));color:var(--text)}.condition-chip-severe{background:color-mix(in srgb,var(--severe) 14%,transparent);border-color:color-mix(in srgb,var(--severe) 38%,var(--border));color:var(--text)}.chip-summary{display:flex;justify-content:space-between;align-items:center;gap:8px}.chip-label{line-height:1.2}.chip-toggle{font-size:10px;opacity:.5;flex-shrink:0}.chip-details{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px;font-weight:400}.chip-detail-item{display:flex;flex-direction:column;gap:2px}.chip-detail-title{font-weight:600;font-size:13px;line-height:1.3}.chip-detail-desc{font-size:12px;color:var(--text-sub);line-height:1.4}.chip-detail-stops{font-size:11px;color:var(--text-dim)}.data-quality-note{font-size:12px;color:var(--text-dim);padding:0 4px;text-align:center}.confidence-label{display:inline-block;font-size:11px;color:var(--text-dim);margin-top:3px}.cancellation-label{font-size:11px;color:var(--text-sub);margin-top:4px;font-style:italic}
