:root{
  --bg:#ececec;--panel:#f7f7f7;--line:#9ea3a8;--line-dark:#666;--text:#111;
  --green:#4ba934;--yellow:#e7cf18;--red:#c60e0e;--blue:#245b9f;--soft:#dfe5ea;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Segoe UI,Tahoma,Arial,sans-serif;color:var(--text)}button,input,select,textarea{font:inherit}
.hidden{display:none!important}
.login-body{min-height:100vh;background:linear-gradient(135deg,#e9edf1,#cfd6dd);display:grid;place-items:center;padding:24px}
.login-shell{width:min(920px,100%);display:grid;grid-template-columns:1.1fr .9fr;border:1px solid #8e969e;background:#f4f4f4;box-shadow:0 18px 55px #0003}
.login-brand{padding:48px;background:#132238;color:#fff;display:flex;align-items:center;gap:22px}.login-brand img{width:88px;height:88px;object-fit:contain}.login-brand span{font-size:12px;letter-spacing:.12em;color:#9fb4cc}.login-brand h1{font-size:42px;margin:6px 0}.login-brand p{margin:0;color:#bfd0e3}.login-card{padding:42px;background:#fff}.login-card header strong,.login-card header span{display:block}.login-card header strong{font-size:24px}.login-card header span{margin-top:6px;color:#66717c;font-size:13px}.login-card form{margin-top:26px;display:grid;gap:16px}.login-card label{display:grid;gap:6px;font-size:13px;font-weight:600}.login-card input{height:43px;border:1px solid #a8b0b7;padding:0 11px;background:#fff}.login-card button{height:44px;border:1px solid #16395f;background:#245b9f;color:#fff;font-weight:700;cursor:pointer}.login-card footer{margin-top:24px;padding-top:14px;border-top:1px solid #ddd;color:#7b838b;font-size:11px}.login-error,.form-error{padding:9px 10px;border:1px solid #c96666;background:#fff2f2;color:#9c1717;font-size:12px}

.swd-body{background:#cfd3d7;min-height:100vh;overflow:hidden}.swd-window{height:100vh;background:var(--bg);display:grid;grid-template-rows:34px 28px minmax(0,1fr) 82px;border:1px solid #90959a}.window-titlebar{height:34px;background:#eef2f5;border-bottom:1px solid #c1c5c9;display:flex;align-items:center;justify-content:space-between;padding:0 10px;font-size:12px}.window-titlebar>div{display:flex;align-items:center;gap:7px}.window-titlebar img{width:20px;height:20px;object-fit:contain}.window-titlebar span{color:#58636c}.menu-bar{height:28px;display:flex;align-items:center;gap:0;background:#f7f7f7;border-bottom:1px solid #c8c8c8;padding:0 6px}.menu-bar button{height:26px;padding:0 9px;border:0;background:transparent;font-size:12px;cursor:pointer}.menu-bar button:hover{background:#dfe8f3}.menu-spacer{flex:1}.menu-bar>span:last-child{font-size:11px;color:#555;padding-right:8px}
.swd-main{min-height:0;display:grid;grid-template-rows:minmax(260px,47%) 42px minmax(0,1fr);padding:10px 12px 8px;gap:8px}.resource-area{min-height:0;display:grid;grid-template-rows:29px minmax(0,1fr)}.resource-toolbar{display:flex;align-items:flex-end;justify-content:space-between}.tabs button{border:1px solid #aaa;border-bottom:0;background:#eee;padding:5px 11px;height:28px}.tabs button.active{background:#fff}.legend{display:flex;gap:12px;font-size:10px;padding-bottom:5px}.legend span{display:flex;align-items:center;gap:4px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dot.available{background:var(--green)}.dot.busy{background:var(--yellow)}.dot.unavailable{background:var(--red)}
.resource-board{min-height:0;border:1px solid #a7aaad;background:#fff;display:grid;grid-template-columns:310px 310px minmax(360px,1fr);overflow:auto;gap:8px;padding:8px}.unit-column{border:1px solid #50555a;min-height:100%;background:#fafafa;display:grid;grid-template-rows:34px minmax(0,1fr)}.unit-column>header{padding:7px 10px;font-weight:700;font-size:15px;border-bottom:1px solid #bbb;background:#f4f4f4}.duty-unit>header{font-size:13px}.unit-list{overflow:auto;padding:4px}.team-row,.duty-row{width:100%;border:0;border-bottom:1px solid #d5d5d5;background:#ececec;min-height:29px;padding:4px 7px;text-align:left;display:grid;align-items:center;cursor:pointer}.team-row{grid-template-columns:14px minmax(0,1fr) auto;gap:6px}.team-row:hover,.team-row.selected,.duty-row:hover{background:#dbe7f4}.team-row strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-row small{font-size:10px;color:#555}.status-ball{width:10px;height:10px;border-radius:50%}.status-ball.available{background:var(--green)}.status-ball.dispatched,.status-ball.enroute,.status-ball.returning{background:var(--yellow)}.status-ball.onscene,.status-ball.transport,.status-ball.hospital{background:var(--red)}.status-ball.unavailable{background:#666}.duty-row{grid-template-columns:78px minmax(0,1fr);gap:6px}.duty-row time{font-weight:700;font-size:10px}.duty-row strong{font-size:11px}.duty-row small{display:block;color:#666;font-size:9px;margin-top:2px}.empty-small{padding:16px;color:#888;font-style:italic;font-size:11px;text-align:center}.resource-detail{border:1px solid #b6b8ba;background:#fcfcfc;overflow:auto;padding:10px}.detail-placeholder{height:100%;min-height:90px;display:grid;place-items:center;color:#8a8f94;font-style:italic;text-align:center;font-size:12px}.team-detail-head{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #bbb;padding-bottom:8px}.team-detail-head h2{margin:0;font-size:20px}.team-detail-head span{font-size:11px;color:#555}.team-status-box{padding:5px 8px;border:1px solid #aaa;background:#eee;font-size:11px;font-weight:700}.member-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:11px}.member-table th,.member-table td{border:1px solid #c7c7c7;padding:5px 6px;text-align:left}.member-table th{background:#ececec}.active-job{margin-top:12px;border:1px solid #bc7a7a;background:#fff8f8;padding:9px}.active-job strong,.active-job span{display:block}.active-job strong{color:#9f0c0c}.active-job span{margin-top:4px;font-size:11px}.team-detail-actions{margin-top:10px;display:flex;gap:6px}
.actions-row{display:flex;align-items:center;gap:8px}.classic-button{min-height:30px;border:1px solid #8f9499;background:linear-gradient(#fff,#e5e5e5);padding:0 12px;cursor:pointer}.classic-button:hover{background:#e8f0f8}.classic-button.primary{font-weight:700}.classic-button.danger{border-color:#9f2727;background:linear-gradient(#df4747,#af1414);color:#fff;font-weight:800}.actions-row span{margin-left:auto;color:#666;font-size:10px}
.bottom-grid{min-height:0;display:grid;grid-template-columns:1.65fr .95fr;gap:8px}.registry-panel,.selected-panel{min-height:0;border:1px solid #aaa;background:#fff;display:grid;grid-template-rows:34px minmax(0,1fr)}.registry-panel>header,.selected-panel>header{display:flex;align-items:center;justify-content:space-between;padding:0 8px;background:#f1f1f1;border-bottom:1px solid #aaa;font-size:12px}.registry-filters{display:flex;gap:3px}.registry-filters button{border:1px solid #aaa;background:#fafafa;font-size:10px;padding:3px 7px;cursor:pointer}.registry-filters button.active{background:#dce8f4}.table-wrap{overflow:auto;background:#0d0d0d}.registry-table{width:100%;border-collapse:collapse;table-layout:fixed;color:#f2f2f2;font-family:Consolas,monospace;font-size:10px}.registry-table th{position:sticky;top:0;background:#ececec;color:#111;border:1px solid #bbb;padding:5px;z-index:2}.registry-table td{border-bottom:1px solid #1d1d1d;padding:5px 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.registry-table tbody tr{cursor:pointer}.registry-table tbody tr:hover,.registry-table tbody tr.selected{background:#18334f}.registry-table tbody tr.priority-critical td{color:#ff5b5b}.selected-content{overflow:auto;padding:9px}.dispatch-card h2{margin:0 0 4px;font-size:17px}.dispatch-card .dispatch-number{font-family:Consolas,monospace;color:#555}.dispatch-grid{margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:7px}.dispatch-grid div{border:1px solid #ccc;padding:6px}.dispatch-grid small,.dispatch-grid strong{display:block}.dispatch-grid small{font-size:9px;color:#666}.dispatch-grid strong{font-size:11px;margin-top:2px}.dispatch-description{margin-top:8px;border:1px solid #ccc;padding:7px;font-size:11px}.dispatch-description strong{display:block;margin-bottom:4px}.dispatch-actions{margin-top:8px;display:flex;gap:5px;flex-wrap:wrap}
.status-bar{display:grid;grid-template-columns:150px 220px 220px 150px 1fr;gap:8px;border-top:1px solid #888;padding:7px;background:#efefef}.status-bar>div{border:1px solid #aaa;background:#f8f8f8;padding:8px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:11px}.status-bar .clock{grid-column:4;display:grid;gap:2px;text-align:center}.status-bar .clock strong{font-family:Consolas,monospace}.status-bar .clock span{font-weight:800;font-size:14px}
.modal{position:fixed;inset:0;background:#0006;display:grid;place-items:center;padding:22px;z-index:50}.modal-card{width:min(820px,100%);max-height:92vh;overflow:auto;background:#f5f5f5;border:1px solid #666;box-shadow:0 20px 60px #0006}.modal-card>header{min-height:45px;padding:7px 10px;background:#e6e9ec;border-bottom:1px solid #999;display:flex;align-items:center;justify-content:space-between}.modal-card>header strong,.modal-card>header span{display:block}.modal-card>header strong{font-size:15px}.modal-card>header span{font-size:10px;color:#666;margin-top:2px}.modal-close{width:30px;height:30px;border:1px solid #999;background:#fff;font-size:20px;cursor:pointer}.modal-card form{padding:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.form-grid label{display:grid;gap:4px;font-size:11px;font-weight:600}.form-grid .span2{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea{width:100%;border:1px solid #999;background:#fff;padding:7px;font-size:12px}.modal-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}.duties-modal-card{width:min(980px,100%)}.duties-modal-body{padding:12px;display:grid;gap:8px}.duty-card{border:1px solid #aaa;background:#fff}.duty-card header{padding:7px;background:#ececec;border-bottom:1px solid #bbb;display:flex;justify-content:space-between}.duty-card header strong{font-size:12px}.duty-card header span{font-size:10px;color:#555}.duty-participants{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:7px}.duty-participants div{border:1px solid #ddd;padding:5px;font-size:10px}.duty-participants strong,.duty-participants span{display:block}.duty-participants span{color:#666;margin-top:2px}
@media(max-width:1000px){.swd-body{overflow:auto}.swd-window{height:auto;min-height:100vh}.swd-main{grid-template-rows:auto auto auto}.resource-board{grid-template-columns:1fr}.bottom-grid{grid-template-columns:1fr}.status-bar{grid-template-columns:repeat(2,1fr)}.status-bar .clock{grid-column:auto}.resource-area{min-height:560px}.menu-bar{overflow:auto}.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:auto}.duty-participants{grid-template-columns:1fr}}

/* ===== SWD PSR V2 — karta zdarzenia w stylu klasycznego SWD ===== */
.dispatch-window-modal{background:#0000004d;padding:10px}.incident-window{width:min(1060px,calc(100vw - 18px));max-height:calc(100vh - 18px);overflow:auto;background:#efefef;border:1px solid #8a8a8a;box-shadow:0 14px 50px #0006}.incident-titlebar{height:31px;background:linear-gradient(#fafafa,#e8e8e8);border-bottom:1px solid #c0c0c0;display:flex;align-items:center;justify-content:space-between;padding:0 7px;color:#4a4a4a}.incident-titlebar>div{display:flex;align-items:center;gap:6px}.incident-titlebar img{width:16px;height:16px;object-fit:contain}.incident-titlebar strong{font-size:12px;font-weight:500}.window-close{width:30px;height:27px;border:0;background:transparent;color:#777;font-size:20px;line-height:1;cursor:pointer}.window-close:hover{background:#e81123;color:#fff}.incident-form{padding:7px 8px 8px;background:#efefef}.swd-fieldset{margin:0;border:1px solid #c7c7c7;padding:10px 7px 7px;min-width:0;background:#f3f3f3}.swd-fieldset legend{padding:0 5px;font-size:11px;color:#111}.resources-fieldset{padding-top:8px}.resource-dispatch-line{display:flex;align-items:center;gap:14px;min-height:33px;font-size:11px}.resource-dispatch-line>span{min-width:138px}.win-button{height:29px;border:1px solid #a9a9a9;border-radius:2px;background:linear-gradient(#fff,#ececec);padding:0 14px;font-size:11px;color:#111;cursor:pointer}.win-button:hover{background:#e6f0fb;border-color:#7aa7d8}.win-button:active{background:#d9e7f6}.team-select-inline{margin-left:5px;display:flex;align-items:center;gap:6px;font-size:11px}.team-select-inline select{width:260px}.incident-top-grid{display:grid;grid-template-columns:48% 52%;gap:5px;margin-top:4px}.time-row{display:grid;grid-template-columns:82px 84px;gap:6px}.accepted-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.incident-main-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(300px,.95fr);gap:6px;margin-top:4px}.incident-left-column,.incident-right-column{display:grid;gap:5px;align-content:start}.incident-form input,.incident-form select,.incident-form textarea{border:1px solid #b7b7b7;background:#fff;color:#111;padding:4px 6px;font:11px Segoe UI,Tahoma,Arial,sans-serif;border-radius:0}.incident-form input,.incident-form select{height:27px}.incident-form textarea{resize:vertical}.incident-form input:focus,.incident-form select:focus,.incident-form textarea:focus{outline:1px solid #679bd1;outline-offset:-1px}.swd-form-table{display:grid;gap:5px}.swd-form-table label,.caller-rows label,.event-rows label{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:center;gap:7px;font-size:11px}.multi-location-row{display:grid;grid-template-columns:minmax(0,1.2fr) 95px minmax(0,1fr);gap:9px}.multi-location-row label{display:grid;grid-template-columns:85px minmax(0,1fr);align-items:center;gap:6px}.multi-location-row .floor-field{grid-template-columns:45px 1fr}.road-row{grid-template-columns:minmax(0,.9fr) minmax(0,1.65fr)}.road-row .access-field{grid-template-columns:145px 1fr}.description-fieldset textarea{width:100%;min-height:126px}.event-kind-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:11px;margin-bottom:7px}.event-kind-row>span{margin-right:2px}.event-kind-row label{display:flex;align-items:center;gap:3px}.event-kind-row input[type=radio],.priority-options input[type=radio],.flags-fieldset input[type=checkbox]{width:13px;height:13px;margin:0;padding:0}.event-rows{display:grid;gap:5px}.times-coordinates-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:5px}.time-form-row{display:grid;grid-template-columns:120px 83px 73px;gap:6px;align-items:center;margin-bottom:5px;font-size:11px}.time-form-row:last-child{margin-bottom:0}.muted-row{opacity:.5}.coords-row{display:grid;grid-template-columns:1fr 1fr 37px;gap:7px}.icon-only{padding:0}.fake-map{height:91px;margin-top:7px;border:1px solid #aab3a0;background:linear-gradient(135deg,#d8e7c6 0 25%,#ece6cf 25% 48%,#d6e7c8 48% 74%,#e8dfca 74%);position:relative;overflow:hidden}.fake-map:before,.fake-map:after,.fake-map-road{content:"";position:absolute;background:#fff;border:1px solid #b7b7b7}.fake-map:before{width:140%;height:8px;left:-20%;top:42%;transform:rotate(-17deg)}.fake-map:after{width:9px;height:130%;left:55%;top:-15%;transform:rotate(12deg)}.fake-map-road.a{width:110%;height:5px;left:-5%;top:68%;transform:rotate(8deg)}.fake-map-road.b{width:4px;height:120%;left:28%;top:-10%;transform:rotate(-12deg)}.fake-map-road.c{width:75%;height:4px;left:14%;top:22%;transform:rotate(22deg)}.fake-map>span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;background:#ffffffc9;border:1px solid #aaa;padding:3px 5px;font-size:9px;color:#555}.map-buttons{position:absolute;left:7px;top:7px;z-index:5;display:grid}.map-buttons b{width:28px;height:28px;background:#333d;color:#fff;display:grid;place-items:center;font-size:18px;border-bottom:1px solid #777}.procedures-fieldset textarea{width:100%;min-height:71px}.caller-rows{display:grid;gap:5px}.caller-rows label{grid-template-columns:80px minmax(0,1fr)}.priority-options{display:grid;gap:7px;padding:2px 0}.priority-options label{display:flex;align-items:center;gap:6px;font-size:11px}.priority-k1,.priority-k2{display:inline-grid;place-items:center;width:28px;height:20px;font-weight:700;border:1px solid #999}.priority-k1{background:#ffe1e1;color:#a90000}.priority-k2{background:#fff6c7;color:#6b5900}.flags-fieldset{display:grid;gap:8px}.flags-fieldset label{display:flex;align-items:center;gap:7px;font-size:11px}.people-row{display:grid;grid-template-columns:100px 80px;gap:7px;align-items:center;font-size:11px}.team-summary-fieldset #dispatchTeamSummary{min-height:70px;border:1px solid #ccc;background:#fff;padding:8px;font-size:11px;white-space:pre-line}.incident-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:7px}.incident-actions .form-error{margin-right:auto;max-width:58%}.dispatch-confirm{min-width:135px;border-color:#629553;background:linear-gradient(#edf9e9,#cfe9c7);font-weight:700}.dispatch-confirm:hover{background:#d8f0d0}.tabs button[disabled]{display:none!important}
@media(max-width:900px){.incident-main-grid{grid-template-columns:1fr}.incident-top-grid{grid-template-columns:1fr}.times-coordinates-grid{grid-template-columns:1fr}.resource-dispatch-line{flex-wrap:wrap}.team-select-inline{margin-left:0;width:100%}.team-select-inline select{width:min(100%,420px)}.multi-location-row,.road-row{grid-template-columns:1fr}.multi-location-row label,.multi-location-row .floor-field,.road-row .access-field{grid-template-columns:110px minmax(0,1fr)}}
@media(max-width:560px){.swd-form-table label,.caller-rows label,.event-rows label,.multi-location-row label,.multi-location-row .floor-field,.road-row .access-field{grid-template-columns:1fr}.time-form-row{grid-template-columns:1fr 1fr}.time-form-row>span{grid-column:1/-1}.accepted-row{grid-template-columns:1fr}.incident-actions{flex-wrap:wrap}.incident-actions .form-error{max-width:none;width:100%;order:-1}}
.login-card footer a{display:inline-block;margin-top:7px;color:#245b9f;text-decoration:none}.login-card footer a:hover{text-decoration:underline}

/* SWD V3 — stany połączenia i blokada przed martwym dashboardem */
.swd-health{
  margin:0 0 12px;
  padding:9px 10px;
  border:1px solid #c9c9c9;
  background:#f5f5f5;
  font-size:12px;
  color:#333;
}
.swd-health.checking{color:#555}
.swd-health.ok{border-color:#8dbb8d;background:#edf8ed;color:#276527}
.swd-health.error{border-color:#dba0a0;background:#fff0f0;color:#8c2020}
.login-error.server-error{display:block;margin-bottom:12px;line-height:1.4}

.swd-fatal-overlay{
  position:fixed;
  inset:0;
  z-index:99999;
  background:#efefef;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.swd-fatal-card{
  width:min(620px,100%);
  border:1px solid #999;
  background:#fff;
  box-shadow:0 8px 30px rgba(0,0,0,.16);
  padding:24px;
  font-family:Arial,sans-serif;
}
.swd-fatal-card strong{display:block;font-size:20px;margin-bottom:10px;color:#a00000}
.swd-fatal-card p{white-space:pre-wrap;line-height:1.45;color:#333}
.swd-fatal-card a{display:inline-block;margin:10px 10px 0 0;padding:8px 12px;border:1px solid #888;background:#eee;color:#111;text-decoration:none}
