.seating-page{max-width:1380px}.seating-heading{margin-bottom:16px;align-items:flex-start}.seating-page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.seating-filter-card,.seating-bus-card,.seating-route-summary{background:#fff;border:1px solid #d8e0ea;border-radius:12px}.seating-filter-card{padding:16px;margin-bottom:14px}.seating-filter-form{display:grid;grid-template-columns:140px minmax(280px,1fr);gap:10px;align-items:center}.seating-filter-form label{font-weight:800;color:#27364d}.seating-route-summary{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0;margin-bottom:14px;overflow:hidden}.seating-route-summary>div{padding:14px 16px;border-right:1px solid #e5ebf2}.seating-route-summary>div:last-child{border-right:0}.seating-route-summary span{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#718096;font-weight:800}.seating-route-summary strong{display:block;margin-top:4px;color:#22324a}.seating-bus-card{padding:18px;margin-bottom:16px}.seating-front-label,.seating-rear-label{text-align:center;color:#63758a;font-size:.75rem;font-weight:850;letter-spacing:.08em}.seating-front-label{display:flex;justify-content:center;align-items:center;margin-bottom:12px}.seating-plan-banner{display:flex;justify-content:center;align-items:center;gap:10px;max-width:980px;margin:0 auto 10px;padding:8px 12px;border:1px solid #d9e2ec;border-radius:9px;background:#f8fafc;color:#52667e;font-size:.76rem}.seating-plan-banner strong{color:#173a6b}.seating-plan-banner span{color:#718096}.seating-side-labels{display:grid;grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);gap:10px;max-width:980px;margin:0 auto 8px;color:#63758a;font-size:.7rem;font-weight:850;letter-spacing:.07em;text-transform:uppercase}.seating-side-labels span{text-align:center}.seating-side-labels span:nth-child(2){color:#93a0af;font-size:.64rem}.seating-chart{display:grid;gap:8px;max-width:980px;margin:0 auto}.seating-group-label{grid-column:1/-1;padding:5px 10px;border-radius:7px;background:#eef4fb;color:#173a6b;text-align:center;font-size:.68rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.seating-group-back{margin-top:4px;background:#f3f5f8;color:#566b82}.seating-row{display:grid;grid-template-columns:minmax(0,1fr) 84px minmax(0,1fr);gap:10px;align-items:stretch}.seating-side{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:8px}.seating-aisle{display:grid;place-items:center;align-content:center;gap:2px;color:#8491a2;border-left:1px dashed #cbd5e1;border-right:1px dashed #cbd5e1}.seating-aisle span{font-weight:800;font-size:.8rem}.seating-aisle small{font-size:.64rem;text-transform:uppercase}.bus-seat{position:relative;min-height:92px;border:1px solid #d9e2ec;border-radius:9px;background:#f8fafc;padding:10px 9px 8px;display:flex;flex-direction:column;gap:3px;justify-content:center;min-width:0}.bus-seat.occupied{background:#eef4fb;border-color:#b9cbe0;gap:0}.bus-seat.highlighted{outline:3px solid #e1ad32;outline-offset:1px;background:#fff8df}.bus-seat.unavailable{visibility:hidden}.seat-number{position:absolute;top:6px;right:7px;font-size:.67rem;font-weight:900;color:#63758a}.bus-seat strong{font-size:.79rem;line-height:1.2;padding-right:24px;white-space:normal;overflow-wrap:anywhere}.bus-seat small{color:#63758a;font-size:.68rem;line-height:1.25}.bus-seat em{color:#9aa7b5;font-style:normal;font-size:.72rem}.seating-rear-label{margin-top:14px}.seating-unassigned,.seating-roster-card{margin-bottom:16px}.seating-unassigned-list{display:flex;flex-wrap:wrap;gap:8px}.seating-unassigned-list span{padding:7px 10px;border-radius:999px;background:#fff4e5;color:#7c5a21;font-size:.78rem;font-weight:700}.stop-number-form{display:flex;gap:7px;align-items:center;margin:0}.stop-number-form input{width:110px;padding:8px 9px}.stop-number-form button{padding:8px 10px}.highlighted-row{background:#fff8df!important}.student-route-stop{font-weight:800;color:#4b6178}.student-route-chart-link{font-size:.78rem;font-weight:800;color:#173f73;text-decoration:none;margin-top:3px}.student-route-chart-link:hover{text-decoration:underline}

.bus-seat.occupied.female{background:#fce7f3;border-color:#e9a8c8}

/* Per-bus physical seating layout editor */
.seating-layout-editor{margin:0 0 16px;padding:0;overflow:hidden}.seating-layout-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;cursor:pointer;list-style:none}.seating-layout-summary::-webkit-details-marker{display:none}.seating-layout-summary h2{margin:0 0 4px}.seating-layout-summary p{margin:0;color:#63758a}.seating-layout-summary .eyebrow{margin-bottom:5px}.seating-layout-editor[open] .seating-layout-summary{border-bottom:1px solid #e5ebf2}.seating-layout-body{padding:18px 20px 20px}.seating-layout-type-form,.seating-plan-form{display:grid;grid-template-columns:minmax(260px,1fr) 210px 138px;gap:12px;align-items:end;padding:14px 16px;margin-bottom:14px;border:1px solid #dfe7f0;border-radius:10px;background:#f8fafc}.seating-layout-type-form label,.seating-plan-form label{display:block;font-weight:850;color:#2d4159;margin-bottom:3px}.seating-layout-type-form small,.seating-plan-form small{display:block;color:#6c7f94;font-size:.75rem;line-height:1.35}.seating-layout-type-form select,.seating-plan-form select{height:44px}.seating-layout-type-form button,.seating-plan-form button{width:138px}.seating-layout-rule{display:flex;gap:12px;align-items:flex-start;padding:11px 14px;margin-bottom:15px;border-left:4px solid #b88a27;background:#fff9e9;border-radius:8px;color:#52667e;font-size:.84rem;line-height:1.45}.seating-layout-rule strong{flex:0 0 auto;color:#6f5314}.seating-layout-grid{display:grid;gap:8px}.seating-layout-row{display:grid;grid-template-columns:135px minmax(0,1fr);gap:14px;align-items:center;padding:10px 12px;border:1px solid #e7edf4;border-radius:10px;background:#fbfcfe}.seating-layout-row-heading{display:flex;flex-direction:column;gap:2px}.seating-layout-row-heading strong{color:#43566d;font-size:.82rem}.seating-layout-row-heading small{color:#7b8a9b;font-size:.66rem;line-height:1.25}.seating-layout-seats{display:grid;grid-template-columns:repeat(6,minmax(74px,1fr));gap:7px}.seating-layout-seats form{margin:0}.seat-layout-toggle{width:100%!important;min-height:48px!important;padding:6px 8px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:1px!important;border:1px solid #aebed0!important;border-radius:9px!important;background:#f7fafc!important;color:#173a6b!important;box-shadow:none!important;transform:none!important}.seat-layout-toggle:hover{background:#eef4fb!important;border-color:#7795b5!important;color:#102f5a!important}.seat-layout-toggle span{font-size:.84rem;font-weight:900;line-height:1.1}.seat-layout-toggle small{font-size:.62rem;font-weight:750;color:#66798f;line-height:1.1}.seat-layout-toggle em{font-size:.58rem;font-style:normal;color:#9a6411;line-height:1.15}.seat-layout-toggle.is-removed{background:#fff7f7!important;border-color:#dda9a9!important;color:#9f2929!important}.seat-layout-toggle.is-removed:hover{background:#ffeded!important;border-color:#c96e6e!important}.seat-layout-toggle.is-removed small{color:#a45b5b}.seat-layout-toggle.is-conditionally-unavailable,.seat-layout-toggle:disabled{background:#f0f2f4!important;border-color:#d6dbe1!important;color:#9099a5!important;cursor:not-allowed!important;opacity:1!important}.seat-layout-toggle.is-conditionally-unavailable small{color:#9ca5ae}.seating-layout-row.is-conditionally-unavailable{background:#f7f8f9}.seating-unassigned .student-section-heading p{margin-top:3px;color:#697a8d;font-size:.82rem}

@media(max-width:1100px){.seating-route-summary{grid-template-columns:repeat(4,1fr)}.seating-route-summary>div{border-bottom:1px solid #e5ebf2}.seating-route-summary>div:nth-child(4n){border-right:0}.seating-layout-seats{grid-template-columns:repeat(3,minmax(78px,1fr))}}
@media(max-width:760px){.seating-heading{gap:12px}.seating-page-actions{width:100%}.seating-page-actions button{flex:1 1 140px}.seating-filter-form{grid-template-columns:1fr}.seating-route-summary{grid-template-columns:repeat(2,1fr)}.seating-route-summary>div{border-bottom:1px solid #e5ebf2}.seating-route-summary>div:nth-child(odd){border-right:1px solid #e5ebf2}.seating-route-summary>div:nth-child(even){border-right:0}.seating-side-labels,.seating-row{grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);gap:5px}.seating-side{grid-auto-flow:row;grid-auto-columns:auto}.bus-seat{min-height:78px}.seating-aisle small{display:none}.stop-number-form{flex-direction:column;align-items:stretch}.stop-number-form input{width:100%}.seating-layout-summary{align-items:flex-start;padding:16px}.seating-layout-body{padding:14px 16px 18px}.seating-layout-type-form,.seating-plan-form{grid-template-columns:1fr;align-items:stretch}.seating-layout-type-form button,.seating-plan-form button{width:100%}.seating-layout-rule{flex-direction:column;gap:4px}.seating-layout-row{grid-template-columns:1fr;gap:7px}.seating-layout-seats{grid-template-columns:repeat(2,minmax(0,1fr))}.seating-plan-banner{align-items:flex-start;flex-direction:column;gap:2px}}

@media print {
  @page { size: letter portrait; margin: .35in; }
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  html, body { margin: 0 !important; padding: 0 !important; background: #fff !important; }
  .district-header, .app-header, .app-accent-line, .app-drawer, .drawer-backdrop,
  .action-notification-modal, .seating-filter-card, .seating-layout-editor,
  .seating-page-actions, .seating-unassigned, .seating-roster-card { display: none !important; }
  .demo-environment-banner { min-height: 0 !important; padding: 3px 6px !important; border: 0 !important; font-size: 7pt !important; line-height: 1.2 !important; }
  .seating-page { display: flex !important; flex-direction: column !important; width: 100% !important; max-width: none !important; height: auto; margin: 0 !important; padding: 0 !important; }
  .seating-heading { display: block !important; flex: none; margin: 6px 0 8px !important; }
  .seating-heading .eyebrow, .seating-heading p { display: none !important; }
  .seating-heading h1 { margin: 0 !important; font-size: 17pt !important; line-height: 1.2 !important; color: #111 !important; }
  .seating-route-summary { flex: none; grid-template-columns: repeat(4,minmax(0,1fr)) !important; margin: 0 0 8px !important; border-color: #b9c3cf !important; border-radius: 6px !important; box-shadow: none !important; }
  .seating-route-summary > div { padding: 5px 8px !important; border-color: #d2d8df !important; min-width: 0; }
  .seating-route-summary > div:nth-child(4), .seating-route-summary > div:nth-child(5) { grid-column: span 2; order: -1; }
  .seating-route-summary span { font-size: 6.5pt !important; line-height: 1.2 !important; }
  .seating-route-summary strong { font-size: 8pt !important; line-height: 1.2 !important; margin-top: 2px !important; overflow-wrap: anywhere; }
  .seating-route-summary > div:nth-child(4) strong, .seating-route-summary > div:nth-child(5) strong { font-size: 10pt !important; }
  .seating-chart-section { display: block !important; flex: none; min-height: 0; overflow: visible !important; box-shadow: none !important; }
  .seating-chart-section > .seating-section-body { display: block !important; min-height: 0; }
  .seating-bus-card { display: flex !important; flex-direction: column; height: 8.6in !important; box-sizing: border-box; flex: none; min-height: 0; margin: 0 !important; padding: 4px !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; break-inside: avoid; page-break-inside: avoid; }
  .seating-print-omit, .seating-plan-banner { display: none !important; }
  .seating-front-label { flex: none; margin-bottom: 5px !important; font-size: 7pt !important; }
  .seating-plan-banner { flex: none; flex-direction: row !important; max-width: none !important; margin: 0 0 4px !important; padding: 4px 7px !important; border-radius: 4px !important; font-size: 6.5pt !important; }
  .seating-side-labels { flex: none; grid-template-columns: minmax(0,1fr) 28px minmax(0,1fr) !important; gap: 4px !important; width: 100%; max-width: none !important; margin-bottom: 4px !important; font-size: 6.5pt !important; }
  .seating-side-labels span:nth-child(2) { font-size: 5pt !important; }
  .seating-chart { display: flex !important; flex-direction: column; flex: 1; min-height: 0; gap: 3px !important; width: 100%; max-width: none !important; }
  .seating-group-label { flex: none; margin: 0 !important; padding: 2px 6px !important; border-radius: 3px !important; font-size: 6pt !important; line-height: 1.2 !important; }
  .seating-row { flex: 1 1 0 !important; height: auto !important; min-height: 0; grid-template-columns: minmax(0,1fr) 28px minmax(0,1fr) !important; gap: 4px !important; break-inside: avoid; }
  .seating-side { grid-auto-flow: column !important; grid-auto-columns: minmax(0,1fr) !important; gap: 3px !important; min-height: 0; }
  .seating-aisle { gap: 0 !important; }
  .seating-aisle span { font-size: 6.5pt !important; }
  .seating-aisle small { display: none !important; }
  .bus-seat { min-height: 0 !important; padding: 8px 3px 3px !important; border-radius: 5px !important; gap: 0 !important; justify-content: center !important; }
  .seat-number { position: absolute !important; top: 3px !important; right: 3px !important; font-size: 5.5pt !important; line-height: 1 !important; }
  .bus-seat strong { font-size: 9pt !important; line-height: 1.05 !important; padding-right: 0 !important; overflow-wrap: anywhere; }
  .bus-seat small, .bus-seat em { font-size: 8pt !important; line-height: 1.05 !important; overflow-wrap: anywhere; }
  .seating-rear-label { flex: none; margin-top: 5px !important; font-size: 7pt !important; }
}


/* Gender + seating-plan visual rules */

/* Occupied female seat */
.bus-seat.occupied.female {
  background: #fde7f3 !important;
  border: 2px solid #e889b4 !important;
}

.bus-seat.occupied.female strong,
.bus-seat.occupied.female .seat-number {
  color: #9d174d !important;
}

/* Occupied male seat */
.bus-seat.occupied.male {
  background: #e7f1ff !important;
  border: 2px solid #78a9df !important;
}

.bus-seat.occupied.male strong,
.bus-seat.occupied.male .seat-number {
  color: #174f8f !important;
}

/* Side-Based Seating */
.seating-bus-card.plan-side_based .seating-left {
  box-shadow: inset 4px 0 0 #64748b;
  padding-left: 6px;
}

.seating-bus-card.plan-side_based .seating-right {
  box-shadow: inset -4px 0 0 #64748b;
  padding-right: 6px;
}

/* Front / Back Seating */
.seating-bus-card.plan-front_back .seating-group-label {
  border: 2px solid #8ca5bf;
  padding: 8px 10px;
  font-weight: 900;
}

.seating-bus-card.plan-front_back .seating-group-back {
  margin-top: 10px;
}

.seating-bus-card.plan-side_based .seating-left,
.seating-bus-card.plan-side_based .seating-right {
    outline: none !important;
    box-shadow: none !important;
}



/* Clickable occupied student seats */
.bus-seat.occupied {
    position: relative;
    cursor: pointer;
}

.bus-seat.occupied .seat-profile-hit {
    position: absolute;
    inset: 0;
    z-index: 5;
    border-radius: inherit;
}

.bus-seat.occupied .seat-profile-hit:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 3px;
}

@media (hover: hover) and (pointer: fine) {
    .bus-seat.occupied:hover {
        transform: translateY(-1px);
        box-shadow: 0 4px 10px rgba(15, 45, 75, 0.12);
    }
}


/* Bulk seating save */
.seating-bulk-save-button {
    white-space: nowrap;
}

.seating-bulk-enabled
.seating-roster-table
.seat-assignment-form
button[type="submit"],
.seating-bulk-enabled
.seating-roster-table
.stop-number-form
button[type="submit"] {
    display: none;
}

@media (max-width: 760px) {
    .student-section-heading {
        align-items: stretch;
    }

    .seating-bulk-save-button {
        width: 100%;
    }
}


/* Visible route roster Save All */
.seating-section-summary-actions {
    gap: 10px;
}

.seating-section-summary-actions
.seating-bulk-save-button {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 14px;
    white-space: nowrap;
}

@media (max-width: 760px) {
    .seating-section-summary-actions {
        flex-wrap: wrap;
        justify-content: flex-end;
    }

    .seating-section-summary-actions
    .seating-bulk-save-button {
        width: auto;
    }
}
