/* ===== App screens: driver, parent, admin operations (mobile first) ===== */
.app h1{font-size:clamp(26px,6vw,38px);margin:0 0 4px}
.cap::first-letter{text-transform:uppercase}
.stack{display:flex;flex-direction:column;gap:16px}
.stack-sm{display:flex;flex-direction:column;gap:10px}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.app .card{margin-bottom:16px}
.demo-flag{margin:0 auto 4px;font-size:13px;color:#FFD58A}
.appnav .brand{font-size:20px}
.tabs{display:flex;flex-wrap:wrap;gap:6px;order:3;width:100%}
.tabs a{padding:8px 14px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:var(--text);font-weight:700;font-size:14px;min-height:40px;display:inline-flex;align-items:center}
.tabs a.on{background:var(--lav);border-color:var(--lav);color:var(--navy)}
.route-card{display:flex;flex-direction:column;gap:6px;text-decoration:none;color:var(--text)}
.route-card .btn{align-self:flex-start;margin-top:8px}
.big-name{font-size:24px}
.rs-planned{border-color:var(--line)}
.rs-active{border-color:var(--green);color:#7EE2A2}
.rs-completed{border-color:var(--sky);color:var(--sky-text)}
.ss-done{border-color:var(--green);color:#7EE2A2}
.ss-no_one{border-color:#F5A524;color:#FFD58A}
.ss-absent{opacity:.7}
.btn-go{background:var(--green);color:#fff} .btn-go:hover{background:#1DB954;color:#fff}
.btn-warn{background:transparent;border:2px solid #F5A524;color:#FFD58A} .btn-warn:hover{background:rgba(245,165,36,.12);color:#FFD58A}
.now-card{border:2px solid var(--lav);box-shadow:0 0 40px -14px rgba(201,106,242,.7);display:flex;flex-direction:column;gap:12px}
.now-card form{margin:0}
.eyebrow-sm{margin:0;font-size:13px;font-weight:700;color:var(--sky-text);text-transform:uppercase;letter-spacing:.05em}
.now-title{margin:0;font-size:28px}
.now-card p{margin:0}
.nav-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.child-card{display:flex;gap:14px;align-items:center;padding:6px 0}
.child-card>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.child-name{font-size:22px}
.kid{flex:none;width:52px;height:52px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font:900 18px 'Nunito',sans-serif;color:#fff;border:3px solid var(--lav);background:rgba(201,106,242,.25);box-shadow:0 0 18px rgba(201,106,242,.45)}
.kid-big{width:76px;height:76px;font-size:26px}
.kid-sky{border-color:var(--sky);background:rgba(53,198,244,.22);box-shadow:0 0 18px rgba(53,198,244,.45)}
.kid-green{border-color:#34D399;background:rgba(52,211,153,.2);box-shadow:0 0 18px rgba(52,211,153,.4)}
.chip-sm{align-self:flex-start;margin-top:4px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:700;color:var(--sub)}
.med{border:2px solid #FF8A95;border-radius:16px;padding:10px 14px;background:rgba(220,38,38,.1)}
.med summary{cursor:pointer;font-weight:800;color:#FFB4BC;min-height:32px;display:flex;align-items:center}
.med p{margin:8px 0 0}
.med-inline{color:#FFB4BC}
.adult-btn{justify-content:flex-start;text-align:left;font:700 18px 'DM Sans',sans-serif;min-height:64px}
.adult-btn small{font-weight:500;opacity:.9}
.adult-av{width:36px;height:36px;flex:none;border-radius:50%;background:rgba(255,255,255,.25);display:inline-flex;align-items:center;justify-content:center;font-weight:900}
.noone{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.noone .btn{width:100%}
.gps{display:inline-flex;align-items:center;gap:8px;margin:4px 0 0;padding:8px 14px;border-radius:999px;border:1px solid var(--line);font-weight:700;font-size:14px}
.gps-dot{width:10px;height:10px;border-radius:50%;background:var(--sub)}
.gps-on .gps-dot{background:var(--green);animation:blink 1.4s ease-in-out infinite}
.gps-off .gps-dot,.gps-denied .gps-dot{background:#FF8A95}
.gps-denied{border-color:#FF8A95;color:#FFB4BC}
.ok-card{border-color:var(--green)}
.map{width:100%;height:340px;border-radius:24px;border:1px solid var(--line);overflow:hidden;background:#0A1548;margin:8px 0 16px;z-index:0}
.map-sm{height:260px}
.pin{display:flex;align-items:center;justify-content:center;border-radius:50%;font:900 13px 'Nunito',sans-serif;color:#fff;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.4)}
.pin-home{background:var(--purple)}
.pin-school{background:#0E7FB0}
.pin-done{background:var(--green)}
.pin-no_one{background:#B7791F}
.pin-van{border:0;box-shadow:none;background:transparent}
.van-dot{display:block;width:40px;height:40px;border-radius:50%;background:radial-gradient(circle,#fff 0 28%,#35C6F4 29% 42%,rgba(201,106,242,.35) 43% 100%);border:3px solid var(--lav);box-shadow:0 0 18px rgba(201,106,242,.8)}
.stops{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.stop-row{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:16px;border:1px solid var(--line);background:var(--navy)}
.stop-row.is-next{border-color:var(--lav)}
.stop-row.st-absent .stop-main{text-decoration:line-through;opacity:.6}
.stop-n{flex:none;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--deep);border:1px solid var(--line);font-weight:800;font-size:13px}
.stop-main{flex:1;min-width:0;display:block}
.stop-main .small{display:block}
.stop-row .status{flex:none}
.pcard{display:flex;flex-direction:column;gap:12px}
.pstatus{margin:0;font-size:22px;line-height:1.25}
.pstatus.s-absent{color:var(--sub)}
.ptl{margin:4px 0}
.ptl li{font-size:14px}
.ptl.tl::before{background:linear-gradient(90deg,var(--lav) 0,var(--lav) 50%,var(--line) 50%)}
.map-off{padding:12px 14px;border-radius:16px;border:1px dashed var(--line)}
.warn-text{color:#FFD58A}
.absence{border:1px solid var(--line);border-radius:18px;padding:8px 14px}
.absence summary{cursor:pointer;font-weight:700;min-height:40px;display:flex;align-items:center}
.absence .btn{width:100%}
.absence form{margin:0}
.d-warn{background:#F5A524}
.pcard .msgs li{font-weight:500}
.fine-app{color:var(--sub);font-size:14px;text-align:center;margin:10px 0 0}
.log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:15px}
.log li{display:flex;gap:12px}
.log-time{flex:none;width:76px;color:var(--sky-text);font-weight:700}
.ops-stops{margin-bottom:8px}
.ops-stops summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center}
.ops-route h2{margin:0;font-size:24px}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.fam h2{font-size:22px;margin:0}
.fam .lbl{display:block;margin:14px 0 4px;color:var(--lav-text)}
.plain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.steps-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:8px}
.link-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.link-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center}
.link-item>span{grid-column:1/-1}
.link-item input{min-height:44px;font-size:14px}
.leaflet-container{font-family:'DM Sans',sans-serif}
.leaflet-control-attribution{font-size:10px}

@media (max-width:640px){
  .page{padding-top:8px}
  .app .card{padding:18px;border-radius:22px}
  .now-title{font-size:24px}
  .map{height:280px}
  .btn-big{min-height:60px;font-size:20px}
  /* admin tables become cards on phones */
  .table-box{border:0;overflow:visible}
  .table-box table{min-width:0;background:transparent}
  .table-box thead{display:none}
  .table-box tr{display:block;background:var(--navy);border:1px solid var(--line);border-radius:18px;padding:10px 14px;margin-bottom:12px}
  .table-box td{display:flex;justify-content:space-between;gap:12px;border:0;padding:6px 0;text-align:right}
  .table-box td::before{content:attr(data-label);color:var(--sub);font-weight:700;font-size:13px;text-align:left}
  .table-box td:last-child{justify-content:flex-end}
  .table-box td:last-child::before{content:none}
  .facts{grid-template-columns:minmax(0,1fr)}
  .nav-right{gap:8px}
}
