:root{--navy:#07345a;--navy2:#0c4d7d;--bg:#eef3f7;--line:#d8e1e8;--text:#172331;--muted:#647486;--card:#fff;--camera:#d7463f;--camera-external:#a85a19;--access:#127c75;--phone:#2967c7}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--text);background:var(--bg)}
button,input{font:inherit}.topbar{height:76px;background:linear-gradient(120deg,var(--navy),var(--navy2));color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;box-shadow:0 5px 18px #001b3030;position:relative;z-index:5}.brand{display:flex;gap:13px;align-items:center}.brand-mark{width:43px;height:43px;border:2px solid #ffffffaa;border-radius:12px;display:grid;place-items:center;font-weight:800;letter-spacing:.5px}.brand h1{font-size:20px;margin:0 0 3px}.brand p{margin:0;color:#d8e8f5;font-size:13px}.top-actions{display:flex;gap:10px}.top-actions button,.toolbar button{border:0;border-radius:8px;padding:9px 13px;cursor:pointer}.primary{background:#fff;color:var(--navy);font-weight:700}.ghost{background:#ffffff18;color:#fff;border:1px solid #ffffff3a!important}
.app{height:calc(100vh - 176px);display:grid;grid-template-columns:255px minmax(0,1fr) 310px;gap:0}.sidebar,.details{background:#fff;overflow:auto}.sidebar{border-right:1px solid var(--line);padding:19px 16px}.sidebar section{padding-bottom:20px;margin-bottom:18px;border-bottom:1px solid #edf1f4}.section-title{text-transform:uppercase;letter-spacing:.11em;color:#7a8997;font-size:11px;font-weight:800;margin-bottom:10px}.floor-tabs{display:grid;gap:7px}.floor-tab{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 11px;text-align:left;cursor:pointer;color:#314150}.floor-tab.active{background:#e8f1f8;border-color:#8db1cc;color:var(--navy);font-weight:800}.toggle-row{display:flex;justify-content:space-between;align-items:center;padding:8px 2px;font-size:14px}.toggle-row span{display:flex;align-items:center;gap:9px}.toggle-row input{accent-color:var(--navy);width:17px;height:17px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%}.dot.camera_internal{background:var(--camera)}.dot.camera_external{background:var(--camera-external)}.dot.access{background:var(--access)}.dot.phone{background:var(--phone)}.search{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 11px;outline:0}.search:focus{border-color:#75a0bf;box-shadow:0 0 0 3px #dcecf7}.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat{background:#f4f7f9;border:1px solid #e5ebef;border-radius:9px;padding:10px}.stat b{font-size:20px;display:block}.stat span{font-size:11px;color:var(--muted)}.hint{background:#f7fafc;border:1px solid #e5edf2!important;border-radius:10px;padding:12px!important;margin:0!important}.hint p{font-size:12px;line-height:1.45;color:var(--muted);margin:6px 0 0}
.workspace{min-width:0;display:flex;flex-direction:column}.toolbar{height:58px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 16px}.toolbar strong{font-size:16px}.toolbar #floorSubtitle{font-size:12px;color:var(--muted);margin-left:8px}.toolbar-actions{display:flex;align-items:center;gap:7px}.toolbar-actions button{background:#eef3f7;color:#294053;min-width:35px}.toolbar-actions button:hover{background:#dfe9f0}.zoomValue{min-width:48px}.edit-switch{display:flex;align-items:center;gap:7px;margin-left:8px;background:#fff5d7;border:1px solid #f1df99;border-radius:8px;padding:7px 9px;font-size:12px;font-weight:700}.edit-switch input{accent-color:#9c7710}.viewport{position:relative;flex:1;overflow:scroll;background:#dce4ea;background-image:linear-gradient(45deg,#ffffff35 25%,transparent 25%),linear-gradient(-45deg,#ffffff35 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ffffff35 75%),linear-gradient(-45deg,transparent 75%,#ffffff35 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0}.stage{position:relative;min-width:100%;min-height:100%}.canvas{position:absolute;left:50%;top:50%;transform-origin:center center;margin:0;display:block;background:white;box-shadow:0 8px 30px #17344f2e;border-radius:3px;overflow:hidden}.canvas img{display:block;width:100%;height:auto;user-select:none}.marker-layer{position:absolute;inset:0}.legend-bar{height:42px;background:#fff;border-top:1px solid var(--line);display:flex;align-items:center;gap:18px;padding:0 16px;font-size:12px}.legend-bar span{display:flex;align-items:center;gap:6px}.legend-bar small{margin-left:auto;color:#71808e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.marker{position:absolute;transform:translate(-50%,-50%);width:96px;height:96px;border-radius:50%;display:grid;place-items:center;color:white;border:3px solid white;box-shadow:0 3px 9px #0b243d66;cursor:pointer;z-index:2;transition:filter .15s,scale .15s}.marker:hover,.marker.selected{scale:1.18;z-index:8}.marker.camera_internal{background:var(--camera)}.marker.camera_external{background:var(--camera-external)}.marker.access{background:var(--access)}.marker.phone{background:var(--phone)}.marker svg{width:51px;height:51px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.marker-label{position:absolute;left:50%;top:99px;transform:translateX(-50%);white-space:nowrap;background:#12283ddd;color:#fff;border-radius:5px;padding:5px 9px;font-size:13px;opacity:0;pointer-events:none}.marker:hover .marker-label,.marker.selected .marker-label{opacity:1}.marker.hidden{display:none}.edit-on .marker{cursor:grab}.edit-on .marker:active{cursor:grabbing}
.details{border-left:1px solid var(--line);padding:20px}.details.empty{display:grid;place-items:center}.details-empty{text-align:center;color:#8090a0;max-width:210px}.big-icon{font-size:42px;color:#b9c6d0}.details h2{font-size:19px;margin:0 0 4px}.details .type-badge{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;margin:7px 0 17px;background:#edf2f5}.detail-grid{display:grid;gap:11px}.detail{border-bottom:1px solid #edf1f4;padding-bottom:9px}.detail label{display:block;color:#7d8b97;font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}.detail div{font-size:14px;font-weight:600}.status{display:inline-flex;align-items:center;gap:6px;font-size:12px!important;padding:5px 8px;border-radius:7px;background:#e9f7ef;color:#187243}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:#24a764}.details-actions{margin-top:18px;display:grid;grid-template-columns:1fr 1fr;gap:8px}.details-actions button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px;cursor:pointer}.details-actions .save{background:var(--navy);color:white;border-color:var(--navy)}
@media(max-width:1100px){.app{grid-template-columns:220px minmax(0,1fr)}.details{position:fixed;right:12px;top:90px;bottom:12px;width:300px;z-index:10;box-shadow:0 10px 35px #001b3045;border-radius:12px}.details.empty{display:none}}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:0 12px}.top-actions .ghost{display:none}.toolbar{padding:0 8px}.edit-switch span{display:none}.legend-bar small{display:none}}

/* v1.0.2 – przesuwanie, widoczne belki przewijania i obracanie planu */
.viewport{scrollbar-gutter:stable both-edges;cursor:grab;overscroll-behavior:contain}
.viewport.panning{cursor:grabbing;user-select:none}
.viewport::-webkit-scrollbar{width:15px;height:15px}
.viewport::-webkit-scrollbar-track{background:#cbd6de;border:1px solid #b9c7d1}
.viewport::-webkit-scrollbar-thumb{background:#738b9e;border:3px solid #cbd6de;border-radius:10px}
.viewport::-webkit-scrollbar-thumb:hover{background:#526d82}
.viewport{scrollbar-color:#738b9e #cbd6de;scrollbar-width:auto}
.toolbar-actions .active-tool{background:#dcecf7;color:#07345a;font-weight:700}
#rotateLeftBtn,#rotateRightBtn{font-size:19px;line-height:1;padding-top:7px;padding-bottom:7px}
.canvas,.canvas img,.marker-layer{touch-action:none}

/* v1.0.3 – trzykrotnie większe symbole, zoom kółkiem myszy i powrót do widoku początkowego */
#homeViewBtn{background:#fff4d8;border:1px solid #e5c96e;color:#6f5100;font-weight:700}
#homeViewBtn:hover{background:#ffe9ad}

/* v1.0.6 – pewne przesuwanie rączką w pionie i poziomie */
.viewport{touch-action:none;min-height:0}
.stage{overflow:visible}
html.plan-is-panning,html.plan-is-panning *{user-select:none!important;cursor:grabbing!important}
.canvas img{pointer-events:none;-webkit-user-drag:none}

/* v1.0.7 – przesuwanie planu realizowane transformacją, niezależnie od pasków przewijania */
.viewport{overflow:hidden!important;position:relative}
.stage{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important}
.canvas{left:50%;top:50%;will-change:transform}
.canvas.centering{transition:transform .22s ease-out}

/* v1.0.8 — perspektywiczny widok 3D */
#view3dBtn.active-tool{background:#dcebf6;color:#07345a;font-weight:800;box-shadow:inset 0 0 0 1px #8db1cc;}
.viewport.view-3d-active{background-size:32px 32px;background-position:0 0,0 16px,16px -16px,16px 0;}

/* v1.0.9 — ostry widok 2D; akceleracja i perspektywa wyłącznie podczas 3D */
.stage{perspective:none;transform-style:flat;}
.stage.view-3d-stage{perspective:1800px;perspective-origin:50% 48%;transform-style:preserve-3d;}
.canvas{transition:none;will-change:auto;backface-visibility:visible;transform-style:flat;filter:none;image-rendering:auto;}
.canvas img{image-rendering:auto;transform:none;backface-visibility:visible;}
.canvas.view-3d{transition:transform .28s ease,box-shadow .28s ease,filter .28s ease;will-change:transform;backface-visibility:hidden;transform-style:preserve-3d;box-shadow:0 42px 48px #17344f45,0 12px 18px #17344f2b;filter:contrast(1.03) saturate(.96);}
.canvas.view-3d img,.canvas.view-3d .marker-layer{backface-visibility:hidden;transform:translateZ(0);}
.canvas.rebuild-2d{visibility:hidden;}

/* v1.0.10 — dodawanie i usuwanie urządzeń w trybie edycji */
.edit-device-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px;padding-top:13px;border-top:1px solid #e6edf2}
.edit-device-actions[hidden]{display:none}
.edit-device-actions button{border:1px solid var(--line);border-radius:8px;padding:9px 8px;cursor:pointer;font-size:12px;font-weight:800}
.edit-device-actions .add-device{background:#e7f3fb;color:var(--navy);border-color:#9bbbd2}
.edit-device-actions .delete-device{background:#fff0ef;color:#9d2b26;border-color:#e9b1ad}
.edit-device-actions .delete-device:disabled{opacity:.45;cursor:not-allowed}
.edit-device-actions small{grid-column:1/-1;color:var(--muted);font-size:11px;line-height:1.4}
.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px}
.modal-backdrop{position:absolute;inset:0;background:#071b2db5}
.modal-card{position:relative;width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:14px;box-shadow:0 24px 70px #00152666}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}
.modal-head h2{margin:0;font-size:19px}.modal-close{border:0;background:#eef3f7;border-radius:8px;width:35px;height:35px;font-size:24px;cursor:pointer}
.modal-form{display:grid;grid-template-columns:1fr 1fr;gap:13px;padding:18px 20px}.modal-form label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#465968}.modal-form label:nth-child(3),.modal-form label:nth-child(4){grid-column:1/-1}
.modal-form input,.modal-form select{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;background:#fff;color:var(--text)}
.modal-actions{display:flex;justify-content:flex-end;gap:9px;padding:15px 20px;border-top:1px solid var(--line)}.modal-actions button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px 15px;cursor:pointer;font-weight:700}.modal-actions .primary-modal{background:var(--navy);border-color:var(--navy);color:#fff}
.details-actions .danger{color:#9d2b26;border-color:#e9b1ad;background:#fff0ef}
@media(max-width:600px){.modal-form{grid-template-columns:1fr}.modal-form label:nth-child(n){grid-column:auto}}


/* v1.0.11 — edycja danych zaznaczonego urządzenia */
.details-actions .edit-data{background:#e7f3fb;color:var(--navy);border-color:#9bbbd2;font-weight:700}
.details-actions .edit-data:hover{background:#d7ebf8}

/* v1.0.12 — baza wszystkich urządzeń */
.device-database-btn{width:100%;margin-top:9px;border:1px solid #9bbbd2;border-radius:8px;padding:9px 10px;background:#e7f3fb;color:var(--navy);font-weight:800;cursor:pointer;text-align:left}
.device-database-btn:hover{background:#d7ebf8}
.database-card{width:min(860px,calc(100vw - 36px));height:min(720px,calc(100vh - 36px));display:flex;flex-direction:column;overflow:hidden}
.database-card .modal-head p{margin:4px 0 0;color:var(--muted);font-size:12px}
.database-tools{display:grid;grid-template-columns:1fr 240px;gap:10px;padding:14px 20px;border-bottom:1px solid var(--line)}
.database-tools select{border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff}
.database-count{padding:9px 20px;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}
.database-list{padding:10px 14px 18px;overflow:auto;display:grid;gap:7px}
.database-item{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:11px;width:100%;border:1px solid #e1e8ed;border-radius:10px;background:#fff;padding:8px 11px;text-align:left;cursor:pointer}
.database-item:hover,.database-item.preview{background:#f1f7fb;border-color:#9bbbd2}
.database-item-icon{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff}
.database-item-icon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.database-item-main{min-width:0;display:grid;gap:3px}.database-item-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.database-item-main small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.database-floor{font-size:12px;font-weight:800;color:#466074;background:#edf3f6;border-radius:999px;padding:5px 9px}
.database-empty{padding:35px;text-align:center;color:var(--muted)}
@keyframes marker-flash{0%,100%{filter:none;scale:1.18}35%{filter:brightness(1.8) drop-shadow(0 0 18px #ffc400);scale:1.55}}
.marker.flash{animation:marker-flash .8s ease 2;z-index:20}

/* v1.0.13 — zasięg kamer i dodatkowe typy urządzeń */
:root{--phone-exchange:#7654b3;--access-panel:#9b5a20;--viewing-station:#485c6e}
.dot.phone_exchange,.marker.phone_exchange,.database-item-icon.phone_exchange{background:var(--phone-exchange)}
.dot.access_panel,.marker.access_panel,.database-item-icon.access_panel{background:var(--access-panel)}
.dot.viewing_station,.marker.viewing_station,.database-item-icon.viewing_station{background:var(--viewing-station)}
.coverage-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:1}
.camera-cone{fill:#df423f2d;stroke:#c93430;stroke-width:7;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.camera-cone.selected{fill:#df423f46;stroke-width:10}
.camera-axis{stroke:#b92724;stroke-width:5;stroke-dasharray:18 12;vector-effect:non-scaling-stroke;opacity:.78}
.marker{z-index:3}
.camera-settings{grid-column:1/-1;border:1px solid #dfe7ec;border-radius:10px;padding:12px;display:grid;grid-template-columns:repeat(3,1fr);gap:11px;background:#f7fafc}
.camera-settings[hidden]{display:none}.camera-settings legend{font-size:12px;font-weight:800;color:#465968;padding:0 5px}.camera-settings .camera-preview-toggle{display:flex;align-items:center;gap:8px;grid-column:1/-1}.camera-settings .camera-preview-toggle input{width:auto}
@media(max-width:700px){.database-tools{grid-template-columns:1fr}.database-item{grid-template-columns:42px minmax(0,1fr)}.database-floor{grid-column:2}.camera-settings{grid-template-columns:1fr}}


/* v1.0.13.1 — zawsze widoczny przycisk zapisu w formularzu edycji */
#deviceModal .modal-card{display:flex;flex-direction:column;overflow:hidden;max-height:calc(100vh - 40px)}
#deviceModal .modal-head{flex:0 0 auto;background:#fff;z-index:2}
#deviceModal .modal-form{flex:1 1 auto;overflow-y:auto;min-height:0;padding-bottom:24px}
#deviceModal .modal-actions{flex:0 0 auto;position:sticky;bottom:0;background:#fff;z-index:3;box-shadow:0 -8px 18px rgba(7,27,45,.10)}
#deviceModal .modal-actions .primary-modal{min-width:170px;font-size:14px;font-weight:800}
#deviceModal .modal-actions .primary-modal:hover{filter:brightness(1.08)}
.save-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:160;background:#176b43;color:#fff;border-radius:10px;padding:11px 18px;font-weight:800;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.save-toast[hidden]{display:none}
@media(max-width:600px){#deviceModal .modal-actions{display:grid;grid-template-columns:1fr 1fr}#deviceModal .modal-actions button{width:100%}#deviceModal .modal-actions .primary-modal{min-width:0}}

/* v2.0.0-alpha Build 3: stan zapisu do MySQL */
.server-state{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:9px;border:1px solid #c9d8e6;background:#f4f8fb;color:#425b70;font-size:12px;font-weight:700;white-space:nowrap}
.server-state.checking,.server-state.saving{color:#8a6500;background:#fff8dc;border-color:#ead38a}
.server-state.online,.server-state.saved{color:#087447;background:#e9f8f0;border-color:#a9dfc5}
.server-state.error{color:#a62626;background:#fff0f0;border-color:#efb6b6}
@media(max-width:1100px){.server-state{font-size:0;padding:8px}.server-state::first-letter{font-size:12px}}


/* v2.0.0-alpha Build 4: zdjęcia, odświeżanie i historia */
.device-image-settings{grid-column:1/-1;border:1px solid #dfe7ec;border-radius:10px;padding:12px;display:grid;grid-template-columns:1fr auto;gap:10px;background:#f7fafc}
.device-image-settings legend{font-size:12px;font-weight:800;color:#465968;padding:0 5px}.device-image-settings small{grid-column:1/-1;color:var(--muted)}
.file-picker{display:block!important;border:1px dashed #9bbbd2;border-radius:8px;padding:10px;background:#edf7fd;color:var(--navy)!important;cursor:pointer;text-align:center}.file-picker input{display:none}
.device-image-preview{grid-column:1/-1;min-height:110px;border:1px solid var(--line);border-radius:9px;background:#fff;display:grid;place-items:center;overflow:hidden;color:var(--muted)}
.device-image-preview img{display:block;max-width:100%;max-height:240px;object-fit:contain}.remove-image{border:1px solid #e9b1ad;border-radius:8px;background:#fff0ef;color:#9d2b26;padding:9px;cursor:pointer}
.device-photo-card{margin:14px 0;border-top:1px solid var(--line);padding-top:12px}.device-photo-card label{display:block;margin-bottom:7px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.device-photo-card img{width:100%;max-height:260px;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#f5f7f9}
.history-card{width:min(760px,calc(100vw - 36px));height:min(650px,calc(100vh - 36px));display:flex;flex-direction:column;overflow:hidden}.history-card .modal-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.history-list{padding:12px 16px;overflow:auto;display:grid;gap:8px}.history-item{display:flex;justify-content:space-between;gap:16px;border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fff}.history-item div{display:grid;gap:3px}.history-item small,.history-item time{color:var(--muted);font-size:12px}.history-item time{white-space:nowrap}

.device-image-preview.drag-over{border-color:var(--navy2);background:#e8f3fb;box-shadow:inset 0 0 0 2px #7eadd0}

/* v2.0.0-beta 2 — rozbudowana baza urządzeń i wykrywanie zmian */
.database-tools-beta2{grid-template-columns:minmax(240px,1fr) repeat(3,minmax(150px,210px)) auto}
.database-tools-beta2 button{border:1px solid var(--line);border-radius:8px;padding:9px 12px;background:#f5f8fa;color:var(--navy);font-weight:700;cursor:pointer;white-space:nowrap}
.database-tools-beta2 button:hover{background:#e7f3fb;border-color:#9bbbd2}
.database-status{display:inline-flex;width:max-content;margin-top:2px;padding:2px 7px;border-radius:999px;background:#e9f8f0;color:#087447;font-size:11px;font-weight:800}
.server-state.remote{color:#8a5200;background:#fff0c9;border-color:#e6bd55;cursor:pointer;animation:server-pulse 1.4s ease-in-out infinite}
@keyframes server-pulse{50%{box-shadow:0 0 0 4px rgba(230,189,85,.22)}}
@media(max-width:1250px){.database-tools-beta2{grid-template-columns:1fr 1fr}.database-tools-beta2 #databaseSearch{grid-column:1/-1}}
@media(max-width:700px){.database-tools-beta2{grid-template-columns:1fr}.database-tools-beta2 #databaseSearch{grid-column:auto}}


/* v2.0.0-beta 3 — baza urządzeń, eksport i informacje o wersji */
.database-tools-beta2{
  grid-template-columns:minmax(230px,1fr) repeat(5,minmax(135px,190px)) auto auto;
}
.database-tools-beta2 select,
.database-tools-beta2 button{min-width:0}
.about-card{width:min(560px,calc(100vw - 36px));overflow:hidden}
.about-content{padding:18px 22px 24px}
.about-content dl{display:grid;gap:0;margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.about-content dl>div{display:grid;grid-template-columns:170px 1fr;border-bottom:1px solid var(--line)}
.about-content dl>div:last-child{border-bottom:0}
.about-content dt,.about-content dd{margin:0;padding:11px 13px}
.about-content dt{font-weight:800;background:#f2f7fa;color:#41586b}
.about-content dd{background:#fff}
.about-content p{margin:16px 0 0;color:var(--muted);line-height:1.5}
@media(max-width:1500px){
  .database-tools-beta2{grid-template-columns:repeat(4,minmax(150px,1fr))}
  .database-tools-beta2 #databaseSearch{grid-column:1/-1}
}
@media(max-width:850px){
  .database-tools-beta2{grid-template-columns:1fr 1fr}
  .database-tools-beta2 #databaseSearch{grid-column:1/-1}
}
@media(max-width:560px){
  .database-tools-beta2{grid-template-columns:1fr}
  .database-tools-beta2 #databaseSearch{grid-column:auto}
  .about-content dl>div{grid-template-columns:1fr}
  .about-content dt{padding-bottom:4px}
  .about-content dd{padding-top:4px}
}


/* v2.0.0-beta 4 — zdjęcia urządzeń */
.image-preview-button,
.device-photo-open{
  appearance:none;border:0;background:transparent;padding:0;margin:0;width:100%;
  cursor:zoom-in;text-align:left;color:inherit
}
.image-preview-button img{display:block;width:100%;height:100%;object-fit:contain}
.device-photo-open img{
  display:block;width:100%;max-height:260px;object-fit:contain;border-radius:9px;background:#f4f7f9
}
.device-photo-open span{
  display:block;text-align:center;font-size:12px;font-weight:700;color:var(--navy2);padding-top:8px
}
.image-lightbox{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px
}
.image-lightbox[hidden]{display:none}
.image-lightbox-backdrop{
  position:absolute;inset:0;background:rgba(3,20,34,.78);backdrop-filter:blur(2px)
}
.image-lightbox-card{
  position:relative;width:min(1200px,96vw);max-height:94vh;background:#fff;border-radius:14px;
  box-shadow:0 25px 80px rgba(0,0,0,.38);overflow:hidden;display:flex;flex-direction:column
}
.image-lightbox-head{
  display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;
  border-bottom:1px solid var(--line);background:#f7fafc
}
.image-lightbox-head h2{margin:0;font-size:18px}
.image-lightbox-head p{margin:3px 0 0;color:var(--muted);font-size:13px}
.image-lightbox-body{
  min-height:240px;padding:16px;display:grid;place-items:center;overflow:auto;background:#172331
}
.image-lightbox-body img{
  display:block;max-width:100%;max-height:calc(94vh - 100px);object-fit:contain
}
.device-image-preview.drag-over{
  outline:3px solid #4a9de0;outline-offset:-3px;background:#e8f5ff
}

/* beta5 */
.server-state.saved{font-weight:700}


/* v2.0.0-beta 6 — interaktywna regulacja kamer */
.camera-direction-handle{
  position:absolute;z-index:9;transform:translate(-50%,-50%);
  width:38px;height:38px;border-radius:50%;border:3px solid #fff;
  background:#f59e0b;color:#172331;font-weight:900;font-size:19px;
  box-shadow:0 3px 12px rgba(0,0,0,.35);cursor:grab;
  display:grid;place-items:center;touch-action:none
}
.camera-direction-handle:hover{background:#fbbf24;transform:translate(-50%,-50%) scale(1.1)}
.camera-direction-handle:active{cursor:grabbing}
.camera-edit-hint{
  display:block;margin-top:8px;padding:8px 9px;border-radius:8px;
  background:#fff7dc;color:#76540b;border:1px solid #efd58c;line-height:1.35
}
.camera-edit-hint[hidden]{display:none}
.camera-quick-editor{
  grid-column:1/-1;margin-top:4px;padding:12px;border:1px solid var(--line);
  border-radius:10px;background:#f7fafc
}
.camera-quick-editor>strong{display:block;margin-bottom:9px;color:var(--navy)}
.camera-quick-row{
  display:grid;grid-template-columns:1fr 70px 70px;align-items:center;gap:7px;margin:7px 0
}
.camera-quick-row span{font-weight:700;color:#526879}
.camera-quick-row button,.camera-cone-toggle{
  border:1px solid #b7cad7;background:#fff;color:var(--navy);border-radius:7px;
  padding:7px 8px;font-weight:800;cursor:pointer
}
.camera-quick-row button:hover,.camera-cone-toggle:hover{background:#e8f3fb}
.camera-cone-toggle{width:100%;margin-top:7px}
@media(max-width:480px){
  .camera-quick-row{grid-template-columns:1fr 64px 64px}
}


/* v2.0.0-beta 7 — pełna edycja danych */
.modal-form .modal-wide{grid-column:1/-1}
.modal-form textarea{
  width:100%;resize:vertical;min-height:92px;border:1px solid var(--line);
  border-radius:8px;padding:9px 10px;font:inherit;color:var(--text);background:#fff
}
.duplicate-device-btn{
  margin-right:auto;border:1px solid #9ab9ce;background:#e8f3fb;color:var(--navy);
  font-weight:800;border-radius:8px;padding:9px 14px;cursor:pointer
}
.duplicate-device-btn:hover{background:#d7ebf8}
.detail-notes{grid-column:1/-1}
.detail-notes>div{white-space:normal;line-height:1.5}

/* v2.0.0-beta 7 Fix 2 */
.modal.is-open{display:grid!important}


/* v2.0.0-beta 8 */
.camera-live-preview-status{
  grid-column:1/-1;margin-top:4px;padding:8px 10px;border-radius:8px;
  background:#edf6fb;color:#526879;font-size:12px;border:1px solid #cfe0eb
}
.camera-live-preview-status.changed{background:#fff7dc;color:#76540b;border-color:#efd58c}
.device-image-drop-hint{
  margin-top:7px;font-size:12px;color:var(--muted);line-height:1.4
}
.device-image-preview.drag-over{
  outline:3px solid #2f80c9;outline-offset:-3px;background:#e9f5ff
}
.device-history-inline{
  margin:14px 0;padding:12px;border:1px solid var(--line);
  border-radius:10px;background:#f8fbfd
}
.device-history-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px
}
.device-history-head button{
  border:1px solid #b7cad7;background:#fff;color:var(--navy);border-radius:7px;
  padding:5px 9px;font-weight:700;cursor:pointer
}
.device-history-inline-list{display:grid;gap:7px}
.device-history-row{
  display:flex;justify-content:space-between;gap:12px;padding:7px 0;
  border-bottom:1px solid #e1e9ee;font-size:12px
}
.device-history-row:last-child{border-bottom:0}
.device-history-row strong{color:var(--navy)}
.device-history-row span{color:var(--muted);white-space:nowrap}


/* v2.0.0-beta 8 Fix 2 — pewny podgląd zdjęcia */
.device-image-settings{
  display:block!important;
}
.native-file-input{
  position:absolute!important;
  width:1px!important;height:1px!important;
  opacity:0!important;overflow:hidden!important;
  pointer-events:none!important;
}
.device-image-controls{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px
}
.device-image-controls .file-picker{
  display:inline-flex!important;align-items:center;justify-content:center;
  min-width:150px;padding:10px 14px;border:1px solid #88afca;border-radius:8px;
  background:#e7f3fb;color:var(--navy)!important;font-weight:800;cursor:pointer
}
.device-image-controls .file-picker:hover{background:#d5eaf7}
.device-image-preview{
  display:flex!important;min-height:190px;width:100%;box-sizing:border-box;
  align-items:center;justify-content:center;margin:0;padding:14px;
  border:2px dashed #afc6d6;border-radius:10px;background:#f8fbfd;overflow:hidden
}
.device-image-preview.empty{flex-direction:column;gap:6px;color:var(--muted);text-align:center}
.device-image-preview .empty-image-icon{font-size:38px}
.image-preview-button{
  display:flex!important;flex-direction:column;align-items:center;gap:9px;
  width:100%;border:0;background:transparent;cursor:zoom-in
}
.image-preview-button img{
  display:block!important;width:100%;max-height:300px;object-fit:contain;
  border-radius:8px;background:#eef3f6;border:1px solid #d5e1e8
}
.image-preview-button span{font-size:12px;font-weight:800;color:var(--navy)}
.device-image-drop-hint{margin-top:9px;font-size:12px;color:var(--muted);line-height:1.4}


/* v2.0.0-beta 8 Fix 3 */
.device-history-inline{
  margin:14px 0;padding:0!important;overflow:hidden;
  border:1px solid var(--line);border-radius:10px;background:#f8fbfd
}
.device-history-toggle{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;
  border:0;background:#f8fbfd;padding:13px 14px;cursor:pointer;text-align:left;color:var(--navy)
}
.device-history-toggle>span:first-child{display:flex;flex-direction:column;gap:3px}
.device-history-toggle small{font-size:11px;color:var(--muted);font-weight:600}
.device-history-chevron{font-size:22px;transition:transform .18s ease}
.device-history-inline.collapsed .device-history-chevron{transform:rotate(-90deg)}
.device-history-body{padding:0 14px 12px;max-height:360px;overflow:auto}
.device-history-inline.collapsed .device-history-body{display:none}
.details-actions{
  display:grid!important;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.details-actions button{min-height:52px}


/* v2.0.0-beta 9 — skonsolidowana baza rozwojowa */
.native-file-input,
.native-file-input[hidden]{
  display:none!important;
  width:0!important;height:0!important;
  opacity:0!important;position:absolute!important;
}
.device-image-controls .file-picker{
  user-select:none;
}
.device-image-upload-status{
  margin-top:10px;padding:9px 11px;border-radius:8px;font-size:12px;font-weight:800;
}
.device-image-upload-status.pending{
  background:#fff7dc;color:#76540b;border:1px solid #efd58c;
}
.device-image-upload-status.uploading{
  background:#e8f3fb;color:#0d4f7d;border:1px solid #a8cbe1;
}
.device-image-upload-status.success{
  background:#e8f7ee;color:#17683c;border:1px solid #a9d9bd;
}
.device-history-inline.collapsed{
  max-height:none!important;
}
.device-history-inline.collapsed .device-history-body{
  display:none!important;
}
.details-actions{
  position:relative;
  z-index:1;
}


/* v2.0.0-beta 9.1 — Wydruk PDF */
#printPdfBtn:disabled{opacity:.65;cursor:wait}


/* v2.0.0-beta 10 — wydruk bez wyskakującego okna */
#pdfPrintFrame{display:block}
#printPdfBtn:disabled{opacity:.65;cursor:wait}


/* Warstwa: Bramofon */

.marker.intercom,.database-item-icon.intercom{background:#7b8794}
.marker.intercom{border-color:#fff}


/* v2.0.0-beta11 */
.dot.intercom{background:#0f766e}

/* beta11 fix1 - mniejsze znaczniki tylko dla MRD */
.stage.floor-mrd .marker{
  width:48px;
  height:48px;
}
.stage.floor-mrd .marker svg{
  width:26px;
  height:26px;
}
.stage.floor-mrd .marker-label{
  top:52px;
  font-size:11px;
}


/* Sołtyka — dwa zdjęcia urządzenia, zgodnie z Fix 4.3 */
.device-images-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.device-image-slot{min-width:0}.device-image-slot h4{margin:0 0 8px;font-size:13px;color:#29445a}
.device-photos-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
@media(max-width:760px){.device-images-grid,.device-photos-details{grid-template-columns:1fr}}
button.file-picker2{appearance:none;-webkit-appearance:none;width:auto;font:inherit;font-weight:700}


/* v2.0.0-beta11 Fix 5.0 — nawigacja między lokalizacjami */
.location-nav{
  min-height:100px;
  padding:10px 16px;
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  background:#fff;
  border-bottom:1px solid var(--line);
  box-shadow:0 3px 12px rgba(7,52,90,.08);
  position:relative;
  z-index:4;
}
.location-tile{
  min-width:0;
  min-height:36px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:8px 10px;
  border-radius:9px;
  border:1px solid #b9cada;
  background:#f8fbfd;
  color:var(--navy);
  font-size:13px;
  font-weight:800;
  line-height:1.15;
  text-align:center;
  text-decoration:none;
  user-select:none;
}
.location-tile.available{background:#fff;border-color:#6d9cbd;cursor:pointer}
.location-tile.available:hover{background:#e7f3fb;border-color:var(--navy2);box-shadow:0 2px 7px rgba(7,52,90,.12)}
.location-tile.current{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}
.location-tile.disabled{background:#f1f3f5;border-color:#dde3e8;color:#9aa6b0;cursor:not-allowed;font-weight:700}
.location-tile.back{background:#fff5d7;border-color:#ead38a;color:#795900;cursor:pointer}
.location-tile.back:hover{background:#ffedb0;border-color:#d0ad44}
@media(max-width:1100px){
  .location-nav{grid-template-columns:repeat(6,minmax(120px,1fr));overflow-x:auto}
  .location-tile{font-size:12px}
}
@media(max-width:760px){
  .location-nav{grid-template-columns:repeat(2,minmax(145px,1fr));max-height:126px;overflow:auto}
  .app{height:calc(100vh - 202px)}
}


/* Test wspólnego rdzenia — Rejestrator video */
:root{--video-recorder:#f97316}
.dot.video_recorder,
.marker.video_recorder,
.database-item-icon.video_recorder{background:var(--video-recorder)}
.marker.video_recorder{border-color:#fff}
