:root{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;color:#162b3d;background:#f2f5f8}*{box-sizing:border-box}body{margin:0}.page{max-width:1120px;margin:auto;padding:24px}header,nav,.inline,.language{display:flex;gap:12px;align-items:center;flex-wrap:wrap}header{justify-content:space-between}nav{border-bottom:1px solid #ccd6df;padding:12px 0}a{color:#175991}form{margin:0}h1{font-size:1.8rem}h2{font-size:1.35rem}.card,.tile{display:block;background:#fff;border:1px solid #d9e1e8;border-radius:12px;padding:22px;margin:20px 0}.narrow{max-width:460px;margin:40px auto}.grid,.edit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}.tile{text-decoration:none}.grid .tile{margin:0}label{display:block;margin-top:12px;margin-bottom:6px;font-weight:600}input,select,textarea{font:inherit;width:100%;min-height:46px;padding:10px;border:1px solid #75899b;border-radius:6px;background:white}input[type=checkbox]{width:24px;height:24px;min-height:24px}button,.button{display:inline-block;min-height:48px;padding:12px 18px;border:0;border-radius:6px;background:#155c91;color:white;font:inherit;font-weight:650;cursor:pointer;text-decoration:none;margin:8px 0}button:hover,.button:hover{filter:brightness(.92)}.secondary,.language button{background:#e4edf5;color:#153f61}.danger{background:#a52828}.inline input,.inline select{width:auto;max-width:100%}table{width:100%;border-collapse:collapse;background:white;margin-top:20px}td,th{text-align:left;border-bottom:1px solid #d9e1e8;padding:12px;overflow-wrap:anywhere}td form{display:inline-block;margin-left:12px}.stop,.student{border-top:1px solid #ccd6df;padding:16px 0}.next{border:3px solid #197b56}.next>strong{color:#166b4b}.emergency{border:2px solid #ad3d3d}.alert{background:#fff0d9;padding:14px}details{margin:16px 0}summary{cursor:pointer;padding:14px;background:#eaf0f5;border-radius:6px}textarea{min-height:120px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #175991;outline-offset:3px}@media(max-width:640px){.page{padding:14px}.card{padding:16px}.inline{align-items:stretch}.inline>*{flex:1 1 140px}.inline select,.inline input{width:100%}table{font-size:.9rem}td,th{padding:8px}.edit-grid{display:block}.narrow{margin:20px 0}button,.button{min-height:52px}.student .button{display:block}}.table-scroll{max-width:100%;overflow-x:auto}.table-scroll:focus-visible{outline:3px solid #175991}.table-scroll table{min-width:640px}
.calendar-form{grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:center}.calendar-form>button{grid-column:1/-1}@media(max-width:640px){.calendar-form{display:block}}

.navigation-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.navigation-actions [role=status]{flex-basis:100%}.stop p{overflow-wrap:anywhere}textarea:focus-visible,summary:focus-visible,button:focus-visible{outline:3px solid #175991;outline-offset:3px}

.preserve-lines{white-space:pre-wrap;overflow-wrap:anywhere}

.capacity-meter{display:block;width:min(100%,24rem);height:1.5rem}
.timeline-incident-link{display:block;margin-top:.5rem}

.error-summary { border: 2px solid #a4262c; padding: 1rem; margin-bottom: 1rem; }
.field-error { color: #a4262c; font-weight: 600; }
[aria-invalid=true] { border: 2px solid #a4262c; }
.geocode-field{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:8px;align-content:start;align-items:center}.geocode-field>label,.geocode-field #geocode-status{grid-column:1/-1}.geocode-field>span{display:contents}.geocode-field button{white-space:normal}.geocode-field #geocode-status{margin-top:6px}@media(max-width:640px){.geocode-field{grid-template-columns:minmax(0,1fr)}.geocode-field button{justify-self:start;margin-top:6px}}
.edit-grid>button:last-child{align-self:start}@media(min-width:641px){.geocode-field{grid-column:span 2}}
/* Admin route stop layout */
.route-stop-card{
  background:#fbfcfd;
  border:1px solid #d5dfe7;
  border-radius:10px;
  padding:18px;
  margin:18px 0;
}
.route-stop-card>h3,
.route-stop-header>h3{
  margin:0 0 8px;
}
.route-stop-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.route-stop-header-actions,.route-stop-header-actions>.route-stop-controls{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.route-stop-header-actions .button,.route-stop-header-actions button{margin:0}.route-stop-header-actions>p{margin:0}
.route-stop-card>p{
  margin:6px 0 12px;
}
.route-stop-card>ul{
  margin:12px 0;
  padding-left:20px;
}
.route-stop-card>ul>li{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:6px 0;
}
.route-stop-card>ul>li form{
  margin-left:auto;
}
.route-student-action,
.route-move-action{
  display:flex;
  align-items:flex-end;
  gap:12px;
  flex-wrap:wrap;
  margin:14px 0;
}
.route-student-action>label,
.route-move-action>label{
  flex:1 1 260px;
  margin:0;
}
.route-student-action select,
.route-move-action select{
  width:100%;
}
.route-student-action>button,
.route-move-action>button{
  flex:0 0 auto;
  margin:0;
  min-height:46px;
}
.route-stop-controls{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:12px 0;
}
.route-stop-controls form{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0;
}
.route-stop-controls button{
  margin:0;
  min-height:46px;
}
.route-stop-card details{
  border-top:1px solid #d9e1e8;
  padding-top:12px;
  margin-top:16px;
}

@media(max-width:640px){
  .route-student-action,
  .route-move-action,
  .route-stop-controls{
    align-items:stretch;
    flex-direction:column;
  }
  .route-student-action>label,
  .route-move-action>label{
    flex:auto;
    width:100%;
  }
  .route-student-action>button,
  .route-move-action>button,
  .route-stop-controls form,
  .route-stop-controls button{
    width:100%;
  }
  .route-stop-card>ul>li form{
    margin-left:0;
  }
}.route-student-bulk-panel{margin:8px 0 16px;padding:12px;border:1px solid #ccd6df;border-radius:8px;background:#f7f9fb}
.route-student-checkboxes{display:grid;gap:8px}
.route-student-checkboxes label{display:flex;align-items:center;gap:10px;margin:0;font-weight:500}
.route-student-checkboxes input{flex:0 0 auto}
.time-title{display:block;margin-top:12px;font-weight:600}.time-picker{display:flex;gap:8px}.time-picker label{flex:1;min-width:0}.time-picker select{min-width:0;width:100%}

.route-stop-heading{
  display:flex;
  flex-direction:column;
  gap:0;
}
.route-stop-heading>h3,
.route-stop-heading>.route-stop-address{
  margin:0;
}
.route-stop-address{
  line-height:1.25;
}
