.incident-dialog{box-sizing:border-box;width:96vw;max-width:1600px;max-height:94dvh;border:6px solid #d33526;border-radius:24px;padding:clamp(20px,3vw,52px);background:#fffaf2;color:#241e1a}
.incident-dialog::backdrop{background:#141922df}
.incident-dialog h2{font-size:clamp(32px,4vw,72px);margin:0 0 12px;color:#a32219;line-height:1.2}
.incident-context{font-size:clamp(18px,2vw,32px);margin:0 0 24px;color:#665344}
.incident-text{font-size:clamp(30px,3.8vw,68px);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}
.incident-image{display:block;max-width:100%;max-height:55vh;object-fit:contain;margin:20px auto}
.incident-confirm{display:block;width:100%;min-height:80px;margin-top:24px;font-size:clamp(28px,3vw,48px);font-weight:800;background:#a32219;color:white;border:0;border-radius:14px;padding:18px}
.incident-confirm:disabled{opacity:.5}
.incident-status{font-size:20px;line-height:1.5;white-space:pre-wrap}
.incident-dialog-image{width:96vw;max-width:96vw;height:96dvh;max-height:96dvh;padding:12px;border:2px solid #8f6659;border-radius:16px;background:#182431;color:#edf3f8;overflow:hidden}
.incident-dialog-image[open]{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:8px}
.incident-dialog-image h2{font-size:clamp(20px,1.6vw,30px);margin:0;color:#f1d2c6;line-height:1.3}
.incident-dialog-image .incident-context{font-size:14px;margin:0;color:#b4c6d5;line-height:1.4}
.incident-dialog-image .incident-content{grid-row:3;min-height:0;min-width:0;display:flex;flex-direction:column;gap:10px;overflow:auto}
.incident-dialog-image .incident-text{flex:none;max-height:24%;overflow:auto;font-size:clamp(20px,1.8vw,34px);line-height:1.4}
.incident-dialog-image .incident-image{flex:1 1 0;min-height:0;width:100%;height:0;max-width:100%;max-height:none;object-fit:contain;margin:0}
.incident-dialog-image .incident-status{grid-row:4;min-width:0;font-size:16px;line-height:1.4;margin:0;color:#ffe0ac;overflow-wrap:anywhere}
.incident-dialog-image .incident-confirm{grid-row:5;min-height:64px;margin:0;padding:12px;font-size:clamp(24px,2vw,34px);border:1px solid #8bbda6;border-radius:10px;background:#315e4f;color:#eefbf4}
.incident-dialog-image-only[open]{grid-template-rows:minmax(0,1fr) auto auto}
.incident-dialog-image-only h2,.incident-dialog-image-only .incident-context{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.incident-dialog-image-only .incident-content{grid-row:1}
.incident-dialog-image-only .incident-status{grid-row:2}
.incident-dialog-image-only .incident-confirm{grid-row:3}
.classroom-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;flex:none;min-width:0;border-top:1px solid #3b4655;padding-top:14px;margin-top:4px}
.classroom .incident-call-screen .classroom-actions>.room-picker-strip{min-width:0;border:0;padding:0;gap:16px}
.incident-call{position:static;display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:12px;box-sizing:border-box;min-width:0;width:max-content;max-width:min(390px,100%);margin:0;padding:0;background:transparent;color:#aebfce;border:0;box-shadow:none;overflow-wrap:anywhere}
.incident-call button{font-size:18px;min-height:48px;min-width:112px;background:#263c50;color:#e2edf6;border:1px solid #607e95;border-radius:9px;padding:9px 16px;touch-action:manipulation}
.incident-call button:disabled{opacity:.65;cursor:default}
.incident-call button:focus-visible{outline:3px solid #b1cfe5;outline-offset:3px}
.incident-call p{font-size:17px;margin:0;line-height:1.4;min-width:0;max-width:230px}
.incident-call-received p{font-size:18px;font-weight:650;color:#a9ddc0}
.incident-call-confirm-dialog{box-sizing:border-box;width:min(560px,92vw);max-height:90dvh;overflow:auto;padding:24px;border:1px solid #607e95;border-radius:14px;background:#1b2937;color:#e2edf6}
.incident-call-confirm-dialog::backdrop{background:#0c131ccc}
.incident-call-confirm-dialog h2{font-size:26px;margin:0 0 16px}
.incident-call-confirm-dialog p{font-size:19px;line-height:1.6}
.incident-call-confirm-dialog>div{display:flex;justify-content:flex-end;gap:14px;flex-wrap:wrap}
.incident-call-confirm-dialog button{min-height:48px;padding:10px 20px;border:1px solid #607e95;border-radius:8px;background:#263c50;color:#e2edf6;font-size:19px}
.incident-call-confirm-dialog #incidentCallConfirm{background:#315e4f;border-color:#8bbda6}
.incident-call-confirm-dialog #incidentCallConfirm{touch-action:none;user-select:none;-webkit-user-select:none;min-width:230px}
.incident-call-confirm-dialog #incidentCallConfirm.call-holding{background:linear-gradient(90deg,#477b5e var(--call-progress,0%),#263c50 var(--call-progress,0%))}
.incident-call-confirm-dialog #incidentCallConfirm:disabled{opacity:.55}
#incidentCallProgress{font-size:16px;min-height:52px;color:#bed0df}
@media(max-width:700px){
 .classroom-actions{grid-template-columns:minmax(0,1fr);gap:14px}
 .incident-call{max-width:100%;gap:10px}
 .incident-call button{max-width:100%;min-width:100px;padding:9px 12px;white-space:normal;font-size:16px}
 .incident-call p,.incident-call-received p{font-size:16px}
 .incident-dialog-image{padding:8px;border-radius:10px}
 .incident-dialog-image .incident-confirm{min-height:56px;font-size:22px;padding:10px}
}
.incident-admin{display:grid;gap:20px}
.incident-admin section,.patrol-card{border:1px solid #d9e3eb;border-radius:16px;padding:22px;background:white}
.incident-admin h2,.incident-admin h3{margin-top:0}
.incident-admin label{display:grid;gap:7px;margin:12px 0}
.incident-admin input,.incident-admin select,.incident-admin textarea{max-width:100%;box-sizing:border-box;width:100%;min-height:46px;padding:10px;font:inherit;border:1px solid #b9c8d4;border-radius:8px}
.incident-admin select[multiple]{min-height:180px}
.incident-admin .incident-room-list{display:flex;flex-wrap:wrap;gap:12px}
.incident-room-list label{display:flex;align-items:center}
.incident-room-list input{width:auto;min-height:24px}
.incident-admin button,.patrol-card button{min-height:46px;padding:10px 18px;margin:6px 6px 6px 0;font:inherit;border:1px solid #bacbd9;border-radius:9px}
.incident-warning{background:#fff2d5;border-left:5px solid #bc7a13;padding:14px;line-height:1.6}
.incident-report{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;border-top:1px solid #d9e3eb;padding:14px 0}
.patrol-page{margin:0;background:#eef3f7;color:#24394b;font:17px/1.6 system-ui,sans-serif}
.patrol-main{max-width:700px;padding:20px;margin:auto}
.patrol-main h1{font-size:28px}
.patrol-card{margin:15px 0}
.patrol-card button{width:100%;background:#244e72;color:white}
.patrol-main,.patrol-main *{box-sizing:border-box;min-width:0}
.patrol-main{overflow-wrap:anywhere}
.patrol-main button{max-width:100%;white-space:normal}
.patrol-card button:disabled{opacity:.55}
.patrol-card .patrol-received{font-size:22px;font-weight:800;color:#17683e}
.patrol-card .patrol-busy{font-size:22px;font-weight:750;color:#85550e}
.patrol-response-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.patrol-response-actions button{margin:0}
.patrol-response-actions .patrol-wait{background:#78571f;border-color:#78571f}
.patrol-dashboard-mode{background:#f3f5fa;color:#192f4d}
.patrol-dashboard-mode .patrol-main{max-width:740px;padding:14px}
.patrol-dashboard-mode .patrol-main>h1{font-size:25px;margin:4px 0}
.patrol-dashboard-mode #patrolStatus{font-size:12px;color:#6c7c90;margin:4px 0 14px}
.patrol-exam-context{padding:12px 14px;background:#1d3558;border-radius:16px;color:#fff}
.patrol-exam-context small{font-size:12px;color:#bed0e7}
.patrol-exam-context h2{font-size:21px;margin:3px 0;line-height:1.3}
.patrol-exam-context p{font-size:13px;color:#c3d4ea;margin:3px 0 0}
.patrol-dashboard-summary{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 0;font-size:14px}
.patrol-dashboard-summary>span{font-size:12px;color:#9a6a1c}
.patrol-room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.patrol-room-card{min-width:0;min-height:clamp(144px,calc((100dvh - 300px)/3),180px);border:1px solid #e0e7f1;border-radius:14px;background:white;padding:10px;box-shadow:0 4px 15px #274c7e06}
.patrol-room-card h3{font-size:21px;margin:4px 0 1px;line-height:1.3}
.patrol-room-card>small{display:block;font-size:12px;color:#78889c;overflow-wrap:anywhere}
.patrol-attendance{width:max-content;max-width:100%;margin-left:auto;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:650}
.patrol-attendance.unreported{background:#fff0d3;color:#9d6516}
.patrol-attendance.none{background:#e4f4ee;color:#198275}
.patrol-attendance.absent{background:#eaf0fc;color:#436ba8}
.patrol-correction{font-size:11px;line-height:1.35;margin-top:3px;color:#78889c}
.patrol-correction.uninformed{color:#a16b1b;font-weight:650}
.patrol-correction.informed{color:#198275}
.patrol-room-call{font-size:12px;min-width:0;margin-top:6px}
.patrol-room-call p{font-size:12px;margin:4px 0 7px;line-height:1.4;color:#8493a6}
.patrol-room-call .patrol-waiting,.patrol-room-call .patrol-busy{color:#a16b1b;font-weight:650}
.patrol-room-call .patrol-received{color:#198275;font-weight:650}
.patrol-room-call .patrol-response-actions{gap:6px}
.patrol-room-call button{width:100%;min-height:44px;padding:5px 3px;border:0;border-radius:9px;font-size:13px;font-weight:600;background:#356aca;color:#fff;margin:0;touch-action:manipulation}
.patrol-room-call button.patrol-wait{background:#fff0d3;color:#9d6516}
.patrol-dashboard-mode details{font-size:13px;color:#697b90;margin:12px 0}
.patrol-dashboard-mode summary{min-height:36px;align-content:center;cursor:pointer}
.patrol-call-history .patrol-card{color:#24394b}
@media(min-width:600px){.patrol-room-card{padding:14px;min-height:160px}.patrol-room-call button{font-size:16px;min-height:44px}}
.incident-admin{min-width:0}
.incident-admin>section,.incident-admin .incident-duty-person{min-width:0;overflow-wrap:anywhere}
.incident-admin .incident-admin-help{border:1px solid #d9e3eb;border-radius:12px;padding:12px 16px;background:#f5f8fb}
.incident-admin .incident-admin-help summary{cursor:pointer;min-height:44px;display:list-item;align-content:center;font-weight:650}
.incident-admin .incident-admin-help p{line-height:1.6}
.incident-admin .incident-duty-person p{margin:8px 0;white-space:normal}
.incident-admin .incident-phone-status{font-size:15px;color:#405b6d}
.incident-admin .incident-person-actions{display:flex;flex-wrap:wrap;gap:8px}
.incident-admin .incident-person-actions button{margin:0}
.incident-admin .incident-personal-link{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px;background:#f0f6fa;border-radius:10px;white-space:normal}
.incident-admin .incident-personal-link input{min-width:0;flex:1 1 100%;font-size:16px}
.incident-admin .incident-personal-link small{flex-basis:100%}
.incident-admin .incident-access-code input{flex:1 1 150px;width:150px;max-width:240px;font-size:26px;font-weight:750;letter-spacing:.18em;font-variant-numeric:tabular-nums}
.incident-admin [hidden]{display:none!important}
.incident-admin input[type=checkbox]{width:24px;min-height:24px}
.incident-admin a{overflow-wrap:anywhere}
.incident-admin .incident-admin-help,.incident-admin .incident-admin-help summary,.incident-admin .incident-admin-help p,
.incident-admin .incident-personal-link,.incident-admin .incident-personal-link small{color:#203b50}
.incident-admin .incident-phone-status{color:inherit;opacity:.85}
.incident-shift-details{white-space:normal;margin-top:12px}
.incident-shift-details>summary{cursor:pointer;min-height:44px;align-content:center}
.incident-shift-row{padding:10px 0;border-top:1px solid #526779}
@media(max-width:600px){
  .incident-admin>section{padding:14px}
  .incident-admin input,.incident-admin select,.incident-admin textarea{font-size:16px}
  .incident-admin .incident-person-actions button{flex:1 1 130px}
  .incident-admin .incident-personal-link button,.incident-admin .incident-personal-link a{min-height:46px;align-content:center}
}
.patrol-enrollment-code{font:700 clamp(32px,8vw,48px)/1.5 ui-monospace,monospace;letter-spacing:.18em;text-align:center;color:#172b4d}
