:root{--primary-50: #ffffe7;--primary-100: #ffffc1;--primary-200: #fffb86;--primary-300: #fff041;--primary-400: #ffe00d;--primary-500: #ffd100;--primary-600: #d19900;--primary-700: #a66d02;--primary-800: #89550a;--primary-900: #74450f;--primary-950: #442404;--secondary-50: #f0f9ff;--secondary-100: #dff2ff;--secondary-200: #b9e7fe;--secondary-300: #7bd6fe;--secondary-400: #34c1fc;--secondary-500: #0aaaed;--secondary-600: #0088cb;--secondary-700: #006599;--secondary-800: #055c87;--secondary-900: #0a4b70;--secondary-950: #07304a;--tertiary-50: #f3f4f5;--tertiary-100: #e2e4e7;--tertiary-200: #c5c9ce;--tertiary-300: #9aa1aa;--tertiary-400: #6b7280;--tertiary-500: #3f454d;--tertiary-600: #2c3138;--tertiary-700: #1f2328;--tertiary-800: #16191d;--tertiary-900: #0f1113;--tertiary-950: #08090a;--success: #2e7d32;--warning: #ed6c02;--danger: #c1121f;--gradient-primary: linear-gradient(to right, var(--primary-400), var(--primary-600));--gradient-secondary: linear-gradient(to right, var(--secondary-400), var(--secondary-600));--gradient-tertiary: linear-gradient(to right, var(--tertiary-500), var(--tertiary-700));--shadow-card: 0 1px 16px rgba(0, 0, 0, .12);--shadow-card-lg: 0 4px 16px rgba(0, 0, 0, .16);--radius-card: 22px;--radius-container: 24px;--radius-button: 18px;--radius-field: 16px;--page-max: 620px;--dash-max: 960px}[data-theme=light]{--app-gradient: linear-gradient( to bottom, #eff5fb 0%, #e4edf7 32%, #e9e6f3 58%, #f4ebdf 84%, #f9efe3 100% );--text-title: #0f172a;--text-subtitle: #64748b;--text-body: #334155;--text-hint: #94a3b8;--icon: #334155;--icon-secondary: #94a3b8;--glass-fill: linear-gradient( to bottom right, rgba(255, 255, 255, .92), rgba(255, 255, 255, .82) );--glass-border: #d5deea;--glass-border-width: 1px;--field-fill: var(--tertiary-100);--field-border: var(--tertiary-200);--field-text: var(--tertiary-500);--field-label: var(--tertiary-400);--field-hint: var(--tertiary-300);--field-icon: var(--tertiary-300);--outline-fill: var(--secondary-50);--outline-border: var(--secondary-600);--outline-text: var(--secondary-700);--divider: rgba(15, 23, 42, .08);--tint: rgba(51, 65, 85, .1);--appbar-fill: rgba(255, 255, 255, .72)}[data-theme=dark]{--app-gradient: linear-gradient( to bottom, #101e30 0%, #193752 28%, #2b5566 50%, #4c6e74 72%, #8a8a78 88%, #b6a283 100% );--text-title: #ffffff;--text-subtitle: rgba(255, 255, 255, .7);--text-body: #ffffff;--text-hint: rgba(255, 255, 255, .54);--icon: #ffffff;--icon-secondary: rgba(255, 255, 255, .7);--glass-fill: linear-gradient( to bottom right, rgba(255, 255, 255, .2), rgba(255, 255, 255, .14) );--glass-border: rgba(255, 255, 255, .2);--glass-border-width: 1.2px;--field-fill: rgba(255, 255, 255, .15);--field-border: rgba(255, 255, 255, .3);--field-text: #ffffff;--field-label: rgba(255, 255, 255, .7);--field-hint: rgba(255, 255, 255, .6);--field-icon: rgba(255, 255, 255, .7);--outline-fill: rgba(255, 255, 255, .06);--outline-border: rgba(255, 255, 255, .6);--outline-text: #ffffff;--divider: rgba(255, 255, 255, .12);--tint: rgba(255, 255, 255, .1);--appbar-fill: rgba(255, 255, 255, .08)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;color:var(--text-body);background:var(--app-gradient) fixed}button{font-family:inherit}.t-headline-lg{font-size:30px;font-weight:800;letter-spacing:-.8px;line-height:1.1;color:var(--text-title);margin:0}.t-headline-md{font-size:23px;font-weight:800;letter-spacing:-.5px;line-height:1.15;color:var(--text-title);margin:0}.t-title-lg{font-size:18px;font-weight:700;letter-spacing:-.3px;color:var(--text-title);margin:0}.t-title-md{font-size:15px;font-weight:600;letter-spacing:-.2px;color:var(--text-title);margin:0}.t-body-lg{font-size:16px;line-height:1.4;color:var(--text-body);margin:0}.t-body-md{font-size:14px;line-height:1.4;color:var(--text-subtitle);margin:0}.t-hint{font-size:12px;color:var(--text-hint);margin:0}.app-bg{min-height:100%;background:var(--app-gradient) fixed}.page{width:100%;max-width:var(--page-max);margin:0 auto;padding:24px 24px 56px}.page--wide{max-width:var(--dash-max)}.stack{display:flex;flex-direction:column}.row{display:flex;align-items:center}.spacer{flex:1}.glass{background:var(--glass-fill);border:var(--glass-border-width) solid var(--glass-border);border-radius:var(--radius-container);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.glass-card{background:var(--glass-fill);border:var(--glass-border-width) solid var(--glass-border);border-radius:var(--radius-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:18px;box-shadow:var(--shadow-card)}.glass-card--elevated{box-shadow:var(--shadow-card-lg)}.glass-card--tappable{cursor:pointer;transition:transform .14s ease,box-shadow .14s ease;text-align:left;width:100%;font:inherit;color:inherit}.glass-card--tappable:hover{transform:translateY(-1px);box-shadow:var(--shadow-card-lg)}.glass-appbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--appbar-fill);border-bottom:1px solid var(--glass-border);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.glass-appbar__title{font-size:18px;font-weight:700;letter-spacing:-.3px;color:var(--text-title)}.glass-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:16px 24px;border:none;border-radius:var(--radius-button);font-size:16px;font-weight:700;cursor:pointer;transition:opacity .15s ease,transform .12s ease}.glass-btn:active:not(:disabled){transform:translateY(1px)}.glass-btn:disabled{cursor:not-allowed;opacity:.55}.glass-btn--loading:disabled{opacity:1}.glass-btn--expand{width:100%}.glass-btn--primary{background:var(--gradient-primary);color:#000000de;box-shadow:0 6px 16px #d1990059}.glass-btn--secondary{background:var(--gradient-secondary);color:#fff;box-shadow:0 6px 16px #0088cb59}.glass-btn--tertiary{background:var(--gradient-tertiary);color:#fff;box-shadow:0 6px 16px #1f232859}.glass-btn--outline{background:var(--outline-fill);color:var(--outline-text);border:1.6px solid var(--outline-border)}.glass-btn__spinner{width:20px;height:20px;border:2.4px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.field{display:block;position:relative}.field+.field{margin-top:16px}.field__control{display:flex;align-items:center;gap:10px;background:var(--field-fill);border:1px solid var(--field-border);border-radius:var(--radius-field);padding:14px 16px;transition:border-color .14s ease,box-shadow .14s ease}.field__control:focus-within{border-color:var(--secondary-500);box-shadow:inset 0 0 0 1px var(--secondary-500)}.field--error .field__control{border-color:var(--danger)}.field__input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:16px;font-family:inherit;color:var(--field-text)}.field__input::placeholder{color:var(--field-hint)}.field__label{display:block;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--field-label)}.field__icon{color:var(--field-icon);font-size:20px;flex:none}.field__toggle{border:none;background:transparent;cursor:pointer;color:var(--field-icon);display:flex;padding:0}.field__error{margin:6px 2px 0;font-size:12.5px;color:var(--danger)}.link-btn{border:none;background:transparent;color:var(--text-subtitle);font-size:14px;cursor:pointer;padding:8px 4px}.link-btn:hover{color:var(--text-title)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;border-radius:50%;background:transparent;color:var(--icon);cursor:pointer;transition:background .14s ease}.icon-btn:hover{background:var(--tint)}.mi{font-family:Material Icons Round;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}.icon-chip{display:inline-flex;align-items:center;justify-content:center;padding:9px;border-radius:12px;background:var(--tint);color:var(--icon);flex:none}.divider{height:1px;background:var(--divider);border:none;margin:14px 0}.snackbar{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:100;max-width:min(520px,calc(100vw - 32px));padding:14px 18px;border-radius:12px;background:var(--tertiary-700);color:#fff;font-size:14px;box-shadow:var(--shadow-card-lg);animation:snack-in .18s ease}@keyframes snack-in{0%{opacity:0;transform:translate(-50%,8px)}}.centered-fill{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.spinner-lg{width:32px;height:32px;border:3px solid var(--text-hint);border-right-color:transparent;border-radius:50%;animation:spin .75s linear infinite}.skeleton{background:var(--tint);border-radius:8px;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.brand-lockup{display:flex;flex-direction:column;align-items:center;gap:10px}.brand-lockup--compact{gap:6px}.brand-logo{height:46px;width:auto;object-fit:contain}.brand-logo--compact{height:30px}.brand-logo--inline{height:22px}[data-theme=dark] .brand-logo{filter:brightness(0) invert(1)}[data-theme=light] .brand-logo{filter:brightness(0) saturate(100%) invert(13%) sepia(38%) saturate(1585%) hue-rotate(169deg) brightness(95%) contrast(96%)}.brand-tagline{color:var(--secondary-500);font-size:16px;font-weight:700;letter-spacing:5px}.brand-tagline--compact{font-size:13px;letter-spacing:3px}.auth-page{display:flex;flex-direction:column;min-height:100vh}.auth-page__body{width:100%;max-width:var(--page-max);margin:0 auto;padding:20px 24px 48px}.auth-header{margin:36px 0 28px}.auth-header__title{font-size:30px;font-weight:800;letter-spacing:-.8px;color:var(--text-title);margin:0 0 6px}.auth-actions{display:flex;justify-content:flex-end;margin:4px 0 12px}.auth-center{display:flex;flex-direction:column;align-items:center;text-align:center}.auth-center>*{width:100%}.verify-icon{font-size:64px;color:var(--icon);margin:40px 0 20px}.verify-waiting{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:16px;color:var(--text-hint);font-size:12px}.verify-waiting__spinner{width:14px;height:14px;border:2px solid var(--text-hint);border-right-color:transparent;border-radius:50%;animation:spin .75s linear infinite}.theme-toggle{position:absolute;top:16px;right:16px}.dash{width:100%;max-width:var(--dash-max);margin:0 auto;padding:20px 20px 64px;display:flex;flex-direction:column;gap:14px}.dash__greeting{font-size:24px;font-weight:800;color:var(--text-title);margin:4px 0 0}.card-head{display:flex;align-items:flex-start;gap:12px}.card-head__text{min-width:0}.card-head__title{font-size:16px;font-weight:800;letter-spacing:-.3px;color:var(--text-title);margin:0}.card-head__subtitle{font-size:12.5px;font-weight:500;color:var(--text-subtitle);margin:2px 0 0}.profile{display:flex;align-items:center;gap:16px}.profile__avatar{width:60px;height:60px;border-radius:50%;object-fit:cover;border:2px solid var(--glass-border);flex:none;background:var(--tint)}.profile__avatar--fallback{display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:var(--text-title)}.profile__meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--tint);color:var(--text-body);white-space:nowrap}.chip--success{background:#2e7d3229;color:var(--success)}.chip--warning{background:#ed6c0229;color:var(--warning)}.chip--danger{background:#c1121f29;color:var(--danger)}.chip--accent{background:#0aaaed29;color:var(--secondary-600)}[data-theme=dark] .chip--success{color:#7fd18a}[data-theme=dark] .chip--warning{color:#ffb066}[data-theme=dark] .chip--danger{color:#ff8a8f}[data-theme=dark] .chip--accent{color:var(--secondary-300)}.leg{display:flex;align-items:flex-start;gap:12px}.leg__badge{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}.leg__badge--pickup{background:linear-gradient(135deg,#f59e0b,#ea580c)}.leg__badge--dropoff{background:linear-gradient(135deg,#3b82f6,#2563eb)}.leg__title{font-size:14.5px;font-weight:700;color:var(--text-title);margin:0}.leg__detail{font-size:13px;color:var(--text-subtitle);margin:3px 0 0}.kv{display:flex;justify-content:space-between;gap:16px;padding:9px 0;font-size:14px}.kv+.kv{border-top:1px solid var(--divider)}.kv__k{color:var(--text-subtitle);flex:none}.kv__v{color:var(--text-title);font-weight:600;text-align:right;overflow-wrap:anywhere}.crew{display:flex;align-items:center;gap:12px}.crew__avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--tint);flex:none}.crew__call{margin-left:auto;text-decoration:none}.week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.week__day{border-radius:14px;background:var(--tint);padding:10px 8px;text-align:center}.week__day--today{outline:2px solid var(--secondary-500)}.week__name{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-subtitle)}.week__bus{font-size:15px;font-weight:800;color:var(--text-title);margin-top:4px}.week__none{font-size:12px;color:var(--text-hint);margin-top:4px}@media(max-width:520px){.week{grid-template-columns:repeat(3,minmax(0,1fr))}}.state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:16px 8px}.state__icon{font-size:36px;color:var(--icon-secondary)}.pass-page__body{width:100%;max-width:420px;margin:0 auto;padding:12px 24px 56px;display:flex;flex-direction:column;align-items:center}.pass-card{width:100%;max-width:340px;border-radius:28px;overflow:hidden;box-shadow:0 16px 28px #00000047;display:flex;flex-direction:column}.pass-card__header{background:linear-gradient(135deg,var(--tertiary-900),var(--tertiary-700));padding:16px 20px 12px}.pass-card__top-row{display:flex;align-items:center;gap:10px}.pass-card__bus-icon{display:inline-flex;align-items:center;justify-content:center;padding:8px;border-radius:10px;background:var(--primary-500);color:var(--tertiary-900);flex:none}.pass-card__wordmark{flex:1;color:#fff;font-weight:800;font-size:15px;letter-spacing:1.4px}.pass-card__live-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;font-size:10px;font-weight:800;letter-spacing:.8px;white-space:nowrap}.pass-card__live-chip--ready{color:var(--success);background:#2e7d322e;border:1px solid rgba(46,125,50,.55)}.pass-card__live-chip--locked{color:#ffffffb3;background:#ffffff1f;border:1px solid rgba(255,255,255,.35)}.pass-card__live-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.pass-card__subtitle{margin-top:8px;color:var(--primary-400);font-size:11px;font-weight:700;letter-spacing:1.6px}.pass-card__body{background:#fff;padding:16px 18px 12px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}.pass-card__photo{width:108px;height:108px;border-radius:50%;border:3.5px solid var(--primary-500);box-shadow:0 6px 16px #d1990040;object-fit:cover;background:var(--secondary-100);margin-bottom:6px}.pass-card__photo--fallback{display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:800;color:var(--secondary-700)}.pass-card__name{color:var(--tertiary-900);font-size:20px;font-weight:800;line-height:1.15}.pass-card__school{color:var(--tertiary-500);font-size:13px;font-weight:600}.pass-card__gradeline{color:var(--secondary-600);font-size:12.5px;font-weight:700;margin-top:2px}.pass-card__banner{width:100%;margin-top:12px;padding:10px 14px;border-radius:14px;background:var(--primary-50);border:1px solid rgba(255,240,65,.6);display:flex;align-items:center;justify-content:center;gap:8px;color:var(--tertiary-800);font-weight:700;font-size:12.5px}.pass-card__qr{margin-top:14px;padding:8px;background:#fff;border:1px solid #e2e8f0;border-radius:16px;display:flex;align-items:center;justify-content:center;width:144px;height:144px}.pass-card__footer-bar{height:8px;background:linear-gradient(to right,var(--primary-500),var(--primary-600))}.pass-hint{margin-top:14px;text-align:center;max-width:300px}
