:root{--nu-primary: #1e3a89;--nu-primary-2: #203b86;--nu-primary-deep: #162a63;--nu-accent: #f2c200;--nu-accent-2: #e0b200;--nu-success: #22c55e;--nu-warning: #f2c200;--nu-danger: #ef4444;--nu-info: #3b82f6;--nu-bg: #f5f7fb;--nu-surface: #ffffff;--nu-muted: #6b7280;--nu-text: #111827;--nu-line: #e7eaf1;--nu-soft: #f2f5fb;--nu-shadow: 0 12px 30px rgba(15, 23, 42, .12);--nu-shadow-soft: 0 10px 24px rgba(15, 23, 42, .1);--nu-radius: 16px;--nu-ink: #1e3a89;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--nu-bg);color:var(--nu-text);font-family:var(--font-sans)}button,input,select,textarea{font-family:inherit}.appRoot{min-height:100vh}.topHeader{background:var(--nu-primary-2);color:#fff;border-top-left-radius:14px;border-top-right-radius:14px;overflow:hidden}.topInner{max-width:1260px;margin:0 auto;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brandLeft{display:flex;align-items:center;gap:12px;min-width:260px}.logoCircle{width:42px;height:42px;border-radius:999px;background:#fff;color:var(--nu-primary);display:grid;place-items:center;font-weight:700;letter-spacing:.5px}.brandText{display:flex;flex-direction:column;line-height:1.1}.brandTitle{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.schoolName{font-size:18px;font-weight:700}.brandSep{opacity:.7;font-weight:600}.productName{font-size:18px;font-weight:700;color:var(--nu-accent)}.brandSub{margin-top:4px;font-size:11px;letter-spacing:.8px;opacity:.85}.topActions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.topBtn{border:1px solid rgba(255,255,255,.22);background:#ffffff14;color:#fff;border-radius:10px;padding:9px 12px;display:inline-flex;gap:8px;align-items:center;font-weight:600;font-size:12.5px;cursor:pointer;transition:transform .06s ease,background .15s ease}.topBtn:hover{background:#ffffff1f}.topBtn:active{transform:translateY(1px)}.topBtn.gold{background:#f2c200eb;border-color:#f2c200eb;color:#1b2b5e}.topBtn.gold:hover{background:#f2c200fa}.viewAs{display:flex;align-items:center;gap:8px;margin-left:4px}.viewAsLabel{display:inline-flex;align-items:center;gap:6px;opacity:.95;font-size:12px;font-weight:600}.viewAsBtn{display:inline-flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.18);background:#0000000f;color:#fff;border-radius:10px;padding:9px 12px;cursor:pointer;font-weight:600;font-size:12.5px}.crown{transform:translateY(-.5px)}.timeBox{margin-left:8px;text-align:right;min-width:124px}.timeLine{font-size:28px;font-weight:800;color:var(--nu-accent);letter-spacing:.6px;line-height:1}.dateLine{margin-top:2px;font-size:11px;letter-spacing:1.2px;opacity:.85}.goldBar{height:4px;background:var(--nu-accent)}.subNavWrap{background:#fff;box-shadow:var(--nu-shadow-soft)}.subNav{max-width:1260px;margin:0 auto;padding:12px 18px;display:flex;gap:10px;align-items:center}.pillTab{border:1px solid var(--nu-line);background:#f6f7fb;color:#374151;padding:10px 14px;border-radius:999px;display:inline-flex;gap:9px;align-items:center;cursor:pointer;font-weight:700;font-size:13px;box-shadow:0 1px #0f172a05 inset}.pillTab .pillIcon{display:inline-flex;opacity:.8}.pillTab.active{background:var(--nu-primary);border-color:var(--nu-primary);color:#fff}.pillTab.active .pillIcon{opacity:1}.pillLabel{transform:translateY(-.2px)}.page{max-width:1260px;margin:0 auto;padding:22px 18px 40px}.statGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:12px}.statCard{background:var(--nu-surface);border-radius:var(--nu-radius);padding:18px 18px 16px;box-shadow:var(--nu-shadow-soft);border:1px solid rgba(231,234,241,.9);position:relative;overflow:hidden}.statCard:before{content:"";position:absolute;left:0;top:0;width:4px;height:100%;background:var(--nu-primary);opacity:.9}.statLabel{font-size:12px;letter-spacing:1.1px;color:#9aa3b2;font-weight:800}.statValue{font-size:34px;font-weight:800;margin-top:6px;line-height:1.05}.statSub{margin-top:6px;font-size:12.5px;font-weight:700;color:var(--nu-primary)}.accent-primary:before{background:var(--nu-primary)}.accent-success:before{background:var(--nu-success)}.accent-warning:before{background:var(--nu-warning)}.accent-danger:before{background:#f97316}.accent-success .statSub{color:#1f8f47}.accent-warning .statSub{color:#b88600}.accent-danger .statSub{color:#b42318}.busGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.busCard{background:var(--nu-surface);border-radius:var(--nu-radius);padding:16px 18px;box-shadow:var(--nu-shadow-soft);border:1px solid rgba(231,234,241,.9);cursor:pointer;transition:transform .06s ease,box-shadow .15s ease}.busCard:hover{box-shadow:var(--nu-shadow)}.busCard:active{transform:translateY(1px)}.busCardTop{display:flex;justify-content:space-between;align-items:center}.busCardTitle{display:flex;align-items:baseline;gap:6px}.busName{font-weight:900;font-size:16px}.busBatch{font-weight:700;color:#6b7280;font-size:12px}.statusDot{width:22px;height:22px;border-radius:999px;border:2px solid var(--nu-line);background:#fff}.statusDot.success{border-color:#22c55e73}.statusDot.warning{border-color:#f2c2008c}.statusDot.info{border-color:#3b82f680}.busCardMeta{display:flex;justify-content:space-between;align-items:flex-end;margin-top:10px;color:#374151}.metaRow{display:flex;gap:6px;align-items:center}.metaKey{color:#6b7280;font-weight:700;font-size:12px}.metaVal{font-weight:800;font-size:12.5px}.metaValMuted{font-weight:800;color:#6b7280;font-size:12px}.progressWrap{margin-top:12px}.progressTrack{height:10px;background:#eef2f7;border-radius:999px;overflow:hidden}.progressFill{height:100%;border-radius:999px}.progressFill.success{background:var(--nu-success)}.progressFill.warning{background:var(--nu-accent)}.progressFill.info{background:var(--nu-info)}.busTopBar{background:var(--nu-surface);border:1px solid rgba(231,234,241,.9);border-radius:var(--nu-radius);box-shadow:var(--nu-shadow-soft);padding:16px 18px;display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.busHeading{display:flex;align-items:center;gap:10px}.hTitle{font-size:26px;font-weight:900}.hPill{background:#eef2ff;color:var(--nu-primary);padding:6px 10px;border-radius:10px;font-weight:800;font-size:12px}.busStatusLine{margin-top:6px}.lockBadge{display:inline-flex;align-items:center;gap:8px;color:#2f7a2f;font-weight:800;font-size:12px}.lockDot{width:10px;height:10px;background:#35c759;border-radius:999px;box-shadow:0 0 0 3px #35c7592e}.busTopActions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.actionBtn{border:1px solid rgba(231,234,241,.9);background:#fff;color:#1f2937;border-radius:10px;padding:10px 12px;display:inline-flex;gap:8px;align-items:center;font-weight:800;font-size:13px;cursor:pointer}.actionBtn.soft{border-color:#3b82f64d;color:var(--nu-info);background:#3b82f60f}.actionBtn.dangerSoft{border-color:#ef444440;color:#b42318;background:#ef44440f}.actionBtn.dark{background:#111827;border-color:#111827;color:#fff}.actionBtn.success{background:#1f6b3a;border-color:#1f6b3a;color:#fff}.lockEmoji{transform:translateY(-.5px)}.seatStage{margin-top:16px}.seatCanvas{background:var(--nu-surface);border:1px solid rgba(231,234,241,.9);border-radius:var(--nu-radius);box-shadow:var(--nu-shadow-soft);padding:18px;overflow:hidden}.seatTopRow{display:grid;grid-template-columns:170px 1fr 170px;align-items:center;gap:14px;margin-bottom:10px}.captCard,.doorCard{border:2px solid rgba(231,234,241,.95);border-radius:12px;background:#fbfcff;padding:12px 12px 10px;text-align:center}.captLabel{font-size:10px;letter-spacing:1px;font-weight:900;color:#9aa3b2}.captName{margin-top:6px;font-weight:900;color:#111827;font-size:12px}.linkBtn{margin-top:8px;background:transparent;border:0;color:var(--nu-info);font-weight:800;font-size:12px;display:inline-flex;gap:6px;align-items:center;cursor:pointer}.frontBadge{justify-self:center;background:#eef2f7;border-radius:999px;padding:6px 12px;font-size:11px;letter-spacing:1px;color:#6b7280;font-weight:900}.doorCard{border-color:#3b82f64d;background:#3b82f60f}.doorLabel{font-weight:900;font-size:10px;letter-spacing:1px;color:var(--nu-primary)}.doorIcon{font-size:22px;margin-top:6px}.seatDivider{position:relative;margin:10px 0 14px}.dashLine{height:1px;background:repeating-linear-gradient(to right,rgba(107,114,128,.35) 0,rgba(107,114,128,.35) 6px,transparent 6px,transparent 14px)}.midDash{position:absolute;left:50%;top:-2px;transform:translate(-50%);width:1px;height:260px;background:repeating-linear-gradient(to bottom,rgba(107,114,128,.28) 0,rgba(107,114,128,.28) 6px,transparent 6px,transparent 14px);opacity:.6}.seatGridAisle{display:grid;gap:10px;padding:12px 6px 6px}.seatRow{display:grid;grid-template-columns:1fr 52px 1fr;gap:10px;align-items:stretch}.seatSide{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.aisleCol{display:grid;place-items:center}.aisleDash{width:2px;height:100%;background:repeating-linear-gradient(to bottom,rgba(107,114,128,.28) 0,rgba(107,114,128,.28) 6px,transparent 6px,transparent 14px);opacity:.55}.seat{border-radius:10px;border:1.8px solid rgba(231,234,241,.95);background:#fff;padding:8px 8px 10px;text-align:left;cursor:pointer;min-height:78px;position:relative;box-shadow:0 4px 10px #0f172a0f}.seatNum{position:absolute;top:6px;right:8px;font-weight:900;font-size:10px;color:#6b7280b3}.seatName{margin-top:18px;font-weight:800;font-size:11px;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.seat-boarded{border-color:#22c55ea6;background:#22c55e12}.seat-missing{border-color:#ef4444a6;background:#ef444412}.seat-empty{border-color:#e7eaf1f2;background:#f8fafc;opacity:.65}.seat-staff{border-color:#f2c200b3;background:#f2c2001a}.legend{margin-top:16px;display:flex;gap:16px;justify-content:center;border:1px solid rgba(231,234,241,.9);background:#fff;border-radius:14px;padding:10px 12px}.legendItem{display:inline-flex;align-items:center;gap:8px;font-weight:800;color:#374151;font-size:12px}.legendMark{width:14px;height:14px;border-radius:6px;border:2px solid rgba(231,234,241,.9);background:#fff}.legendMark.boarded{border-color:#22c55ea6;background:#22c55e14}.legendMark.missing{border-color:#ef4444a6;background:#ef444414}.legendMark.empty{border-color:#e7eaf1f2;background:#f8fafc}.legendMark.staff{border-color:#f2c200b3;background:#f2c2001a}.sectionTitle{display:flex;align-items:center;gap:10px;font-weight:900;font-size:20px;margin:10px 0 14px}.sectionIcon{font-size:20px}.scheduleGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.schedCard{background:var(--nu-surface);border:1px solid rgba(231,234,241,.9);border-radius:var(--nu-radius);box-shadow:var(--nu-shadow-soft);overflow:hidden}.schedHead{padding:14px 16px;font-weight:900;color:#fff}.goldHead{background:#e3b400}.navyHead{background:var(--nu-primary)}.schedBody{padding:12px 16px 18px}.timeline{display:flex;flex-direction:column;gap:10px}.timeRow{display:grid;grid-template-columns:22px 1fr;gap:12px}.timeDotCol{position:relative;display:flex;flex-direction:column;align-items:center}.timeDot{width:16px;height:16px;border-radius:999px;border:2px solid rgba(107,114,128,.35);background:#fff}.timeDot.filled{background:#6b728026}.timeLineCol{width:2px;flex:1;background:#6b728038;margin-top:6px}.timeStamp{font-weight:900;color:#6b7280;font-size:12px}.timeTitle{font-weight:800;color:#374151;font-size:13px}.blankState{display:grid;place-items:center;margin-top:24px}.blankCard{width:min(720px,100%);background:var(--nu-surface);border:1px solid rgba(231,234,241,.9);border-radius:var(--nu-radius);box-shadow:var(--nu-shadow-soft);padding:22px;text-align:center}.blankTitle{font-weight:900;font-size:22px}.blankText{margin-top:10px;color:#6b7280;font-weight:700;font-size:13px;line-height:1.45}.modalOverlay{position:fixed;inset:0;background:#1118278c;display:grid;place-items:center;padding:20px;z-index:999}.modalCard{width:100%;background:#fff;border-radius:16px;box-shadow:var(--nu-shadow);overflow:hidden}.modalHeader{padding:14px 16px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(231,234,241,.9)}.modalTitle{display:inline-flex;gap:10px;align-items:center;font-weight:900;font-size:18px;color:#111827}.modalIcon{color:var(--nu-primary);display:inline-flex}.modalBody{padding:16px}.iconBtn{border:0;background:transparent;cursor:pointer;color:#6b7280;padding:6px;border-radius:10px}.iconBtn:hover{background:#6b728014}.auditList{display:flex;flex-direction:column;gap:10px}.auditRow{display:grid;grid-template-columns:110px 140px 1fr;gap:14px;padding:12px;border:1px solid rgba(231,234,241,.9);border-radius:12px;background:#fff}.auditTime{font-weight:900;color:#9aa3b2;font-size:12px}.auditActor{font-weight:900;color:var(--nu-primary);font-size:12px}.auditMsg{font-weight:800;color:#374151;font-size:12.5px}.formGrid{display:grid;gap:14px}.fieldLabel{display:block;font-size:11px;letter-spacing:1px;font-weight:900;color:#6b7280;margin-bottom:8px}.input,.select,.textarea{width:100%;border:1px solid rgba(231,234,241,.95);border-radius:10px;padding:12px;font-weight:700;font-size:13px;outline:none}.textarea{resize:vertical}.noticeBox{border:1px solid rgba(59,130,246,.18);background:#3b82f612;border-radius:12px;padding:12px}.noticeTitle{display:flex;align-items:center;gap:8px;font-weight:900;color:var(--nu-primary)}.noticeText{margin-top:4px;font-weight:800;color:#4b5563;font-size:12px}.primaryBtn,.mutedBtn,.ghostBtn{border-radius:12px;padding:12px 14px;font-weight:900;font-size:13px;cursor:pointer;display:inline-flex;gap:10px;align-items:center;justify-content:center;border:1px solid transparent}.primaryBtn{background:var(--nu-primary);color:#fff;border-color:var(--nu-primary)}.primaryBtn:hover{filter:brightness(1.03)}.primaryBtn.wide,.mutedBtn.wide{width:100%}.mutedBtn{background:#f3f4f6;color:#374151;border-color:#e7eaf1f2}.ghostBtn{background:transparent;color:#6b7280;border-color:transparent}.signIntro{color:#4b5563;font-weight:750;font-size:13px;line-height:1.45}.signLabel{margin-top:16px;font-weight:900;letter-spacing:1px;color:#6b7280;font-size:11px}.signBox{margin-top:10px;border:2px dashed rgba(107,114,128,.35);border-radius:14px;position:relative;padding:10px;background:#fff}.miniBtn{position:absolute;right:12px;top:12px;border:1px solid rgba(231,234,241,.95);background:#f3f4f6;color:#374151;border-radius:10px;padding:8px 10px;font-weight:900;font-size:11px;cursor:pointer}.signCanvas{width:100%;border-radius:10px;background:#fff;display:block}.signHint{text-align:center;color:#9aa3b2;font-weight:800;font-size:11px;margin-top:6px}.signActions{display:flex;justify-content:center;gap:18px;margin-top:16px}.seatModalTitle{display:inline-flex;flex-direction:column;gap:2px;font-weight:900}.seatModalSub{font-weight:800;font-size:12px;color:#6b7280}.seatActionsRow{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.seatAction{border-radius:12px;padding:14px 12px;font-weight:900;border:1px solid rgba(231,234,241,.95);background:#fff;color:#6b7280;cursor:pointer}.seatAction.on{border-color:#22c55e8c;background:#22c55e1f;color:#1f6b3a}.seatAction.onMissing{border-color:#ef44448c;background:#ef44441a;color:#b42318}.divider{height:1px;background:#e7eaf1f2;margin:14px 0}.commTitle{font-weight:900;letter-spacing:1px;color:#6b7280;font-size:11px}.commRow{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:10px}.chatHeaderTitle{display:flex;align-items:center;gap:10px}.chatAvatar{width:34px;height:34px;border-radius:999px;background:#ffffff2e;color:var(--nu-primary);display:grid;place-items:center;font-weight:900}.chatName{font-weight:900;font-size:14px}.chatSub{font-weight:800;color:#6b7280;font-size:11px}.chatBody{background:#f3f4f6;border-radius:14px;padding:12px;min-height:320px;max-height:380px;overflow:auto}.chatDay{text-align:center;font-weight:900;letter-spacing:1px;color:#9aa3b2;font-size:11px;margin-bottom:10px}.bubbleRow{display:flex;margin:10px 0}.bubbleRow.right{justify-content:flex-end}.bubble{max-width:80%;border-radius:14px;padding:10px 12px;font-weight:800;font-size:13px;line-height:1.35;box-shadow:0 4px 10px #0f172a14}.bubble.out{background:#3b82f6eb;color:#fff;border-top-right-radius:10px}.bubble.in{background:#fff;color:#111827;border-top-left-radius:10px}.chatComposer{margin-top:12px;display:grid;grid-template-columns:1fr 44px;gap:10px;align-items:center}.chatInput{border-radius:999px;border:1px solid rgba(231,234,241,.95);padding:12px 14px;font-weight:800;background:#f3f4f6}.sendFab{width:44px;height:44px;border-radius:999px;border:0;background:var(--nu-primary);color:#fff;cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 18px #1e3a8940}@media(max-width:1020px){.topInner{flex-direction:column;align-items:flex-start}.timeBox{text-align:left;margin-left:0}.statGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.busGrid,.scheduleGrid{grid-template-columns:1fr}.busTopBar{flex-direction:column;align-items:flex-start}.busTopActions{justify-content:flex-start}}@media(min-width:1021px){.seatCanvas{padding:22px}.seatRow{grid-template-columns:1fr 64px 1fr}}@media(max-width:560px){.subNav{overflow-x:auto;-webkit-overflow-scrolling:touch}.pillTab{white-space:nowrap}.statValue{font-size:30px}.seatRow{grid-template-columns:1fr 36px 1fr;gap:8px}.seatSide{gap:8px}.seat{min-height:72px;padding:8px}.seatName{font-size:12px}}.loginScreen{height:100vh;display:grid;place-items:center}.loginCard{background:#fff;padding:40px;border-radius:14px;box-shadow:0 20px 40px #00000014;text-align:center}.primaryBtn{background:#1e3a89;color:#fff;border:none;padding:12px 20px;border-radius:8px;cursor:pointer}.agencyView{padding:40px}.agencyHeader{display:flex;justify-content:space-between;align-items:center}.schoolGrid{margin-top:30px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}.schoolCard{background:#fff;padding:20px;border-radius:14px;cursor:pointer;box-shadow:0 10px 25px #0000000d;transition:.2s ease}.schoolCard:hover{transform:translateY(-3px)}.schoolBadge{width:50px;height:50px;border-radius:50%;color:#fff;display:grid;place-items:center;font-weight:700;margin-bottom:10px}.breadcrumbBar{padding:15px 20px;background:#fff;display:flex;align-items:center;gap:20px;border-bottom:1px solid #eee}.breadcrumbBtn{background:transparent;border:none;cursor:pointer;font-weight:700}.schoolDashboard{padding:40px}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:#f5f7fb}
