@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&display=swap";@font-face{font-family:YCIS Effra;src:url(/assets/fonts/effra-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:YCIS Effra;src:url(/assets/fonts/effra-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:YCIS Effra;src:url(/assets/fonts/effra-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:YCIS Effra;src:url(/assets/fonts/effra-900.woff2)format("woff2");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:YCIS Noto Sans SC;src:url(/assets/fonts/noto-sans-sc-400.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:YCIS Noto Sans SC;src:url(/assets/fonts/noto-sans-sc-500.otf)format("opentype");font-weight:500;font-style:normal;font-display:swap}:root{color:#18212d;font-synthesis:none;text-rendering:optimizelegibility;--navy:#001e60;--blue:#0032a0;--bright-blue:#1f66dc;--orange:#ff9e18;--green:#1d956c;--ink:#18212d;--muted:#708098;--line:#dde4ee;--surface:#fff;--canvas:#eef2f7;--soft-blue:#eaf1ff;--soft-orange:#fff2dd;--soft-green:#e6f5ee;--shadow:0 14px 38px #102a4e14;background:#eef2f7;font-family:YCIS Effra,YCIS Noto Sans SC,Noto Sans SC,Source Han Sans CN,sans-serif}*{box-sizing:border-box}body{background:var(--canvas);min-width:320px;margin:0}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line);z-index:20;flex-direction:column;flex:0 0 248px;width:248px;height:100vh;padding:28px 16px 20px;display:flex;position:sticky;top:0}.brand-lockup{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:0 12px 24px;display:flex}.brand-logo{object-fit:contain;width:38px;height:56px}.brand-title{color:var(--blue);letter-spacing:-.02em;margin:0;font-size:15px;font-weight:800}.brand-subtitle{color:var(--muted);margin:4px 0 0;font-size:11px}.school-switcher{border:1px solid var(--line);color:var(--ink);border-radius:7px;align-items:center;gap:10px;margin:22px 4px 25px;padding:10px;display:flex}.school-switcher>svg{color:#9aa8ba;margin-left:auto}.school-mark{background:var(--navy);color:#fff;border-radius:6px;place-items:center;width:28px;height:28px;font-size:13px;font-weight:800;display:grid}.school-switcher strong{font-size:12px;line-height:1.1;display:block}.overline,.eyebrow,.nav-section-label{letter-spacing:.13em;text-transform:uppercase;color:#8b99ac;font-family:DM Mono,monospace;font-size:9px;font-weight:500;display:block}.school-switcher .overline{margin-bottom:4px;font-size:8px}.nav-section-label{padding:0 12px 9px}.primary-nav{flex-direction:column;gap:4px;display:flex}.nav-item{color:#6c7b91;text-align:left;background:0 0;border:0;border-radius:6px;grid-template-columns:20px 1fr auto;align-items:center;gap:10px;width:100%;padding:11px 12px;transition:all .2s;display:grid}.nav-item span{font-size:13px;font-weight:700}.nav-item small{color:#a0abba;font-size:10px}.nav-item:hover{color:var(--blue);background:#f1f5fa}.nav-item.active{color:var(--blue);box-shadow:inset 3px 0 0 var(--blue);background:#eaf0fc}.nav-item.active small{color:#6681b7}.sidebar-bottom{margin-top:auto}.help-link{color:#718097;text-align:left;background:0 0;border:0;align-items:center;gap:9px;width:100%;padding:12px;font-size:12px;display:flex}.help-link:hover{color:var(--blue)}.profile-mini{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:10px;padding:17px 9px 0;display:flex}.profile-mini strong,.profile-mini span{display:block}.profile-mini strong{font-size:12px}.profile-mini span{color:var(--muted);margin-top:4px;font-size:10px}.muted-icon{color:#a3afbe;margin-left:auto}.avatar{width:34px;height:34px;color:var(--blue);letter-spacing:.04em;background:#dbe8fb;border-radius:50%;place-items:center;font-size:11px;font-weight:800;display:grid}.avatar-photo{background:#d7e4f7}.avatar-small{width:30px;height:30px;font-size:10px}.main-content{flex:1;min-width:0}.topbar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;background:#eef2f7eb;border-bottom:1px solid #dae1ebcc;justify-content:space-between;align-items:center;height:90px;padding:0 45px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:14px;display:flex}.topbar h1{letter-spacing:-.04em;color:var(--navy);margin:7px 0 0;font-size:23px}.breadcrumb{color:#8a98aa;margin:0;font-size:11px}.breadcrumb span{color:#b2bfce;padding:0 5px}.topbar-actions{align-items:center;gap:11px;display:flex}.icon-button{color:#77879b;background:0 0;border:0;border-radius:6px;place-items:center;width:34px;height:34px;transition:all .2s;display:inline-grid}.icon-button:hover{color:var(--blue);background:#e5ebf3}.notification-button{position:relative}.notification-button span{background:var(--orange);border:1px solid var(--canvas);border-radius:50%;width:6px;height:6px;position:absolute;top:5px;right:5px}.topbar-divider{background:var(--line);width:1px;height:26px;margin:0 5px}.role-switcher{color:var(--ink);text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:3px 0 3px 5px;display:flex}.role-copy strong,.role-copy small{display:block}.role-copy strong{font-size:12px}.role-copy small{color:var(--muted);margin-top:3px;font-size:10px}.page{max-width:1480px;margin:0 auto;padding:35px 45px 70px}.welcome-band{background:var(--navy);color:#fff;min-height:255px;box-shadow:var(--shadow);border-radius:8px;display:flex;position:relative;overflow:hidden}.welcome-copy{z-index:1;width:53%;padding:35px 38px;position:relative}.welcome-copy .eyebrow{color:#96b4eb}.welcome-copy h2{letter-spacing:-.055em;margin:16px 0 13px;font-size:clamp(27px,3.1vw,43px);font-weight:700;line-height:1.05}.welcome-copy h2 em{color:#a7c6fa;font-style:normal}.welcome-copy p{color:#cedcf4;max-width:330px;margin:0;font-size:13px;line-height:1.5}.welcome-image{background:linear-gradient(90deg,#001e6038,#001e6000 46%),url(/assets/campus-2.jpg) 50%/cover;flex:1;min-width:330px}.welcome-stamp{color:#fff;opacity:.87;align-items:center;gap:8px;display:flex;position:absolute;bottom:17px;right:23px}.welcome-stamp span{letter-spacing:.08em;font-size:19px;font-weight:800}.welcome-stamp small{letter-spacing:.12em;border-left:1px solid #fff6;padding-left:8px;font-family:DM Mono,monospace;font-size:8px;line-height:1.35}.primary-button,.outline-button,.text-button{border-radius:5px;align-items:center;gap:8px;font-weight:700;transition:all .2s;display:inline-flex}.primary-button{background:var(--orange);color:#1f2b38;border:0;margin-top:22px;padding:10px 14px;font-size:12px}.primary-button:hover{background:#ffb041;transform:translateY(-1px)}.outline-button{color:var(--blue);background:#fff;border:1px solid #cbd6e4;padding:9px 13px;font-size:11px}.outline-button:hover{border-color:var(--blue);background:#f3f6fc}.text-button{color:var(--blue);background:0 0;border:0;padding:5px 0;font-size:11px}.text-button:hover{color:var(--bright-blue)}.metric-row{grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:7px;align-items:center;gap:12px;min-height:82px;padding:15px 16px;display:flex}.metric-card.accent-blue{border-top:3px solid var(--blue)}.metric-card.accent-orange{border-top:3px solid var(--orange)}.metric-card.accent-green{border-top:3px solid var(--green)}.metric-icon{background:var(--soft-blue);width:35px;height:35px;color:var(--blue);border-radius:6px;place-items:center;display:grid}.accent-orange .metric-icon{background:var(--soft-orange);color:#ca7511}.accent-green .metric-icon{background:var(--soft-green);color:var(--green)}.metric-card span,.metric-card strong{display:block}.metric-card span{color:var(--muted);font-size:10px}.metric-card strong{color:var(--navy);margin-top:5px;font-size:18px}.metric-card strong small{color:#9aa8b8;margin-left:5px;font-size:10px;font-weight:500}.metric-card button{color:#9aa9bb;background:0 0;border:0;border-radius:5px;place-items:center;width:25px;height:25px;margin-left:auto;display:grid}.metric-card button:hover{color:var(--blue);background:#eef3fa}.section-heading{justify-content:space-between;align-items:end;margin:39px 0 16px;display:flex}.section-heading h2,.panel-heading h2{letter-spacing:-.035em;color:var(--navy);margin:6px 0 0;font-size:19px}.section-heading .eyebrow,.panel-heading .eyebrow{color:#8b99ac}.feature-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.feature-card{border:1px solid var(--line);background:var(--surface);text-align:left;min-width:0;min-height:76px;color:var(--ink);border-radius:7px;align-items:center;gap:10px;padding:13px;transition:all .2s;display:flex}.feature-card:hover{border-color:#b6c6dc;transform:translateY(-2px);box-shadow:0 10px 25px #112b4f14}.feature-card.blue .feature-icon{color:var(--blue);background:var(--soft-blue)}.feature-card.orange .feature-icon{color:#c97511;background:var(--soft-orange)}.feature-icon{border-radius:6px;flex:0 0 34px;place-items:center;height:34px;display:grid}.feature-copy{flex:1;min-width:0}.feature-copy strong,.feature-copy small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.feature-copy strong{font-size:11px}.feature-copy small{color:#9aa7b7;margin-top:4px;font-size:10px}.feature-arrow{color:#aab6c5;flex:none}.lower-grid{grid-template-columns:1.25fr 1fr 1fr;gap:14px;margin-top:16px;display:grid}.panel{background:var(--surface);border:1px solid var(--line);border-radius:7px}.panel-heading{justify-content:space-between;align-items:start;padding:22px 22px 14px;display:flex}.panel-heading p{color:var(--muted);margin:7px 0 0;font-size:11px}.notice-list,.event-list{border-top:1px solid #edf0f5}.notice-row{text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-bottom:1px solid #edf0f5;grid-template-columns:6px 1fr 17px;gap:12px;padding:15px 20px 15px 22px;display:grid}.notice-row:last-child{border-bottom:0}.notice-row:hover{background:#fafbfd}.notice-marker{background:var(--blue);border-radius:2px;width:5px;height:30px;margin-top:2px}.notice-marker.orange{background:var(--orange)}.notice-marker.green{background:var(--green)}.notice-row-copy>span,.notice-row-copy strong,.notice-row-copy small{display:block}.notice-row-copy>span{color:#94a2b2;font-family:DM Mono,monospace;font-size:9px}.notice-row-copy b{color:var(--blue);margin-right:10px;font-family:inherit;font-weight:500}.notice-row-copy strong{margin-top:6px;font-size:11px;line-height:1.35}.notice-row-copy small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:4px;font-size:10px;overflow:hidden}.notice-row>svg{color:#a7b3c3;align-self:center}.event-row{border-bottom:1px solid #edf0f5;gap:13px;padding:14px 21px;display:flex}.event-row:last-child{border-bottom:0}.date-block{background:#f5f8fc;border:1px solid #dfe7f2;border-radius:5px;flex:0 0 43px;align-content:center;place-items:center;height:46px;display:grid}.date-block strong{color:var(--blue);font-size:18px;line-height:1}.date-block span{color:#9aa7b8;margin-top:3px;font-family:DM Mono,monospace;font-size:8px}.event-row>div:last-child{min-width:0}.event-type{color:#9aa7b8;text-transform:uppercase;letter-spacing:.08em;font-family:DM Mono,monospace;font-size:9px;display:block}.event-row strong{margin:5px 0;font-size:11px;line-height:1.35;display:block}.event-row small{color:var(--muted);font-size:10px}.bus-summary-panel{background:#f7faff}.bus-summary-main{align-items:center;gap:12px;padding:6px 22px 13px;display:flex}.bus-illustration{width:46px;height:46px;color:var(--blue);background:#e4edff;border-radius:6px;place-items:center;display:grid}.bus-summary-main strong,.bus-summary-main span{display:block}.bus-summary-main strong{font-size:12px}.bus-summary-main span{color:var(--muted);margin-top:5px;font-size:10px}.status-dot{background:var(--green);border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.mini-progress{background:#dbe5f5;border-radius:2px;height:4px;margin:0 22px;overflow:hidden}.mini-progress span{background:var(--blue);border-radius:2px;height:100%;display:block}.bus-summary-foot{color:var(--muted);justify-content:space-between;align-items:center;padding:15px 22px 18px;font-size:10px;display:flex}.bus-summary-foot span{align-items:center;gap:5px;display:inline-flex}.mobile-nav,.menu-trigger,.mobile-close,.scrim{display:none}.toast{background:var(--navy);color:#fff;z-index:50;border-radius:6px;align-items:center;gap:8px;padding:12px 16px;font-size:12px;display:flex;position:fixed;bottom:25px;right:26px;box-shadow:0 12px 28px #001e6038}.bus-page-header,.page-intro{justify-content:space-between;align-items:end;margin-bottom:23px;display:flex}.bus-page-header h2,.page-intro h2{letter-spacing:-.055em;color:var(--navy);margin:7px 0 0;font-size:30px}.bus-page-header p,.page-intro p{color:var(--muted);margin:8px 0 0;font-size:12px}.route-control{grid-template-columns:1.4fr .7fr 1fr;align-items:center;margin-bottom:17px;padding:16px 20px;display:grid}.route-select-wrap{border-right:1px solid var(--line);padding-right:23px}.route-select{color:var(--blue);align-items:center;gap:9px;margin-top:8px;display:flex}.route-select select{appearance:none;color:var(--navy);background:0 0;border:0;outline:none;min-width:235px;font-size:14px;font-weight:800}.route-select>svg:last-child{color:#9aa9bc}.route-status{border-right:1px solid var(--line);justify-content:center;align-items:center;gap:15px;display:flex}.status-pill,.state-pill{white-space:nowrap;border-radius:20px;align-items:center;gap:5px;padding:5px 8px;font-size:10px;font-weight:700;display:inline-flex}.status-pill.live{background:var(--soft-green);color:var(--green)}.status-pill i,.state-pill i{background:currentColor;border-radius:50%;width:5px;height:5px}.route-status strong,.route-status small{display:block}.route-status strong{color:var(--navy);font-size:21px;line-height:1}.route-status small{color:var(--muted);margin-top:5px;font-size:9px}.route-meta{color:var(--muted);justify-content:flex-end;gap:19px;font-size:10px;display:flex}.route-meta span{align-items:center;gap:6px;display:inline-flex}.bus-tabs{border-bottom:1px solid var(--line);gap:25px;margin-bottom:17px;display:flex}.bus-tabs button{color:#94a1b0;background:0 0;border:0;border-bottom:2px solid #0000;padding:9px 2px 13px;font-size:12px;font-weight:700}.bus-tabs button span{color:#afb9c5;margin-left:6px;font-size:10px;font-weight:500}.bus-tabs button.active{color:var(--blue);border-color:var(--blue)}.bus-tabs button.active span{color:#6f8ac0}.route-layout{grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr);gap:17px;display:grid}.route-timeline-panel{min-height:574px}.live-label{color:var(--green);text-transform:uppercase;align-items:center;gap:5px;font-family:DM Mono,monospace;font-size:9px;display:inline-flex}.live-label i{background:var(--green);border-radius:50%;width:6px;height:6px}.timeline{padding:13px 24px 29px}.timeline-stop{grid-template-columns:28px 1fr;gap:14px;min-height:87px;display:grid}.timeline-rail{justify-content:center;display:flex;position:relative}.timeline-node{color:#9aaabd;z-index:1;background:#edf2f8;border:1px solid #d6dfeb;border-radius:50%;place-items:center;width:25px;height:25px;font-family:DM Mono,monospace;font-size:10px;display:grid}.timeline-line{border-left:1px dashed #d2deed;width:1px;position:absolute;top:25px;bottom:0}.timeline-stop.completed .timeline-node{color:var(--blue);background:var(--soft-blue);border-color:#bdd0f1}.timeline-stop.current .timeline-node{color:#fff;background:var(--orange);border-color:var(--orange);box-shadow:0 0 0 5px #fff2de}.timeline-stop.current .timeline-line{border-color:#ffcf91}.stop-content{padding-bottom:23px}.stop-top{justify-content:space-between;gap:20px;display:flex}.stop-top strong,.stop-top span{display:block}.stop-top strong{font-size:13px}.stop-top span{color:var(--muted);margin-top:4px;font-size:10px}.stop-top time{color:var(--navy);font-family:DM Mono,monospace;font-size:12px}.stop-detail{color:#9ba8b8;gap:18px;margin-top:12px;font-size:10px;display:flex}.stop-detail span{align-items:center;gap:4px;display:inline-flex}.timeline-stop.current .stop-top strong,.timeline-stop.current .stop-top time{color:var(--orange)}.timeline-stop.completed .stop-detail span:first-child{color:var(--green)}.route-aside{flex-direction:column;gap:17px;display:flex}.route-map-panel{overflow:hidden}.map-art{background:#eef5f7;border:1px solid #dce6f1;border-radius:5px;height:245px;margin:0 15px;position:relative;overflow:hidden}.map-grid{opacity:.65;background:repeating-linear-gradient(28deg,#0000 0 32px,#7eafa540 33px 35px,#0000 36px 67px),repeating-linear-gradient(118deg,#0000 0 45px,#6b9bc933 46px 48px,#0000 49px 86px);position:absolute;inset:-15%;transform:rotate(-8deg)}.map-art:before,.map-art:after{content:"";border:1px solid #5e968957;border-radius:50%;position:absolute;transform:rotate(18deg)}.map-art:before{width:310px;height:90px;top:28px;left:-30px}.map-art:after{width:355px;height:120px;top:103px;left:-8px}.map-label{color:#8195a1;z-index:1;font-size:9px;position:absolute}.label-a{top:33px;left:20px}.label-b{top:100px;right:28px}.label-c{color:var(--blue);font-weight:800;bottom:25px;right:38px}.route-path{border-top:3px solid var(--blue);border-right:3px solid var(--blue);z-index:2;border-radius:0 48px 0 0;height:89px;position:absolute;top:79px;left:33px;right:43px;transform:rotate(13deg)}.path-node{border:3px solid var(--blue);background:#fff;border-radius:50%;width:10px;height:10px;position:absolute}.path-node.one{top:-7px;left:-7px}.path-node.two{top:-7px;left:24%}.path-node.three{top:-7px;left:49%}.path-node.four{top:-7px;right:-7px}.path-node.five{bottom:-7px;right:-7px}.path-node.current{background:var(--orange);box-shadow:0 0 0 3px var(--orange);border-color:#fff}.bus-pin{z-index:3;background:var(--orange);color:#fff;border-radius:50% 50% 50% 3px;place-items:center;width:28px;height:28px;display:grid;position:absolute;top:110px;right:74px;transform:rotate(-45deg);box-shadow:0 4px 10px #b26d0e40}.bus-pin svg{transform:rotate(45deg)}.map-legend{color:#8f9daf;gap:17px;padding:13px 22px 17px;font-size:9px;display:flex}.map-legend span{align-items:center;gap:6px;display:inline-flex}.legend-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.legend-dot.blue{background:var(--blue)}.legend-dot.orange{background:var(--orange)}.crew-panel{padding-bottom:10px}.crew-row{border-top:1px solid #edf0f5;align-items:center;gap:10px;padding:11px 22px;display:flex}.crew-avatar{background:#dce8fa;width:29px;height:29px;font-size:9px}.orange-avatar{color:#bd6a0e;background:#ffecd1}.crew-row strong,.crew-row span{display:block}.crew-row strong{font-size:11px}.crew-row span{color:var(--muted);margin-top:3px;font-size:9px}.crew-status{text-transform:uppercase;margin-left:auto;font-family:DM Mono,monospace;color:var(--green)!important;font-size:8px!important}.passenger-panel{overflow:hidden}.passenger-heading{align-items:center}.passenger-tools{gap:8px;display:flex}.passenger-summary{background:#f5f8fc;border-top:1px solid #e7edf5;border-bottom:1px solid #e7edf5;align-items:center;gap:30px;padding:14px 22px;display:flex}.passenger-summary>div:not(.summary-note) strong,.passenger-summary>div:not(.summary-note) span{display:block}.passenger-summary strong{color:var(--navy);font-size:20px}.passenger-summary>div:not(.summary-note) span{color:var(--muted);margin-top:2px;font-size:10px}.summary-note{color:var(--muted);align-items:center;gap:10px;margin-left:auto;font-size:10px;display:flex}.passenger-table-wrap{overflow-x:auto}.passenger-table{border-collapse:collapse;width:100%;min-width:720px}.passenger-table th{color:#8998aa;text-align:left;letter-spacing:.04em;text-transform:uppercase;background:#fbfcfe;padding:12px 16px;font-family:DM Mono,monospace;font-size:9px;font-weight:500}.passenger-table td{color:#66778e;border-top:1px solid #edf0f5;padding:13px 16px;font-size:10px}.passenger-table tbody tr{cursor:pointer;transition:all .15s}.passenger-table tbody tr:hover{background:#f7fafe}.passenger-table tbody tr.is-boarded{background:#fcfefd}.student-cell{align-items:center;gap:9px;display:flex}.student-avatar{background:#e4edfb;width:29px;height:29px;font-size:9px}.student-cell strong,.student-cell small{display:block}.student-cell strong{color:var(--ink);font-size:11px}.student-cell small{color:#9aa8b7;margin-top:4px;font-size:9px}.state-pill.boarded{color:var(--green);background:var(--soft-green)}.state-pill.expected{color:#9b6c21;background:var(--soft-orange)}.alert-sent,.alert-pending{font-size:9px}.alert-sent{color:var(--green)}.alert-pending{color:#9ca9b9}.row-action{color:#9cabbc;background:0 0;border:0;border-radius:5px;place-items:center;width:27px;height:27px;display:grid}.row-action:hover{color:var(--blue);background:#eaf1ff}.standard-page{max-width:1160px}.notice-page-list{background:var(--surface);border:1px solid var(--line);border-radius:7px;overflow:hidden}.notice-page-item{position:relative}.notice-page-item .notice-row{padding-right:54px}.notice-page-arrow{color:#9aa8b8;pointer-events:none;position:absolute;top:50%;right:20px;transform:translateY(-50%)}.calendar-layout{grid-template-columns:1.35fr .8fr;gap:17px;display:grid}.month-panel{padding:21px}.month-title{justify-content:space-between;align-items:center;display:flex}.month-title h3{color:var(--navy);margin:0;font-size:16px}.rotate-180{transform:rotate(180deg)}.calendar-week,.calendar-grid{grid-template-columns:repeat(7,1fr);display:grid}.calendar-week{border-bottom:1px solid var(--line);margin-top:24px;padding-bottom:10px}.calendar-week span{text-align:center;color:#9aa7b7;font-family:DM Mono,monospace;font-size:9px}.calendar-day{color:#607289;background:#fff;border:1px solid #edf0f5;border-top:0;border-left:0;min-height:59px;position:relative}.calendar-day:nth-child(7n){border-right:0}.calendar-day span{border-radius:50%;place-items:center;width:27px;height:27px;margin:0 auto;font-size:12px;display:grid}.calendar-day:hover span{color:var(--blue);background:#eff4fb}.calendar-day.selected span{background:var(--blue);color:#fff}.calendar-day i{background:var(--orange);border-radius:50%;width:4px;height:4px;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.upcoming-panel{padding-bottom:17px}.upcoming-date{align-items:baseline;gap:9px;padding:4px 22px 18px;display:flex}.upcoming-date strong{color:var(--blue);letter-spacing:-.06em;font-size:32px}.upcoming-date span{color:var(--muted);font-size:11px}.upcoming-event{border-top:1px solid #edf0f5;padding:13px 22px}.upcoming-event .event-type,.upcoming-event strong,.upcoming-event span:last-child{display:block}.upcoming-event strong{margin:5px 0;font-size:12px}.upcoming-event span:last-child{color:var(--muted);font-size:10px}.services-grid{grid-template-columns:repeat(3,1fr);gap:11px;display:grid}.download-strip{background:var(--navy);color:#fff;border-radius:7px;align-items:center;gap:16px;margin-top:28px;padding:19px 23px;display:flex}.download-logo{background:#fff;border-radius:5px;place-items:center;width:42px;height:42px;display:grid}.download-logo img{object-fit:contain;width:23px;height:34px}.download-strip h3{margin:6px 0 4px;font-size:16px}.download-strip p{color:#bdcff1;margin:0;font-size:10px}.download-strip .primary-button{margin:0 0 0 auto}@media (width<=1160px){.sidebar{flex-basis:220px;width:220px}.topbar,.page{padding-left:28px;padding-right:28px}.feature-grid{grid-template-columns:repeat(3,1fr)}.lower-grid{grid-template-columns:repeat(2,1fr)}.bus-summary-panel{grid-column:span 2}.route-control{grid-template-columns:1.25fr .75fr;gap:13px}.route-meta{border-top:1px solid var(--line);grid-column:1/-1;justify-content:flex-start;padding-top:13px}.route-status{border-right:0}.route-select-wrap{border-right:1px solid var(--line)}}@media (width<=820px){.sidebar{flex-basis:260px;width:260px;transition:left .25s;position:fixed;left:-270px;box-shadow:15px 0 40px #001e6021}.sidebar.is-open{left:0}.scrim{z-index:15;background:#0a1c3759;border:0;display:block;position:fixed;inset:0}.mobile-close,.menu-trigger{display:inline-grid}.menu-trigger{margin-left:-7px}.topbar{height:76px;padding:0 18px}.topbar-actions .icon-button:first-child,.topbar-divider{display:none}.topbar h1{font-size:20px}.role-copy{display:none}.page{padding:23px 18px 88px}.welcome-band{min-height:328px;display:block}.welcome-copy{width:100%;padding:27px 24px}.welcome-copy h2{font-size:32px}.welcome-copy p{max-width:285px}.welcome-image{opacity:.72;background-position:50% 62%;min-width:0;height:125px;position:absolute;inset:auto 0 0}.welcome-band:after{content:"";pointer-events:none;background:linear-gradient(#0000,#001e60f2);height:150px;position:absolute;inset:auto 0 0}.welcome-stamp{z-index:2;bottom:13px;right:17px}.metric-row{grid-template-columns:1fr;gap:9px}.metric-card{min-height:69px}.section-heading{align-items:start;margin-top:31px}.section-heading h2{font-size:17px}.feature-grid{grid-template-columns:repeat(2,1fr);gap:8px}.feature-card{min-height:70px;padding:10px}.feature-copy strong{font-size:10px}.feature-copy small{font-size:9px}.feature-arrow{display:none}.lower-grid{grid-template-columns:1fr;gap:10px}.bus-summary-panel{grid-column:auto}.panel-heading{padding:18px 17px 13px}.panel-heading h2{font-size:17px}.notice-row{grid-template-columns:5px 1fr 15px;padding-left:17px;padding-right:17px}.notice-row-copy small{white-space:normal}.mobile-nav{z-index:12;border:1px solid var(--line);background:#fffffff7;border-radius:9px;grid-template-columns:repeat(4,1fr);height:61px;padding:4px;display:grid;position:fixed;bottom:10px;left:10px;right:10px;box-shadow:0 10px 28px #102a4e26}.mobile-nav button{color:#92a0b2;background:0 0;border:0;border-radius:6px;place-items:center;gap:3px;font-size:9px;display:grid}.mobile-nav button.active{color:var(--blue);background:#eaf1ff}.toast{justify-content:center;bottom:84px;left:18px;right:18px}.bus-page-header,.page-intro{align-items:start;gap:16px}.bus-page-header h2,.page-intro h2{font-size:26px}.bus-page-header .outline-button,.page-intro .outline-button{flex:none}.route-control{grid-template-columns:1fr;gap:13px;padding:15px}.route-select-wrap{border-right:0;border-bottom:1px solid var(--line);padding-bottom:12px;padding-right:0}.route-select select{width:100%;min-width:0;font-size:13px}.route-status{justify-content:flex-start}.route-meta{gap:14px;padding-top:11px;font-size:9px}.route-layout,.calendar-layout{grid-template-columns:1fr}.route-timeline-panel{min-height:auto}.timeline{padding-left:15px;padding-right:15px}.stop-top{gap:10px}.stop-top strong{font-size:11px}.stop-detail{flex-wrap:wrap;gap:6px 13px}.map-art{height:210px}.passenger-heading{align-items:start}.passenger-tools{margin-top:4px}.passenger-summary{flex-wrap:wrap;gap:18px;padding:13px 17px}.summary-note{width:100%;margin-left:0}.passenger-table th,.passenger-table td{padding-left:12px;padding-right:12px}.services-grid{grid-template-columns:repeat(2,1fr)}.download-strip{flex-wrap:wrap;align-items:start;padding:17px}.download-strip .primary-button{justify-content:center;width:100%}.calendar-grid .calendar-day{min-height:49px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.service-page{max-width:1160px}.service-header{margin-bottom:22px;position:relative}.back-link{color:var(--blue);background:0 0;border:0;align-items:center;gap:7px;padding:0;font-size:11px;font-weight:700;display:inline-flex}.back-link:hover{color:var(--navy)}.service-heading{align-items:center;gap:14px;margin-top:17px;display:flex}.service-heading-icon{width:46px;height:46px;color:var(--blue);background:var(--soft-blue);border-radius:7px;flex:0 0 46px;place-items:center;display:grid}.service-heading h2{color:var(--navy);letter-spacing:0;margin:5px 0 0;font-size:29px}.service-heading p{color:var(--muted);margin:6px 0 0;font-size:12px}.demo-note{color:#8391a3;text-transform:uppercase;letter-spacing:.08em;margin:0;font-family:DM Mono,monospace;font-size:9px;position:absolute;top:2px;right:0}.service-layout{align-items:start;gap:17px;display:grid}.service-layout-wide{grid-template-columns:minmax(0,1.5fr) minmax(280px,.78fr)}.uniform-layout{grid-template-columns:minmax(0,1.45fr) minmax(250px,.62fr)}.service-form,.service-list-panel,.service-aside,.order-summary,.booking-summary{overflow:hidden}.service-form>label{color:#52647a;padding:3px 22px 0;font-size:10px;font-weight:700;display:block}.service-form>label input{margin-top:7px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;padding:5px 22px 23px;display:grid}.form-grid label,.compact-form .check-row{color:#52647a;gap:7px;font-size:10px;font-weight:700;display:grid}.form-span{grid-column:1/-1}.form-grid input,.form-grid select,.service-form>label input,.form-grid textarea{width:100%;min-width:0;color:var(--ink);font:inherit;background:#fff;border:1px solid #dbe3ee;border-radius:5px;outline:0;font-size:12px;transition:border-color .18s,box-shadow .18s}.form-grid input,.form-grid select,.service-form>label input{height:39px;padding:0 10px}.form-grid textarea{resize:vertical;min-height:91px;padding:10px}.form-grid input:focus,.form-grid select:focus,.service-form>label input:focus,.form-grid textarea:focus{border-color:#8fb0ed;box-shadow:0 0 0 3px #1f66dc1c}.form-actions{min-height:66px;color:var(--muted);background:#fbfcfe;border-top:1px solid #e8edf3;justify-content:space-between;align-items:center;gap:14px;padding:13px 22px;font-size:10px;display:flex}.form-actions>span,.confirmation-note{align-items:center;gap:6px;display:inline-flex}.form-actions>span svg,.confirmation-note svg{color:var(--green)}.status-list>div{border-top:1px solid #edf0f5;padding:15px 22px;position:relative}.status-list strong,.status-list span{display:block}.status-list strong{color:var(--ink);font-size:11px}.status-list span{color:var(--muted);margin-top:4px;font-size:10px}.state-chip{letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;border-radius:20px;padding:4px 7px;font-family:DM Mono,monospace;font-size:8px;font-style:normal;display:inline-block}.status-list .state-chip{position:absolute;top:17px;right:22px}.state-chip.approved{color:var(--green);background:var(--soft-green)}.state-chip.pending{color:#9b6c21;background:var(--soft-orange)}.action-list,.cca-list,.task-list,.slot-list,.product-list{border-top:1px solid #edf0f5}.event-action-row,.cca-row,.task-row,.product-row{border-bottom:1px solid #edf0f5;align-items:center;gap:15px;padding:16px 22px;display:flex}.event-action-row:last-child,.cca-row:last-child,.task-row:last-child,.product-row:last-child{border-bottom:0}.event-date{background:#f5f8fc;border:1px solid #dfe7f2;border-radius:5px;flex:0 0 43px;align-content:center;justify-items:center;width:43px;height:47px;display:grid}.event-date strong{color:var(--blue);font-size:17px;line-height:1}.event-date span{color:#98a6b7;text-transform:uppercase;margin-top:3px;font-family:DM Mono,monospace;font-size:8px}.action-copy{flex:1;min-width:0}.action-copy strong,.action-copy span,.action-copy small{display:block}.action-copy strong{color:var(--ink);font-size:12px}.action-copy span{color:#66778e;align-items:center;gap:5px;margin-top:5px;font-size:10px;display:flex}.action-copy small{color:#98a6b7;align-items:center;gap:5px;margin-top:5px;font-size:9px;display:flex}.event-action-row>button,.cca-row>button,.task-row>button{flex:none}.is-selected{color:var(--blue)!important;background:#edf4ff!important;border-color:#c4d6f5!important}.form-queue{border-top:1px solid #edf0f5}.queue-row{color:#7d8ca0;text-align:left;background:#fff;border:0;border-bottom:1px solid #edf0f5;align-items:center;gap:11px;width:100%;padding:15px 20px;display:flex}.queue-row:hover,.queue-row.selected{color:var(--blue);background:#f7faff}.queue-row>span{flex:1;min-width:0}.queue-row strong,.queue-row small{display:block}.queue-row strong{color:var(--ink);font-size:11px}.queue-row small{color:#98a6b7;margin-top:4px;font-size:9px}.compact-form{flex-direction:column;min-height:100%;display:flex}.form-copy{color:var(--muted);padding:9px 22px 22px;font-size:11px;line-height:1.55}.form-copy p{margin:0 0 16px}.check-row{cursor:pointer;grid-template-columns:15px 1fr;align-items:start}.check-row input{width:14px;height:14px;accent-color:var(--blue);margin:1px 0 0}.compact-form .form-actions{margin-top:auto}.entry-table{overflow-x:auto}.entry-row{color:#68798e;border-top:1px solid #edf0f5;grid-template-columns:1fr 1.2fr 1.4fr .65fr;align-items:center;gap:13px;min-width:650px;padding:14px 22px;font-size:10px;display:grid}.entry-row.heading{color:#8f9cad;letter-spacing:.05em;text-transform:uppercase;background:#fbfcfe;min-width:650px;padding-top:11px;padding-bottom:11px;font-family:DM Mono,monospace;font-size:8px}.entry-row strong{color:var(--ink);font-size:11px}.verification-form{max-width:760px}.verification-strip{color:#507166;background:#f3faf7;border:1px solid #d9e8e2;border-radius:5px;align-items:center;gap:9px;margin:0 22px 23px;padding:12px;font-size:10px;display:flex}.verification-strip svg{color:var(--green)}.product-mark,.cca-icon,.task-subject{border-radius:6px;flex:0 0 44px;place-items:center;width:44px;height:44px;display:grid}.product-mark{color:#b66a12;background:#fff1de}.size-select{flex-wrap:wrap;gap:5px;margin-top:10px;display:flex}.size-select button{color:#6b7b8e;background:#fff;border:1px solid #dce4ee;border-radius:4px;width:28px;height:25px;font-family:DM Mono,monospace;font-size:9px}.size-select button.selected{color:var(--blue);background:#eaf1ff;border-color:#9ab8ed}.quantity-control{color:var(--navy);align-items:center;gap:7px;display:flex}.quantity-control button{width:27px;height:27px;color:var(--blue);background:#fff;border:1px solid #dce4ee;border-radius:5px;place-items:center;display:grid}.quantity-control button:hover{background:#edf4ff}.quantity-control strong{text-align:center;min-width:16px;font-size:12px}.order-lines{color:#6c7b8e;gap:10px;min-height:94px;padding:16px 22px;font-size:10px;display:grid}.order-lines span{justify-content:space-between;gap:10px;display:flex}.order-lines strong{color:var(--ink)}.order-total{color:#617187;border-top:1px solid #e7edf5;justify-content:space-between;align-items:center;margin:0 22px;padding:14px 0;font-size:11px;display:flex}.order-total strong{color:var(--navy);font-size:17px}.wide-button{justify-content:center;width:calc(100% - 44px);margin:2px 22px 17px}.confirmation-note{color:var(--green);margin:0 22px 18px;font-size:10px}.cca-icon{color:var(--blue);background:var(--soft-blue)}.cca-row.orange .cca-icon{color:#bf700e;background:var(--soft-orange)}.cca-row.green .cca-icon{color:var(--green);background:var(--soft-green)}.cca-row button:disabled{cursor:not-allowed;color:#a5afba;background:#f5f7fa;border-color:#e2e7ed}.slot-row{cursor:pointer;color:#93a0af;border-bottom:1px solid #edf0f5;align-items:center;gap:12px;padding:16px 22px;display:flex}.slot-row:last-child{border-bottom:0}.slot-row:hover,.slot-row.selected{background:#f6f9fe}.slot-row input{width:15px;height:15px;accent-color:var(--blue);margin:0}.slot-row>span{flex:1;min-width:0}.slot-row strong,.slot-row small{display:block}.slot-row strong{color:var(--ink);font-size:11px}.slot-row small{color:var(--muted);margin-top:5px;font-size:10px}.slot-row>svg{color:#0000}.slot-row.selected>svg{color:var(--blue)}.booking-detail{min-height:120px;color:var(--muted);gap:7px;padding:18px 22px;display:grid}.booking-detail strong{color:var(--ink);font-size:13px}.booking-detail span{font-size:11px}.booking-detail small{color:#95a3b3;font-size:10px}.task-subject{color:#fff;background:var(--blue);font-family:DM Mono,monospace;font-size:15px;font-weight:500}.task-subject.english{background:var(--orange)}.task-subject.maths{background:var(--green)}.login-page{background:#fff;grid-template-columns:minmax(460px,1.05fr) minmax(430px,.95fr);min-height:100vh;display:grid}.login-visual{background:var(--navy);color:#fff;grid-template-rows:102px minmax(0,1fr) 208px;min-width:0;display:grid}.login-visual-header{border-bottom:1px solid #ffffff38;align-items:center;padding:0 clamp(28px,4vw,60px);display:flex}.login-brand-lockup{align-items:center;gap:14px;display:flex}.login-logo-frame{background:#fff;border-radius:4px;place-items:center;width:46px;height:62px;padding:6px 8px;display:grid}.login-logo-frame img{object-fit:contain;width:28px;height:43px}.login-brand-lockup strong,.login-brand-lockup small{display:block}.login-brand-lockup strong{letter-spacing:0;font-size:16px;font-weight:700}.login-brand-lockup small{color:#c8d7f5;margin-top:4px;font-family:YCIS Noto Sans SC,sans-serif;font-size:12px}.login-campus-image{background:url(/assets/campus-2.jpg) 50%/cover no-repeat;min-height:280px}.login-visual-caption{background:var(--navy);flex-direction:column;justify-content:center;padding:30px clamp(28px,5vw,72px);display:flex}.login-visual-caption h1{letter-spacing:0;margin:0;font-size:clamp(31px,3.4vw,52px);font-weight:700;line-height:1}.login-visual-caption p{color:#b8cefa;margin:8px 0 0;font-family:YCIS Noto Sans SC,sans-serif;font-size:17px}.login-caption-rule{background:var(--orange);width:38px;height:3px;margin:20px 0 13px}.login-visual-caption small{color:#d3dff5;letter-spacing:.1em;text-transform:uppercase;font-family:DM Mono,monospace;font-size:10px}.login-panel{background:#fff;place-items:center;min-width:0;padding:44px clamp(30px,7vw,118px);display:grid}.login-form-shell{width:min(100%,420px)}.login-panel-brand{border:1px solid #dbe4f1;border-radius:4px;place-items:center;width:52px;height:72px;padding:7px 9px;display:grid}.login-panel-brand img{object-fit:contain;width:31px;height:50px}.login-copy{margin:31px 0 35px}.login-copy h2{color:var(--navy);letter-spacing:0;margin:0;font-size:42px;font-weight:700;line-height:1}.login-copy p{color:#6c7c91;margin:12px 0 0;font-size:15px;line-height:1.45}.login-form{gap:22px;display:grid}.login-field{color:#43556d;gap:8px;font-size:12px;font-weight:700;display:grid}.login-input-wrap{color:#8798ae;background:#fff;border:1px solid #cfd9e7;border-radius:5px;align-items:center;height:52px;transition:border-color .18s,box-shadow .18s;display:flex;position:relative}.login-input-wrap:focus-within{border-color:var(--bright-blue);color:var(--blue);box-shadow:0 0 0 3px #1f66dc1f}.login-input-wrap>svg{flex:none;margin-left:15px}.login-input-wrap input{width:100%;min-width:0;height:100%;color:var(--ink);background:0 0;border:0;outline:0;padding:0 12px;font-size:15px}.login-input-wrap input[aria-invalid=true]{color:#a2433b}.login-password-toggle{color:#8594a7;background:0 0;border:0;border-radius:4px;flex:0 0 44px;place-items:center;width:44px;height:44px;display:grid}.login-password-toggle:hover{color:var(--blue);background:#f2f6fc}.login-error{color:#aa433b;margin:-7px 0 -2px;font-size:12px;line-height:1.45}.login-options{justify-content:space-between;align-items:center;gap:14px;margin-top:-2px;display:flex}.login-checkbox{color:#5f7087;cursor:pointer;align-items:center;gap:8px;font-size:12px;display:inline-flex}.login-checkbox input{width:15px;height:15px;accent-color:var(--blue);margin:0}.login-help{color:var(--blue);background:0 0;border:0;padding:2px 0;font-size:12px;font-weight:700}.login-help:hover{color:var(--navy)}.login-help-message{color:#687a90;align-items:center;gap:7px;margin:-8px 0 -1px;font-size:11px;line-height:1.45;display:flex}.login-help-message svg{color:var(--blue);flex:none}.login-submit{background:var(--blue);color:#fff;border:0;border-radius:5px;justify-content:center;align-items:center;gap:9px;width:100%;min-height:52px;font-size:14px;font-weight:700;transition:background .18s,transform .18s;display:inline-flex}.login-submit:hover:not(:disabled){background:var(--navy);transform:translateY(-1px)}.login-submit:disabled{cursor:wait;background:#5878ba}.login-spinner{animation:.8s linear infinite login-spin}.login-security-note{color:#718198;border-top:1px solid #e6ebf2;align-items:center;gap:8px;margin:27px 0 0;padding-top:20px;font-size:11px;line-height:1.45;display:flex}.login-security-note svg{color:var(--green);flex:none}.login-legal{color:#9aa7b6;letter-spacing:.04em;text-transform:uppercase;margin:31px 0 0;font-family:DM Mono,monospace;font-size:9px}.sign-out-button{margin-left:1px}@keyframes login-spin{to{transform:rotate(360deg)}}@media (width<=820px){.service-heading{align-items:flex-start}.service-heading h2{font-size:24px}.service-heading p{line-height:1.5}.demo-note{margin:13px 0 0 60px;position:static}.service-layout-wide,.uniform-layout{grid-template-columns:1fr}.event-action-row,.cca-row,.task-row,.product-row{align-items:flex-start;padding:15px 17px}.event-action-row{flex-wrap:wrap}.event-action-row .action-copy{min-width:calc(100% - 58px)}.event-action-row>button{margin-left:58px}.form-grid{grid-template-columns:1fr;padding:5px 17px 20px}.form-span{grid-column:auto}.form-actions{flex-direction:column;align-items:flex-start;padding:13px 17px}.form-actions .primary-button{justify-content:center;width:100%}.service-form>label,.form-copy{padding-left:17px;padding-right:17px}.verification-strip{margin-left:17px;margin-right:17px}.entry-row{padding-left:17px;padding-right:17px}.product-row .action-copy{min-width:0}.quantity-control{margin-top:7px}.product-row{flex-wrap:wrap}.product-row .quantity-control{margin-left:59px}.order-lines,.booking-detail{padding-left:17px;padding-right:17px}.order-total{margin-left:17px;margin-right:17px}.wide-button{width:calc(100% - 34px);margin-left:17px;margin-right:17px}.confirmation-note{margin-left:17px;margin-right:17px}.cca-row>button,.task-row>button{align-self:center}.login-page{background:#fff;min-height:100svh;display:block}.login-visual{grid-template-rows:88px 190px 151px}.login-visual-header{padding:0 22px}.login-logo-frame{width:38px;height:52px;padding:5px 7px}.login-logo-frame img{width:24px;height:37px}.login-brand-lockup{gap:11px}.login-brand-lockup strong{font-size:14px}.login-brand-lockup small{font-size:11px}.login-campus-image{min-height:0}.login-visual-caption{padding:22px}.login-visual-caption h1{font-size:31px}.login-visual-caption p{margin-top:5px;font-size:14px}.login-caption-rule{width:31px;margin:13px 0 9px}.login-visual-caption small{font-size:8px}.login-panel{padding:38px 22px 44px;display:block}.login-form-shell{width:100%;max-width:470px;margin:0 auto}.login-panel-brand{display:none}.login-copy{margin:0 0 28px}.login-copy h2{font-size:34px}.login-copy p{font-size:14px}.login-form{gap:19px}.login-input-wrap{height:50px}.login-security-note{margin-top:24px}.login-legal{margin-top:23px}}
