:root{--navy:#082f49;--navy-2:#0b405f;--teal:#0e9f9a;--teal-soft:#e6f7f5;--green:#62b55b;--gold:#d6a83f;--ink:#163044;--muted:#6b7d8a;--line:#dce7ec;--surface:#fff;--bg:#f3f7f8;--danger:#c74747;--shadow:0 14px 36px rgba(8,47,73,.1);--radius:20px}
.commercial-tour{margin:1rem 0;padding:1rem;border:1px solid #badbd4;border-radius:16px;background:#effaf7;color:#163f46}.commercial-tour>strong{font-size:1rem}.commercial-tour p{margin:.45rem 0 .85rem;font-size:.9rem}.commercial-tour-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:.45rem}.commercial-tour-links button{min-height:42px;padding:.5rem;border:1px solid #91c9be;border-radius:10px;background:#fff;color:#073c49;font-size:.87rem;font-weight:750;text-align:left}.commercial-tour-links button:hover,.commercial-tour-links button:focus-visible{background:#daf4ec}.commercial-demo-banner{position:relative;z-index:25;display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;padding:.65rem 1rem;background:#08394b;color:#fff;font-size:.87rem;line-height:1.45}.commercial-demo-banner strong{color:#a5f0d2}.commercial-demo-banner button{min-height:36px;padding:.35rem .7rem;border:1px solid #a5f0d2;border-radius:8px;background:transparent;color:#fff;font-size:.87rem;font-weight:700}.commercial-demo-banner button:hover{background:#18536a}.app-shell .commercial-demo-banner{margin-left:250px}@media(max-width:850px){.app-shell .commercial-demo-banner{margin-left:0}}@media(max-width:620px){.commercial-demo-banner{font-size:.82rem}.commercial-demo-banner button{width:100%}}
.commercial-guide-button{margin:0 0 .85rem;padding:0;border:0;background:none;color:#075968;text-decoration:underline;font-size:.9rem;font-weight:700}.commercial-guide-dialog{max-width:690px;width:min(690px,calc(100vw - 1.4rem));max-height:90vh;overflow:auto}.commercial-guide-dialog>p,.commercial-guide-access p{font-size:.95rem;line-height:1.6}.commercial-guide-list{display:grid;gap:.7rem;padding-left:1.5rem;margin:1rem 0}.commercial-guide-list li{padding:.65rem .7rem;border:1px solid #dbe9e9;border-radius:10px;background:#f8fcfc;font-size:.9rem;line-height:1.5}.commercial-guide-list li strong{display:block;margin-bottom:.2rem;color:#073c49}.commercial-guide-list li span{display:block}.commercial-guide-access{padding:1rem;border-left:4px solid #0e9f9a;background:#eef9f6}.commercial-guide-access strong{font-size:1rem}.commercial-guide-access p{margin:.35rem 0 0}
*{box-sizing:border-box}[hidden]{display:none!important}html{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(14,159,154,.28);outline-offset:2px}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.025em}p{line-height:1.55}.muted{color:var(--muted)}.eyebrow{display:block;color:var(--teal);font-size:.76rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;margin-bottom:.35rem}.brand-lockup{display:flex;align-items:center;gap:.75rem}.brand-lockup>span:last-child{display:flex;flex-direction:column}.brand-lockup strong{font-size:1.12rem;letter-spacing:.06em}.brand-lockup small{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;opacity:.7}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:15px 15px 15px 4px;background:linear-gradient(145deg,var(--teal),var(--green));color:white;font-weight:900;box-shadow:0 8px 18px rgba(14,159,154,.25)}
.login-shell{min-height:100svh;display:grid;grid-template-columns:minmax(360px,1.08fr) minmax(420px,.92fr);background:white}.login-brand{position:relative;overflow:hidden;padding:clamp(2rem,5vw,5rem);display:flex;flex-direction:column;background:radial-gradient(circle at 85% 18%,rgba(98,181,91,.22),transparent 32%),linear-gradient(145deg,#062a40 0%,#0a4764 58%,#0c6a73 100%);color:white}.brand-lockup--large .brand-mark{background:white;color:var(--teal)}.brand-message{max-width:630px;margin:auto 0}.brand-message .eyebrow{color:#8ce0ca}.brand-message h1{font-size:clamp(2.45rem,4.4vw,4.8rem);line-height:1.02;max-width:11ch;margin-bottom:1.4rem}.brand-message p{font-size:1.08rem;max-width:48ch;color:#d7ebef}.brand-credit{margin:0;color:#d7ebef}.route-ribbon{display:flex;align-items:center;width:min(560px,90%);gap:1rem;margin:2.5rem 0}.route-ribbon i{height:2px;flex:1;background:repeating-linear-gradient(90deg,#8ce0ca 0 8px,transparent 8px 14px)}.ribbon-stop{padding:.5rem .8rem;border:1px solid rgba(255,255,255,.22);border-radius:99px;font-size:.8rem}.ribbon-bus{display:grid;place-items:center;width:52px;height:40px;border-radius:13px;background:var(--green);box-shadow:0 8px 20px rgba(0,0,0,.2)}.login-panel{display:grid;place-items:center;padding:2rem;background:linear-gradient(180deg,#fff,#f5faf9)}.login-card{width:min(470px,100%)}.login-card h2{font-size:2.2rem;margin-bottom:.35rem}.mobile-brand{display:none;margin-bottom:2rem}.role-picker{display:grid;grid-template-columns:repeat(5,1fr);gap:.35rem;padding:.35rem;background:#edf3f5;border-radius:16px;margin:1.8rem 0}.role{border:0;background:transparent;color:var(--muted);border-radius:12px;padding:.75rem .2rem;font-size:.7rem;font-weight:700}.role span{display:block;font-size:1.05rem;margin-bottom:.2rem}.role.is-active{background:white;color:var(--navy);box-shadow:0 4px 12px rgba(8,47,73,.08)}label{display:grid;gap:.45rem;font-size:.84rem;font-weight:700;color:var(--ink);margin-bottom:1rem}input,select{width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:.72rem .85rem}input::placeholder{color:#9aaaaf}.form-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.2rem 0 1.2rem}.check{display:flex;grid-template-columns:auto 1fr;align-items:center;margin:0;font-weight:500;color:var(--muted)}.check input{width:17px;min-height:auto;accent-color:var(--teal)}.link-button{border:0;background:none;color:var(--teal);padding:0;font-size:.82rem}.primary,.secondary{min-height:42px;border-radius:12px;padding:.65rem 1rem;font-weight:800;border:1px solid transparent}.primary{background:var(--navy);color:white;box-shadow:0 8px 18px rgba(8,47,73,.16)}.primary:hover{background:var(--navy-2)}.secondary{background:white;color:var(--navy);border-color:var(--line)}.secondary:hover{border-color:#aac4ce;background:#f8fbfc}.full{width:100%;min-height:50px}.login-hint{text-align:center;font-size:.78rem;color:var(--muted);margin-top:1rem}
.app-shell{min-height:100svh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;padding:1.45rem 1rem;display:flex;flex-direction:column;background:var(--navy);color:white;z-index:20}.sidebar-brand{padding:0 .5rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:1rem}.sidebar-brand .brand-mark{width:42px;height:42px}.sidebar nav{display:grid;gap:.22rem;overflow:auto}.nav-item{width:100%;display:flex;align-items:center;gap:.8rem;border:0;border-radius:11px;padding:.74rem .78rem;background:transparent;color:#bfd2db;text-align:left;font-weight:650}.nav-item span{width:22px;text-align:center;font-size:1.04rem}.nav-item:hover:not(:disabled),.nav-item.is-active{background:rgba(255,255,255,.1);color:white}.nav-item.is-active{box-shadow:inset 3px 0 0 var(--green)}.nav-item.is-muted{opacity:.44;cursor:default}.nav-label{padding:1.1rem .8rem .45rem;font-size:.65rem;letter-spacing:.11em;text-transform:uppercase;color:#7fa0af}.sidebar-foot{margin-top:auto;padding:1rem .45rem 0;border-top:1px solid rgba(255,255,255,.12);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem}.sidebar-foot strong,.sidebar-foot small{display:block;font-size:.76rem}.sidebar-foot small{color:#9fb7c2;margin-top:.14rem}.sidebar-foot button{border:0;background:transparent;color:white;font-size:1.2rem}.school-avatar,.user-avatar{display:grid;place-items:center;border-radius:50%;background:var(--teal);color:white;font-weight:800}.school-avatar{width:36px;height:36px;font-size:.7rem}.workspace{margin-left:250px;min-height:100svh}.topbar{height:90px;padding:0 clamp(1rem,3vw,2.2rem);display:flex;align-items:center;justify-content:space-between;background:white;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar h1{font-size:1.28rem;margin:0}.topbar .eyebrow{font-size:.65rem;margin-bottom:.12rem}.topbar-actions{display:flex;align-items:center;gap:.8rem}.date-chip{padding-right:1rem;border-right:1px solid var(--line)}.date-chip small,.date-chip strong{display:block;text-align:right}.date-chip small{font-size:.7rem;color:var(--muted)}.date-chip strong{font-size:.8rem}.icon-button{position:relative;width:42px;height:42px;border:1px solid var(--line);border-radius:12px;background:white;color:var(--navy);font-size:1.15rem}.notification-dot{position:absolute;right:8px;top:8px;width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px white}.user-avatar{width:39px;height:39px}.menu-button{display:none}.content{padding:clamp(1rem,3vw,2.1rem);max-width:1540px;margin:auto}.view{display:none}.view.is-visible{display:block}.welcome-row,.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.4rem}.welcome-row h2,.section-head h2{font-size:1.7rem;margin-bottom:.3rem}.welcome-row p,.section-head p{color:var(--muted);margin:0}.status-pill{display:inline-flex;align-items:center;gap:.5rem;border-radius:99px;padding:.5rem .75rem;font-size:.76rem;font-weight:800;white-space:nowrap}.status-ok{background:#eaf7e9;color:#39793a}.status-pill i{width:8px;height:8px;border-radius:50%;background:currentColor}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.stat-card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 4px 16px rgba(8,47,73,.045)}.stat-card{display:flex;align-items:center;gap:.9rem;padding:1.15rem}.stat-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;font-size:1.3rem}.stat-icon.teal{color:var(--teal);background:var(--teal-soft)}.stat-icon.blue{color:#367eb0;background:#eaf3fa}.stat-icon.green{color:#4b9949;background:#edf8ec}.stat-icon.gold{color:#9a741e;background:#fff7df}.stat-card strong,.stat-card span,.stat-card small{display:block}.stat-card strong{font-size:1.6rem;line-height:1}.stat-card span{font-size:.78rem;font-weight:800;margin:.2rem 0}.stat-card small{font-size:.68rem;color:var(--muted)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(290px,.8fr);gap:1rem}.panel{padding:1.2rem}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.panel-head h3{font-size:1.1rem;margin:0}.map-canvas{position:relative;min-height:410px;border-radius:16px;overflow:hidden;background-color:#e9f1ef;background-image:linear-gradient(rgba(255,255,255,.64) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.64) 1px,transparent 1px);background-size:44px 44px}.map-canvas svg{position:absolute;inset:0;width:100%;height:100%}.map-road{fill:none;stroke:white;stroke-width:22}.map-road.thin{stroke-width:12}.route-line{fill:none;stroke-width:6;stroke-linecap:round;stroke-dasharray:10 6}.route-line.r1{stroke:var(--green)}.route-line.r2{stroke:var(--teal)}.map-label{position:absolute;color:#84969d;font-size:.72rem;font-weight:700}.map-label.l1{left:11%;top:28%}.map-label.l2{right:12%;top:25%}.map-label.l3{left:44%;bottom:19%}.bus-pin{position:absolute;display:grid;grid-template-columns:auto auto;column-gap:.45rem;align-items:center;text-align:left;border:0;border-radius:14px;background:white;color:var(--ink);padding:.6rem .75rem;box-shadow:var(--shadow)}.bus-pin>span{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--navy);color:white}.bus-pin b{font-size:.76rem}.bus-pin small{color:var(--muted);font-size:.66rem}.bus-1{left:42%;top:48%}.bus-2{right:13%;top:25%}.map-legend{position:absolute;left:14px;bottom:14px;display:flex;gap:.8rem;padding:.55rem .7rem;border-radius:10px;background:rgba(255,255,255,.92);font-size:.68rem;font-weight:700}.legend-line{display:inline-block;width:15px;height:3px;vertical-align:middle;margin-right:.3rem}.green-line{background:var(--green)}.teal-line{background:var(--teal)}.timeline{list-style:none;padding:0;margin:0}.timeline li{position:relative;display:grid;grid-template-columns:75px 1fr 24px;gap:.6rem;padding:1rem 0;border-bottom:1px solid var(--line)}.timeline li:last-child{border-bottom:0}.timeline time{font-size:.7rem;color:var(--muted);padding-top:.15rem}.timeline strong,.timeline span{display:block}.timeline strong{font-size:.8rem}.timeline span{font-size:.7rem;color:var(--muted);margin-top:.2rem}.timeline i{align-self:center;justify-self:center;width:12px;height:12px;border:2px solid #bfd0d6;border-radius:50%}.timeline i.done{display:grid;place-items:center;width:22px;height:22px;border:0;background:var(--green);color:white;font-size:.65rem;font-style:normal}.timeline i.current{border-color:var(--teal);box-shadow:0 0 0 5px var(--teal-soft)}
.action-row{display:flex;gap:.65rem}.toolbar{display:grid;grid-template-columns:minmax(240px,1fr) 190px auto;align-items:center;gap:.8rem;margin-bottom:1rem;padding:.75rem}.search{display:grid;grid-template-columns:auto 1fr;align-items:center;margin:0;background:#f6f9fa;border-radius:12px;padding-left:.8rem;color:var(--muted)}.search input{border:0;background:transparent}.toolbar select{min-height:44px}.result-count{font-size:.76rem;color:var(--muted);padding-right:.5rem}.student-layout{display:grid;grid-template-columns:minmax(370px,1.1fr) minmax(320px,.9fr);gap:1rem}.student-list{padding:.5rem;min-height:520px}.student-row{width:100%;display:grid;grid-template-columns:auto 1.4fr .85fr auto;align-items:center;gap:.8rem;padding:.85rem;border:0;border-bottom:1px solid var(--line);background:white;color:var(--ink);text-align:left;border-radius:12px}.student-row:last-child{border-bottom:0}.student-row:hover,.student-row.is-active{background:#f0f9f8}.student-photo{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,#ccefeb,#e9f7e7);color:var(--navy);font-weight:900}.student-row strong,.student-row span,.student-row small{display:block}.student-row strong{font-size:.84rem}.student-row small{font-size:.7rem;color:var(--muted);margin-top:.18rem}.route-tag{justify-self:start;padding:.3rem .55rem;background:#eef4f6;border-radius:8px;font-size:.68rem;font-weight:800}.chevron{color:#9cb0b9}.empty-state{padding:3rem 1rem;text-align:center;color:var(--muted)}.student-detail{min-height:520px}.detail-hero{display:flex;align-items:center;gap:.9rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}.detail-hero .student-photo{width:58px;height:58px;font-size:1.08rem}.detail-hero h3{margin:0 0 .2rem}.detail-hero p{margin:0;color:var(--muted);font-size:.78rem}.detail-hero .status-pill{margin-left:auto}.detail-tabs{display:flex;gap:.35rem;margin:1rem 0;border-bottom:1px solid var(--line)}.detail-tab{border:0;background:transparent;padding:.65rem .7rem;color:var(--muted);font-size:.75rem;font-weight:800;border-bottom:2px solid transparent}.detail-tab.is-active{color:var(--teal);border-color:var(--teal)}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}.info-item{padding:.8rem;background:#f6f9fa;border-radius:12px}.info-item small,.info-item strong{display:block}.info-item small{color:var(--muted);font-size:.68rem;margin-bottom:.28rem}.info-item strong{font-size:.78rem}.info-item.wide{grid-column:1/-1}.detail-note{margin-top:1rem;padding:.8rem;border-left:3px solid var(--gold);background:#fff9e9;border-radius:6px 12px 12px 6px;font-size:.74rem;color:#6b5a2d}.route-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:1rem}.route-list{display:grid;gap:.75rem;align-content:start}.route-card{width:100%;border:1px solid var(--line);border-radius:16px;background:white;padding:1rem;text-align:left;color:var(--ink);box-shadow:0 3px 12px rgba(8,47,73,.04)}.route-card.is-active{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-soft)}.route-card-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.65rem}.route-card strong{font-size:.9rem}.route-card small{color:var(--muted)}.route-meta{display:flex;justify-content:space-between;font-size:.7rem;color:var(--muted)}.capacity{height:5px;background:#e8eff2;border-radius:8px;overflow:hidden;margin:.7rem 0}.capacity i{display:block;height:100%;background:var(--teal);border-radius:inherit}.status-tag{padding:.3rem .5rem;border-radius:8px;background:#eaf7e9;color:#39793a;font-size:.65rem;font-weight:800}.status-tag.draft{background:#fff5dc;color:#876513}.route-detail{min-height:590px}.route-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}.route-detail-head h3{margin:0 0 .25rem}.route-detail-head p{margin:0;color:var(--muted);font-size:.75rem}.route-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:.7rem;margin:1rem 0}.summary-item{padding:.75rem;border-radius:12px;background:#f6f9fa}.summary-item span,.summary-item strong{display:block}.summary-item span{font-size:.65rem;color:var(--muted);margin-bottom:.2rem}.summary-item strong{font-size:.78rem}.route-notice{display:flex;gap:.7rem;padding:.8rem;border-radius:12px;background:var(--teal-soft);color:#276b69;font-size:.73rem;margin-bottom:1rem}.stops-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.stops-head h4{margin:0;font-size:.9rem}.stops-list{list-style:none;margin:0;padding:0}.stop-item{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:.75rem;padding:.8rem 0;border-bottom:1px solid var(--line)}.stop-number{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;background:#eaf3f5;color:var(--navy);font-size:.72rem;font-weight:900}.stop-item strong,.stop-item small{display:block}.stop-item strong{font-size:.78rem}.stop-item small{font-size:.67rem;color:var(--muted);margin-top:.18rem}.stop-item time{font-size:.72rem;font-weight:800;color:var(--teal)}.locked-banner{padding:1rem;border-radius:12px;background:#eef1f3;color:#5e6d73;font-size:.75rem}.route-actions{display:flex;justify-content:flex-end;gap:.65rem;margin-top:1rem}
.dialog{width:min(680px,calc(100% - 2rem));border:0;border-radius:22px;padding:0;box-shadow:0 26px 90px rgba(8,47,73,.25);color:var(--ink)}.dialog::backdrop{background:rgba(4,29,44,.58);backdrop-filter:blur(3px)}.dialog form{padding:1.3rem}.dialog-small{max-width:520px}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:.9rem;margin-bottom:1rem}.dialog-head h2{font-size:1.35rem;margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}.span-2{grid-column:1/-1}.form-note{padding:.75rem;border-radius:10px;background:#f5f8f9;color:var(--muted);font-size:.72rem}.dialog-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:1rem}.upload-box{position:relative;min-height:190px;border:2px dashed #bdd1d8;border-radius:16px;background:#f7fafb;display:grid;place-items:center;align-content:center;gap:.5rem;text-align:center;padding:1rem}.upload-box>span{font-size:2rem;color:var(--teal)}.upload-box small{color:var(--muted)}.upload-box input{position:absolute;inset:0;opacity:0;cursor:pointer}.toast-region{position:fixed;right:1rem;bottom:1rem;display:grid;gap:.6rem;z-index:100}.toast{max-width:380px;padding:.85rem 1rem;border-radius:13px;background:var(--navy);color:white;box-shadow:var(--shadow);font-size:.78rem;animation:toast-in .25s ease}.toast.success{border-left:4px solid var(--green)}@keyframes toast-in{from{transform:translateY(8px);opacity:0}}.scrim{display:none}
@media(max-width:1120px){.stat-grid{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.route-summary{grid-template-columns:1fr 1fr}}
@media(max-width:850px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.mobile-brand{display:flex}.login-panel{min-height:100svh}.sidebar{transform:translateX(-105%);transition:transform .24s ease}.sidebar.is-open{transform:translateX(0)}.scrim{position:fixed;inset:0;border:0;background:rgba(4,29,44,.48);z-index:15}.scrim.is-visible{display:block}.workspace{margin-left:0}.menu-button{display:block}.topbar{height:78px}.date-chip{display:none}.student-layout,.route-layout{grid-template-columns:1fr}.student-list{min-height:auto}.student-detail{min-height:auto}.route-list{grid-template-columns:repeat(3,minmax(230px,1fr));overflow-x:auto;padding-bottom:.4rem}.route-card{min-width:230px}}
@media(max-width:620px){.login-panel{padding:1.2rem}.login-card h2{font-size:1.8rem}.role{font-size:.72rem}.topbar{padding:.7rem 1rem}.topbar h1{font-size:1.02rem}.topbar .eyebrow{display:none}.topbar-actions{gap:.45rem}.user-avatar{width:36px;height:36px}.content{padding:1rem}.welcome-row,.section-head{align-items:flex-start;flex-direction:column}.status-pill{align-self:flex-start}.stat-grid{grid-template-columns:1fr 1fr;gap:.7rem}.stat-card{padding:.85rem;align-items:flex-start}.stat-icon{width:38px;height:38px}.stat-card strong{font-size:1.3rem}.stat-card small{display:none}.map-canvas{min-height:330px}.bus-1{left:26%;top:50%}.bus-2{right:4%;top:22%}.panel{border-radius:16px}.toolbar{grid-template-columns:1fr}.result-count{padding-left:.4rem}.student-row{grid-template-columns:auto 1fr auto}.student-row .route-tag{display:none}.info-grid{grid-template-columns:1fr}.info-item.wide{grid-column:auto}.route-summary{grid-template-columns:1fr 1fr}.route-detail-head{flex-direction:column}.route-actions{display:grid;grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.dialog{width:calc(100% - 1rem)}.dialog form{padding:1rem}.action-row{width:100%}.action-row button{flex:1}.section-head .primary{width:100%}}
@media(max-width:390px){.stat-grid{grid-template-columns:1fr}.topbar-actions .icon-button{display:none}.role-picker{gap:.2rem}.role{padding:.7rem .25rem}.route-summary{grid-template-columns:1fr}.route-actions{grid-template-columns:1fr}}

/* Visual refresh: real school-transport photography, clean institutional energy */
:root{--lime:#a8d93f;--gold:#7aaa2e;--bg:#f1f7f8}
.login-shell{grid-template-columns:minmax(520px,1.22fr) minmax(410px,.78fr)}
.login-brand{isolation:isolate;padding:clamp(2rem,4.5vw,4.8rem);background-image:url('assets/ev-school-white-minivan.jpg');background-size:cover;background-position:center;color:white}
.login-brand .photo-shade{position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,rgba(4,34,54,.97) 0%,rgba(4,42,62,.88) 38%,rgba(4,42,62,.35) 68%,rgba(4,42,62,.08) 100%)}
.login-brand:after{content:"";position:absolute;inset:auto 0 0;height:46%;z-index:0;background:linear-gradient(transparent,rgba(3,28,44,.82))}
.login-brand>*:not(.photo-shade){position:relative;z-index:1}
.brand-message{max-width:610px}.brand-message h1{font-size:clamp(2.8rem,4.7vw,5.2rem);line-height:.98;max-width:9.5ch;margin-bottom:1.25rem;text-wrap:balance}.brand-message h1 em{display:block;color:#b8eb58;font-family:Georgia,"Times New Roman",serif;font-weight:500}.brand-message p{max-width:43ch;color:#e6f3f5}.hero-benefits{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1.5rem}.hero-benefits span{display:inline-flex;align-items:center;gap:.42rem;padding:.56rem .78rem;border:1px solid rgba(255,255,255,.22);border-radius:99px;background:rgba(4,44,64,.58);backdrop-filter:blur(10px);font-size:.76rem;font-weight:750}.hero-benefits b{color:#b8eb58}.route-ribbon{width:min(470px,74%);margin:2rem 0}.ribbon-stop{background:rgba(4,44,64,.48);backdrop-filter:blur(8px)}
.login-panel{background:radial-gradient(circle at 92% 8%,rgba(168,217,63,.13),transparent 23%),linear-gradient(180deg,#fff,#f4faf9)}.login-card{padding:1.2rem}.role span{font-size:1.16rem;filter:saturate(.78)}
.content:before{content:"";position:fixed;right:-120px;top:86px;width:310px;height:310px;border-radius:50%;background:radial-gradient(circle,rgba(14,159,154,.08),transparent 68%);pointer-events:none}.school-spotlight{position:relative;isolation:isolate;min-height:205px;overflow:hidden;border-radius:24px;margin-bottom:1rem;padding:1.55rem;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;color:white;background-image:none;background-size:cover;background-position:center 45%;box-shadow:0 16px 38px rgba(8,47,73,.14)}.school-spotlight:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(4,36,55,.97) 0%,rgba(4,47,67,.83) 45%,rgba(4,47,67,.18) 73%)}.school-spotlight:after{content:"";position:absolute;right:-70px;top:-110px;width:280px;height:280px;border:1px solid rgba(255,255,255,.24);border-radius:50%}.spotlight-copy{position:relative;z-index:2;max-width:480px}.spotlight-copy .eyebrow{color:#a9e7db}.spotlight-copy h3{font-size:1.55rem;margin-bottom:.45rem}.spotlight-copy p{color:#e1eef0;font-size:.84rem;margin-bottom:1rem}.spotlight-action{border:0;border-radius:99px;padding:.66rem .92rem;background:#b8eb58;color:#173b2f;font-size:.77rem;font-weight:900}.spotlight-action span{padding-left:.35rem}.spotlight-badges{position:relative;z-index:2;display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.spotlight-badges span{min-width:84px;padding:.65rem .75rem;border:1px solid rgba(255,255,255,.24);border-radius:13px;background:rgba(5,45,66,.68);backdrop-filter:blur(12px);font-size:.67rem}.spotlight-badges b{display:block;font-size:.9rem;color:white;margin-bottom:.1rem}.stat-card{position:relative;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(8,47,73,.08)}.stat-card:after{content:"";position:absolute;right:-18px;bottom:-30px;width:70px;height:70px;border-radius:50%;background:rgba(14,159,154,.045)}.stat-icon.gold{color:#547d17;background:#f1f9df}.map-canvas{background-color:#e7f2ef}.primary{background:linear-gradient(135deg,var(--navy),#0b526c)}
@media(max-width:850px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}}
@media(max-width:620px){.school-spotlight{min-height:300px;align-items:flex-end;background-position:58% center}.school-spotlight:before{background:linear-gradient(180deg,rgba(4,39,59,.08) 0%,rgba(4,39,59,.94) 58%)}.spotlight-badges{display:none}.spotlight-copy h3{font-size:1.35rem}.login-card{padding:0}}
.login-brand{background-image:url('assets/ev-school-white-minivan.jpg')}.school-spotlight{background-image:none;background-position:center 58%}

/* Mobile-first visual emphasis */
.hero-live-card{position:absolute!important;right:clamp(1.5rem,4vw,4.5rem);bottom:4.3rem;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;width:min(280px,34vw);padding:.78rem .85rem;border:1px solid rgba(255,255,255,.28);border-radius:17px;background:rgba(255,255,255,.92);color:var(--ink);box-shadow:0 18px 48px rgba(2,29,45,.26);backdrop-filter:blur(16px)}.hero-live-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,var(--teal),var(--green));font-size:1.22rem}.hero-live-card small,.hero-live-card strong{display:block}.hero-live-card small{font-size:.66rem;color:var(--muted);margin-bottom:.12rem}.hero-live-card strong{font-size:.78rem}.hero-live-card>b{padding:.38rem .5rem;border-radius:9px;background:#eff9d9;color:#4b7418;font-size:.72rem}.ribbon-bus{animation:bus-float 2.8s ease-in-out infinite}@keyframes bus-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}.brand-mark{transition:transform .22s ease}.brand-lockup:hover .brand-mark{transform:rotate(-4deg) scale(1.04)}
@media(max-width:850px){.login-shell{display:block;background:#f3f8f8}.login-brand{display:flex;min-height:42svh;padding:1.25rem 1.2rem 2.5rem;background-position:center 42%;border-radius:0 0 30px 30px;box-shadow:0 16px 40px rgba(8,47,73,.18)}.login-brand .photo-shade{background:linear-gradient(180deg,rgba(4,34,54,.58),rgba(4,34,54,.18) 42%,rgba(4,34,54,.88))}.brand-lockup--large .brand-mark{width:42px;height:42px}.brand-message{margin:auto 0 0}.brand-message .eyebrow{font-size:.68rem;margin-bottom:.28rem}.brand-message h1{font-size:clamp(2rem,9vw,3rem);max-width:10.5ch;margin:0;line-height:1.02}.brand-message p,.hero-benefits,.route-ribbon,.brand-credit{display:none}.hero-live-card{right:1rem;bottom:1.15rem;width:min(270px,72vw);padding:.62rem .7rem;border-radius:14px}.hero-live-icon{width:35px;height:35px}.login-panel{min-height:auto;display:block;margin-top:-18px;padding:2.7rem 1.2rem 1.4rem;background:linear-gradient(180deg,#fff,#f5faf9)}.login-card{width:min(470px,100%);margin:auto}.mobile-brand{display:none}.login-card h2{font-size:1.85rem}.role-picker{margin:1.2rem 0}.role{padding:.68rem .35rem}.full{min-height:52px}}
@media(max-width:430px){.login-brand{min-height:39svh}.hero-live-card{width:calc(100% - 2rem)}.hero-live-card>b{font-size:.68rem}.school-spotlight{min-height:285px}.spotlight-copy p{font-size:.78rem}.stat-grid{gap:.6rem}.stat-card{border-radius:14px}.stat-icon{border-radius:11px}}
.login-brand{background-image:url('assets/ev-school-white-minivan.jpg');background-position:54% 48%}.brand-credit{display:grid;gap:.2rem}.school-spotlight{background-image:none;background:radial-gradient(circle at 82% 18%,rgba(184,235,88,.28),transparent 20%),radial-gradient(circle at 95% 85%,rgba(33,197,180,.36),transparent 31%),linear-gradient(135deg,#062f49 0%,#07536a 56%,#0b8587 100%)}.school-spotlight:before{background:linear-gradient(90deg,rgba(3,35,54,.35),transparent 70%)}
@media(max-width:850px){.login-brand{background-position:53% 57%;min-height:38svh}.brand-message{padding-right:0}.brand-message h1{max-width:11ch}.login-panel{margin-top:-22px}.school-spotlight{background:radial-gradient(circle at 82% 16%,rgba(184,235,88,.28),transparent 22%),linear-gradient(145deg,#062f49,#0b8587)}}

/* EV SCHOOL hero: real minivan + human care, composed as one editorial visual */
.login-brand{background-image:url('assets/ev-school-white-minivan.jpg');background-position:58% center}
.login-brand .photo-shade{background:linear-gradient(90deg,rgba(3,30,47,.97) 0%,rgba(4,40,59,.90) 35%,rgba(4,42,62,.44) 58%,rgba(4,42,62,.06) 100%)}
.hero-story{position:absolute!important;right:clamp(1.5rem,3.8vw,4rem);top:clamp(6.7rem,14vh,9.2rem);z-index:2!important;width:clamp(160px,17vw,230px);margin:0;padding:.45rem;border:1px solid rgba(255,255,255,.4);border-radius:24px;background:rgba(255,255,255,.92);box-shadow:0 22px 58px rgba(2,25,39,.34);transform:rotate(1.5deg);backdrop-filter:blur(12px)}
.hero-story img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:67% center;border-radius:18px}
.hero-story figcaption{display:flex;align-items:center;gap:.45rem;padding:.58rem .35rem .2rem;color:var(--navy);font-size:.7rem;font-weight:900;line-height:1.2}
.hero-story figcaption span{display:grid;place-items:center;width:21px;height:21px;flex:0 0 21px;border-radius:7px;background:#e8f7c8;color:#537b19}
.visual-license{margin:1.05rem 0 0;text-align:center;color:#8a9aa3;font-size:.6rem;line-height:1.45}
.visual-license a{color:#70858f;text-underline-offset:2px}

@media(max-width:1100px) and (min-width:851px){.hero-story{right:1.4rem;top:7.2rem;width:155px}.login-brand{background-position:62% center}.brand-message{max-width:520px}}
@media(max-width:850px){.login-brand{background-position:61% center}.login-brand .photo-shade{background:linear-gradient(180deg,rgba(3,31,48,.72) 0%,rgba(3,31,48,.12) 40%,rgba(3,31,48,.9) 100%)}.hero-story{right:1rem;top:4.4rem;width:112px;padding:.3rem;border-radius:16px;transform:rotate(1deg)}.hero-story img{aspect-ratio:1/1;border-radius:12px}.hero-story figcaption{padding:.4rem .16rem .1rem;font-size:.52rem;gap:.28rem}.hero-story figcaption span{width:16px;height:16px;flex-basis:16px;border-radius:5px}.brand-message{max-width:70%}.visual-license{margin-top:.8rem;font-size:.56rem}}
@media(max-width:430px){.hero-story{top:4rem;width:104px}.brand-message{max-width:72%}.login-brand{background-position:63% center}}

/* EV SCHOOL hero: a real parent checks the family app */
.login-brand{background-image:url('assets/ev-school-parent-app.jpg');background-position:57% center}
.login-brand .photo-shade{background:linear-gradient(90deg,rgba(3,29,46,.98) 0%,rgba(3,36,54,.92) 34%,rgba(3,36,54,.54) 55%,rgba(3,36,54,.13) 78%,rgba(3,36,54,.22) 100%)}
.family-app-preview{position:absolute!important;right:clamp(1rem,2.6vw,2.8rem);top:50%;z-index:3!important;width:clamp(214px,17vw,270px);transform:translateY(-44%);color:var(--ink)}
.app-preview-label{display:flex;align-items:center;justify-content:center;gap:.42rem;width:max-content;margin:0 auto .55rem;padding:.4rem .7rem;border:1px solid rgba(255,255,255,.3);border-radius:99px;background:rgba(4,43,62,.74);color:white;box-shadow:0 8px 20px rgba(2,24,38,.2);backdrop-filter:blur(10px);font-size:.65rem;font-weight:850;letter-spacing:.02em}
.app-preview-label span{width:7px;height:7px;border-radius:50%;background:#b8eb58;box-shadow:0 0 0 4px rgba(184,235,88,.18)}
.phone-shell{position:relative;overflow:hidden;padding:.65rem .68rem .55rem;border:5px solid rgba(255,255,255,.92);border-radius:31px;background:#f4f8f8;box-shadow:0 28px 70px rgba(2,24,38,.42),0 0 0 1px rgba(6,44,61,.16);font-style:normal}
.phone-shell:before{content:"";position:absolute;z-index:4;top:4px;left:50%;width:58px;height:12px;transform:translateX(-50%);border-radius:0 0 10px 10px;background:#16333d}
.phone-top{display:flex;align-items:center;justify-content:space-between;padding:.1rem .24rem .42rem;color:#274650;font-size:.48rem;font-weight:900}.phone-top i{width:30px}
.phone-brand{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:.48rem;margin:0 -.68rem;padding:.5rem .68rem;background:white;border-top:1px solid #eef2f3;border-bottom:1px solid #e5edef}.phone-brand>b{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(145deg,var(--navy),var(--teal));color:white;font-size:.58rem}.phone-brand strong,.phone-brand small{display:block}.phone-brand strong{font-size:.67rem;letter-spacing:.04em}.phone-brand small{margin-top:.05rem;color:#809198;font-size:.45rem}.phone-brand em{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;background:#edf6f5;color:var(--teal);font-size:.75rem;font-style:normal}
.phone-route{margin-top:.62rem;padding:.65rem;border-radius:15px;background:white;box-shadow:0 6px 18px rgba(8,47,73,.08)}.phone-route-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.4rem}.phone-route-head span small,.phone-route-head span strong{display:block}.phone-route-head span small{color:#739098;font-size:.43rem;font-weight:900;letter-spacing:.08em}.phone-route-head span strong{margin-top:.12rem;font-size:.68rem}.phone-route-head>b{padding:.25rem .38rem;border-radius:7px;background:#ebf8d7;color:#4e741d;font-size:.46rem}
.phone-map{position:relative;overflow:hidden;height:91px;margin:.52rem 0;border-radius:11px;background:linear-gradient(145deg,#e6f1ed,#f4f7f2)}.phone-map svg{position:absolute;inset:0;width:100%;height:100%}.phone-road{fill:none;stroke:white;stroke-width:13;stroke-linecap:round}.phone-road-light{stroke-width:8;opacity:.8}.phone-route-line{fill:none;stroke:var(--teal);stroke-width:3;stroke-linecap:round;stroke-dasharray:5 4}.phone-home,.phone-bus{position:absolute;display:grid;place-items:center;box-shadow:0 4px 10px rgba(7,51,67,.2)}.phone-home{right:8px;top:22px;width:24px;height:24px;border-radius:8px;background:white;color:var(--navy);font-size:.72rem}.phone-bus{left:49%;top:42%;width:29px;height:23px;transform:translate(-50%,-50%);border:3px solid white;border-radius:8px;background:#b8eb58;color:#264c35;font-size:.72rem}
.phone-eta{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.phone-eta span{padding:.42rem;border-radius:8px;background:#f3f7f7}.phone-eta small,.phone-eta strong{display:block}.phone-eta small{color:#809198;font-size:.42rem}.phone-eta strong{margin-top:.1rem;font-size:.58rem}
.phone-event{display:flex;align-items:center;gap:.48rem;margin:.52rem 0;padding:.48rem;border-radius:11px;background:#e9f7f3}.phone-event>span{display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;border-radius:8px;background:var(--teal);color:white;font-size:.65rem}.phone-event p{margin:0}.phone-event strong,.phone-event small{display:block}.phone-event strong{font-size:.52rem}.phone-event small{margin-top:.08rem;color:#698087;font-size:.43rem}
.phone-nav{display:grid;grid-template-columns:repeat(3,1fr);padding-top:.22rem;color:#92a1a6}.phone-nav span{display:grid;place-items:center;gap:.1rem;font-size:.65rem}.phone-nav span small{font-size:.4rem}.phone-nav .is-current{color:var(--teal)}
@media(max-width:1180px) and (min-width:851px){.family-app-preview{right:1rem;width:205px}.brand-message{max-width:460px}.login-brand{background-position:59% center}}
@media(max-width:850px){.login-brand{background-position:52% 46%}.login-brand .photo-shade{background:linear-gradient(180deg,rgba(3,31,48,.66) 0%,rgba(3,31,48,.08) 42%,rgba(3,31,48,.93) 100%)}.family-app-preview{right:.85rem;top:4.4rem;width:118px;transform:none}.app-preview-label{margin-bottom:.32rem;padding:.28rem .45rem;font-size:.43rem}.phone-shell{padding:.4rem;border-width:3px;border-radius:18px}.phone-shell:before{width:32px;height:7px;top:2px}.phone-top{font-size:.3rem;padding:0 .1rem .22rem}.phone-top i{width:15px}.phone-brand{grid-template-columns:20px 1fr;margin:0 -.4rem;padding:.3rem .4rem;gap:.25rem}.phone-brand>b{width:20px;height:20px;border-radius:6px;font-size:.38rem}.phone-brand strong{font-size:.43rem}.phone-brand small,.phone-brand em{display:none}.phone-route{margin-top:.35rem;padding:.36rem;border-radius:9px}.phone-route-head span small{font-size:.28rem}.phone-route-head span strong{font-size:.42rem}.phone-route-head>b{padding:.14rem .2rem;font-size:.28rem}.phone-map{height:42px;margin:.28rem 0;border-radius:6px}.phone-road{stroke-width:8}.phone-route-line{stroke-width:2}.phone-home{right:4px;top:8px;width:14px;height:14px;border-radius:4px;font-size:.4rem}.phone-bus{width:17px;height:13px;border-width:2px;border-radius:4px;font-size:.38rem}.phone-eta{gap:.2rem}.phone-eta span{padding:.22rem;border-radius:5px}.phone-eta small{font-size:.25rem}.phone-eta strong{font-size:.34rem}.phone-event{gap:.25rem;margin:.28rem 0;padding:.26rem;border-radius:6px}.phone-event>span{width:15px;height:15px;flex-basis:15px;border-radius:4px;font-size:.34rem}.phone-event strong{font-size:.3rem}.phone-event small{font-size:.25rem}.phone-nav{display:none}.brand-message{max-width:68%}}
@media(max-width:430px){.family-app-preview{top:3.9rem;right:.65rem;width:108px}.brand-message{max-width:66%}.login-brand{background-position:51% 45%}}

/* Urban school arrival: real parent, uniformed student and the family app */
.login-brand{background-image:url('assets/ev-school-urban-family.jpg');background-position:left center}
.login-brand .photo-shade{background:linear-gradient(90deg,rgba(3,28,45,.98) 0%,rgba(3,34,52,.91) 30%,rgba(3,34,52,.58) 48%,rgba(3,34,52,.12) 70%,rgba(3,34,52,.18) 100%)}
.brand-message{max-width:540px;padding:1.2rem 1.25rem 1.3rem;margin-left:-1.25rem;border:1px solid rgba(255,255,255,.12);border-radius:22px;background:linear-gradient(135deg,rgba(3,35,54,.76),rgba(3,35,54,.34));box-shadow:0 18px 48px rgba(2,25,39,.16);backdrop-filter:blur(8px)}
.brand-message h1{font-size:clamp(2.65rem,4.25vw,4.7rem)}
.family-app-preview{right:clamp(1.2rem,3.1vw,3.4rem);transform:translateY(-43%)}
@media(max-width:1180px) and (min-width:851px){.login-brand{background-position:7% center}.brand-message{max-width:430px}.brand-message h1{font-size:clamp(2.45rem,4vw,3.9rem)}.family-app-preview{right:1rem}}
@media(max-width:850px){.login-brand{background-position:28% center}.login-brand .photo-shade{background:linear-gradient(180deg,rgba(3,31,48,.58) 0%,rgba(3,31,48,.06) 40%,rgba(3,31,48,.94) 100%)}.brand-message{max-width:67%;padding:.7rem .75rem;margin-left:-.75rem;border-radius:15px}.brand-message h1{font-size:clamp(1.85rem,8.4vw,2.8rem)}.family-app-preview{transform:none}}
@media(max-width:430px){.login-brand{background-position:30% center}.brand-message{max-width:64%}}

/* Operational block: school fleet and drivers */
.ops-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.85rem;margin-bottom:1rem}.ops-metric{display:flex;align-items:center;gap:.8rem;padding:1rem 1.1rem;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 4px 14px rgba(8,47,73,.04)}.ops-metric strong,.ops-metric small{display:block}.ops-metric strong{font-size:1.35rem;color:var(--navy)}.ops-metric small{margin-top:.12rem;color:var(--muted);font-size:.72rem}.asset-layout{display:grid;grid-template-columns:minmax(310px,.78fr) minmax(470px,1.22fr);gap:1rem}.asset-list{display:grid;gap:.7rem;align-content:start}.asset-card{width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.9rem;border:1px solid var(--line);border-radius:16px;background:white;color:var(--ink);text-align:left;box-shadow:0 4px 14px rgba(8,47,73,.04)}.asset-card:hover,.asset-card.is-active{border-color:var(--teal);background:#f4fbfa;box-shadow:0 0 0 3px var(--teal-soft)}.asset-card strong,.asset-card small,.asset-card em{display:block}.asset-card strong{font-size:.82rem}.asset-card small{margin-top:.15rem;color:var(--muted);font-size:.66rem}.asset-card em{margin-top:.35rem;color:#56707a;font-size:.67rem;font-style:normal;font-weight:750}.asset-symbol,.asset-hero-icon{display:grid;place-items:center;background:linear-gradient(145deg,var(--navy),var(--teal));color:white}.asset-symbol{width:43px;height:43px;border-radius:13px}.driver-avatar{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:linear-gradient(145deg,#d7efec,#eef7dc);color:var(--navy);font-size:.72rem;font-weight:900}.driver-avatar.large{width:58px;height:58px;border-radius:17px;font-size:.9rem}.asset-detail{min-height:560px}.asset-hero{display:flex;align-items:center;gap:.85rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}.asset-hero-icon{width:58px;height:58px;border-radius:17px;font-size:1.25rem}.asset-hero h3{margin:.12rem 0}.asset-hero p{margin:0;color:var(--muted);font-size:.72rem}.asset-hero .status-pill{margin-left:auto}.asset-kpis{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin:1rem 0}.asset-kpis>div{padding:.78rem;border-radius:12px;background:#f5f8f9}.asset-kpis small,.asset-kpis strong{display:block}.asset-kpis small{margin-bottom:.25rem;color:var(--muted);font-size:.66rem}.asset-kpis strong{font-size:.76rem}.docs-head{display:flex;align-items:center;justify-content:space-between;margin:1.15rem 0 .6rem}.docs-head h4{margin:.1rem 0 0;font-size:.92rem}.doc-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.doc-grid>div,.driver-access{display:flex;align-items:center;gap:.65rem;padding:.72rem;border:1px solid var(--line);border-radius:12px;background:white}.doc-grid>div>span,.driver-access>span{display:grid;place-items:center;width:29px;height:29px;flex:0 0 29px;border-radius:9px;background:#eaf7e9;color:#4d7b26;font-size:.68rem;font-weight:900}.doc-grid p,.driver-access div{margin:0}.doc-grid strong,.doc-grid small,.driver-access strong,.driver-access small{display:block}.doc-grid strong,.driver-access strong{font-size:.72rem}.doc-grid small,.driver-access small{margin-top:.14rem;color:var(--muted);font-size:.62rem}.driver-access{margin-bottom:.65rem}.driver-access>b{margin-left:auto;padding:.28rem .45rem;border-radius:8px;background:#eaf7e9;color:#4b7418;font-size:.62rem}.asset-detail .route-actions{padding-top:1rem;border-top:1px solid var(--line)}
@media(max-width:980px){.asset-layout{grid-template-columns:1fr}.asset-list{grid-template-columns:repeat(3,minmax(230px,1fr));overflow-x:auto;padding:3px 3px .5rem}.asset-card{min-width:230px}.asset-detail{min-height:auto}}
@media(max-width:620px){.ops-summary{grid-template-columns:1fr}.ops-metric{padding:.82rem}.asset-list{grid-template-columns:repeat(3,minmax(245px,1fr))}.asset-kpis,.doc-grid{grid-template-columns:1fr}.asset-hero{align-items:flex-start}.asset-hero .status-pill{margin-left:auto}.asset-detail .route-actions{grid-template-columns:1fr}.asset-card .status-tag{font-size:.58rem}}

/* Safety block: stops, location changes and authorized receivers */
.stop-symbol{background:linear-gradient(145deg,#087e84,#18b6a9)}.stop-map-card{position:relative;overflow:hidden;min-height:190px;margin:1rem 0;border-radius:17px;background:#e8f2ef}.stop-map-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.7) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.7) 1px,transparent 1px);background-size:34px 34px;transform:rotate(-7deg) scale(1.2)}.stop-map-route{position:absolute;left:-5%;top:58%;width:112%;height:4px;border-radius:99px;background:repeating-linear-gradient(90deg,var(--teal) 0 12px,transparent 12px 18px);transform:rotate(-9deg)}.stop-map-card>b{position:absolute;left:56%;top:46%;display:grid;place-items:center;width:42px;height:42px;border:4px solid white;border-radius:14px;background:var(--navy);color:#b8eb58;box-shadow:0 9px 20px rgba(8,47,73,.22);font-size:1rem}.stop-map-card>div:last-child{position:absolute;left:1rem;bottom:1rem;padding:.55rem .7rem;border-radius:11px;background:rgba(255,255,255,.92);box-shadow:0 7px 18px rgba(8,47,73,.12)}.stop-map-card strong,.stop-map-card small{display:block}.stop-map-card strong{font-size:.72rem}.stop-map-card small{margin-top:.12rem;color:var(--muted);font-size:.6rem}.authorization-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;padding:.65rem .8rem}.authorization-toolbar>span{color:var(--muted);font-size:.7rem}.auth-filter{display:flex;gap:.3rem}.auth-filter button{border:0;border-radius:9px;padding:.52rem .7rem;background:transparent;color:var(--muted);font-size:.7rem;font-weight:800}.auth-filter button.is-active{background:var(--navy);color:white}.authorization-list{display:grid;gap:.8rem}.authorization-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.9rem;padding:1rem;border:1px solid var(--line);border-radius:17px;background:white;box-shadow:0 4px 14px rgba(8,47,73,.04)}.authorization-icon{display:grid;place-items:center;width:47px;height:47px;border-radius:14px;font-size:1rem;font-weight:900}.authorization-icon.location{background:#e5f5f3;color:var(--teal)}.authorization-icon.person{background:#eef7dc;color:#5d8428}.authorization-copy h3{margin:.08rem 0 .28rem;font-size:.9rem}.authorization-copy p{margin:0;color:#40565f;font-size:.75rem}.authorization-copy>small{display:block;margin-top:.35rem;color:var(--muted);font-size:.63rem}.authorization-status{align-self:start;padding:.35rem .55rem;border-radius:9px;font-size:.64rem;font-weight:900}.authorization-status.pendiente{background:#fff4d8;color:#896517}.authorization-status.aprobada{background:#eaf7e9;color:#4b7418}.authorization-status.rechazada{background:#f8e9e9;color:#9b4343}.authorization-actions{grid-column:2/-1;display:flex;justify-content:flex-end;gap:.55rem;padding-top:.7rem;border-top:1px solid var(--line)}.authorization-actions button{min-height:36px;padding:.45rem .8rem}.authorization-resolved{grid-column:2/-1;padding-top:.6rem;border-top:1px solid var(--line);color:#688087;font-size:.68rem;text-align:right}
@media(max-width:760px){.authorization-toolbar{align-items:flex-start;flex-direction:column}.auth-filter{width:100%;overflow-x:auto}.authorization-card{grid-template-columns:auto 1fr}.authorization-status{grid-column:2;justify-self:start}.authorization-actions,.authorization-resolved{grid-column:1/-1}.authorization-actions button{flex:1}.authorization-toolbar>span{padding-left:.2rem}}

/* Incident response and route communication */
.stat-icon.red{color:#a64545;background:#faeaea}.status-alert{background:#fff1d7;color:#8b6210}.incident-layout{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(480px,1.28fr);gap:1rem;margin-bottom:1rem}.incident-list{display:grid;gap:.7rem;align-content:start}.incident-card{width:100%;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.9rem;border:1px solid var(--line);border-radius:16px;background:white;color:var(--ink);text-align:left;box-shadow:0 4px 14px rgba(8,47,73,.04)}.incident-card:hover,.incident-card.is-active{border-color:#e0b64e;background:#fffaf0;box-shadow:0 0 0 3px rgba(235,188,65,.13)}.incident-card span:nth-child(2)>*{display:block}.incident-card small{margin-bottom:.16rem;color:var(--muted);font-size:.61rem}.incident-card strong{font-size:.79rem}.incident-card em{margin-top:.28rem;color:#536a73;font-size:.65rem;font-style:normal;font-weight:750}.incident-symbol{display:grid;place-items:center;width:43px;height:43px;flex:0 0 43px;border-radius:13px;background:#fff2d1;color:#8c6514;font-size:1rem;font-weight:950}.incident-symbol.urgent{background:#fae7e7;color:#a03e3e}.incident-status{padding:.34rem .52rem;border-radius:9px;font-size:.6rem;font-weight:900;white-space:nowrap}.incident-status.active{background:#fff0d0;color:#896111}.incident-status.resolved{background:#eaf7e9;color:#4b7418}.incident-detail{min-height:485px}.incident-detail-head{display:flex;align-items:center;gap:.75rem;padding-bottom:1rem;border-bottom:1px solid var(--line)}.incident-detail-head h3{margin:.08rem 0;font-size:1.05rem}.incident-detail-head p{margin:0;color:var(--muted);font-size:.68rem}.incident-detail-head>.incident-status{margin-left:auto}.incident-description{margin:1rem 0;padding:.85rem;border-radius:13px;background:#f6f9f9}.incident-description small{color:var(--muted);font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.incident-description p{margin:.35rem 0 0;color:#3c535c;font-size:.76rem;line-height:1.55}.incident-timeline{list-style:none;margin:1rem 0;padding:0}.incident-timeline li{display:flex;align-items:center;gap:.7rem;padding:.62rem 0}.incident-timeline li>i{display:grid;place-items:center;width:27px;height:27px;flex:0 0 27px;border:2px solid #d7e0e3;border-radius:50%;color:#8ba0a8;font-size:.65rem;font-style:normal;font-weight:900}.incident-timeline li.done>i{border-color:var(--teal);background:var(--teal);color:white}.incident-timeline strong,.incident-timeline small{display:block}.incident-timeline strong{font-size:.72rem}.incident-timeline small{margin-top:.1rem;color:var(--muted);font-size:.62rem}.protocol-banner{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,.8fr);align-items:center;gap:1rem;margin:1rem 0;padding:1rem;border:1px solid #efc9c9;border-radius:15px;background:#fff4f4}.protocol-banner span,.protocol-banner strong,.protocol-banner small{display:block}.protocol-banner span{color:#a44a4a;font-size:.62rem;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.protocol-banner strong{margin:.15rem 0;color:#842f2f;font-size:1.6rem}.protocol-banner small{color:#8c6060;font-size:.6rem}.protocol-banner>b{color:#795050;font-size:.67rem;line-height:1.55}.protocol-timer.is-expired{font-size:.85rem}.resolved-banner{margin-top:1rem;padding:.75rem;border-radius:11px;background:#eaf7e9;color:#4b7418;font-size:.68rem;font-weight:800}.communication-panel{margin-top:1rem}.message-list{display:grid;gap:.65rem}.message-item{display:grid;grid-template-columns:auto 1fr;gap:.7rem;padding:.75rem;border:1px solid var(--line);border-radius:13px;background:#fbfdfd}.message-item>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--teal-soft);color:var(--teal);font-weight:900}.message-item>div>div{display:flex;align-items:center;gap:.5rem}.message-item strong{font-size:.72rem}.message-item b{padding:.23rem .38rem;border-radius:7px;background:#eaf2f3;color:#55717b;font-size:.57rem}.message-item p{margin:.3rem 0;color:#40565f;font-size:.69rem;line-height:1.45}.message-item small{color:var(--muted);font-size:.59rem}.notice-check{margin-top:.85rem}.form-grid textarea{width:100%;resize:vertical;min-height:86px;border:1px solid var(--line);border-radius:10px;padding:.72rem;background:white;color:var(--ink);font:inherit;font-size:.76rem;line-height:1.45}.form-grid textarea:focus{outline:2px solid var(--teal-soft);border-color:var(--teal)}
@media(max-width:980px){.incident-layout{grid-template-columns:1fr}.incident-list{grid-template-columns:repeat(3,minmax(250px,1fr));overflow-x:auto;padding:3px 3px .5rem}.incident-card{min-width:250px}.incident-detail{min-height:auto}}
@media(max-width:620px){.incident-list{grid-template-columns:repeat(3,minmax(255px,1fr))}.incident-card{min-width:255px}.incident-detail-head{align-items:flex-start}.incident-detail-head>.incident-status{margin-left:auto}.protocol-banner{grid-template-columns:1fr}.communication-panel .panel-head{align-items:flex-start}.communication-panel .panel-head button{white-space:nowrap}.message-item>div>div{align-items:flex-start;flex-wrap:wrap}}

/* Family portal: a calm, route-first companion */
.family-shell{min-height:100svh;background:linear-gradient(180deg,#f5faf9 0,#eef5f6 100%)}.family-topbar{position:sticky;top:0;z-index:30;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:2rem;min-height:82px;padding:.8rem clamp(1rem,4vw,3.5rem);border-bottom:1px solid rgba(8,47,73,.1);background:rgba(255,255,255,.94);backdrop-filter:blur(16px)}.family-brand .brand-mark{width:42px;height:42px;border-radius:13px 13px 13px 4px}.family-brand strong{font-size:1rem}.family-tabs{display:flex;justify-content:center;gap:.35rem}.family-tabs button{min-height:42px;padding:.6rem .9rem;border:0;border-radius:11px;background:transparent;color:var(--muted);font-size:.875rem;font-weight:800}.family-tabs button:hover,.family-tabs button.is-active{background:var(--teal-soft);color:#087772}.family-profile{display:flex;align-items:center;gap:.65rem}.family-profile>span strong,.family-profile>span small{display:block;text-align:right}.family-profile>span strong{font-size:.875rem}.family-profile>span small{margin-top:.1rem;color:var(--muted);font-size:.75rem}.family-profile>b{display:grid;place-items:center;width:39px;height:39px;border-radius:50%;background:linear-gradient(145deg,var(--navy),var(--teal));color:white;font-size:.75rem}.family-main{width:min(1240px,100%);margin:auto;padding:clamp(1rem,3vw,2.3rem)}.family-page{display:none}.family-page.is-active{display:block}.family-welcome,.family-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.4rem}.family-welcome h1,.family-section-head h1{margin:0 0 .3rem;font-size:clamp(1.7rem,3vw,2.4rem)}.family-welcome p,.family-section-head p{margin:0;color:var(--muted);font-size:1rem}.family-live-pill,.family-secure-badge,.cutoff-chip{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .75rem;border-radius:99px;background:#e8f7e6;color:#367335;font-size:.875rem;font-weight:850;white-space:nowrap}.family-live-pill i{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 5px rgba(54,115,53,.11);animation:family-pulse 1.8s ease-in-out infinite}.family-secure-badge{background:var(--teal-soft);color:#087772}.cutoff-chip{background:#fff4d8;color:#805f16}@keyframes family-pulse{50%{box-shadow:0 0 0 9px rgba(54,115,53,0)}}.family-home-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,.65fr);gap:1rem;margin-bottom:1rem}.family-route-card{overflow:hidden;padding:1.25rem;border-radius:24px;background:linear-gradient(145deg,#062f49 0%,#07536a 62%,#0b8587 100%);color:white;box-shadow:0 18px 42px rgba(8,47,73,.18)}.family-route-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.family-route-head span{color:#9cded6;font-size:.75rem;font-weight:900;letter-spacing:.1em}.family-route-head h2{margin:.35rem 0 .18rem;font-size:1.65rem}.family-route-head p{margin:0;color:#cde7e7;font-size:.875rem}.family-eta{display:flex;align-items:flex-end;gap:.25rem;min-width:92px;padding:.65rem .8rem;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:rgba(255,255,255,.1)}.family-eta strong{font-size:2.1rem;line-height:1}.family-eta span{padding-bottom:.2rem;color:white;font-size:.875rem;letter-spacing:0}.family-map{position:relative;overflow:hidden;min-height:330px;border-radius:18px;background-color:#e6f1ed;background-image:linear-gradient(rgba(255,255,255,.72) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.72) 1px,transparent 1px);background-size:42px 42px;transition:min-height .25s ease}.family-map.is-expanded{min-height:480px}.family-map svg{position:absolute;inset:0;width:100%;height:100%}.family-road{fill:none;stroke:white;stroke-width:24;stroke-linecap:round}.family-road.minor{stroke-width:14;opacity:.88}.family-route-path{fill:none;stroke:var(--teal);stroke-width:6;stroke-linecap:round;stroke-dasharray:12 8}.family-map-label{position:absolute;color:#789098;font-size:.75rem;font-weight:800}.family-map-label.start{left:7%;bottom:16%}.family-map-label.school{right:6%;top:20%}.family-home-pin,.family-bus-pin{position:absolute;display:grid;place-items:center;box-shadow:0 8px 20px rgba(8,47,73,.22)}.family-home-pin{right:13%;top:28%;width:42px;height:42px;border:4px solid white;border-radius:14px;background:var(--navy);color:#b8eb58;font-size:1rem}.family-bus-pin{left:46%;top:47%;grid-template-columns:auto auto;gap:.35rem;padding:.55rem .65rem;border:4px solid white;border-radius:14px;background:#b8eb58;color:#264c35;font-weight:900;animation:family-bus 4s ease-in-out infinite}.family-bus-pin small{font-size:.7rem}@keyframes family-bus{50%{transform:translate(15px,-7px)}}.family-map-status{position:absolute;left:1rem;bottom:1rem;padding:.65rem .8rem;border-radius:12px;background:rgba(255,255,255,.94);color:var(--ink);box-shadow:0 8px 18px rgba(8,47,73,.12)}.family-map-status b,.family-map-status span{display:block}.family-map-status b{font-size:.875rem}.family-map-status span{margin-top:.15rem;color:var(--muted);font-size:.75rem}.family-route-actions{display:flex;justify-content:flex-end;gap:.65rem;margin-top:1rem}.family-route-card .secondary{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.25);color:white}.family-route-card .primary{background:white;color:var(--navy);box-shadow:none}.family-side-stack{display:grid;gap:1rem;align-content:start}.family-child-head{display:flex;align-items:center;gap:.7rem}.family-child-head h3{margin:0 0 .1rem;font-size:1rem}.family-child-head p{margin:0;color:var(--muted);font-size:.8rem}.family-child-head .status-tag{margin-left:auto}.family-child-event{display:flex;align-items:center;gap:.7rem;margin:1rem 0;padding:.8rem;border-radius:13px;background:#e9f7f3}.family-child-event>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--teal);color:white;font-weight:900}.family-child-event strong,.family-child-event small{display:block}.family-child-event strong{font-size:.875rem}.family-child-event small{margin-top:.15rem;color:#56716f;font-size:.75rem}.family-child-details{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.family-child-details>span{padding:.7rem;border-radius:11px;background:#f5f8f9}.family-child-details small,.family-child-details strong{display:block}.family-child-details small{color:var(--muted);font-size:.75rem}.family-child-details strong{margin-top:.2rem;font-size:.875rem}.family-alert{display:flex;gap:.7rem;border-color:#f0dca7;background:#fffaf0}.family-alert>span{display:grid;place-items:center;width:37px;height:37px;flex:0 0 37px;border-radius:11px;background:#fff0c4;color:#8a6818}.family-alert strong{font-size:.875rem}.family-alert p{margin:.3rem 0;color:#655b45;font-size:.8rem;line-height:1.45}.family-alert small{color:#9a8760;font-size:.75rem}.family-today ol{display:grid;grid-template-columns:repeat(4,1fr);list-style:none;margin:0;padding:0}.family-today li{position:relative;display:flex;align-items:flex-start;gap:.6rem;padding:.75rem}.family-today li:not(:last-child):after{content:"";position:absolute;left:31px;right:-12px;top:20px;height:2px;background:#dfe8ea;z-index:0}.family-today li>i{position:relative;z-index:1;display:grid;place-items:center;width:25px;height:25px;flex:0 0 25px;border:2px solid #c8d6db;border-radius:50%;background:white;font-size:.7rem;font-style:normal}.family-today li.done>i{border-color:var(--green);background:var(--green);color:white}.family-today li.current>i{border-color:var(--teal);box-shadow:0 0 0 5px var(--teal-soft)}.family-today strong,.family-today small{display:block}.family-today strong{font-size:.875rem}.family-today small{margin-top:.15rem;color:var(--muted);font-size:.75rem}.family-week-card{padding:1.4rem}.week-head{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin-bottom:1.3rem;text-align:center}.week-head span,.week-head strong{display:block}.week-head span{color:var(--muted);font-size:.75rem}.week-head strong{margin-top:.15rem;font-size:1rem}.family-week{display:grid;grid-template-columns:repeat(5,1fr);gap:.7rem}.family-day{position:relative;display:grid;place-items:center;min-height:138px;padding:.8rem;border:1px solid var(--line);border-radius:16px;background:white;color:var(--ink)}.family-day:hover{border-color:var(--teal)}.family-day span{color:var(--muted);font-size:.8rem;font-weight:800}.family-day strong{margin:.25rem 0;font-size:1.5rem}.family-day small{font-size:.75rem;font-weight:800}.family-day i{display:grid;place-items:center;width:26px;height:26px;margin-top:.45rem;border-radius:8px;font-size:.75rem;font-style:normal}.family-day.is-active{border-color:#a9d6b0;background:#f3fbf2}.family-day.is-active small{color:#407b3e}.family-day.is-active i{background:#dff3dc;color:#397638}.family-day.is-absent{border-color:#edcccc;background:#fff7f7}.family-day.is-absent small{color:#a24b4b}.family-day.is-absent i{background:#f7dddd;color:#9b4343}.week-legend{display:flex;justify-content:center;gap:1rem;margin-top:1rem;color:var(--muted);font-size:.8rem}.week-legend i{display:inline-block;width:9px;height:9px;margin-right:.35rem;border-radius:50%}.week-legend i.active{background:var(--green)}.week-legend i.absent{background:#d96b6b}.family-calendar-grid,.family-safety-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.family-schedule-row{display:flex;align-items:center;gap:.7rem;padding:.8rem 0;border-bottom:1px solid var(--line)}.family-schedule-row:last-child{border-bottom:0}.family-schedule-row>span{display:grid;place-items:center;width:35px;height:35px;border-radius:11px;background:var(--teal-soft);color:var(--teal);font-weight:900}.family-schedule-row strong,.family-schedule-row small{display:block}.family-schedule-row strong{font-size:.875rem}.family-schedule-row small{margin-top:.15rem;color:var(--muted);font-size:.8rem}.family-rule-card{display:flex;align-items:flex-start;gap:.8rem;background:linear-gradient(145deg,#082f49,#0b6070);color:white}.family-rule-card>span{display:grid;place-items:center;width:35px;height:35px;flex:0 0 35px;border-radius:11px;background:rgba(255,255,255,.13);font-weight:900}.family-rule-card h3{margin:0 0 .35rem}.family-rule-card p{color:#d5e9ec;font-size:.875rem}.family-rule-card .secondary{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:white}.family-location-map{display:flex;align-items:center;gap:.8rem;min-height:190px;margin:1rem 0;padding:1rem;border-radius:16px;background:linear-gradient(145deg,#e4f0ed,#f5f8f5)}.family-location-map>span{display:grid;place-items:center;width:48px;height:48px;border:4px solid white;border-radius:15px;background:var(--navy);color:#b8eb58;box-shadow:0 8px 18px rgba(8,47,73,.17)}.family-location-map strong,.family-location-map small{display:block}.family-location-map strong{font-size:.9rem}.family-location-map small{margin-top:.2rem;color:var(--muted);font-size:.8rem}.family-location-card>p{color:var(--muted);font-size:.875rem}.family-authorized-card>.panel-head>small{color:var(--muted);font-size:.8rem}.family-authorized-list{display:grid;gap:.65rem;margin:1rem 0}.family-authorized-list article{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.7rem;border:1px solid var(--line);border-radius:13px}.family-authorized-list article>span{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:var(--teal-soft);color:var(--navy);font-size:.75rem;font-weight:900}.family-authorized-list strong,.family-authorized-list small{display:block}.family-authorized-list strong{font-size:.875rem}.family-authorized-list small{margin-top:.12rem;color:var(--muted);font-size:.75rem}.family-authorized-list b{padding:.3rem .45rem;border-radius:8px;background:#eaf7e9;color:#4b7418;font-size:.72rem}.family-authorized-list b.pending{background:#fff3d8;color:#876513}.family-authorized-card button:disabled{opacity:.55;cursor:not-allowed}.family-access-card{display:flex;align-items:center;gap:.8rem;margin-top:1rem}.family-access-card>span:first-child{display:grid;place-items:center;width:47px;height:47px;flex:0 0 47px;border-radius:14px;background:var(--teal-soft);color:var(--teal);font-weight:900}.family-access-card h3{margin:0 0 .25rem;font-size:1rem}.family-access-card p{margin:0;color:var(--muted);font-size:.875rem}.family-access-card .status-pill{margin-left:auto}.family-message-list{display:grid;gap:.8rem}.family-message-card{display:grid;grid-template-columns:auto 1fr;gap:.8rem}.family-message-card>span{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:linear-gradient(145deg,var(--navy),var(--teal));color:white;font-size:.75rem;font-weight:900}.family-message-card.from-family>span{background:linear-gradient(145deg,#7dbb52,#49a96a)}.family-message-card>div>div{display:flex;justify-content:space-between;gap:1rem}.family-message-card strong{font-size:.9rem}.family-message-card small{color:var(--muted);font-size:.75rem}.family-message-card p{margin:.4rem 0;color:#40565f;font-size:.875rem}.family-message-card em{color:var(--teal);font-size:.75rem;font-style:normal;font-weight:800}.family-help-card{display:flex;align-items:center;gap:.8rem;margin-top:1rem;background:#f7fbfb}.family-help-card>span{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:13px;background:var(--teal-soft);color:var(--teal)}.family-help-card strong{font-size:.9rem}.family-help-card p{margin:.2rem 0 0;color:var(--muted);font-size:.8rem}.family-help-card button{margin-left:auto}.family-bottom-nav{display:none}
@media(max-width:900px){.family-home-grid{grid-template-columns:1fr}.family-side-stack{grid-template-columns:1fr 1fr}.family-today ol{grid-template-columns:1fr 1fr}.family-today li:nth-child(2):after{display:none}.family-tabs{gap:.1rem}.family-tabs button{padding:.55rem .65rem}.family-profile>span{display:none}}
@media(max-width:680px){.family-topbar{grid-template-columns:1fr auto;min-height:68px;padding:.65rem 1rem}.family-brand .brand-mark{width:38px;height:38px}.family-tabs{display:none}.family-profile>b{display:none}.family-main{padding:1rem 1rem 6.3rem}.family-welcome,.family-section-head{align-items:flex-start;flex-direction:column}.family-welcome p,.family-section-head p{font-size:.875rem}.family-live-pill,.family-secure-badge,.cutoff-chip{font-size:.8rem}.family-route-card{padding:1rem;border-radius:19px}.family-route-head h2{font-size:1.35rem}.family-eta{min-width:78px}.family-eta strong{font-size:1.7rem}.family-map{min-height:285px}.family-map.is-expanded{min-height:390px}.family-route-actions{display:grid;grid-template-columns:1fr}.family-side-stack,.family-calendar-grid,.family-safety-grid{grid-template-columns:1fr}.family-today ol{grid-template-columns:1fr}.family-today li:not(:last-child):after{left:20px;right:auto;top:35px;bottom:-12px;width:2px;height:auto}.family-week-card{padding:1rem}.family-week{grid-template-columns:repeat(5,minmax(94px,1fr));overflow-x:auto;padding-bottom:.5rem}.family-day{min-height:125px}.family-access-card{align-items:flex-start;flex-wrap:wrap}.family-access-card .status-pill{margin-left:55px}.family-message-card>div>div{align-items:flex-start;flex-direction:column;gap:.2rem}.family-help-card{align-items:flex-start;flex-wrap:wrap}.family-help-card button{width:100%;margin-left:52px}.family-bottom-nav{position:fixed;left:.7rem;right:.7rem;bottom:calc(.65rem + env(safe-area-inset-bottom));z-index:35;display:grid;grid-template-columns:repeat(4,1fr);padding:.38rem;border:1px solid rgba(8,47,73,.1);border-radius:18px;background:rgba(255,255,255,.96);box-shadow:0 12px 35px rgba(8,47,73,.2);backdrop-filter:blur(14px)}.family-bottom-nav button{display:grid;place-items:center;gap:.15rem;min-height:48px;border:0;border-radius:13px;background:transparent;color:#7a8c94;font-size:.68rem;font-weight:800}.family-bottom-nav button span{font-size:1rem}.family-bottom-nav button.is-active{background:var(--navy);color:white}}
@media(max-width:390px){.family-route-head{align-items:flex-start}.family-route-head h2{font-size:1.18rem}.family-eta{min-width:70px;padding:.55rem}.family-map-status{right:1rem}.family-week{grid-template-columns:repeat(5,minmax(88px,1fr))}.family-profile .icon-button{width:39px;height:39px}}

/* Fixed family navigation: only the center content scrolls */
.family-shell{height:100svh;min-height:0;overflow:hidden}.family-topbar{position:fixed;inset:0 0 auto 0;z-index:45;height:82px;min-height:82px;background:rgba(255,255,255,.97);box-shadow:0 5px 18px rgba(8,47,73,.08)}.family-main{height:100svh;margin:auto;padding-top:calc(82px + clamp(1rem,3vw,2.3rem));padding-bottom:clamp(1rem,3vw,2.3rem);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}.family-bottom-nav{z-index:50}
@media(max-width:680px){.family-topbar{height:68px;min-height:68px}.family-main{height:100svh;padding-top:calc(68px + 1rem);padding-bottom:calc(6.8rem + env(safe-area-inset-bottom))}}

/* Driver portal: live map above, operational cards below */
.driver-shell{height:100svh;overflow:hidden;background:#eef4f5}.driver-topbar{position:fixed;inset:0 0 auto;z-index:45;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:76px;padding:.65rem clamp(1rem,3vw,2.5rem);border-bottom:1px solid var(--line);background:rgba(255,255,255,.97);box-shadow:0 5px 18px rgba(8,47,73,.08);backdrop-filter:blur(14px)}.driver-brand .brand-mark{width:40px;height:40px;border-radius:13px}.driver-brand strong{font-size:.95rem}.driver-route-identity{text-align:center}.driver-route-identity span,.driver-route-identity strong{display:block}.driver-route-identity span{color:var(--muted);font-size:.75rem}.driver-route-identity strong{margin-top:.1rem;color:var(--navy);font-size:1rem}.driver-profile{display:flex;align-items:center;justify-content:flex-end;gap:.6rem}.driver-profile>span strong,.driver-profile>span small{display:block;text-align:right}.driver-profile>span strong{font-size:.875rem}.driver-profile>span small{color:var(--muted);font-size:.75rem}.driver-profile>b{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:linear-gradient(145deg,var(--navy),var(--teal));color:white;font-size:.75rem}.driver-main{width:min(1100px,100%);height:100svh;margin:auto;padding:calc(76px + 1rem) clamp(1rem,3vw,2rem) calc(88px + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.driver-map-panel{padding:1rem;border-radius:22px;background:linear-gradient(145deg,#062f49,#075c70);color:white;box-shadow:0 16px 38px rgba(8,47,73,.18)}.driver-map-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.driver-route-state{display:inline-flex;padding:.3rem .5rem;border-radius:8px;background:rgba(255,255,255,.14);color:#cde8e9;font-size:.72rem;font-weight:900}.driver-route-state.live{background:#b8eb58;color:#31501e}.driver-route-state.finished{background:#d9eee8;color:#306961}.driver-map-head h1{margin:.4rem 0 .15rem;font-size:1.45rem}.driver-map-head p{margin:0;color:#cbe1e5;font-size:.875rem}.driver-clock{min-width:86px;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.18);border-radius:13px;background:rgba(255,255,255,.09);text-align:center}.driver-clock small,.driver-clock strong{display:block}.driver-clock small{color:#b8d5da;font-size:.7rem}.driver-clock strong{margin-top:.15rem;font-size:1.15rem}.driver-map{position:relative;overflow:hidden;min-height:320px;border-radius:17px;background-color:#e5efec;background-image:linear-gradient(rgba(255,255,255,.7) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.7) 1px,transparent 1px);background-size:42px 42px}.driver-map svg{position:absolute;inset:0;width:100%;height:100%}.driver-road{fill:none;stroke:white;stroke-width:25;stroke-linecap:round}.driver-road.minor{stroke-width:14;opacity:.88}.driver-route-line{fill:none;stroke:var(--teal);stroke-width:6;stroke-linecap:round;stroke-dasharray:12 8}.driver-map-label{position:absolute;color:#768b93;font-size:.75rem;font-weight:850}.driver-map-label.one{left:7%;bottom:15%}.driver-map-label.two{left:45%;top:42%}.driver-map-label.three{right:5%;top:17%}.driver-school-pin,.driver-bus-pin{position:absolute;display:grid;place-items:center;box-shadow:0 8px 18px rgba(8,47,73,.2)}.driver-school-pin{right:11%;top:24%;width:43px;height:43px;border:4px solid white;border-radius:14px;background:var(--navy);color:#b8eb58}.driver-bus-pin{left:12%;top:56%;grid-template-columns:auto auto;gap:.35rem;padding:.5rem .62rem;border:4px solid white;border-radius:13px;background:#b8eb58;color:#264c35;font-weight:900;transition:left .45s ease;animation:driver-bus-breathe 2s ease-in-out infinite}.driver-bus-pin small{font-size:.7rem}@keyframes driver-bus-breathe{50%{transform:translateY(-4px)}}.driver-map-card{position:absolute;left:1rem;bottom:1rem;min-width:240px;padding:.65rem .75rem;border-radius:12px;background:rgba(255,255,255,.95);color:var(--ink);box-shadow:0 8px 18px rgba(8,47,73,.12)}.driver-map-card small,.driver-map-card strong,.driver-map-card span{display:block}.driver-map-card small{color:var(--muted);font-size:.7rem}.driver-map-card strong{margin:.15rem 0;font-size:.875rem}.driver-map-card span{color:#617680;font-size:.75rem}.driver-navigation-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin-top:.75rem}.nav-app{display:flex;align-items:center;gap:.6rem;min-height:54px;padding:.55rem .7rem;border:1px solid rgba(255,255,255,.2);border-radius:13px;background:rgba(255,255,255,.09);color:white;text-align:left}.nav-app>span{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:10px;background:white;font-weight:950}.nav-app.waze>span{color:#27a7d7}.nav-app.google>span{color:#4285f4}.nav-app.support>span{color:var(--teal)}.nav-app small,.nav-app strong{display:block}.nav-app small{color:#bad4d9;font-size:.68rem}.nav-app strong{margin-top:.08rem;font-size:.82rem}.driver-trip-control{display:grid;place-items:center;gap:.3rem;padding:1rem 0}.driver-if-button{display:flex;align-items:center;gap:.45rem;min-height:42px;padding:.38rem .75rem .38rem .38rem;border:0;border-radius:99px;background:var(--navy);color:white;box-shadow:0 8px 18px rgba(8,47,73,.18)}.driver-if-button>span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#b8eb58;color:#31501e;font-weight:950}.driver-if-button b{font-size:.8rem}.driver-if-button:disabled{opacity:.65}.driver-trip-control>small{color:var(--muted);font-size:.72rem}.driver-manifest{padding-bottom:1rem}.driver-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin-bottom:1rem}.driver-summary article{display:flex;align-items:baseline;gap:.45rem;padding:.8rem 1rem;border:1px solid var(--line);border-radius:14px;background:white}.driver-summary strong{color:var(--navy);font-size:1.35rem}.driver-summary span{color:var(--muted);font-size:.8rem;font-weight:750}.driver-list-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.driver-list-head h2{margin:0;font-size:1.3rem}.driver-filter{display:flex;gap:.3rem;padding:.25rem;border-radius:12px;background:#e2ebed}.driver-filter button{min-height:36px;padding:.45rem .65rem;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:.75rem;font-weight:850}.driver-filter button.is-active{background:white;color:var(--navy);box-shadow:0 3px 9px rgba(8,47,73,.08)}.driver-student-list{display:grid;gap:.65rem}.driver-student-card{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.7rem;padding:.8rem;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 4px 13px rgba(8,47,73,.04)}.driver-student-order{display:grid;place-items:center;width:27px;height:27px;border-radius:9px;background:#eef3f4;color:var(--muted);font-size:.75rem;font-weight:900}.driver-student-avatar{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:linear-gradient(145deg,#d5efec,#edf7dc);color:var(--navy);font-size:.75rem;font-weight:900}.driver-student-copy>div{display:flex;align-items:center;gap:.4rem}.driver-student-copy strong{font-size:.875rem}.driver-student-copy b{padding:.2rem .35rem;border-radius:6px;background:#eef3f4;color:#637780;font-size:.62rem}.driver-student-copy p{margin:.18rem 0;color:#4b6069;font-size:.8rem}.driver-student-copy small{color:var(--muted);font-size:.72rem}.driver-student-copy small span{color:var(--teal);font-weight:900}.driver-student-copy small span.expired{color:var(--danger)}.driver-student-card.boarded{border-color:#efc49e;background:#fffaf4}.driver-student-card.boarded .driver-student-copy strong{color:#dc741f}.driver-student-card.absent{background:#f4f6f7;opacity:.78}.driver-student-card.absent .driver-student-copy strong{color:#7a878d}.driver-student-actions{display:flex;gap:.4rem}.driver-student-actions button{min-height:36px;padding:.45rem .6rem;font-size:.72rem}.driver-student-actions button:disabled{opacity:.45;cursor:not-allowed}.driver-absent{border:1px solid #e4cbcb;border-radius:10px;background:#fff6f6;color:#9a4c4c;font-weight:800}.driver-result{padding:.4rem .55rem;border-radius:9px;font-size:.72rem;font-weight:900}.driver-result.boarded{background:#fff0df;color:#c56218}.driver-result.absent{background:#e8edef;color:#697980}.driver-bottom-bar{position:fixed;left:50%;bottom:calc(.65rem + env(safe-area-inset-bottom));z-index:50;display:grid;grid-template-columns:1fr 1.25fr 1fr;width:min(570px,calc(100% - 1.4rem));transform:translateX(-50%);padding:.35rem;border:1px solid rgba(8,47,73,.1);border-radius:18px;background:rgba(255,255,255,.97);box-shadow:0 12px 35px rgba(8,47,73,.2);backdrop-filter:blur(14px)}.driver-bottom-bar button{display:grid;place-items:center;gap:.12rem;min-height:49px;border:0;border-radius:13px;background:transparent;color:#70838b;font-size:.7rem;font-weight:850}.driver-bottom-bar button span{font-size:1rem}.driver-bottom-bar button.scan{background:var(--navy);color:white}.driver-scanner{display:grid;place-items:center;min-height:250px;padding:1.2rem;border:2px dashed #9ec8c5;border-radius:18px;background:linear-gradient(145deg,#edf8f6,#f7faf8);text-align:center}.driver-scanner>span{display:grid;place-items:center;width:90px;height:90px;margin-bottom:.7rem;border:3px solid var(--teal);border-radius:19px;color:var(--teal);font-size:2.5rem}.driver-scanner strong{font-size:1rem}.driver-scanner small{max-width:330px;margin-top:.35rem;color:var(--muted);font-size:.8rem;line-height:1.45}
@media(max-width:760px){.driver-topbar{grid-template-columns:1fr auto;height:68px;padding:.55rem .8rem}.driver-route-identity{display:none}.driver-profile>span,.driver-profile>b{display:none}.driver-main{padding:calc(68px + .7rem) .75rem calc(84px + env(safe-area-inset-bottom))}.driver-map-panel{padding:.75rem;border-radius:18px}.driver-map-head h1{font-size:1.1rem}.driver-map-head p{font-size:.75rem}.driver-clock{min-width:72px;padding:.45rem}.driver-map{min-height:265px}.driver-map-card{left:.7rem;right:.7rem;bottom:.7rem;min-width:0}.driver-navigation-row{grid-template-columns:1fr 1fr}.nav-app.support{grid-column:1/-1}.driver-summary{gap:.4rem}.driver-summary article{display:grid;place-items:center;gap:.05rem;padding:.6rem .25rem;text-align:center}.driver-summary strong{font-size:1.15rem}.driver-summary span{font-size:.7rem}.driver-list-head{align-items:flex-start;flex-direction:column}.driver-filter{width:100%}.driver-filter button{flex:1}.driver-student-card{grid-template-columns:auto auto 1fr}.driver-student-actions,.driver-result{grid-column:1/-1}.driver-student-actions{display:grid;grid-template-columns:1fr 1fr 1fr}.driver-student-actions button{min-height:42px}.driver-result{text-align:center}.driver-trip-control{padding:.75rem 0}.driver-trip-control>small{text-align:center}}
@media(max-width:390px){.driver-brand strong{font-size:.85rem}.driver-map{min-height:245px}.nav-app small{display:none}.driver-student-card{gap:.5rem;padding:.7rem}.driver-student-order{width:24px;height:24px}.driver-student-avatar{width:38px;height:38px}.driver-student-copy p{font-size:.72rem}.driver-student-actions{grid-template-columns:1fr 1fr}.driver-student-actions .primary{grid-column:1/-1}}

/* Driver route control belongs to the map, matching the live trip experience */
.driver-trip-control--map{position:absolute;top:.75rem;left:50%;z-index:5;width:max-content;max-width:calc(100% - 1.5rem);transform:translateX(-50%);padding:0}.driver-trip-control--map .driver-if-button{border:3px solid rgba(255,255,255,.94);background:rgba(8,47,73,.96);box-shadow:0 10px 24px rgba(8,47,73,.28)}.driver-trip-control--map>small{padding:.22rem .55rem;border-radius:99px;background:rgba(255,255,255,.94);color:#49626c;box-shadow:0 5px 12px rgba(8,47,73,.12);text-align:center}.driver-map-card-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.driver-map-card-head em{padding:.2rem .42rem;border-radius:7px;background:#e4f5d0;color:#31501e;font-size:.68rem;font-style:normal;font-weight:900}.driver-map-card small,.driver-map-card strong,.driver-map-card span{display:block}
@media(max-width:760px){.driver-trip-control--map{top:.55rem;padding:0}.driver-trip-control--map>small{display:none}.driver-map-card{padding:.6rem .7rem}.driver-map-card-head{gap:.5rem}.driver-map-card-head em{font-size:.64rem}}

/* Clear route-app shortcuts: names stay readable in every viewport. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.driver-navigation-row{grid-template-columns:58px 58px minmax(0,1fr);align-items:center;justify-content:start}.nav-app.nav-icon{justify-content:center;width:58px;min-height:58px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.nav-app.nav-icon img{display:block;width:50px;height:50px;object-fit:contain;filter:drop-shadow(0 4px 7px rgba(3,27,42,.2))}.nav-app.nav-icon.google img{width:50px;height:50px}.nav-app.nav-icon:hover,.nav-app.nav-icon:focus-visible{transform:translateY(-2px);background:transparent;box-shadow:none}.nav-app.nav-icon{transition:transform .18s ease}@media(max-width:760px){.driver-navigation-row{grid-template-columns:58px 58px minmax(0,1fr)}.nav-app.support{grid-column:auto}.nav-app.support small{display:none}}

/* Route launchers stay inside the next-stop card for fast access. */
.driver-map-card{position:relative;left:auto;right:auto;bottom:auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1rem;min-width:0;margin-top:.75rem;padding:.75rem .85rem}.driver-map-card-head{grid-column:1/-1;margin-bottom:.12rem}.driver-map-card>strong,.driver-map-card>span{grid-column:1}.driver-map-links{grid-column:2;grid-row:2/4;display:flex;align-items:center;gap:.45rem;margin-top:0}.driver-map-links button{display:grid;place-items:center;min-width:54px;height:48px;min-height:48px;padding:.3rem .45rem;border:1px solid #dce7e8;border-radius:11px;background:#fff;color:#173f54;box-shadow:0 3px 9px rgba(8,47,73,.08);font-size:.75rem;font-weight:850;white-space:nowrap}.driver-map-links button.waze{color:#087ba5}.driver-map-links button.google{color:#315f9c}.driver-map-links button:hover,.driver-map-links button:focus-visible{transform:translateY(-1px);box-shadow:0 5px 12px rgba(8,47,73,.14)}
.driver-map-card .driver-gps-status{display:inline-flex;width:max-content;margin-top:.28rem;padding:.25rem .45rem;border-radius:8px;background:#eef3f4;color:#60747c;font-size:.68rem;font-weight:850}.driver-map-card .driver-gps-status.is-live{background:#e4f5d0;color:#31501e}.driver-map-card .driver-gps-status.is-warning{background:#fff1d5;color:#865f10}
@media(max-width:760px){.driver-map-card{left:auto;right:auto;bottom:auto;min-width:0;margin-top:.65rem;padding:.65rem .7rem;column-gap:.65rem}.driver-map-links{margin-top:0}}

.driver-student-card.is-current{border-color:#79bdb6;box-shadow:0 0 0 2px rgba(20,159,151,.12),0 7px 18px rgba(8,47,73,.07)}

/* Institutional reports and route traceability */
.report-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin-bottom:1rem}.report-metric{display:flex;align-items:center;gap:.75rem;padding:1rem;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 5px 15px rgba(8,47,73,.04)}.report-metric strong,.report-metric small{display:block}.report-metric strong{color:var(--navy);font-size:1.35rem}.report-metric small{margin-top:.12rem;color:var(--muted);font-size:.76rem;font-weight:750}.report-grid{display:grid;grid-template-columns:1.12fr .88fr;gap:1rem;margin-bottom:1rem}.report-period-label{padding:.38rem .55rem;border-radius:9px;background:var(--teal-soft);color:var(--teal);font-size:.75rem;font-weight:850}.report-bars{display:grid;gap:1rem;margin-top:1rem}.report-bar{display:grid;grid-template-columns:minmax(135px,1fr) minmax(120px,2fr) 42px;align-items:center;gap:.75rem}.report-bar strong,.report-bar span{display:block}.report-bar strong{font-size:.85rem}.report-bar span{margin-top:.12rem;color:var(--muted);font-size:.72rem}.report-bar>div:nth-child(2){height:9px;overflow:hidden;border-radius:99px;background:#e8eff1}.report-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),#70bd62)}.report-bar>b{color:var(--navy);font-size:.78rem;text-align:right}.report-trace{display:grid;gap:0;margin:1rem 0 0;padding:0;list-style:none}.report-trace li{position:relative;display:grid;grid-template-columns:28px 1fr;gap:.65rem;min-height:49px}.report-trace li:not(:last-child):after{content:"";position:absolute;left:13px;top:27px;bottom:0;width:2px;background:#dfe8eb}.report-trace i{z-index:1;display:grid;place-items:center;width:28px;height:28px;border:2px solid #d8e3e7;border-radius:50%;background:white;color:#8a9aa1;font-size:.7rem;font-style:normal}.report-trace li.done i{border-color:#8ecb86;background:#e9f7e7;color:#3e7939}.report-trace li.current i{border-color:var(--teal);background:var(--teal-soft);color:var(--teal)}.report-trace strong,.report-trace small{display:block}.report-trace strong{font-size:.82rem}.report-trace small{margin-top:.12rem;color:var(--muted);font-size:.72rem}.report-table-panel>.panel-head>small{color:var(--muted);font-size:.78rem}.report-table-wrap{overflow-x:auto;margin-top:.8rem}.report-table{width:100%;min-width:830px;border-collapse:collapse}.report-table th,.report-table td{padding:.75rem .65rem;border-bottom:1px solid var(--line);font-size:.76rem;text-align:left;white-space:nowrap}.report-table th{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.report-table td strong{font-size:.8rem}.report-status{display:inline-flex;padding:.3rem .45rem;border-radius:8px;background:#edf1f2;color:#667980;font-size:.68rem;font-weight:850}.report-status.finalizada{background:#e8f6e6;color:#47783d}.report-status.en-ruta{background:#e4f5f3;color:#14796f}.report-status.programada,.report-status.preparada{background:#fff3d8;color:#826217}
@media(max-width:1000px){.report-metrics{grid-template-columns:repeat(2,1fr)}.report-grid{grid-template-columns:1fr}}
@media(max-width:600px){.report-metrics{gap:.55rem}.report-metric{padding:.75rem}.report-metric .stat-icon{width:36px;height:36px;flex:0 0 36px}.report-metric strong{font-size:1.15rem}.report-bar{grid-template-columns:1fr 42px}.report-bar>div:nth-child(2){grid-column:1/-1;grid-row:2}.report-bar>b{grid-column:2;grid-row:1}.report-table-panel{padding:.85rem}}

/* Central EV SCHOOL: global administration without cross-school data access */
.central-page{display:none}.central-page.is-active{display:block}.central-privacy-note{display:flex;align-items:flex-start;gap:.65rem;margin:auto .35rem 1rem;padding:.75rem;border:1px solid rgba(255,255,255,.13);border-radius:13px;background:rgba(255,255,255,.06)}.central-privacy-note>span{color:#8ce0ca}.central-privacy-note p{margin:0}.central-privacy-note strong,.central-privacy-note small{display:block}.central-privacy-note strong{font-size:.75rem}.central-privacy-note small{margin-top:.18rem;color:#9fb7c2;font-size:.68rem;line-height:1.35}.central-mfa,.central-scope-badge{display:inline-flex;padding:.45rem .65rem;border-radius:9px;background:#eaf7e9;color:#39793a;font-size:.74rem;font-weight:850}.central-dashboard-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:1rem}.central-institution-summary{display:grid;gap:.6rem}.central-institution-summary button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;width:100%;padding:.7rem;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);text-align:left}.central-institution-summary button>span{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--teal-soft);color:var(--navy);font-size:.7rem;font-weight:900}.central-institution-summary strong,.central-institution-summary small{display:block}.central-institution-summary strong{font-size:.84rem}.central-institution-summary small{margin-top:.14rem;color:var(--muted);font-size:.72rem}.central-institution-summary b{padding:.3rem .45rem;border-radius:8px;font-size:.68rem}.central-institution-summary b.ok{background:#eaf7e9;color:#39793a}.central-institution-summary b.setup{background:#fff3d8;color:#826217}.central-health-list{display:grid;gap:.6rem}.central-health-list>div{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.78rem;border-bottom:1px solid var(--line);font-size:.8rem}.central-health-list>div:last-child{border-bottom:0}.central-health-list b{color:#39793a;font-size:.72rem}.central-institution-list{display:grid;gap:1rem}.central-institution-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem}.central-institution-head>span{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:linear-gradient(145deg,var(--navy),var(--teal));color:#fff;font-size:.75rem;font-weight:900}.central-institution-head small{color:var(--teal);font-size:.68rem;font-weight:850}.central-institution-head h3{margin:.12rem 0;font-size:1rem}.central-institution-head p{margin:0;color:var(--muted);font-size:.75rem}.central-license{padding:.35rem .5rem;border-radius:8px;background:#eaf7e9;color:#39793a;font-size:.7rem}.central-license.pilot{background:#fff3d8;color:#826217}.central-institution-kpis{display:grid;grid-template-columns:.75fr 1fr 1.7fr;gap:.7rem;margin:1rem 0}.central-institution-kpis>div{padding:.7rem;border-radius:12px;background:#f4f8f9}.central-institution-kpis small,.central-institution-kpis strong{display:block}.central-institution-kpis small{color:var(--muted);font-size:.68rem}.central-institution-kpis strong{margin-top:.2rem;font-size:.78rem}.central-isolation{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.7rem;border:1px solid #cfe9e5;border-radius:13px;background:#f3fbfa}.central-isolation>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--teal-soft);color:var(--teal);font-weight:900}.central-isolation p{margin:0}.central-isolation strong,.central-isolation small{display:block}.central-isolation strong{font-size:.78rem}.central-isolation small{margin-top:.12rem;color:var(--muted);font-size:.7rem}.central-support-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:1rem}.central-ticket-list{display:grid;gap:.8rem}.central-ticket h3{margin:.35rem 0 .25rem;font-size:1rem}.central-ticket p{margin:0;color:var(--muted);font-size:.78rem}.central-ticket-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.9rem 0}.central-ticket-meta small,.central-ticket-meta strong{display:block}.central-ticket-meta small{color:var(--muted);font-size:.68rem}.central-ticket-meta strong{margin-top:.12rem;font-size:.78rem}.central-ticket-meta b{padding:.35rem .5rem;border-radius:8px;font-size:.68rem}.central-ticket-meta b.pending{background:#fff3d8;color:#826217}.central-ticket-meta b.authorized{background:#eaf7e9;color:#39793a}.central-ticket>button{width:100%}.central-support-rule{display:flex;align-items:flex-start;gap:.8rem;background:linear-gradient(145deg,#082f49,#0b6070);color:#fff}.central-support-rule>span{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:11px;background:rgba(255,255,255,.13);font-weight:900}.central-support-rule h3{margin:0 0 .35rem}.central-support-rule p,.central-support-rule li{color:#d5e9ec;font-size:.8rem;line-height:1.45}.central-support-rule ul{padding-left:1.1rem}.central-security-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.central-user-list{display:grid;gap:.65rem}.central-user-list>div{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.7rem;border:1px solid var(--line);border-radius:13px}.central-user-list>div>span{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--teal-soft);color:var(--navy);font-size:.72rem;font-weight:900}.central-user-list p{margin:0}.central-user-list strong,.central-user-list small{display:block}.central-user-list strong{font-size:.82rem}.central-user-list small{margin-top:.12rem;color:var(--muted);font-size:.7rem}.central-user-list b{color:#39793a;font-size:.68rem}.central-audit-list{display:grid;gap:.7rem;margin:0;padding:0;list-style:none}.central-audit-list li{display:grid;grid-template-columns:auto 1fr;gap:.65rem;padding-bottom:.65rem;border-bottom:1px solid var(--line)}.central-audit-list li:last-child{border-bottom:0}.central-audit-list i{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eaf7e9;color:#39793a;font-size:.7rem;font-style:normal}.central-audit-list strong,.central-audit-list small,.central-audit-list time{display:block}.central-audit-list strong{font-size:.8rem}.central-audit-list small{margin-top:.12rem;color:#4c626c;font-size:.72rem}.central-audit-list time{margin-top:.18rem;color:var(--muted);font-size:.65rem}
@media(max-width:1000px){.central-dashboard-grid,.central-support-grid,.central-security-grid{grid-template-columns:1fr}.central-stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.central-mfa{display:none}.central-stat-grid{grid-template-columns:1fr 1fr}.central-institution-kpis{grid-template-columns:1fr}.central-isolation{grid-template-columns:auto 1fr}.central-isolation button{grid-column:1/-1;width:100%}.central-institution-head{grid-template-columns:auto 1fr}.central-institution-head .central-license{grid-column:1/-1;justify-self:start}.central-scope-badge{font-size:.72rem}.role-picker{grid-template-columns:repeat(3,1fr)}.role{padding:.58rem .3rem}}

.central-readiness{margin:0 0 1rem;padding:.85rem;border:1px solid #ead9ad;border-radius:14px;background:#fffaf0}.central-readiness.is-ready{border-color:#bfe0d5;background:#f1faf7}.central-readiness-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.central-readiness-head small,.central-readiness-head strong{display:block}.central-readiness-head small{color:var(--muted);font-size:.68rem}.central-readiness-head strong{margin-top:.15rem;font-size:.82rem}.central-readiness-head b{padding:.32rem .5rem;border-radius:8px;background:#fff0ca;color:#7a5c12;font-size:.68rem}.central-readiness.is-ready .central-readiness-head b{background:#dff3ec;color:#236a57}.central-readiness ul{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin:.7rem 0 0;padding:0;list-style:none}.central-readiness li{display:flex;align-items:flex-start;gap:.4rem;padding:.48rem;border-radius:9px;background:rgba(255,255,255,.75)}.central-readiness li>span{color:#a17618;font-weight:900}.central-readiness li.complete>span{color:#278269}.central-readiness li strong,.central-readiness li small{display:block}.central-readiness li strong{font-size:.69rem;line-height:1.25}.central-readiness li small{margin-top:.12rem;color:var(--muted);font-size:.62rem}.central-readiness>p{margin:.65rem 0 0;color:#735b25;font-size:.7rem}.central-readiness.is-dialog{margin:.85rem 0}.central-readiness.is-dialog ul{grid-template-columns:1fr 1fr}@media(max-width:760px){.central-readiness ul,.central-readiness.is-dialog ul{grid-template-columns:1fr 1fr}}@media(max-width:480px){.central-readiness ul,.central-readiness.is-dialog ul{grid-template-columns:1fr}}

/* Optional student portal: read-only trip, QR and notices */
.student-portal{height:100svh;overflow:hidden;background:#edf4f5}.student-topbar{position:fixed;inset:0 0 auto;z-index:45;display:flex;align-items:center;justify-content:space-between;height:72px;padding:.6rem clamp(1rem,4vw,2rem);border-bottom:1px solid var(--line);background:rgba(255,255,255,.97);box-shadow:0 5px 18px rgba(8,47,73,.08);backdrop-filter:blur(14px)}.student-brand .brand-mark{width:40px;height:40px;border-radius:13px}.student-brand strong{font-size:.92rem}.student-profile{display:flex;align-items:center;gap:.65rem}.student-profile>span strong,.student-profile>span small{display:block;text-align:right}.student-profile>span strong{font-size:.82rem}.student-profile>span small{color:var(--muted);font-size:.7rem}.student-profile>b{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:linear-gradient(145deg,var(--navy),var(--teal));color:#fff;font-size:.72rem}.student-main{width:min(920px,100%);height:100svh;margin:auto;padding:calc(72px + 1.25rem) 1rem calc(82px + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}.student-page{display:none}.student-page.is-active{display:block}.student-welcome{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem}.student-welcome h1,.student-section-head h1{margin:.2rem 0;font-size:1.7rem}.student-welcome p,.student-section-head p{margin:0;color:var(--muted);font-size:.875rem}.student-live-pill{display:inline-flex;align-items:center;gap:.45rem;padding:.48rem .7rem;border-radius:99px;background:#eaf7e9;color:#39793a;font-size:.76rem;font-weight:850}.student-live-pill i{width:8px;height:8px;border-radius:50%;background:currentColor}.student-route-card{padding:1rem;border-radius:22px;background:linear-gradient(145deg,#06324b,#086473);color:#fff;box-shadow:0 16px 38px rgba(8,47,73,.18)}.student-route-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.8rem}.student-route-head>div>span{color:#90d8d0;font-size:.7rem;font-weight:900;letter-spacing:.08em}.student-route-head h2{margin:.35rem 0 .15rem;font-size:1.4rem}.student-route-head p{margin:0;color:#cde4e7;font-size:.8rem}.student-eta{min-width:78px;padding:.55rem;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:rgba(255,255,255,.09);text-align:center}.student-eta strong,.student-eta span{display:block}.student-eta strong{font-size:1.7rem}.student-eta span{color:#cde4e7;font-size:.7rem}.student-map{position:relative;overflow:hidden;min-height:320px;border-radius:17px;background-color:#e5efec;background-image:linear-gradient(rgba(255,255,255,.7) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.7) 1px,transparent 1px);background-size:42px 42px}.student-map svg{position:absolute;inset:0;width:100%;height:100%}.student-road{fill:none;stroke:#fff;stroke-width:25;stroke-linecap:round}.student-road.minor{stroke-width:14}.student-route-path{fill:none;stroke:var(--teal);stroke-width:6;stroke-linecap:round;stroke-dasharray:12 8}.student-school-pin,.student-bus-pin{position:absolute;display:grid;place-items:center;box-shadow:0 8px 18px rgba(8,47,73,.2)}.student-school-pin{right:10%;top:24%;width:44px;height:44px;border:4px solid #fff;border-radius:14px;background:var(--navy);color:#b8eb58}.student-bus-pin{left:12%;top:58%;grid-template-columns:auto auto;gap:.35rem;padding:.5rem .62rem;border:4px solid #fff;border-radius:13px;background:#b8eb58;color:#264c35;font-weight:900;transition:left .45s ease}.student-bus-pin small{font-size:.68rem}.student-map-status{position:absolute;left:1rem;right:1rem;bottom:1rem;padding:.7rem .8rem;border-radius:13px;background:rgba(255,255,255,.96);color:var(--ink);box-shadow:0 8px 18px rgba(8,47,73,.12)}.student-map-status b,.student-map-status span{display:block}.student-map-status b{font-size:.82rem}.student-map-status span{margin-top:.15rem;color:var(--muted);font-size:.74rem}.student-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin-top:1rem}.student-summary-grid article{display:flex;align-items:center;gap:.7rem}.student-summary-grid small,.student-summary-grid strong{display:block}.student-summary-grid small{color:var(--muted);font-size:.7rem}.student-summary-grid strong{margin-top:.12rem;font-size:.84rem}.student-readonly{display:flex;align-items:flex-start;gap:.7rem;margin-top:1rem}.student-readonly>span{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:10px;background:var(--teal-soft);color:var(--teal);font-weight:900}.student-readonly strong{font-size:.82rem}.student-readonly p{margin:.2rem 0 0;color:var(--muted);font-size:.75rem}.student-section-head{margin-bottom:1rem}.student-qr-card{width:min(410px,100%);margin:auto;padding:1.5rem;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:var(--shadow);text-align:center}.student-qr-pattern{width:230px;height:230px;margin:0 auto 1rem;padding:14px;border:1px solid var(--line);border-radius:18px;background:#fff}.student-qr-pattern svg{width:100%;height:100%;fill:var(--navy);shape-rendering:crispEdges}.student-qr-card>span{color:var(--teal);font-size:.68rem;font-weight:900;letter-spacing:.12em}.student-qr-card h2{margin:.35rem 0 .15rem}.student-qr-card p{margin:0;color:var(--muted);font-size:.78rem}.student-qr-card>b{display:inline-flex;margin:.9rem 0 .6rem;padding:.42rem .65rem;border-radius:9px;background:#eaf7e9;color:#39793a;font-size:.75rem}.student-qr-card>small{display:block;color:var(--muted);font-size:.7rem}.student-notice-list{display:grid;gap:.75rem}.student-notice{display:grid;grid-template-columns:auto 1fr;gap:.75rem}.student-notice>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(145deg,var(--navy),var(--teal));color:#fff;font-size:.72rem;font-weight:900}.student-notice>div>div{display:flex;justify-content:space-between;gap:1rem}.student-notice strong{font-size:.84rem}.student-notice small{color:var(--muted);font-size:.7rem}.student-notice p{margin:.35rem 0;color:#40565f;font-size:.8rem}.student-notice em{color:var(--teal);font-size:.7rem;font-style:normal;font-weight:800}.student-bottom-nav{position:fixed;left:50%;bottom:calc(.65rem + env(safe-area-inset-bottom));z-index:50;display:grid;grid-template-columns:repeat(3,1fr);width:min(430px,calc(100% - 1.4rem));transform:translateX(-50%);padding:.35rem;border:1px solid rgba(8,47,73,.1);border-radius:18px;background:rgba(255,255,255,.97);box-shadow:0 12px 35px rgba(8,47,73,.2);backdrop-filter:blur(14px)}.student-bottom-nav button{display:grid;place-items:center;gap:.12rem;min-height:49px;border:0;border-radius:13px;background:transparent;color:#70838b;font-size:.7rem;font-weight:850}.student-bottom-nav button span{font-size:1rem}.student-bottom-nav button.is-active{background:var(--navy);color:#fff}
@media(max-width:620px){.student-topbar{height:68px;padding:.55rem .8rem}.student-profile>span,.student-profile>b{display:none}.student-main{padding:calc(68px + .8rem) .75rem calc(82px + env(safe-area-inset-bottom))}.student-welcome{align-items:flex-start;flex-direction:column}.student-welcome h1,.student-section-head h1{font-size:1.35rem}.student-route-card{padding:.75rem;border-radius:18px}.student-route-head h2{font-size:1.15rem}.student-map{min-height:275px}.student-summary-grid{grid-template-columns:1fr}.student-qr-pattern{width:210px;height:210px}.student-notice>div>div{align-items:flex-start;flex-direction:column;gap:.15rem}}

/* Institutional configuration and complete student record */
.settings-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:1rem}.settings-form{grid-row:span 2}.settings-checks{display:grid;gap:.8rem;margin:1rem 0 1.2rem}.settings-checks .check{justify-content:flex-start}.settings-user{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.75rem 0;border-bottom:1px solid var(--line)}.settings-user>span{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--teal-soft);color:var(--navy);font-size:.72rem;font-weight:900}.settings-user strong,.settings-user small{display:block}.settings-user small{margin-top:.15rem;color:var(--muted);font-size:.72rem}.settings-user b{color:#39793a;font-size:.68rem}.settings-note{margin:1rem 0 0;color:var(--muted);font-size:.76rem;line-height:1.5}.settings-demo{display:flex;align-items:center;justify-content:space-between;gap:1rem}.settings-demo h3{margin:.25rem 0}.settings-demo p{max-width:55ch;margin:0;color:var(--muted);font-size:.78rem;line-height:1.45}.settings-demo button{flex:0 0 auto}.settings-summary{display:flex;align-items:flex-start;gap:.75rem}.settings-summary>span{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:11px;background:#eaf7e9;color:#39793a;font-weight:900}.settings-summary strong{font-size:.84rem}.settings-summary p{margin:.25rem 0 0;color:var(--muted);font-size:.76rem;line-height:1.45}.student-detail-list{display:grid;gap:.6rem}.student-detail-list article{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem;padding:.7rem;border:1px solid var(--line);border-radius:13px}.student-detail-list article>span{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--teal-soft);color:var(--navy);font-size:.68rem;font-weight:900}.student-detail-list strong,.student-detail-list small{display:block}.student-detail-list small{margin-top:.12rem;color:var(--muted);font-size:.7rem}.student-detail-list b{color:#39793a;font-size:.68rem}.student-history{display:grid;gap:.8rem;margin:0;padding:0;list-style:none}.student-history li{display:grid;grid-template-columns:auto 1fr;gap:.65rem}.student-history i{display:grid;place-items:center;width:28px;height:28px;border:2px solid #d8e3e7;border-radius:50%;color:#7c8f96;font-size:.7rem;font-style:normal}.student-history i.done{border-color:#8ecb86;background:#e9f7e7;color:#3e7939}.student-history strong,.student-history small{display:block}.student-history small{margin-top:.15rem;color:var(--muted);font-size:.72rem}
@media(max-width:900px){.settings-grid{grid-template-columns:1fr}.settings-form{grid-row:auto}}
@media(max-width:600px){.settings-demo{align-items:stretch;flex-direction:column}.settings-demo button{width:100%}.settings-user{grid-template-columns:auto 1fr}.settings-user b{grid-column:2}.student-detail-list article{grid-template-columns:auto 1fr}.student-detail-list b{grid-column:2}}

/* Clear minibus marker shared by every live route map */
.map-vehicle-glyph{display:block;font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1.3rem;line-height:1;filter:drop-shadow(0 2px 2px rgba(8,47,73,.14))}.bus-pin>span.map-vehicle-glyph{font-size:1.25rem}.phone-bus{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1rem}
@media(max-width:620px){.phone-bus{font-size:.56rem}.family-bus-pin .map-vehicle-glyph,.student-bus-pin .map-vehicle-glyph,.driver-bus-pin .map-vehicle-glyph{font-size:1.2rem}}

/* 2026 school-day art direction: lively, warm and still operational */
:root{--sun:#ffcf54;--sun-soft:#fff5cf;--sky:#52aee8;--sky-soft:#eaf6fd;--coral:#ff846f;--violet:#7569df;--mint:#dff7ef;--paper:#fbfdfd;--shadow:0 14px 34px rgba(8,47,73,.09)}
body{background:radial-gradient(circle at 8% 12%,rgba(82,174,232,.08),transparent 20%),radial-gradient(circle at 94% 86%,rgba(255,207,84,.11),transparent 24%),var(--bg)}
.primary{border-radius:14px;background:linear-gradient(135deg,#073650 0%,#087585 100%);box-shadow:0 9px 20px rgba(8,79,97,.17);transition:transform .18s ease,box-shadow .18s ease}.primary:hover{transform:translateY(-1px);box-shadow:0 13px 24px rgba(8,79,97,.2)}.secondary{border-radius:14px}.icon-button{transition:transform .18s ease,background .18s ease}.icon-button:hover{transform:translateY(-1px);background:var(--sky-soft)}

/* Access: five friendly doors into the same school community */
.login-panel{position:relative;isolation:isolate;overflow:hidden;background:radial-gradient(circle at 94% 7%,rgba(255,207,84,.25),transparent 19%),radial-gradient(circle at 8% 94%,rgba(82,174,232,.16),transparent 24%),linear-gradient(180deg,#fff,#f4faf9)}.login-panel:before,.login-panel:after{content:"";position:absolute;z-index:-1;border-radius:50%}.login-panel:before{right:-55px;top:18%;width:150px;height:150px;border:28px solid rgba(14,159,154,.055)}.login-panel:after{left:-44px;bottom:9%;width:100px;height:100px;background:rgba(255,207,84,.12)}.login-card{position:relative;padding:clamp(1.2rem,2vw,2rem);border:1px solid rgba(8,47,73,.08);border-radius:28px;background:rgba(255,255,255,.9);box-shadow:0 24px 70px rgba(8,47,73,.08);backdrop-filter:blur(15px)}.login-card:before{content:"";position:absolute;inset:0 0 auto;height:6px;border-radius:28px 28px 0 0;background:linear-gradient(90deg,var(--sky),var(--teal),var(--green),var(--sun),var(--coral))}.role-picker{gap:.48rem;padding:.48rem;border:1px solid #e6eef1;background:#f8fbfc}.role{min-height:76px;border:1px solid transparent;padding:.5rem .18rem;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.role span{display:grid;place-items:center;width:35px;height:35px;margin:0 auto .3rem;border-radius:12px;background:white;font-size:1.12rem;box-shadow:0 4px 11px rgba(8,47,73,.08)}.role:nth-child(1) span{background:var(--sky-soft)}.role:nth-child(2) span{background:#fff0e8}.role:nth-child(3) span{background:var(--sun-soft)}.role:nth-child(4) span{background:var(--mint)}.role:nth-child(5) span{background:#efedff}.role:hover{transform:translateY(-2px)}.role.is-active{border-color:rgba(14,159,154,.26);box-shadow:0 8px 18px rgba(8,47,73,.09)}.role.is-active span{box-shadow:0 0 0 3px rgba(14,159,154,.13),0 5px 12px rgba(8,47,73,.1)}.hero-benefits span{border-color:rgba(255,255,255,.28);background:rgba(3,39,58,.7)}.hero-benefits b{font-size:.88rem}.ribbon-bus{font-size:1.35rem;background:linear-gradient(145deg,#b8eb58,#ffda62)}

/* Institution and Central: colorful navigation without visual noise */
.sidebar{background:radial-gradient(circle at 8% 0,rgba(82,174,232,.2),transparent 23%),linear-gradient(180deg,#062d46 0%,#083d58 58%,#075b65 100%);box-shadow:12px 0 35px rgba(8,47,73,.08)}.sidebar:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,var(--sky),var(--teal),var(--green),var(--sun))}.sidebar nav{padding-right:.15rem}.nav-item{min-height:46px;border:1px solid transparent;border-radius:14px;padding:.48rem .65rem;font-size:.82rem}.nav-item>span{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:10px;background:rgba(255,255,255,.1);font-size:1rem;filter:saturate(.92)}.nav-item:hover:not(:disabled){border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.09)}.nav-item.is-active{border-color:rgba(255,255,255,.18);background:white;color:var(--navy);box-shadow:0 8px 22px rgba(2,31,47,.18)}.nav-item.is-active>span{background:var(--sun-soft);box-shadow:0 3px 9px rgba(8,47,73,.08)}.nav-item.is-active{box-shadow:0 8px 22px rgba(2,31,47,.18)}.nav-label{padding-top:.85rem;color:#9bc0cc}.topbar{border-bottom:0;box-shadow:0 5px 20px rgba(8,47,73,.055);background:rgba(255,255,255,.95);backdrop-filter:blur(14px)}.topbar:after{content:"";position:absolute;inset:auto 0 0;height:3px;background:linear-gradient(90deg,var(--sky),var(--teal) 38%,var(--green) 68%,var(--sun))}.content{position:relative}.content:before{background:radial-gradient(circle,rgba(82,174,232,.09),transparent 66%)}.section-head h2,.welcome-row h2{position:relative}.section-head h2:after,.welcome-row h2:after{content:"";display:block;width:46px;height:4px;margin-top:.42rem;border-radius:99px;background:linear-gradient(90deg,var(--teal),var(--sun))}.panel,.stat-card,.ops-metric,.report-metric,.authorization-card,.incident-card,.asset-card{border-color:rgba(8,47,73,.085);box-shadow:0 7px 22px rgba(8,47,73,.055)}.panel,.stat-card,.ops-metric,.report-metric{background:linear-gradient(150deg,#fff 0%,#fff 74%,rgba(82,174,232,.025) 100%)}.stat-card,.ops-metric,.report-metric{border-top:4px solid transparent}.stat-card:nth-child(1),.ops-metric:nth-child(1),.report-metric:nth-child(1){border-top-color:var(--teal)}.stat-card:nth-child(2),.ops-metric:nth-child(2),.report-metric:nth-child(2){border-top-color:var(--green)}.stat-card:nth-child(3),.ops-metric:nth-child(3),.report-metric:nth-child(3){border-top-color:var(--sky)}.stat-card:nth-child(4),.report-metric:nth-child(4){border-top-color:var(--sun)}.stat-icon{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;background:white!important;box-shadow:0 6px 17px rgba(8,47,73,.09);font-size:1.25rem}.stat-card:hover,.ops-metric:hover,.report-metric:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(8,47,73,.09)}.ops-metric,.report-metric{transition:transform .18s ease,box-shadow .18s ease}.school-spotlight{border:1px solid rgba(255,255,255,.13);background:radial-gradient(circle at 86% 14%,rgba(255,207,84,.43),transparent 19%),radial-gradient(circle at 94% 88%,rgba(82,174,232,.33),transparent 28%),linear-gradient(135deg,#052f49 0%,#087585 100%)}.school-spotlight:after{border:16px solid rgba(255,255,255,.06)}.spotlight-action{background:linear-gradient(135deg,#c8f06b,#ffe070);box-shadow:0 8px 18px rgba(1,27,40,.2)}.map-panel{border-top:4px solid var(--sky)}.activity-panel{border-top:4px solid var(--sun)}.map-canvas,.family-map,.student-map,.driver-map{background-color:#eaf4f1;background-image:radial-gradient(circle at 20% 20%,rgba(82,174,232,.12) 0 4px,transparent 5px),radial-gradient(circle at 72% 72%,rgba(255,207,84,.14) 0 5px,transparent 6px),linear-gradient(rgba(255,255,255,.7) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.7) 1px,transparent 1px)}.bus-pin,.family-bus-pin,.student-bus-pin,.driver-bus-pin{box-shadow:0 10px 24px rgba(8,47,73,.2),0 0 0 5px rgba(255,207,84,.18)}.asset-symbol,.asset-hero-icon,.authorization-icon,.incident-symbol{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1.15rem}.asset-symbol,.asset-hero-icon{background:linear-gradient(145deg,#e8f7f4,#fff3ca);box-shadow:0 6px 16px rgba(8,47,73,.08)}.asset-card .asset-symbol,.asset-hero .asset-hero-icon{color:var(--navy)}.student-photo{background:linear-gradient(145deg,#dff6ff,#fff0c8);box-shadow:0 4px 12px rgba(8,47,73,.07)}

/* Family: warm, reassuring and instantly understandable */
.family-shell{background:radial-gradient(circle at 4% 6%,rgba(255,207,84,.2),transparent 20%),radial-gradient(circle at 94% 38%,rgba(82,174,232,.15),transparent 22%),linear-gradient(180deg,#f8fcfb,#edf6f7)}.family-topbar{border-bottom:0;box-shadow:0 6px 22px rgba(8,47,73,.07)}.family-topbar:after,.student-topbar:after,.driver-topbar:after{content:"";position:absolute;inset:auto 0 0;height:3px;background:linear-gradient(90deg,var(--sun),var(--coral),var(--teal),var(--sky))}.family-tabs button{display:flex;align-items:center;gap:.38rem}.family-tabs button:before{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:.95rem}.family-tabs [data-family-page="familyHome"]:before{content:"🏡"}.family-tabs [data-family-page="familyCalendar"]:before{content:"📅"}.family-tabs [data-family-page="familySafety"]:before{content:"🛡️"}.family-tabs [data-family-page="familyMessages"]:before{content:"🔔"}.family-tabs button.is-active{background:linear-gradient(135deg,var(--sun-soft),var(--mint));color:var(--navy);box-shadow:0 5px 14px rgba(8,47,73,.07)}.family-welcome h1{color:#073650}.family-route-card{position:relative;isolation:isolate;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 92% 8%,rgba(255,207,84,.42),transparent 20%),radial-gradient(circle at 5% 96%,rgba(82,174,232,.3),transparent 28%),linear-gradient(145deg,#052f49 0%,#075e73 58%,#09928f 100%)}.family-route-card:before{content:"RUTA ESCOLAR";position:absolute;right:-20px;bottom:30px;z-index:-1;transform:rotate(-90deg);color:rgba(255,255,255,.07);font-size:2.1rem;font-weight:950;letter-spacing:.12em}.family-child-card{border-top:4px solid var(--sun)}.family-alert{border-top:4px solid var(--coral);background:linear-gradient(145deg,#fff,#fff8e4)}.family-child-event{background:linear-gradient(135deg,var(--mint),var(--sun-soft))}.family-bottom-nav button span,.student-bottom-nav button span,.driver-bottom-bar button span{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1.05rem}.family-bottom-nav button.is-active{background:linear-gradient(135deg,#073650,#087c83);box-shadow:0 6px 14px rgba(8,47,73,.2)}.family-week-card{border-top:4px solid var(--sky)}.family-day.is-active{border-color:#9dd9bc;background:linear-gradient(145deg,#f2fff8,#fff9db)}.family-location-card{border-top:4px solid var(--sky)}.family-authorized-card{border-top:4px solid var(--green)}

/* Student: youthful energy without becoming childish */
.student-portal{background:radial-gradient(circle at 8% 14%,rgba(255,207,84,.22),transparent 22%),radial-gradient(circle at 92% 80%,rgba(117,105,223,.12),transparent 24%),#eef6f7}.student-route-card{position:relative;overflow:hidden;border-top:5px solid var(--sun);background:radial-gradient(circle at 91% 7%,rgba(255,207,84,.42),transparent 22%),linear-gradient(145deg,#06324b,#087585)}.student-route-card:after{content:"🎒";position:absolute;right:1rem;bottom:-.25rem;opacity:.08;font-size:7rem;transform:rotate(-9deg)}.student-summary-grid article:nth-child(1){border-top:4px solid var(--sun)}.student-summary-grid article:nth-child(2){border-top:4px solid var(--green)}.student-summary-grid article:nth-child(3){border-top:4px solid var(--sky)}.student-bottom-nav button.is-active{background:linear-gradient(135deg,#6f61d7,#087c83);box-shadow:0 6px 16px rgba(67,55,154,.25)}.student-qr-card{border-top:5px solid var(--violet);background:radial-gradient(circle at 100% 0,rgba(255,207,84,.22),transparent 24%),white}.student-notice{border-left:4px solid var(--sun)}.student-notice>span{background:linear-gradient(145deg,var(--sun),var(--coral));font-size:1rem}

/* Driver: confident controls and a bright route focus */
.driver-shell{background:radial-gradient(circle at 90% 10%,rgba(184,235,88,.18),transparent 24%),#eef5f5}.driver-map-panel{position:relative;overflow:hidden;border-top:5px solid #b8eb58;background:radial-gradient(circle at 96% 0,rgba(255,207,84,.28),transparent 22%),linear-gradient(145deg,#052f49,#075e73)}.driver-map-panel:after{content:"🚐";position:absolute;right:1.2rem;top:.4rem;opacity:.08;font-size:5.6rem;transform:rotate(-8deg)}.driver-if-button{background:linear-gradient(135deg,#073650,#087c83)}.driver-if-button>span{background:linear-gradient(145deg,#b8eb58,#ffe071)}.driver-summary article:nth-child(1){border-top:4px solid var(--sun)}.driver-summary article:nth-child(2){border-top:4px solid var(--green)}.driver-summary article:nth-child(3){border-top:4px solid var(--sky)}.driver-bottom-bar button.scan{background:linear-gradient(135deg,#073650,#087c83);box-shadow:0 6px 16px rgba(8,47,73,.2)}.driver-student-card.is-current{border-left:5px solid var(--sun);background:linear-gradient(90deg,#fffdf3,#fff)}

/* Central: distinct control-center identity */
.central-sidebar{background:radial-gradient(circle at 12% 0,rgba(117,105,223,.35),transparent 25%),linear-gradient(180deg,#182d53,#184967 62%,#075b65)}.central-content{background:radial-gradient(circle at 94% 4%,rgba(117,105,223,.1),transparent 22%)}.central-stat-grid .stat-card:nth-child(1){border-top-color:var(--violet)}.central-stat-grid .stat-card:nth-child(2){border-top-color:var(--green)}.central-stat-grid .stat-card:nth-child(3){border-top-color:var(--sky)}.central-stat-grid .stat-card:nth-child(4){border-top-color:var(--sun)}.central-mfa{background:linear-gradient(135deg,#e9f8e6,#fff5cf)}.central-privacy-note>span{font-size:1.05rem}.central-support-rule{border-top:5px solid var(--sun);background:radial-gradient(circle at 92% 8%,rgba(255,207,84,.2),transparent 23%),linear-gradient(145deg,#082f49,#0b6070)}

@media(max-width:850px){.login-card{border-radius:24px}.sidebar{box-shadow:18px 0 40px rgba(2,31,47,.22)}}
@media(max-width:620px){.login-card{padding:.95rem}.role-picker{grid-template-columns:repeat(3,1fr)}.role{min-height:70px}.content{background:radial-gradient(circle at 100% 0,rgba(255,207,84,.1),transparent 22%)}.stat-card,.ops-metric,.report-metric{border-top-width:3px}.family-route-card:before,.student-route-card:after,.driver-map-panel:after{display:none}.family-topbar:after,.student-topbar:after,.driver-topbar:after{height:2px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* Shared identity foundation */
.shared-data-status{display:flex;align-items:center;justify-content:center;gap:.45rem;margin-top:.75rem;padding:.58rem .75rem;border:1px solid #dbe8ea;border-radius:12px;background:#f7fafb;color:#5e747d;font-size:.72rem;font-weight:850}.shared-data-status i{width:8px;height:8px;border-radius:50%;background:#9babb1}.shared-data-status.is-loading i{animation:shared-pulse 1.2s ease-in-out infinite}.shared-data-status.is-connected{border-color:#c7eadc;background:#effbf6;color:#2c7258}.shared-data-status.is-connected i{background:#37a778}.shared-data-status.is-local{border-color:#f0dfb4;background:#fff9e9;color:#80651f}.shared-data-status.is-local i{background:#d6a933}@keyframes shared-pulse{50%{opacity:.35;transform:scale(.75)}}
.settings-family-accounts{border-top:4px solid var(--violet)}.shared-account-list{display:grid;gap:.55rem}.shared-account{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.65rem;padding:.68rem;border:1px solid var(--line);border-radius:13px;background:#f9fbfc}.shared-account>span{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,var(--sky-soft),var(--sun-soft));color:var(--navy);font-size:.7rem;font-weight:950}.shared-account strong,.shared-account small{display:block}.shared-account strong{font-size:.8rem}.shared-account small{margin-top:.12rem;color:var(--muted);font-size:.67rem}.shared-account b{padding:.3rem .45rem;border-radius:8px;background:#fff4d8;color:#81631b;font-size:.64rem}.shared-account b.active{background:#e8f7ee;color:#35764e}.shared-account-placeholder{padding:.75rem;border-radius:12px;background:#f4f7f8;color:var(--muted);font-size:.75rem}.family-access-card>div{min-width:0}.family-access-card .shared-account-list{margin-top:.65rem}.shared-account-list.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.shared-account-list.compact .shared-account{padding:.5rem}.shared-account-list.compact .shared-account>span{width:32px;height:32px}.shared-account-list.compact .shared-account small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.role:disabled{cursor:not-allowed;filter:grayscale(.7);opacity:.42;transform:none}.role:disabled:hover{transform:none}.shared-account b.invited{background:#eceafe;color:#5c50af}.settings-family-accounts .panel-head{gap:.75rem}.settings-family-accounts .panel-head .secondary{white-space:nowrap}#familyAccountLinkForm{display:grid;gap:.85rem}#familyAccountLinkForm label{display:grid;gap:.38rem}

/* Illustrated portal access */
.role span:has(img){width:44px;height:44px;overflow:hidden;padding:2px}
.role span img{display:block;width:100%;height:100%;object-fit:contain}

/* Larger, clearer hero brand */
.brand-lockup--large{gap:1rem}
.brand-lockup--large .brand-mark{width:64px;height:64px;border-radius:19px 19px 19px 6px;font-size:1.2rem}
.brand-lockup--large strong{font-size:1.55rem;line-height:1;letter-spacing:.085em}
.brand-lockup--large small{margin-top:.34rem;font-size:.8rem;font-weight:600;letter-spacing:.025em;text-transform:none;opacity:.92}
@media(max-width:850px){.brand-lockup--large{gap:.82rem}.brand-lockup--large .brand-mark{width:54px;height:54px}.brand-lockup--large strong{font-size:1.32rem}.brand-lockup--large small{font-size:.72rem}}

/* Unit-first pickup point view */
.stop-head-actions{display:flex;align-items:flex-end;gap:.7rem}.stop-unit-picker{min-width:210px;margin:0;gap:.35rem;font-size:.75rem}.stop-unit-picker select{min-height:42px;padding:.55rem .75rem}.stop-map-card small{max-width:44ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stop-map-card.is-verified{box-shadow:inset 0 0 0 2px rgba(22,166,151,.24)}.stop-coordinate-grid{margin-top:.8rem}.location-capture-button{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.15rem .7rem;width:100%;margin-top:.9rem;padding:.8rem;border:1px solid #b8deda;border-radius:14px;background:#eff9f7;color:var(--navy);text-align:left}.location-capture-button>span{grid-row:1/3;display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--teal);color:white;font-size:1.15rem}.location-capture-button strong,.location-capture-button small{display:block}.location-capture-button small{color:var(--muted);font-size:.72rem}.stop-location-actions{grid-template-columns:auto 1fr 1fr auto;align-items:center}.map-launch{display:flex;align-items:center;justify-content:center;gap:.45rem;min-height:42px;padding:.55rem .75rem;border:1px solid var(--line);border-radius:12px;background:white;color:var(--navy);font-size:.75rem;font-weight:850;text-decoration:none}.map-launch b{display:grid;place-items:center;width:24px;height:24px;border-radius:8px;color:white}.map-launch.google b{background:linear-gradient(135deg,#4285f4 0 45%,#34a853 45% 66%,#fbbc05 66% 82%,#ea4335 82%)}.map-launch.waze b{background:#35c8f0;color:#063952}@media(max-width:760px){.stop-location-actions{grid-template-columns:1fr 1fr}.stop-location-actions>*{width:100%}}@media(max-width:470px){.stop-location-actions{grid-template-columns:1fr}.stop-coordinate-grid{grid-template-columns:1fr}}
@media(max-width:620px){.stop-head-actions{display:grid;width:100%;grid-template-columns:1fr}.stop-unit-picker{width:100%}.stop-head-actions .primary{width:100%}}
@media(max-width:760px){.shared-account-list.compact{grid-template-columns:1fr}.family-access-card{align-items:flex-start}.family-access-card>.status-pill{grid-column:1/-1;margin-left:3.25rem}}

/* Shared, role-scoped route conversation */
.school-chat-panel{margin-top:1rem;border-top:4px solid var(--teal)}.school-chat-preview{display:grid;gap:.55rem}.school-chat-preview>button{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.65rem;width:100%;padding:.68rem;border:1px solid var(--line);border-radius:13px;background:#f9fbfc;text-align:left}.school-chat-preview>button:hover{border-color:#bcdcdf;background:#f4fbfa}.chat-preview-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:linear-gradient(145deg,var(--mint),var(--sun-soft));font-size:1rem}.school-chat-preview strong,.school-chat-preview small{display:block}.school-chat-preview strong{font-size:.8rem}.school-chat-preview small{overflow:hidden;margin-top:.12rem;color:var(--muted);font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.school-chat-preview time{color:var(--muted);font-size:.68rem}.chat-dialog{width:min(620px,calc(100vw - 1.5rem))}.chat-dialog form{display:grid;gap:.75rem}.chat-scope{padding:.55rem .7rem;border-radius:11px;background:linear-gradient(135deg,var(--sky-soft),var(--mint));color:var(--navy);font-size:.78rem;font-weight:850}.shared-chat-messages{display:flex;flex-direction:column;gap:.65rem;min-height:260px;max-height:46vh;overflow:auto;padding:.75rem;border:1px solid var(--line);border-radius:16px;background:#f4f8f8}.shared-chat-message{align-self:flex-start;width:min(86%,430px);padding:.68rem .75rem;border:1px solid #dbe7ea;border-radius:6px 16px 16px;background:white;box-shadow:0 4px 12px rgba(8,47,73,.05)}.shared-chat-message.is-mine{align-self:flex-end;border-color:#b9e2d9;border-radius:16px 6px 16px 16px;background:#eaf9f4}.shared-chat-message>div{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.shared-chat-message strong{font-size:.76rem}.shared-chat-message span{color:#50747d;font-size:.65rem;font-weight:850}.shared-chat-message p{margin:.38rem 0;color:#183746;font-size:.84rem;line-height:1.45}.shared-chat-message time{display:block;color:var(--muted);font-size:.64rem;text-align:right}.chat-compose-label{margin-bottom:-.45rem;font-size:.75rem;font-weight:850}.chat-dialog textarea{min-height:84px;resize:vertical}.chat-dialog .dialog-actions{align-items:center;justify-content:space-between}.chat-dialog .dialog-actions>span{color:var(--muted);font-size:.68rem}
@media(max-width:620px){.school-chat-panel .panel-head{align-items:stretch;flex-direction:column}.school-chat-panel .panel-head button{width:100%}.school-chat-preview>button{grid-template-columns:auto minmax(0,1fr)}.school-chat-preview time{grid-column:2}.chat-dialog{margin:auto .55rem;width:calc(100vw - 1.1rem);max-height:92dvh}.shared-chat-messages{min-height:220px;max-height:48dvh}.chat-dialog .dialog-actions{align-items:stretch;flex-direction:column}.chat-dialog .dialog-actions button{width:100%}}

/* Shared weekly calendar and automatic capacity */
.route-capacity-board{margin-bottom:1rem;border-top:4px solid var(--green)}.route-capacity-actions{display:flex;align-items:center;gap:.55rem;flex-wrap:wrap;justify-content:flex-end}.route-capacity-days{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.65rem}.route-capacity-day{padding:.75rem;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#fff,#f5fbf9)}.route-capacity-day>span,.route-capacity-day>strong,.route-capacity-day>small{display:block}.route-capacity-day>span{color:var(--muted);font-size:.68rem;font-weight:850}.route-capacity-day>strong{margin:.15rem 0 .5rem;font-size:1.08rem}.route-capacity-day>div{height:6px;overflow:hidden;border-radius:99px;background:#e5edef}.route-capacity-day>div i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),var(--green))}.route-capacity-day>small{margin-top:.45rem;color:var(--muted);font-size:.68rem}.route-capacity-day.is-full{border-color:#f0c8bf;background:#fff6f3}.route-capacity-day.is-full>div i{background:var(--coral)}.family-day.is-locked{cursor:not-allowed;filter:saturate(.55);opacity:.7}.family-day.is-locked i{font-size:.72rem}.week-legend{flex-wrap:wrap}.week-legend>span:last-child{margin-left:auto;color:var(--navy);font-weight:800}
@media(max-width:760px){.route-capacity-days{grid-template-columns:repeat(5,minmax(118px,1fr));overflow-x:auto;padding-bottom:.35rem}.route-capacity-day{min-width:118px}.route-capacity-actions{width:100%;justify-content:flex-start}.week-legend>span:last-child{width:100%;margin:.35rem 0 0}}

/* Shared route-change requests */
.authorization-icon.route{background:#fff1c9;color:#7b5a08}.family-rule-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.8rem}.family-route-request-status{margin-top:.8rem;padding:.7rem .8rem;border:1px solid rgba(255,255,255,.2);border-radius:12px;background:rgba(255,255,255,.1)}.family-route-request-status strong,.family-route-request-status small{display:block}.family-route-request-status strong{font-size:.8rem}.family-route-request-status small{margin-top:.22rem;color:#d9eff0;font-size:.72rem;line-height:1.4}.family-route-request-status.approved{border-color:rgba(190,239,151,.42);background:rgba(141,200,91,.18)}.family-route-request-status.rejected{border-color:rgba(255,200,188,.38);background:rgba(225,111,91,.16)}
@media(max-width:620px){.family-rule-actions button{width:100%}}
.driver-authorized{display:block;margin-top:.45rem;padding:.42rem .5rem;border-radius:9px;background:#e9f7f2;color:#17695f;font-size:.68rem;font-style:normal;font-weight:800;line-height:1.4}
.driver-authorized.warning{background:#fff4e5;color:#8a5417}.driver-student-card.delivered{border-color:#a9ddc9;background:#f4fcf9}.driver-student-card.delivered .driver-student-copy strong{color:#17695f}.driver-result.delivered{background:#dcf5eb;color:#17695f}.driver-no-responsible{border:1px solid #efb5b5;border-radius:10px;background:#fff1f1;color:#9b2525;font-weight:900}.delivery-actions{grid-template-columns:auto 1fr 1fr}.delivery-identity{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.8rem;border-radius:14px;background:#edf8f5}.delivery-identity>span{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#d5f1e7}.delivery-identity small,.delivery-identity strong{display:block}.delivery-identity small{color:var(--muted);font-size:.72rem}.delivery-check{display:flex!important;align-items:flex-start;gap:.6rem;margin-top:1rem;padding:.8rem;border:1px solid var(--line);border-radius:12px;background:#fafcfc}.delivery-check input{width:20px;height:20px;flex:0 0 auto}.delivery-check span{font-size:.82rem;line-height:1.4}
.family-alert.protocol-active{border-color:#efb0a9;background:linear-gradient(145deg,#fff5f3,#fff0df);box-shadow:0 10px 25px rgba(155,37,37,.1)}.family-alert.protocol-active>span{background:#ffe0da;color:#9b2525}.family-alert.protocol-active b{display:inline-flex;margin:.5rem 0 .3rem;padding:.35rem .55rem;border-radius:9px;background:#9b2525;color:white;font-size:.9rem}.family-alert.protocol-active b.is-expired{background:#6f2430}.family-alert.protocol-active small{display:block;color:#8c5555;font-weight:800}
.driver-completed-actions{display:grid;justify-items:end;gap:.35rem}.driver-correct{min-height:32px;padding:.35rem .55rem;border:1px solid #b8ced3;border-radius:9px;background:white;color:#315765;font-size:.68rem;font-weight:850}.driver-correct:hover{border-color:var(--teal);color:var(--teal)}

/* Portada: abordaje QR con tratamiento fotográfico natural */
.login-brand{background-image:url('assets/ev-school-qr-boarding-hero-v2.png');background-position:center center}

/* Escáner QR operativo */
.driver-scanner{position:relative;overflow:hidden;min-height:280px;border-style:solid}
.driver-scanner video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#062f49}
.driver-scanner-frame{position:absolute;left:50%;top:50%;z-index:2;width:170px;height:170px;transform:translate(-50%,-58%)}
.driver-scanner-frame i{position:absolute;width:34px;height:34px;border-color:#b8eb58;border-style:solid}
.driver-scanner-frame i:nth-child(1){left:0;top:0;border-width:4px 0 0 4px;border-radius:10px 0 0}
.driver-scanner-frame i:nth-child(2){right:0;top:0;border-width:4px 4px 0 0;border-radius:0 10px 0 0}
.driver-scanner-frame i:nth-child(3){right:0;bottom:0;border-width:0 4px 4px 0;border-radius:0 0 10px}
.driver-scanner-frame i:nth-child(4){left:0;bottom:0;border-width:0 0 4px 4px;border-radius:0 0 0 10px}
.driver-scanner strong,.driver-scanner small{position:relative;z-index:3}
.driver-scanner strong{align-self:end;padding:.35rem .6rem;border-radius:8px;background:rgba(5,47,73,.88);color:white}
.driver-scanner small{align-self:end;padding:.3rem .5rem;border-radius:7px;background:rgba(255,255,255,.94)}
.driver-scanner:not(.is-live) video,.driver-scanner:not(.is-live) .driver-scanner-frame{display:none}
.driver-scanner.is-reading:after{content:"Validando…";position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:rgba(5,47,73,.72);color:white;font-weight:900}
.student-qr-pattern img{display:block;width:100%;height:100%;object-fit:contain}
.login-brand .photo-shade{background:linear-gradient(90deg,rgba(3,27,43,.97) 0%,rgba(3,34,52,.88) 30%,rgba(3,34,52,.54) 48%,rgba(3,34,52,.12) 68%,rgba(3,34,52,.04) 100%)}
.family-app-preview{display:none}
.brand-message{max-width:520px;background:linear-gradient(135deg,rgba(3,35,54,.74),rgba(3,35,54,.26))}
@media(max-width:1180px) and (min-width:851px){.login-brand{background-position:54% center}.brand-message{max-width:430px}}
@media(max-width:850px){.login-brand{background-position:57% center}.login-brand .photo-shade{background:linear-gradient(180deg,rgba(3,31,48,.58) 0%,rgba(3,31,48,.05) 38%,rgba(3,31,48,.94) 100%)}.brand-message{max-width:72%}}
@media(max-width:430px){.login-brand{background-position:61% center}.brand-message{max-width:68%}}

/* Identidad verbal EV SCHOOL */
.brand-message .journey-slogan{display:block;margin:.2rem 0 1.5rem;color:#fff;font-family:Georgia,"Times New Roman",serif;font-size:clamp(1rem,1.35vw,1.3rem);font-weight:400;letter-spacing:.055em;line-height:1.35}
.brand-message .journey-slogan span{padding:0 .18em;color:#b8eb58;font-family:inherit}
@media(max-width:850px){.brand-message .journey-slogan{margin:.35rem 0 0;font-size:.82rem;letter-spacing:.035em}}

/* Institution portal: clear incident, notice, and safe-delivery actions */
.response-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin:0 0 1rem}.response-action{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;min-height:84px;padding:.85rem;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--ink);text-align:left;box-shadow:0 6px 18px rgba(8,47,73,.05);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.response-action:hover{transform:translateY(-2px);box-shadow:0 12px 25px rgba(8,47,73,.09)}.response-action>span:first-child{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:#fff1cf;font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif;font-size:1.15rem}.response-action>span:nth-child(2)>*{display:block}.response-action strong{font-size:.8rem}.response-action small{margin-top:.2rem;color:var(--muted);font-size:.65rem;line-height:1.35}.response-action b{padding:.35rem .48rem;border-radius:8px;background:#f1f6f6;color:var(--teal);font-size:.61rem}.response-action.notice{border-color:#c9e7e7}.response-action.notice>span:first-child{background:#e6f7f5}.response-action.guardian{border-color:#efd1d1}.response-action.guardian>span:first-child{background:#faeaea}.response-action.guardian b{background:#faeaea;color:#a03e3e}@media(max-width:1000px){.response-guide{grid-template-columns:1fr}.response-action{min-height:72px}}@media(max-width:620px){.response-action{grid-template-columns:auto 1fr}.response-action b{display:none}}

/* Institution reports: separate daily trips from incident follow-up */
.report-tabs{display:inline-flex;gap:.3rem;margin:0 0 1rem;padding:.3rem;border:1px solid var(--line);border-radius:13px;background:#eef4f4}.report-tabs button{min-height:38px;padding:.5rem .75rem;border:0;border-radius:9px;background:transparent;color:var(--muted);font-size:.76rem;font-weight:850}.report-tabs button.is-active{background:#fff;color:var(--navy);box-shadow:0 4px 12px rgba(8,47,73,.09)}.report-status.activa,.report-status.en-espera{background:#fff1d5;color:#865f10}.report-status.resuelta{background:#e8f6e6;color:#47783d}.report-footnote{margin:.8rem 0 0;color:var(--muted);font-size:.72rem}.report-empty-row{padding:1.4rem!important;color:var(--muted);text-align:center!important}@media(max-width:620px){.report-tabs{display:grid;grid-template-columns:1fr 1fr;width:100%}.report-tabs button{font-size:.7rem}}
.report-generation-status{display:inline-flex;margin-top:.55rem;padding:.38rem .58rem;border-radius:9px;background:#e8f7f3;color:#16776f;font-size:.75rem;font-weight:800}

/* Institution settings: active rules first, identities second */
.settings-overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin-bottom:1rem}.settings-overview article{display:flex;align-items:center;gap:.7rem;min-height:76px;padding:.8rem;border:1px solid rgba(8,47,73,.09);border-radius:15px;background:#fff;box-shadow:0 5px 16px rgba(8,47,73,.045)}.settings-overview article>span{display:grid;place-items:center;width:40px;height:40px;flex:0 0 40px;border-radius:12px;background:linear-gradient(145deg,#e8f7f4,#fff2ce);font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif}.settings-overview small,.settings-overview strong{display:block}.settings-overview small{color:var(--muted);font-size:.7rem}.settings-overview strong{margin-top:.15rem;color:var(--navy);font-size:.9rem}.settings-rule-note{margin:.9rem 0;padding:.75rem .8rem;border-left:4px solid var(--teal);border-radius:0 11px 11px 0;background:#eff8f7;color:#486269;font-size:.76rem;line-height:1.5}.settings-form>.primary{min-width:150px}.settings-family-accounts{border-top:4px solid var(--sky)}.settings-users{border-top:4px solid var(--teal)}.settings-demo{border-style:dashed;background:#fbfcfc}.settings-summary{border-color:#bee0c2;background:linear-gradient(145deg,#f1faf1,#fff)}@media(max-width:1050px){.settings-overview{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.settings-overview{grid-template-columns:1fr}.settings-overview article{min-height:66px}.settings-form>.primary{width:100%}}

/* EV SCHOOL administration: license controls without student-data access */
.central-portal-fieldset{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem;margin:1rem 0;padding:1rem;border:1px solid var(--line);border-radius:14px}.central-portal-fieldset legend{padding:0 .35rem;color:var(--navy);font-size:.78rem;font-weight:850}.central-portal-fieldset .check{justify-content:flex-start;padding:.6rem .65rem;border:1px solid var(--line);border-radius:10px;background:#f8fbfb}.central-portal-fieldset .check.locked{color:var(--muted)}.central-data-boundary{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:.7rem;padding:.8rem;border:1px solid #cce7e3;border-radius:13px;background:#f1faf8}.central-data-boundary>span{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#dff4ef;font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif}.central-data-boundary p{margin:0}.central-data-boundary strong,.central-data-boundary small{display:block}.central-data-boundary strong{font-size:.8rem}.central-data-boundary small{margin-top:.18rem;color:var(--muted);font-size:.72rem;line-height:1.45}@media(max-width:520px){.central-portal-fieldset{grid-template-columns:1fr}}
.preview-note{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:0 0 18px;padding:11px 16px;border:1px solid #e8dba7;border-radius:12px;background:#fff9e8;color:#58491d;font-size:12px;line-height:1.5}.preview-note strong{white-space:nowrap}.preview-note button{margin-left:auto;border:0;padding:5px 0;background:transparent;color:inherit;text-decoration:underline;font:inherit;cursor:pointer}.build-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:24px 0}.build-status-grid h3{margin:0 0 10px;font-size:17px}.build-status-grid ul{padding-left:20px;margin:0;line-height:1.6}.build-status-grid li{margin:8px 0}#buildStatusDialog{max-width:760px;color:#15384b}#buildStatusDialog p{line-height:1.6}#studentQr .student-qr-pattern[hidden]{display:none}.driver-bottom-bar{grid-template-columns:1fr 1.2fr 1fr 1fr;width:min(640px,calc(100% - 1.4rem))}@media(max-width:600px){.build-status-grid{grid-template-columns:1fr;gap:16px}.preview-note{font-size:11px;padding:9px 12px}.driver-bottom-bar button{font-size:.64rem}}
.driver-run-picker{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0 0 .75rem;padding:.7rem .85rem;border:1px solid #cbdcdf;border-radius:14px;background:white;color:var(--navy);font-weight:850}.driver-run-picker[hidden]{display:none}.driver-run-picker span{font-size:.82rem}.driver-run-picker select{min-height:42px;max-width:560px;border:1px solid #bfd2d6;border-radius:11px;background:#f7fbfb;color:var(--navy);font:inherit;font-size:.82rem;padding:.45rem .7rem}@media(max-width:600px){.driver-run-picker{align-items:stretch;flex-direction:column;gap:.4rem}.driver-run-picker select{width:100%;max-width:none}}
.driver-assignment{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(135px,.8fr) minmax(135px,.8fr) auto;align-items:end;gap:.7rem;margin:1rem 0;padding:1rem;border:1px solid #cfe4e2;border-radius:15px;background:linear-gradient(135deg,#f3fbfa,#f8fbf4)}.driver-assignment h4{margin:.12rem 0 .2rem;font-size:.88rem}.driver-assignment p{margin:0;color:var(--muted);font-size:.66rem;line-height:1.4}.driver-assignment label{margin:0;color:var(--muted);font-size:.64rem;font-weight:800}.driver-assignment select{margin-top:.3rem;min-height:40px;background:white}.driver-assignment button{min-height:40px;white-space:nowrap}@media(max-width:980px){.driver-assignment{grid-template-columns:1fr 1fr}.driver-assignment>div{grid-column:1/-1}}@media(max-width:620px){.driver-assignment{grid-template-columns:1fr}.driver-assignment>div{grid-column:auto}.driver-assignment button{width:100%}}
.maintenance-form{display:grid;grid-template-columns:minmax(190px,1.2fr) repeat(4,minmax(120px,.8fr)) auto;align-items:end;gap:.7rem;margin:1rem 0;padding:1rem;border:1px solid #ead7a5;border-radius:15px;background:linear-gradient(135deg,#fffaf0,#f7fbf8)}.maintenance-form h4{margin:.12rem 0 .2rem;font-size:.88rem}.maintenance-form p{margin:0;color:var(--muted);font-size:.66rem;line-height:1.4}.maintenance-form label{margin:0;color:var(--muted);font-size:.64rem;font-weight:800}.maintenance-form input{margin-top:.3rem;min-height:40px;background:white}.maintenance-form button{min-height:40px;white-space:nowrap}@media(max-width:1120px){.maintenance-form{grid-template-columns:1fr 1fr}.maintenance-form>div{grid-column:1/-1}}@media(max-width:620px){.maintenance-form{grid-template-columns:1fr}.maintenance-form>div{grid-column:auto}.maintenance-form button{width:100%}}
.risk-overview{margin-bottom:1rem}.risk-overview .panel-head{margin-bottom:.7rem}.risk-overview .status-pill.is-critical{background:#fff0ec;color:#9c3b2e}.risk-overview-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem}.risk-overview-item{display:grid;grid-template-columns:34px minmax(0,1fr);gap:.55rem;align-items:center;padding:.72rem;border:1px solid var(--line);border-radius:13px;background:#f8fbfb;color:var(--ink);text-align:left}.risk-overview-item:hover{border-color:#8bbfbd;background:#f1faf8}.risk-overview-item>span:first-child{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--teal-soft)}.risk-overview-item strong,.risk-overview-item small{display:block}.risk-overview-item strong{font-size:.72rem}.risk-overview-item small{margin-top:.12rem;color:var(--muted);font-size:.62rem}.risk-overview-item b{grid-column:2;color:#6d7e85;font-size:.63rem}.risk-overview-item.is-critical{border-color:#edc7be;background:#fff8f6}.risk-overview-item.is-critical b{color:#a13d30}.risk-overview-empty{display:flex;align-items:center;gap:.7rem;padding:.7rem;border-radius:13px;background:#f2faf4}.risk-overview-empty>span{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;background:#dff2df;color:#39793a;font-weight:900}.risk-overview-empty strong,.risk-overview-empty small{display:block}.risk-overview-empty strong{font-size:.76rem}.risk-overview-empty small{margin-top:.14rem;color:var(--muted);font-size:.66rem}.driver-access.is-warning{border-color:#edc7be;background:#fff8f6}.driver-access.is-warning>span,.driver-access.is-warning>b{background:#fff0ec;color:#9c3b2e}@media(max-width:1120px){.risk-overview-list{grid-template-columns:1fr 1fr}}@media(max-width:620px){.risk-overview-list{grid-template-columns:1fr}}
.qr-empty-mark{display:grid;place-items:center;width:100%;height:100%;border:2px dashed #b8d2d5;border-radius:14px;background:linear-gradient(145deg,#eef8f7,#f8fbe9);color:var(--teal);font-size:2rem;font-weight:950;letter-spacing:-.08em}.student-qr-download{margin-top:1rem;border:1px solid #b9d3d5;border-radius:11px;background:#f3faf9;color:var(--navy);padding:.65rem .9rem;font:inherit;font-size:.78rem;font-weight:850}.student-qr-admin{display:grid;grid-template-columns:190px 1fr;align-items:center;gap:1rem;padding:1rem;border:1px solid #cfe1e3;border-radius:16px;background:linear-gradient(145deg,#f5fbfa,#fff)}.student-qr-admin-preview{display:grid;place-items:center;width:190px;height:190px;padding:10px;border:1px solid var(--line);border-radius:16px;background:white}.student-qr-admin-preview svg{width:100%;height:100%;shape-rendering:crispEdges}.student-qr-admin-preview .qr-empty-mark{font-size:1.5rem}.student-qr-admin-copy h4{margin:.2rem 0;font-size:1.05rem}.student-qr-admin-copy p{margin:.35rem 0 .8rem;color:var(--muted);font-size:.76rem;line-height:1.5}.student-qr-admin-copy>small{display:block;margin-top:.75rem;color:var(--muted);font-size:.68rem}.student-qr-admin-actions{display:flex;flex-wrap:wrap;gap:.55rem}.danger-soft{border:1px solid #eccaca;border-radius:10px;background:#fff5f5;color:#a54545;padding:.62rem .8rem;font:inherit;font-size:.75rem;font-weight:850}.qr-admin-loading{display:grid;place-items:center;min-height:210px;color:var(--muted);text-align:center}.qr-admin-loading strong,.qr-admin-loading small{display:block}.qr-admin-loading small{margin-top:.3rem;font-size:.72rem}.qr-admin-loading .spinner{width:28px;height:28px;margin-bottom:.7rem;border:3px solid #dce8e9;border-top-color:var(--teal);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:620px){.detail-tabs{overflow-x:auto}.student-qr-admin{grid-template-columns:1fr}.student-qr-admin-preview{width:min(220px,100%);height:auto;aspect-ratio:1;margin:auto}.student-qr-admin-actions{display:grid;grid-template-columns:1fr}.student-qr-admin-actions button{width:100%}}
.family-qr-card{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:1.25rem;margin-top:1rem;border-top:5px solid var(--violet);background:radial-gradient(circle at 100% 0,rgba(255,207,84,.2),transparent 28%),#fff}.family-qr-preview{display:grid;place-items:center;width:180px;height:180px;padding:10px;border:1px solid var(--line);border-radius:17px;background:#fff}.family-qr-preview svg{width:100%;height:100%;shape-rendering:crispEdges}.family-qr-copy h3{margin:.25rem 0}.family-qr-copy p{margin:.2rem 0 .75rem;color:var(--muted);font-size:.875rem;line-height:1.5}.family-qr-copy>b{display:inline-flex;padding:.42rem .65rem;border-radius:9px;background:#eaf7e9;color:#39793a;font-size:.75rem}.family-qr-copy>small{display:block;margin:.65rem 0;color:var(--muted);font-size:.75rem}.family-qr-copy button{width:max-content}@media(max-width:620px){.family-qr-card{grid-template-columns:1fr;text-align:center}.family-qr-preview{width:min(220px,100%);height:auto;aspect-ratio:1;margin:auto}.family-qr-copy button{width:100%}}
.family-student-switcher{display:grid;gap:.12rem;min-width:150px}.family-student-switcher>span{color:var(--muted);font-size:.62rem;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.family-student-switcher select{min-height:38px;max-width:190px;border:1px solid #c6dadd;border-radius:11px;background:#f7fbfb;color:var(--navy);padding:.4rem 2rem .4rem .65rem;font:inherit;font-size:.76rem;font-weight:850}@media(max-width:900px){.family-student-switcher{min-width:125px}.family-student-switcher select{max-width:150px}}@media(max-width:680px){.family-student-switcher{position:absolute;left:50%;bottom:-50px;transform:translateX(-50%);width:min(320px,calc(100vw - 2rem));padding:.45rem .6rem;border:1px solid rgba(8,47,73,.1);border-radius:13px;background:rgba(255,255,255,.97);box-shadow:0 8px 22px rgba(8,47,73,.12)}.family-student-switcher select{width:100%;max-width:none;min-height:34px}.family-topbar:has(.family-student-switcher:not([hidden]))+ .family-main{padding-top:4.4rem}}
.driver-sync-status{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.15rem .65rem;margin:0 0 .75rem;padding:.7rem .85rem;border:1px solid #e6c875;border-radius:14px;background:#fff8df;color:#6f5614;box-shadow:0 5px 16px rgba(111,86,20,.08)}.driver-sync-status>span{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:#ffe9a8;font-size:1.1rem}.driver-sync-status strong{font-size:.82rem}.driver-sync-status small{font-size:.7rem}.driver-sync-status button{grid-column:3;grid-row:1/3;min-height:36px;padding:.48rem .7rem;border:1px solid currentColor;border-radius:10px;background:#fff;color:inherit;font:inherit;font-size:.72rem;font-weight:800;cursor:pointer}.driver-sync-status.is-syncing>span{animation:spin .8s linear infinite}.driver-sync-status.is-review{border-color:#e49a89;background:#fff1ed;color:#8a3025}.driver-sync-status.is-review>span{background:#ffd9d0}@media(max-width:620px){.driver-sync-status{grid-template-columns:auto 1fr;margin-top:.2rem}.driver-sync-status button{grid-column:2;grid-row:3;justify-self:start;margin-top:.35rem}}
.notification-dialog-body{padding:1.3rem}.notification-summary{margin:-.15rem 0 .9rem;color:var(--muted);font-size:.76rem;line-height:1.5}.notification-center-list{display:grid;gap:.6rem;max-height:min(52vh,440px);overflow:auto}.notification-center-item{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.78rem;border:1px solid var(--line);border-radius:14px;background:#f9fbfb;color:var(--ink);text-align:left}.notification-center-item:hover{border-color:#9fc9c7;background:#f2faf9}.notification-center-item>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--teal-soft);font-size:1.15rem}.notification-center-item.is-critical>span{background:#fff0ec}.notification-center-item strong,.notification-center-item small{display:block}.notification-center-item strong{font-size:.82rem}.notification-center-item small{margin-top:.2rem;color:var(--muted);font-size:.68rem;line-height:1.4}.notification-center-item time{color:var(--muted);font-size:.66rem;white-space:nowrap}.notification-center-empty{padding:1.2rem;border:1px dashed #c7dadd;border-radius:14px;background:#f8fbfb;text-align:center}.notification-center-empty span{display:block;margin-bottom:.35rem;font-size:1.35rem}.notification-center-empty strong,.notification-center-empty small{display:block}.notification-center-empty small{margin-top:.3rem;color:var(--muted);font-size:.72rem}@media(max-width:520px){.notification-center-item{grid-template-columns:38px minmax(0,1fr)}.notification-center-item>span{width:38px;height:38px}.notification-center-item time{grid-column:2}}
.push-device-status{margin:0 0 .9rem;padding:.7rem .8rem;border:1px solid #d7e5e7;border-radius:12px;background:#f7fafb;color:var(--muted);font-size:.72rem;line-height:1.45}.push-device-status.is-ready{border-color:#acd8ce;background:#effaf6;color:#17634f}.push-device-status.is-blocked{border-color:#ecd2ca;background:#fff6f3;color:#8a3e2a}@media(max-width:520px){.notification-dialog-body>.dialog-actions{align-items:stretch;flex-direction:column}.notification-dialog-body>.dialog-actions button{width:100%}}
.login-utilities{display:flex;justify-content:center;flex-wrap:wrap;gap:.35rem .8rem}.install-dialog-body{padding:1.3rem}.install-app-mark{display:flex;align-items:center;gap:.8rem;padding:.85rem;border:1px solid #cce1df;border-radius:15px;background:linear-gradient(135deg,#f1fbfa,#f8fbe9)}.install-app-mark>span{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:linear-gradient(135deg,var(--teal),var(--green));color:white;font-size:1rem;font-weight:950}.install-app-mark strong,.install-app-mark small{display:block}.install-app-mark strong{font-size:1.05rem}.install-app-mark small{margin-top:.18rem;color:var(--muted);font-size:.72rem}.install-dialog-body>p{color:var(--muted);font-size:.78rem;line-height:1.55}.install-steps{display:grid;gap:.6rem;margin:.9rem 0;padding:0;list-style:none;counter-reset:install}.install-steps li{counter-increment:install;display:grid;grid-template-columns:28px 1fr;align-items:center;gap:.65rem;padding:.65rem .7rem;border:1px solid var(--line);border-radius:12px;background:#fafcfc;font-size:.76rem}.install-steps li::before{content:counter(install);display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--navy);color:white;font-weight:900}
.family-chat-card{margin-bottom:1.2rem;border-top:4px solid var(--teal);background:linear-gradient(145deg,#fff,#f7fcfb)}.family-chat-card-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;margin-bottom:.85rem}.family-chat-card-head>span{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:linear-gradient(145deg,var(--mint),var(--sun-soft));font-size:1.15rem}.family-chat-card-head strong,.family-chat-card-head small{display:block}.family-chat-card-head strong{font-size:.95rem}.family-chat-card-head small{margin-top:.18rem;color:var(--muted);font-size:.78rem}.family-message-heading{margin:1.3rem 0 .8rem}.family-message-heading h2{margin:.18rem 0 0;font-size:1.15rem}@media(max-width:680px){.family-chat-card-head{grid-template-columns:auto minmax(0,1fr)}.family-chat-card-head button{grid-column:1/-1;width:100%}}

/* Device alerts: explicit opt-in, scoped to the signed-in account */
button.family-child-event{width:100%;border:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer}button.family-child-event:hover{box-shadow:inset 0 0 0 1px rgba(8,124,131,.22)}button.family-child-event.is-enabled>span{background:var(--green)}.live-alert-toggle.is-enabled{border-color:#88c797;background:#effaef;color:#39733d}.live-alert-toggle [data-live-alert-label]::before{content:'🔔 ';font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif}

/* Final driver controls: five balanced actions with QR in the true center. */
.driver-bottom-bar{grid-template-columns:repeat(5,1fr);width:min(680px,calc(100% - 1.4rem))}.driver-bottom-bar .scan{transform:translateY(-7px);min-height:58px;border-radius:16px}.driver-bottom-bar .live-alert-toggle{width:auto;height:auto;border:0;box-shadow:none}.driver-map-links button{min-width:62px}.driver-map-links button img{display:block;max-width:52px;max-height:34px;object-fit:contain}.driver-map-links button.google img{width:30px;height:34px}.driver-map-links button.waze img{width:52px;height:auto}@media(max-width:600px){.driver-bottom-bar button{font-size:.59rem}.driver-bottom-bar button span{font-size:.95rem}.driver-bottom-bar .scan{font-size:.6rem}}
.driver-bottom-bar .live-alert-toggle [data-live-alert-label]::before{content:none}.driver-bottom-bar .live-alert-toggle [data-live-alert-label]{font-family:inherit;font-size:inherit}

/* Role-specific tutorials remain available from every portal. */
.portal-tutorial-dialog{width:min(560px,calc(100vw - 1.4rem));padding:1.25rem}.portal-tutorial-progress{height:7px;margin:.4rem 0 1.25rem;overflow:hidden;border-radius:99px;background:#e4edef}.portal-tutorial-progress i{display:block;width:20%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),var(--green));transition:width .22s ease}.portal-tutorial-step{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:start;min-height:170px;padding:1.2rem;border:1px solid var(--line);border-radius:18px;background:linear-gradient(145deg,#f7fbfb,#eff8f5)}.portal-tutorial-step>span{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--navy);color:#fff;font-size:1.05rem;font-weight:900}.portal-tutorial-step h3{margin:.2rem 0 .55rem;font-size:1.1rem}.portal-tutorial-step p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.65}@media(max-width:520px){.portal-tutorial-dialog{padding:.9rem}.portal-tutorial-step{min-height:190px;padding:1rem}.date-chip{display:none}}
.live-alert-icon.is-enabled{border-color:#8bc996;background:#edf9ee;color:#39733d}.live-alert-icon>span[aria-hidden]{font-family:"Apple Color Emoji","Segoe UI Emoji",sans-serif}

/* Family-controlled authorized recipients */
.family-authorized-actions{display:flex;align-items:center;gap:.4rem}.family-authorized-actions .icon-button{width:30px;height:30px;border-color:#f1caca;color:#a33;background:#fff8f8}

/* Family initial setup */
.family-setup-panel{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem;border-top:4px solid var(--sun);background:linear-gradient(145deg,#fff,#fffaf0)}.family-setup-panel h3{margin:.15rem 0}.family-setup-panel p{margin:.2rem 0 0;color:var(--muted);font-size:.82rem}.family-setup-steps{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.45rem}.family-setup-steps span{display:flex;align-items:center;gap:.35rem;padding:.45rem .65rem;border:1px solid #e6d8b7;border-radius:999px;background:#fff7e4;color:#775d1c;font-size:.76rem;font-weight:800}.family-setup-steps span.is-ready{border-color:#add8b4;background:#edf9ef;color:#397342}.family-setup-steps i{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.8);font-style:normal}@media(max-width:680px){.family-setup-panel{align-items:flex-start;flex-direction:column}.family-setup-steps{justify-content:flex-start}}

/* Route preflight */
.route-preflight{margin:1rem 0;padding:1rem;border:1px solid #ead9ad;border-radius:14px;background:#fffaf0}.route-preflight.is-confirmed{border-color:#bfe0d5;background:#f1faf7}.route-preflight-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.route-preflight-head h4{margin:.15rem 0 0;font-size:.9rem}.route-preflight-head>b{padding:.32rem .52rem;border-radius:8px;font-size:.68rem;white-space:nowrap}.route-preflight-head>b.pending{background:#fff0ca;color:#7a5c12}.route-preflight-head>b.ready{background:#e7f3ff;color:#24658b}.route-preflight-head>b.confirmed{background:#dff3ec;color:#236a57}.route-preflight ul{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:.8rem 0;padding:0;list-style:none}.route-preflight li{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:.55rem;padding:.58rem;border-radius:10px;background:#fff}.route-preflight li>span{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#fff0ca;color:#7a5c12;font-size:.72rem;font-weight:900}.route-preflight li.complete>span{background:#dff3ec;color:#236a57}.route-preflight li strong,.route-preflight li small{display:block}.route-preflight li strong{font-size:.72rem}.route-preflight li small{margin-top:.12rem;color:var(--muted);font-size:.63rem}.route-preflight>button{width:100%;margin-top:.25rem}.route-preflight>p{margin:.7rem 0 0;color:#236a57;font-size:.7rem;font-weight:750}@media(max-width:620px){.route-preflight ul{grid-template-columns:1fr}.route-preflight-head{align-items:flex-start;flex-direction:column}}

/* Demo access */
.central-access-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.demo-read-only button:disabled{cursor:not-allowed}.demo-read-only form button[type="submit"]:disabled{opacity:.5}.demo-read-only .commercial-demo-banner{background:#173f57}.demo-read-only .commercial-demo-banner strong{color:#ffe08a}@media(max-width:620px){.central-access-actions{width:100%;justify-content:stretch}.central-access-actions button{flex:1}}

/* Physical pilot validation */
.pilot-test-start{margin-bottom:1rem;border-top:4px solid var(--violet);background:linear-gradient(145deg,#fff,#f8f7ff)}.pilot-test-start .panel-head p{max-width:680px;margin:.28rem 0 0;color:var(--muted);font-size:.76rem;line-height:1.45}.pilot-test-form{display:grid;grid-template-columns:1fr .8fr 1.2fr 1.2fr auto;align-items:end;gap:.7rem;margin-top:1rem}.pilot-test-form label{display:grid;gap:.28rem;color:var(--muted);font-size:.67rem;font-weight:800}.pilot-test-form input,.pilot-test-form select{min-width:0;height:42px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:.55rem .65rem;color:var(--ink);font:inherit;font-size:.76rem}.pilot-test-form button{height:42px;white-space:nowrap}.pilot-test-layout{display:grid;grid-template-columns:minmax(260px,.7fr) minmax(0,1.6fr);gap:1rem}.pilot-session-list{display:grid;gap:.55rem}.pilot-session{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:.65rem;width:100%;padding:.65rem;border:1px solid var(--line);border-radius:13px;background:#fafcfc;color:var(--ink);text-align:left;font:inherit;cursor:pointer}.pilot-session:hover,.pilot-session.is-active{border-color:#7bbeba;background:#f0f9f8}.pilot-session>span{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--teal-soft);font-size:.7rem;font-weight:900}.pilot-session strong,.pilot-session small{display:block}.pilot-session strong{font-size:.8rem}.pilot-session small{margin-top:.15rem;color:var(--muted);font-size:.65rem}.pilot-session>b,.pilot-overall{padding:.3rem .48rem;border-radius:8px;background:#fff0ca;color:#765a15;font-size:.63rem;white-space:nowrap}.pilot-session>b.passed,.pilot-overall.passed{background:#dff3ec;color:#236a57}.pilot-session>b.failed,.pilot-overall.failed{background:#fff0ec;color:#983c30}.pilot-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.pilot-detail-head h3{margin:.15rem 0}.pilot-detail-head p{margin:.2rem 0 0;color:var(--muted);font-size:.7rem}.pilot-progress{height:7px;margin:.8rem 0 1rem;border-radius:999px;background:#e8eeee;overflow:hidden}.pilot-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),var(--green));transition:width .2s ease}.pilot-check-list{display:grid;gap:.55rem}.pilot-check{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:.65rem;padding:.65rem;border:1px solid var(--line);border-radius:13px;background:#fbfcfc}.pilot-check>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#eef3f3;color:var(--muted);font-size:.72rem;font-weight:900}.pilot-check.passed{border-color:#b9ded2;background:#f4fbf8}.pilot-check.passed>span{background:#dff3ec;color:#236a57}.pilot-check.failed{border-color:#ecc8bf;background:#fff8f6}.pilot-check.failed>span{background:#ffe5df;color:#983c30}.pilot-check strong,.pilot-check small{display:block}.pilot-check strong{font-size:.75rem}.pilot-check small{margin-top:.12rem;color:var(--muted);font-size:.64rem}.pilot-check input{width:100%;margin-top:.38rem;border:1px solid #d7e2e3;border-radius:8px;background:#fff;padding:.4rem .5rem;color:var(--ink);font:inherit;font-size:.66rem}.pilot-check-actions{display:flex;gap:.35rem}.pilot-check-actions button{border:1px solid #bad5d3;border-radius:9px;background:#fff;padding:.45rem .55rem;color:#25665e;font:inherit;font-size:.65rem;font-weight:850;cursor:pointer}.pilot-check-actions .pilot-fail{border-color:#e4c3bb;color:#963d31}.pilot-check-actions button:disabled{opacity:.48;cursor:not-allowed}.pilot-finalize{width:100%;margin-top:.8rem}.pilot-closed-note{margin:.8rem 0 0;padding:.65rem;border-radius:10px;background:#f3f7f7;color:var(--muted);font-size:.7rem;text-align:center}@media(max-width:1100px){.pilot-test-form{grid-template-columns:1fr 1fr}.pilot-test-form button{grid-column:1/-1}.pilot-test-layout{grid-template-columns:1fr}}@media(max-width:620px){.pilot-test-form{grid-template-columns:1fr}.pilot-test-form button{grid-column:auto}.pilot-check{grid-template-columns:32px minmax(0,1fr)}.pilot-check-actions{grid-column:2}.pilot-detail-head{flex-direction:column}}

/* EV SCHOOL final visual system — shared by every portal */
:root{
  --navy:#07334d;
  --navy-2:#0a4964;
  --teal:#0b9691;
  --teal-soft:#e8f7f5;
  --green:#58ad62;
  --gold:#c99932;
  --ink:#173344;
  --muted:#617985;
  --line:#d8e5e8;
  --surface:#fff;
  --bg:#f4f8f8;
  --shadow:0 14px 38px rgba(7,51,77,.09);
  --radius:18px;
  --font-ui:"Avenir Next","SF Pro Text","Segoe UI Variable","Segoe UI",Inter,ui-sans-serif,system-ui,-apple-system,sans-serif;
}
html{font-family:var(--font-ui);font-size:16px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
body{background:var(--bg);color:var(--ink)}
button,input,select,textarea{font-family:inherit}
h1,h2,h3,h4{color:var(--ink);letter-spacing:-.022em;text-wrap:balance}
p{line-height:1.6}

/* One consistent, compact identity mark in every header. */
.brand-lockup{gap:.72rem;min-width:max-content}
.brand-mark{width:46px;height:46px;border-radius:14px 14px 14px 5px;background:linear-gradient(145deg,#0b9f9a 0%,#51ae69 100%);box-shadow:0 8px 20px rgba(11,150,145,.22);font-size:.9rem;letter-spacing:-.035em;transition:none}
.brand-lockup:hover .brand-mark{transform:none}
.brand-lockup strong{font-size:1.05rem;line-height:1.05;letter-spacing:.075em}
.brand-lockup small{margin-top:.18rem;font-size:.66rem;line-height:1.2;letter-spacing:.055em}
.sidebar-brand .brand-mark,.central-sidebar .brand-mark{width:42px;height:42px}
.student-brand .brand-mark,.family-brand .brand-mark,.driver-brand .brand-mark{width:44px;height:44px}

/* Typography and hierarchy stay readable without changing information density. */
.eyebrow{color:#087e7a;font-size:.72rem;letter-spacing:.095em}
.welcome-row h2,.section-head h2{font-size:clamp(1.55rem,2.1vw,1.9rem)}
.panel-head h3{font-size:1.08rem}
.muted,.section-head p,.welcome-row p{color:var(--muted)}
label{font-size:.86rem}
input,select{min-height:48px;border-color:#cfdfe3;border-radius:11px}

/* Unified surfaces, depth and controls. */
.panel,.stat-card,.route-card,.asset-card,.authorization-card,.incident-card,.family-child-card,.student-route-card,.driver-map-panel,.driver-manifest,.central-ticket{border-color:var(--line);border-radius:var(--radius);box-shadow:0 5px 18px rgba(7,51,77,.05)}
.panel:hover,.stat-card:hover{border-color:#c9dddf}
.primary,.secondary,.icon-button{transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.primary{background:linear-gradient(135deg,var(--navy),#095b71);box-shadow:0 8px 20px rgba(7,51,77,.16)}
.primary:hover{background:linear-gradient(135deg,#0a405d,#08717b);transform:translateY(-1px)}
.secondary:hover{border-color:#8ebdbd;background:#f3faf9}
.icon-button:hover{border-color:#9cc8c6;background:#f1f9f8}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(11,150,145,.25);outline-offset:2px}

/* Institutional navigation. */
.sidebar,.central-sidebar{background:linear-gradient(180deg,#062f48 0%,#073b54 64%,#07565e 125%)}
.sidebar-brand{padding:.05rem .55rem 1.35rem}
.nav-item{min-height:44px;border-radius:10px;color:#c7d9df}
.nav-item.is-active{background:rgba(255,255,255,.12);box-shadow:inset 3px 0 0 #75c66f}
.topbar,.student-topbar,.family-topbar,.driver-topbar{border-bottom:1px solid var(--line);box-shadow:0 3px 14px rgba(7,51,77,.045);background:rgba(255,255,255,.97);backdrop-filter:blur(14px)}
.topbar{height:86px}
.content,.central-content,.student-main,.family-main,.driver-main{background:var(--bg)}

/* Login keeps the approved story while improving corporate finish. */
.login-panel{background:linear-gradient(180deg,#fff 0%,#f5faf9 100%)}
.login-card h2{color:var(--navy);font-weight:750}
.role-picker{border:1px solid #dfe9eb;background:#f0f5f6}
.role{min-height:64px}
.role.is-active{color:var(--navy);box-shadow:0 5px 16px rgba(7,51,77,.09)}
.login-brand .brand-lockup strong,.brand-message h1{color:#fff}
.brand-lockup--large .brand-mark{background:#fff;color:var(--teal);box-shadow:0 10px 28px rgba(0,0,0,.16)}
.brand-message{border-radius:20px}

/* Status colors are semantic and consistent across all five portals. */
.status-ok,.status-tag,.pilot-session>b.passed,.pilot-overall.passed{background:#e8f6ea;color:#32703a}
.status-tag.draft,.pilot-session>b,.pilot-overall{background:#fff3d6;color:#775910}
.pilot-session>b.failed,.pilot-overall.failed{background:#fff0ec;color:#8f382f}
.stat-icon.teal{color:#087c78;background:#e5f5f3}
.stat-icon.green{color:#3f8747;background:#e9f5e9}
.stat-icon.blue{color:#2f7299;background:#e8f2f8}
.stat-icon.gold{color:#896719;background:#fff5dc}

/* Dialogs and feedback feel part of the same product. */
.dialog{border:1px solid rgba(255,255,255,.55);border-radius:20px;box-shadow:0 30px 90px rgba(4,35,54,.28)}
.dialog::backdrop{background:rgba(4,29,44,.6)}
.toast{border-radius:12px;background:#07334d}

/* Mobile polish and safe spacing for fixed navigation. */
@media(max-width:850px){
  .brand-mark{width:42px;height:42px}
  .login-brand{border-radius:0 0 26px 26px}
  .topbar,.student-topbar,.family-topbar,.driver-topbar{min-height:72px}
}

.super-admin-portal-controls{
  position:fixed;
  z-index:95;
  top:calc(env(safe-area-inset-top,0px) + 12px);
  right:14px;
  display:flex;
  gap:8px;
  align-items:center;
}
.super-admin-portal-controls[hidden]{display:none}
.super-admin-portal-controls button{
  min-height:42px;
  padding:0 16px;
  border:1px solid rgba(255,255,255,.45);
  border-radius:999px;
  background:linear-gradient(135deg,#073b5a,#087184);
  color:#fff;
  font:700 14px/1 inherit;
  box-shadow:0 10px 28px rgba(5,48,72,.24);
  cursor:pointer;
}
.portal-switcher-dialog{width:min(620px,calc(100vw - 28px))}
.portal-switcher-copy{margin:-4px 0 18px;color:var(--muted,#647b86)}
.portal-switcher-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.portal-switcher-grid button{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:82px;
  padding:12px;
  border:1px solid rgba(8,113,132,.2);
  border-radius:18px;
  background:rgba(255,255,255,.88);
  color:#073b5a;
  text-align:left;
  cursor:pointer;
}
.portal-switcher-grid button:last-child{grid-column:1/-1}
.portal-switcher-grid img{width:54px;height:54px;object-fit:contain;border-radius:14px}
.portal-switcher-grid span{display:grid;gap:3px}
.portal-switcher-grid strong{font-size:16px}
.portal-switcher-grid small{color:#647b86}
@media(max-width:640px){
  .super-admin-portal-controls{top:calc(env(safe-area-inset-top,0px) + 8px);right:8px;gap:6px}
  .super-admin-portal-controls button{min-height:38px;padding:0 12px;font-size:12px}
  .portal-switcher-grid{grid-template-columns:1fr}
  .portal-switcher-grid button:last-child{grid-column:auto}
}
@media(max-width:620px){
  html{font-size:16px}
  .content,.central-content,.student-main,.family-main,.driver-main{padding-left:1rem;padding-right:1rem}
  .panel,.stat-card,.route-card,.student-route-card{border-radius:15px}
  .primary,.secondary{min-height:46px}
  .brand-lockup strong{font-size:.96rem}
  .brand-lockup small{font-size:.62rem}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* Final EV SCHOOL shield: the same approved identity is used in every portal. */
.brand-mark.brand-logo{
  display:block;
  object-fit:contain;
  padding:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  filter:drop-shadow(0 5px 9px rgba(4,47,73,.18));
}
.brand-lockup--large .brand-mark.brand-logo{
  width:64px;
  height:64px;
  background:transparent;
  box-shadow:none;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.24));
}
.phone-brand .phone-logo{
  width:34px;
  height:34px;
  object-fit:contain;
  filter:drop-shadow(0 4px 8px rgba(4,47,73,.2));
}
@media(max-width:850px){
  .brand-lockup--large .brand-mark.brand-logo{width:54px;height:54px}
}

/* Mobile access: keep the full sign-in flow in one screen. */
@media(max-width:850px){
  #loginView.login-shell{
    display:block;
    height:100svh;
    min-height:100svh;
    overflow:hidden;
    background:linear-gradient(180deg,#fff 0%,#f4faf9 100%);
  }
  #loginView .login-brand{display:none}
  #loginView .login-panel{
    display:block;
    height:100svh;
    min-height:100svh;
    margin:0;
    padding:max(.65rem,env(safe-area-inset-top)) 1rem max(.65rem,env(safe-area-inset-bottom));
    overflow:hidden;
  }
  #loginView .login-card{
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    gap:1rem;
    width:min(470px,100%);
    height:100%;
    margin:0 auto;
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
  #loginView .login-card:before{display:none}
  #loginView .mobile-brand{
    display:flex;
    min-height:82px;
    margin:0;
    padding:.35rem 0 .9rem;
    border-bottom:1px solid #dfe9eb;
    background:transparent;
  }
  #loginView .mobile-brand .brand-mark.brand-logo{width:66px;height:66px}
  #loginView .mobile-brand strong{font-size:1.45rem}
  #loginView .mobile-brand small{font-size:.8rem}
  #loginView .login-intro{display:grid;gap:.18rem;margin:0}
  #loginView .login-intro .eyebrow{margin:0;font-size:.76rem}
  #loginView .login-intro h2{margin:0;font-size:2rem;line-height:1.05}
  #loginView .login-intro .muted{margin:.08rem 0 0;font-size:.9rem;line-height:1.35}
  #loginView .role-picker{
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:.48rem;
    margin:0;
    padding:.46rem;
    border-radius:16px;
  }
  #loginView .role{
    min-height:102px;
    padding:.62rem .06rem;
    border-radius:12px;
    font-size:.72rem;
    line-height:1.05;
  }
  #loginView .role span:has(img){width:56px;height:56px;margin:0 auto .28rem;padding:1px}
  #loginView #loginForm{display:grid;gap:.62rem;margin:0}
  #loginView #loginForm label{gap:.35rem;margin:0;font-size:.85rem}
  #loginView #loginForm input{min-height:56px;padding:.75rem .85rem;font-size:1rem;border-radius:14px}
  #loginView #identityNote{margin:0;padding:.55rem .65rem;font-size:.72rem;line-height:1.35}
  #loginView .form-row{margin:0;min-height:28px}
  #loginView .form-row .link-button{font-size:.78rem}
  #loginView .primary.full{min-height:60px;padding:.75rem .9rem;font-size:1.05rem;border-radius:15px}
  #loginView #loginHint,
  #loginView #sharedDataStatus,
  #loginView #commercialTour,
  #loginView .login-utilities,
  #loginView .visual-license{display:none!important}
}

@media(max-height:700px) and (max-width:850px){
  #loginView .login-panel{padding-top:max(.35rem,env(safe-area-inset-top));padding-bottom:max(.35rem,env(safe-area-inset-bottom))}
  #loginView .login-card{display:grid;grid-template-rows:auto auto auto auto;align-content:start;gap:.38rem}
  #loginView .mobile-brand{min-height:48px;margin:0;padding:.15rem 0 .35rem}
  #loginView .mobile-brand .brand-mark.brand-logo{width:36px;height:36px}
  #loginView .login-intro h2{font-size:1.35rem}
  #loginView .login-intro .muted{font-size:.7rem}
  #loginView .role-picker{margin:0}
  #loginView .role{min-height:50px;font-size:.52rem}
  #loginView .role span:has(img){width:27px;height:27px}
  #loginView #loginForm{gap:.3rem}
  #loginView #loginForm input{min-height:38px}
  #loginView #identityNote{padding:.32rem .45rem;font-size:.59rem}
  #loginView .primary.full{min-height:42px}
}

@media(min-width:391px) and (min-height:800px) and (max-width:850px){
  #loginView .login-panel{padding-top:max(1rem,env(safe-area-inset-top));padding-bottom:max(1.15rem,env(safe-area-inset-bottom))}
}

/* Shared EV SCHOOL atmosphere — one blue/teal background across every portal. */
:root{
  --portal-atmosphere:
    radial-gradient(circle at 12% 8%,rgba(255,255,255,.62) 0,rgba(255,255,255,0) 30%),
    radial-gradient(circle at 88% 82%,rgba(5,48,72,.23) 0,rgba(5,48,72,0) 34%),
    linear-gradient(145deg,#dceff1 0%,#b4dde0 35%,#79c0c6 68%,#3d8fa0 100%);
}

body,
#loginView,
#appView,
#centralView,
#studentView,
#familyView,
#conductorView,
.workspace,
.central-workspace,
.student-portal,
.family-shell,
.driver-shell{
  background-color:#78bfc5;
  background-image:var(--portal-atmosphere);
  background-repeat:no-repeat;
  background-size:cover;
  background-attachment:fixed;
}

.content,
.central-content,
.student-main,
.family-main,
.driver-main{
  background:transparent;
}

#loginView .login-panel{
  background:transparent;
}

.topbar,
.student-topbar,
.family-topbar,
.driver-topbar{
  background:rgba(255,255,255,.93);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
}

#loginView .login-card{
  background:transparent;
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}

@media(max-width:850px){
  body,
  #loginView,
  #appView,
  #centralView,
  #studentView,
  #familyView,
  #conductorView,
  .workspace,
  .central-workspace,
  .student-portal,
  .family-shell,
  .driver-shell{
    background-attachment:scroll;
  }

  #loginView.login-shell{
    background-color:#78bfc5;
    background-image:var(--portal-atmosphere);
  }

  #loginView .login-card{
    padding:0;
    border:0;
    border-radius:0;
    background:transparent;
    box-shadow:none;
  }
}

/* Consistent Lucide portal symbols, with room around each silhouette. */
.role span img[src*="portal-"]{box-sizing:border-box;padding:7px}
.portal-switcher-grid img[src*="portal-"]{box-sizing:border-box;padding:10px;background:#e7f3f5;border:1px solid rgba(11,53,75,.08)}
@media(max-height:700px) and (max-width:850px){.role span img[src*="portal-"]{padding:3px}}

.family-private-position{margin:.8rem 0 .35rem;padding:.7rem .8rem;border-radius:12px;background:#e7f3f5;color:var(--navy);font-size:.9rem}.family-private-note{margin:.4rem 0;color:var(--muted);font-size:.8rem;line-height:1.45}

.route-assistant-dialog{width:min(680px,calc(100% - 2rem))}.route-assistant-dialog form{display:grid;gap:.8rem;margin:1rem 0}.route-assistant-dialog>label{display:grid;gap:.4rem}.route-assistant-dialog details{margin-top:1.2rem;border-top:1px solid var(--line);padding-top:1rem}.route-assistant-dialog summary{cursor:pointer;font-weight:800}.route-assistant-dialog #assistantPreview{padding:1rem;margin:1rem 0}.route-assistant-dialog ol{padding-left:1.3rem}.family-service-choice{display:grid;gap:.4rem;margin:0 0 1rem;font-size:.9rem;font-weight:750}.family-service-choice[hidden]{display:none}.family-service-choice select{max-width:100%}

.driver-service-choice{display:grid;gap:.3rem;max-width:320px;font-size:.8rem}.driver-service-choice select{max-width:100%}@media(max-width:620px){.driver-service-choice{max-width:100%;width:100%;order:3}}

@media(max-width:850px){.driver-topbar .driver-service-choice{grid-column:1/-1;order:3;max-width:100%;width:100%}.driver-topbar:has(.driver-service-choice){height:auto;min-height:122px;grid-template-columns:minmax(0,1fr) auto}.driver-shell:has(.driver-service-choice) .driver-main{padding-top:calc(138px + env(safe-area-inset-top))}}
