@charset "UTF-8";
/* Campus monitor: screen-only presentation; saved coordinates and print layout stay intact. */
@media screen {
  .live-monitor .page-head { padding:0; margin-bottom:15px; align-items:center; }
  .live-monitor .page-head h1 { font-size:30px; letter-spacing:.015em; }
  .live-monitor .page-head .eyebrow { display:flex; color:#a33851; font-size:10px; letter-spacing:.15em; margin-bottom:6px; }
  .live-monitor .page-head p { display:block; color:#60738a; font-size:14px; margin-top:6px; }
  .live-monitor #live-query { display:grid; grid-template-columns:minmax(100px,.6fr) minmax(265px,1.3fr) minmax(280px,2fr) auto; gap:14px; padding:13px 18px; align-items:end; }
  .live-monitor #live-query .field { min-width:0; width:100%; }
  .live-monitor #live-query label,.live-monitor #live-query .field>span { color:#52657e; }
  .live-monitor .live-status { font-size:12px; color:#61768e; margin:12px 4px; }
  .live-monitor .live-legend-panel { display:flex; align-items:center; gap:17px; padding:11px 16px; margin:0 0 15px; background:#ffffffc9; border:1px solid #dde5ee; border-radius:12px; box-shadow:0 3px 15px #152d4704; }
  .live-legend-caption { flex-shrink:0; color:#6a7c92; font-size:10px; font-weight:750; letter-spacing:.12em; }
  .live-monitor .live-legend { min-width:0; margin:0; display:flex; flex-wrap:nowrap; gap:24px; overflow-x:auto; padding:2px 2px 8px; scrollbar-width:thin; scrollbar-color:#a6b7cd transparent; }
  .live-monitor .live-legend>span { font-size:17px; color:#314865; flex-shrink:0; font-weight:650; gap:9px; }
  .live-monitor .live-legend .live-seat { width:29px; height:29px; min-width:29px; border-radius:7px; }
  .live-monitor .live-alert-copy strong { font-size:16px; }
  .live-monitor .live-alert-copy small { font-size:11px; }
  .live-command-board { position:relative; overflow:hidden; color:#fff; border:1px solid #284c70; border-radius:17px; background:radial-gradient(ellipse at 98% 15%,#65426165,transparent 48%),linear-gradient(112deg,#112945,#234b6b); box-shadow:0 10px 28px #1839581b; margin:0 0 20px; }
  .live-command-board::after { content:""; position:absolute; top:-140px; right:9%; width:360px; height:360px; border:1px solid #ffffff0a; border-radius:50%; box-shadow:0 0 0 34px #ffffff03,0 0 0 68px #ffffff02; pointer-events:none; }
  .live-command-board>* { position:relative; z-index:1; }
  .live-command-board .live-session-label { margin:0; padding:12px 20px; border-bottom:1px solid #ffffff18; align-items:center; gap:16px; }
  .live-board-eyebrow { display:block; margin-bottom:4px; font-size:11px; letter-spacing:.05em; color:#b2c9db; }
  .live-command-board .live-session-label strong { color:white; font-size:19px; font-weight:650; }
  .live-session-meta { display:flex; align-items:center; gap:18px; }
  .live-date-tag { font-size:13px; font-variant-numeric:tabular-nums; padding:5px 10px; border:1px solid #ffffff28; border-radius:6px; background:#ffffff09; color:#eef4fb; white-space:nowrap; }
  .live-command-board .live-paper-list { color:#c3d4e3; font-size:11px; }
  .live-command-board .live-paper-list p { color:#e0eaf4; font-size:12px; }
  .live-command-board .live-summary { background:transparent; border:0; border-radius:0; margin:0; padding:13px 6px 8px; }
  .live-command-board .live-summary>div { flex-direction:column; align-items:flex-start; justify-content:flex-start; gap:8px; border:0; border-right:1px solid #ffffff1a; padding:0 18px; }
  .live-command-board .live-summary>div:last-child { border:0; }
  .live-command-board .live-summary span { display:flex; align-items:center; gap:7px; color:#d5e2ee; font-size:12px; line-height:1.5; }
  .live-command-board .live-summary strong { color:#fff; font-size:32px; line-height:1.2; font-variant-numeric:tabular-nums; letter-spacing:-.035em; font-weight:650; }
  .summary-light { display:inline-block; width:7px; height:7px; flex:0 0 7px; border-radius:50%; background:#fff; border:1px solid #b8c8db; }
  .summary-light.state-face_only { background:var(--signal-blue); border-color:#44aeff; }
  .summary-light.state-present { background:var(--signal-green); border-color:#56ecba; }
  .summary-light.state-grade_off { background:#171b24; border-color:#8799b0; }
  .summary-light.state-leave { background:#a8b1bf; border-color:#bcc7d3; }
  .live-command-board .live-summary-context { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:16px; padding:5px 22px 10px; margin:0; color:#b9ccdf; font-size:11px; }
  .live-command-board .live-summary-context strong { font-weight:600; color:#e1eaf4; }
  .live-campus-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin:0 0 18px; }
  .live-building-tabs { display:flex; flex-wrap:wrap; width:fit-content; margin:0; padding:4px; gap:3px; border:1px solid #d5dfeb; border-radius:10px; background:#e5ecf4; }
  .live-building-tabs button { display:flex; align-items:center; gap:9px; border:0; background:transparent; padding:7px 13px; min-height:37px; border-radius:7px; font-size:13px; color:#536b85; }
  .live-building-tabs button span { background:#fff8; min-width:23px; padding:1px 5px; font-size:10px; border-radius:4px; color:#58708b; font-variant-numeric:tabular-nums; }
  .live-building-tabs button.active { background:#fff; color:#163b61; box-shadow:0 2px 5px #14324b12; }
  .live-building-tabs button.active span { color:#fff; background:#24496d; }
  .campus-alert-summary { display:flex; flex-wrap:wrap; align-items:center; gap:5px; color:#8d3349; font-size:12px; }
  .campus-alert-summary strong { font-variant-numeric:tabular-nums; }
  .alert-divider { color:#c1a7b1; margin:0 5px; }
  .campus-alert-dot,.building-caption i { width:6px; height:6px; border-radius:50%; background:var(--signal-red); display:inline-block; margin-right:5px; }
  .live-room-sections { display:flex; flex-direction:column; align-items:stretch; gap:27px; }
  .live-building-section { background:transparent; border:0; border-radius:0; padding:0; }
  .live-building-section>header { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:0 0 13px; margin:0 0 12px; border-bottom:1px solid #cad7e5; }
  .building-identity { display:flex; gap:12px; align-items:center; }
  .building-symbol { display:grid; place-items:center; width:39px; height:42px; color:#fff; font-size:21px; line-height:1; font-weight:700; background:linear-gradient(145deg,#21405f,#365f7d); border-radius:9px 9px 9px 2px; box-shadow:inset 0 -3px 0 #b9395270; }
  .live-building-section>header h2 { color:#203e5e; font-size:17px; line-height:1.3; }
  .building-identity p { color:#687d94; font-size:11px; margin-top:2px; }
  .building-caption { font-size:11px; color:#667a91; }
  .live-building-rows { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
  .live-room-card,.live-room-card.schematic { position:relative; display:grid; grid-template-columns:minmax(85px,1fr) minmax(108px,1fr); grid-template-rows:auto 1fr auto; column-gap:14px; row-gap:8px; padding:13px 15px 0; min-width:0; border:1px solid #dce4ed; border-radius:12px; background:linear-gradient(120deg,#fff,#fbfcfe); box-shadow:0 3px 9px #1c3b5606; text-align:left; overflow:hidden; transition:box-shadow .16s,border-color .16s,transform .16s; }
  .live-room-card:hover { background:#fff; border-color:#91abc7; box-shadow:0 7px 19px #18395715; transform:translateY(-2px); }
  .live-room-card:focus-visible { outline:3px solid #789bbc; outline-offset:3px; }
  .live-room-card-head { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; gap:8px; }
  .live-room-card-head h3 { color:#1f3e61; font-size:20px; font-weight:750; letter-spacing:.015em; }
  .live-room-card-head .room-open { display:grid; place-items:center; width:23px; height:23px; margin:0; border-radius:50%; background:#eef3f8; color:#65819b; font-size:15px; }
  .live-room-visual { display:flex; align-items:center; justify-content:center; padding:4px 10px 8px 0; border-right:1px solid #e6ecf2; min-width:0; }
  .live-room-visual .room-diagram.mini { margin:0; gap:6px; width:fit-content; }
  .live-room-card .live-seat-grid { gap:3px; grid-template-columns:repeat(var(--live-columns),9px); }
  .live-room-card .live-seat { width:9px; min-width:9px; height:9px; border-radius:2px; box-shadow:none; }
  .live-room-card .live-seat.has-seat-alert { box-shadow:0 0 4px #ff315748; }
  .live-room-card .podium-marker { font-size:7px; color:#58718d; background:#d8e3ef; border:0; border-radius:3px; }
  .live-room-card .podium-top>.podium-marker,.live-room-card .podium-bottom>.podium-marker { width:48px; height:10px; }
  .live-room-card .podium-left>.podium-marker,.live-room-card .podium-right>.podium-marker { width:11px; height:48px; }
  .live-room-card .podium-left { grid-template-columns:11px minmax(0,1fr); }
  .live-room-card .podium-right { grid-template-columns:minmax(0,1fr) 11px; }
  .live-room-card .hall-diagram.mini>.podium-marker { width:100%; min-width:62px; height:12px; font-size:7px; }
  .live-room-card .live-seat-grid.hall-mini { gap:1px; grid-template-columns:repeat(var(--live-columns),4px); }
  .live-room-metrics { align-self:center; min-width:0; padding:2px 0 8px; }
  .room-metric-label { display:block; color:#506984; font-size:12px; }
  .room-metric-label small { font-size:10px; color:#8191a4; }
  .room-entry-number { display:flex; align-items:baseline; gap:7px; margin:1px 0 9px; color:#8191a6; font-size:13px; font-variant-numeric:tabular-nums; }
  .room-entry-number strong { color:#1b3e60; font-weight:650; font-size:29px; line-height:1.15; letter-spacing:-.04em; }
  .room-entry-track { height:4px; background:#e8eef4; border-radius:4px; overflow:hidden; }
  .room-entry-track i { display:block; height:100%; background:linear-gradient(90deg,#14b284,#3bdfad); border-radius:4px; }
  .room-entry-percent { display:block; color:#637b93; font-size:11px; margin-top:5px; }
  .live-room-card .live-room-card-stats { grid-column:1/-1; display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:9px 0 11px; border-top:1px solid #e8edf3; font-size:11px; color:#5a738e; }
  .live-room-card-stats>span { display:flex; align-items:center; gap:4px; }
  .live-room-card .live-room-card-stats strong { font-size:13px; color:#304c6a; }
  .live-room-card-stats .summary-light { width:5px; height:5px; flex-basis:5px; }
  .live-room-card-stats .room-alert-text { margin-left:auto; color:#a33b53; font-size:11px; }
  .live-room-card-stats .room-detail-link { margin-left:auto; color:#51728e; }
  .room-unmapped { grid-column:1/-1; color:#a54354; margin:0 0 10px; }

  /* Room detail has a calm reading surface; alerts remain explicit and luminous. */
  dialog:has(#live-room-detail) { background:#f7f9fc; border:1px solid #dbe4ef; }
  dialog:has(#live-room-detail) .modal-head { color:#fff; background:radial-gradient(ellipse at right,#743b5760,transparent 55%),linear-gradient(115deg,#183754,#315779); padding:20px 24px; }
  dialog:has(#live-room-detail) .modal-head h2 { color:white; }
  dialog:has(#live-room-detail) .modal-head .btn { background:#ffffff18; color:white; }
  dialog:has(#live-room-detail) .modal-body { padding:18px 24px 24px; }
  #live-detail-status { color:#657d94; font-size:11px; padding:0 0 12px; margin:0; }
  #live-room-detail .live-session-label { margin:0 0 10px; padding:0; }
  #live-room-detail .live-session-label strong { font-size:17px; color:#214461; }
  #live-room-detail .live-session-label p { font-size:12px; color:#6b8299; margin-top:4px; }
  #live-room-detail .live-room-exams>div { flex-direction:row; align-items:baseline; justify-content:space-between; gap:4px 12px; flex-wrap:wrap; }
  #live-room-detail .live-key-panel { border:1px solid #dbe4ed; border-radius:9px; background:#edf3f8; padding:0 14px; margin:0 0 14px; }
  #live-room-detail .live-key-panel>summary { display:flex; align-items:center; justify-content:space-between; gap:12px; cursor:pointer; font-size:12px; color:#496781; padding:10px 0; }
  #live-room-detail .live-key-panel>summary::after { content:"＋"; margin-left:auto; }
  #live-room-detail .live-key-panel[open]>summary::after { content:"−"; }
  .live-key-dots { display:flex; align-items:center; gap:6px; }
  .live-key-dots .summary-light { width:9px; height:9px; flex-basis:9px; }
  .summary-light.alert-dot { background:var(--signal-red); border-color:#dd2648; }
  #live-room-detail .live-key-panel .live-detail-legend { margin:0; padding:8px 0 0; border:0; background:transparent; }
  #live-room-detail .live-room-exams { padding:8px 12px; margin:12px 0; background:#eaf0f7; border-left:3px solid #436487; }
  #live-room-detail .live-stat-panel { padding:17px 19px; border-radius:12px; border:1px solid #dbe4ed; background:#fff; margin:15px 0; box-shadow:0 4px 14px #1a3a5504; }
  #live-room-detail .live-panel-heading h3 { color:#304e6d; font-size:14px; }
  #live-room-detail .live-panel-heading>p { color:#708297; font-size:11px; }
  #live-room-detail .live-detail-summary { margin-top:16px; gap:12px; }
  #live-room-detail .live-stat-item>span { font-size:11px; color:#4f6885; }
  #live-room-detail .live-stat-number strong { color:#264766; font-size:26px; }
  #live-room-detail .live-stat-item.metric-status-face_only strong { color:#0876cb; }
  #live-room-detail .live-stat-item.metric-status-present strong { color:#168563; }
  #live-room-detail .live-reconciliation { font-size:11px; margin-top:11px; padding-top:9px; }
  #live-room-detail .live-detail-legend { margin:0 0 15px; padding:12px 16px; border:1px solid #dfe7ef; border-radius:10px; background:#eef3f8; }
  #live-room-detail .live-detail-legend .live-panel-heading { margin-bottom:8px; }
  #live-room-detail .live-detail-legend .live-legend { overflow-x:auto; margin:0; padding:3px 1px 10px; gap:19px; scrollbar-width:thin; }
  #live-room-detail .live-detail-legend .live-legend>span { flex-shrink:0; font-size:14px; gap:7px; }
  #live-room-detail .live-detail-legend .live-seat { width:24px; height:24px; min-width:24px; border-radius:6px; }
  #live-room-detail .live-alert-copy strong { font-size:14px; }
  #live-room-detail .live-alert-copy small { font-size:10px; }
  #live-room-detail .live-detail-legend .context-help { margin:4px 0 0; font-size:11px; }
  #live-room-detail .live-detail-workspace { background:white; border:1px solid #dce5ef; border-radius:12px; padding:0 18px 18px; }
  #live-room-detail .live-view-toolbar { padding:13px 0; margin:0; }
  #live-room-detail .live-view-switch { margin:0; background:#eaf0f6; border-color:#d9e3ee; }
  #live-room-detail .live-view-switch button.active { color:#fff; background:#254b6c; }
  #live-room-detail .live-view-switch button { font-size:13px; padding:8px 17px; }
  #live-room-detail .live-student-list th { background:#eaf0f7; color:#496783; font-size:12px; }
  #live-room-detail .live-student-list td { font-size:14px; padding:13px 16px; }
  #live-room-detail .live-student-list tr:nth-child(even) td { background:#fafcfe; }
  #live-room-detail .live-list-student strong { font-size:15px; }
  #live-room-detail .live-list-student small { font-size:12px; color:#6c8299; }
  #live-room-detail .live-detail-plan { background:radial-gradient(#d9e3ed 1px,transparent 1px); background-size:16px 16px; border-radius:9px; padding:18px 14px; margin:0; }
  #live-room-detail .live-seat-grid.detail { min-width:0; }
  #live-room-detail .detail-seat { border-top:3px solid var(--seat-edge)!important; min-height:115px; border-radius:9px; box-shadow:0 3px 8px #173b5910; }
  #live-room-detail .detail-seat .live-cell-status { font-size:12px; }
  #live-room-detail .detail-seat .live-student-name { font-size:14px; }
  #live-room-detail .hall-range-direction { margin-bottom:12px; font-size:12px; color:#476482; }
  #live-room-detail .podium-marker { background:linear-gradient(110deg,#d1dfed,#e8eef6); color:#355777; border-color:#b0c4d9; }
  #live-room-detail .live-student-panel { margin-top:0; box-shadow:0 5px 20px #1f405609; }
  #live-room-detail .live-student-header { background:linear-gradient(115deg,#f0f5fa,#fff); }
  #live-room-detail .live-person-status { padding:4px 8px; border-radius:6px; background:#eff4f9; }
  #live-room-detail .live-person-status.has-seat-alert { color:#982e46; background:#fff0f3; }
}
@media screen and (min-width:1650px) {
  .live-building-rows { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media screen and (max-width:1100px) {
  .live-monitor #live-query { grid-template-columns:1fr 1fr; }
  .live-monitor #live-query .field:has([name=session_key]) { grid-column:1/-1; }
  .live-monitor #live-query>.btn { grid-column:1/-1; }
  .live-command-board .live-summary span { font-size:11px; }
  .live-command-board .live-summary>div { padding:0 12px; }
}
@media screen and (max-width:700px) {
  .live-monitor .page-head { flex-direction:row; align-items:center; gap:10px; margin-bottom:16px; }
  .live-monitor .page-head .eyebrow { font-size:8px; letter-spacing:.09em; }
  .live-monitor .page-head .btn { font-size:12px; padding:8px 10px; min-height:40px; white-space:nowrap; }
  .live-monitor .page-head h1 { font-size:27px; }
  .live-monitor .page-head p { font-size:13px; }
  .live-monitor #live-query { padding:16px; gap:12px; grid-template-columns:minmax(0,1fr); }
  .live-monitor .live-legend-panel { padding:11px 14px; margin-bottom:15px; gap:7px; flex-direction:column; align-items:stretch; }
  .live-monitor .live-legend>span { font-size:16px; }
  .live-command-board { border-radius:13px; }
  .live-command-board .live-session-label { padding:17px; flex-direction:column; align-items:flex-start; gap:12px; }
  .live-command-board .live-session-label strong { font-size:18px; }
  .live-session-meta { width:100%; justify-content:space-between; gap:10px; }
  .live-command-board .live-summary.five-category-summary { grid-template-columns:repeat(3,minmax(0,1fr)); padding:15px 6px 5px; row-gap:20px; }
  .live-command-board .live-summary>div { padding:0 11px; border-right:1px solid #ffffff1a; }
  .live-command-board .live-summary>div:nth-child(3) { border-right:0; }
  .live-command-board .live-summary>div:last-child { grid-column:2/-1; border:0; }
  .live-command-board .live-summary strong { font-size:29px; }
  .live-command-board .live-summary span { font-size:11px; }
  .live-command-board .live-summary-context { justify-content:flex-start; padding:13px 17px; gap:10px; font-size:10px; }
  .live-campus-toolbar { gap:11px; margin-bottom:18px; }
  .live-building-tabs { width:100%; }
  .live-building-tabs button { flex:1; justify-content:center; padding:7px 9px; }
  .campus-alert-summary { font-size:11px; }
  .live-building-rows { grid-template-columns:minmax(0,1fr); gap:10px; }
  .live-room-card,.live-room-card.schematic { grid-template-columns:minmax(85px,1fr) minmax(110px,1fr); padding:13px 16px 0; column-gap:18px; }
  .live-room-card .live-room-card-stats { font-size:11px; gap:11px; }
  .live-room-card-stats .room-alert-text { font-size:10px; }
  .live-building-section>header { gap:8px; }
  .building-caption { font-size:10px; }
  dialog.wide:has(#live-room-detail) { width:calc(100vw - 16px); max-width:calc(100vw - 16px); max-height:calc(100dvh - 16px); border-radius:12px; }
  dialog:has(#live-room-detail) .modal-body { padding:12px; }
  dialog:has(#live-room-detail) .modal-head { padding:16px; }
  dialog:has(#live-room-detail) .modal-head h2 { font-size:18px; }
  #live-room-detail .live-stat-panel { padding:12px; margin:12px 0; }
  #live-room-detail .live-panel-heading { gap:5px; }
  #live-room-detail .live-detail-summary.five-category-summary { grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 7px; margin-top:12px; }
  #live-room-detail .live-detail-summary>.live-stat-item { display:flex; flex-direction:column; align-items:flex-start; gap:3px; padding:0 5px 0 0; }
  #live-room-detail .live-stat-number { margin:0; }
  #live-room-detail .live-stat-number em { display:none; }
  #live-room-detail .five-category-summary .live-stat-item:last-child { grid-column:2/-1; }
  #live-room-detail .live-stat-number strong { font-size:24px; }
  #live-room-detail .live-stat-item>span { font-size:10px; }
  #live-room-detail .live-stat-number em { font-size:10px; }
  #live-room-detail .live-detail-legend { padding:11px 13px; }
  #live-room-detail .live-detail-workspace { padding:0 10px 10px; }
  #live-room-detail .live-view-toolbar { display:block; }
  #live-room-detail .live-view-switch { width:100%; margin:0 0 7px; }
  #live-room-detail .live-view-toolbar>.small { display:none; }
  #live-room-detail .live-range-controls { gap:10px; margin:12px 0 10px; }
  #live-room-detail .live-range-controls .field>span { font-size:12px; }
  #live-room-detail .live-student-list tr { padding:12px 8px; grid-template-columns:34px minmax(0,1fr) 44px; gap:6px 8px; }
  #live-room-detail .live-student-list td { padding:0; font-size:12px; }
  #live-room-detail .live-student-list tr:nth-child(even) { background:#fafcfe; }
  #live-room-detail .live-student-list .live-person-status { font-size:11px; padding:3px 5px; }
  #live-room-detail .live-list-student strong { font-size:14px; }
  #live-room-detail .live-list-student small { font-size:11px; }
}
@media screen and (prefers-reduced-motion:reduce) {
  .live-room-card { transition:none; }
  .live-room-card:hover { transform:none; }
}
