*{box-sizing:border-box}:root{color-scheme:dark;--bg:#06101d;--p:#0a1a29;--p2:#0c2133;--line:#183b56;--text:#edf7ff;--muted:#7694ab;--blue:#27adff;--green:#42e491}body{margin:0;background:radial-gradient(circle at 70% 0,#0e3553,#06111d 42%,#040b12);color:var(--text);font-family:Inter,system-ui,Segoe UI,sans-serif}.layout{min-height:100vh;display:grid;grid-template-columns:245px 1fr}aside{background:#05111cdd;border-right:1px solid #17334a;padding:28px 20px;display:flex;flex-direction:column}.brand{display:flex;gap:12px;align-items:center;margin:0 8px 32px}.logo{width:42px;height:42px;border-radius:12px;background:linear-gradient(145deg,#33c6ff,#0879ff);display:grid;place-items:center;font-size:22px;font-weight:900}.brand b{font-size:18px}.brand small{display:block;color:#64859d;letter-spacing:2px;font-size:9px;margin-top:4px}nav{display:grid;gap:7px}.navitem{border:0;background:transparent;color:#7898b0;padding:14px 13px;border-radius:10px;text-align:left;font-size:14px;cursor:pointer}.navitem.active,.navitem:hover:not(.disabled){background:#0d2639;color:#fff}.navitem.disabled{opacity:.65;cursor:default}.aside-foot{margin-top:auto;border-top:1px solid #17334a;padding:20px 8px;display:flex;gap:10px;align-items:center}.aside-foot i{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 14px var(--green)}.aside-foot small{display:block;color:#66869d;font-size:10px}main{padding:38px 48px;max-width:1500px;width:100%}.page{display:none}.page.active{display:block}header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}.eyebrow{color:#36b8ff;letter-spacing:2px;font-size:10px;font-weight:800;margin:0 0 8px}h1{font-size:35px;margin:0}.tag,.panel p{color:var(--muted)}.online{border:1px solid #1a4862;border-radius:22px;padding:10px 15px;font-size:11px;color:#dff7ff}.online::first-letter{color:var(--green)}.hero,.panel{border:1px solid var(--line);background:linear-gradient(145deg,#0a1c2cdd,#081522dd);border-radius:18px}.hero{padding:38px 42px;margin-bottom:30px}.hero span{font-size:9px;color:#55d7ff;border:1px solid #23607c;border-radius:14px;padding:6px 10px}.hero h2{font-size:29px;margin:18px 0 8px}.hero p{color:#86a3b8}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:13px 0 32px}.card{min-height:150px;border:1px solid var(--line);background:#091927cc;border-radius:15px;padding:20px;text-align:left;color:inherit}.card b{font-size:24px;display:block;margin-bottom:26px}.card strong,.card small,.card em{display:block}.card small{color:#6f8ea5;margin-top:6px}.card em{font-style:normal;color:#32aeea;font-size:9px;margin-top:12px}.card[data-go]{cursor:pointer}.card[data-go]:hover{border-color:#2b80b0;transform:translateY(-2px)}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.stats>div{border:1px solid var(--line);background:#091927cc;border-radius:14px;padding:20px}.stats small{color:#6e8ca4}.stats b{display:block;font-size:20px;margin-top:8px}.ghost,button{font:inherit}.ghost,.panel button,.source-tabs button{border:1px solid #24516d;background:#0c2233;color:#dff5ff;border-radius:9px;padding:10px 14px;cursor:pointer}.source-tabs{display:flex;gap:8px;margin-bottom:16px}.source-tabs .active{background:#0e6ba2;border-color:#1e8dca}.source-tabs button:disabled{opacity:.45}.tvgrid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}.panel{padding:23px}.panel h2{margin:0 0 5px;font-size:18px}.panelhead{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.panelhead p{font-size:12px;margin:4px 0 20px}.sources{display:grid;gap:10px}.source{border:1px solid #173a53;border-radius:12px;padding:15px;background:#081622;display:grid;grid-template-columns:1fr auto;gap:8px}.source h4{margin:0 0 5px}.source p{font-size:11px;margin:0}.source .buttons{display:flex;gap:6px;align-items:center}.source .buttons button{padding:7px 9px;font-size:11px}.ok{color:var(--green);font-size:10px;margin-top:7px}form{display:grid;gap:12px;margin-top:18px}label{display:grid;gap:6px;color:#8aa6ba;font-size:11px}input,select{width:100%;border:1px solid #21445c;background:#06131e;color:#eef8ff;border-radius:9px;padding:11px 12px;outline:none}input:focus,select:focus{border-color:#2aaef0}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check{display:flex;align-items:center;grid-template-columns:auto 1fr}.check input{width:auto}.actions{display:flex;gap:9px}.actions button[type=submit]{background:#087dbb;border-color:#1699da}.msg{min-height:20px;font-size:12px;padding-top:3px}.msg.good{color:var(--green)}.msg.bad{color:#ff8585}.security{border-top:1px solid #15344a;padding-top:15px!important;font-size:10px!important}.empty{color:#66869d;padding:25px 5px}.danger{border-color:#663342!important;color:#ff9eaa!important}@media(max-width:950px){.layout{grid-template-columns:80px 1fr}aside span,.brand>div:not(.logo),.aside-foot div{display:none}.tvgrid{grid-template-columns:1fr}.cards,.stats{grid-template-columns:repeat(2,1fr)}main{padding:28px 22px}}@media(max-width:600px){.layout{display:block}aside{display:none}.cards,.stats,.two{grid-template-columns:1fr}main{padding:20px 14px}.panelhead{display:block}.panelhead button{margin-bottom:15px}}.tvbrowser{display:none}.tvbrowser.active{display:block}.sourceConfigHidden{display:none!important}.browse{min-height:620px}.browserhead{display:flex;gap:15px;align-items:center;border-bottom:1px solid #17384e;padding-bottom:16px;margin-bottom:15px}.browserhead h2,.browserhead p{margin:0}.browsercols{display:grid;grid-template-columns:.72fr 1.2fr 1fr;gap:14px}.browsercols h4{font-size:10px;letter-spacing:1.5px;color:#668ba5;margin:6px 4px 10px}.listbox{height:520px;overflow:auto;border:1px solid #17384e;border-radius:12px;background:#06131e;padding:6px}.row{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:0;border-bottom:1px solid #102c40;background:transparent;color:#dceef8;padding:11px 10px;cursor:pointer}.row:hover,.row.sel{background:#0d3048}.row img{width:54px;height:35px;object-fit:contain;background:#07101a;border-radius:5px}.row .txt{min-width:0;flex:1}.row strong,.row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row small{color:#7898ae;margin-top:4px}.prog{height:6px;background:#17374b;border-radius:3px;margin-top:6px;overflow:hidden}.prog i{display:block;height:100%;background:#25aef3}.epgpanel{border:1px solid #17384e;border-radius:12px;background:#071622;padding:22px}.bigpicon{height:110px;display:grid;place-items:center;color:#5e7d93;border-bottom:1px solid #17384e;margin-bottom:18px}.bigpicon img{max-width:180px;max-height:90px}.epglist .event{border-left:2px solid #168dcc;padding:10px 12px;margin:10px 0;background:#0a2030;border-radius:0 8px 8px 0}.event b,.event span,.event small{display:block}.event span{color:#42bfff;font-size:11px;margin-bottom:5px}.event small{color:#7897ad;margin-top:6px;line-height:1.4}.loading{padding:18px;color:#6f91a9}@media(max-width:1100px){.browsercols{grid-template-columns:1fr 1.4fr}.epgpanel{grid-column:1/-1}.listbox{height:430px}}@media(max-width:650px){.browsercols{grid-template-columns:1fr}.epgpanel{grid-column:auto}.listbox{height:320px}}.playerwrap{aspect-ratio:16/9;background:#02070b;border:1px solid #17384e;border-radius:12px;overflow:hidden;display:grid;place-items:center;position:relative;margin-bottom:10px}.playerwrap video{width:100%;height:100%;background:#000;display:none}.playerwrap.playing video{display:block}.playerwrap.playing #playerEmpty{display:none}#playerEmpty{color:#58768c;font-size:11px}.playactions{display:flex;align-items:center;gap:8px;margin-bottom:17px}.playactions button{padding:8px 11px}.playactions #playLive{background:#087dbb;border-color:#1599da}.playactions span{font-size:10px;color:#7d9bb0;margin-left:auto}.prog{border:1px solid #1c4b66;background:#07131d}.prog i{background:linear-gradient(90deg,#159be0,#4bd0ff);box-shadow:0 0 7px #25aef388}
.channels .row .prog{display:block!important;width:100%!important;height:7px!important;min-height:7px!important;margin-top:8px!important;border:1px solid #245d7c!important;background:#07131d!important;border-radius:5px!important;overflow:hidden!important}
.channels .row .prog i{display:block!important;height:100%!important;min-width:2px;background:linear-gradient(90deg,#159be0,#55d6ff)!important;box-shadow:0 0 7px #25aef388}
.channels .row .txt{display:block;min-width:0}

.browsercols{position:relative;grid-template-columns:minmax(330px,.75fr) minmax(560px,1.65fr)!important;gap:18px!important}
.bouquetPane{position:absolute;z-index:30;left:0;top:0;width:min(360px,88vw);height:100%;padding:10px;background:#071825;border:1px solid #24506b;border-radius:14px;box-shadow:0 20px 55px #000b;transform:translateX(calc(-100% - 30px));opacity:0;pointer-events:none;transition:transform .22s ease,opacity .22s ease}
.bouquetPane.open{transform:translateX(0);opacity:1;pointer-events:auto}.bouquetPane .listbox{height:500px}
.drawerTitle{display:flex;align-items:center;justify-content:space-between}.drawerClose{border:0;background:transparent;color:#a8c8db;font-size:28px;cursor:pointer}.bouquetToggle{white-space:nowrap}
.channelPane{min-width:0}.channels.listbox{height:560px}.channels .row{padding:9px 10px}.channels .row img{width:48px;height:32px}
.epgpanel{min-width:0;padding:16px!important}.playerwrap{width:100%;aspect-ratio:16/9;min-height:315px;margin-bottom:12px}

.systemTelemetry{position:fixed;left:28px;bottom:18px;z-index:80;display:flex;gap:8px;pointer-events:none}.systemTelemetry span{background:#071825e8;border:1px solid #1c435b;border-radius:9px;padding:7px 10px;color:#7195ab;font-size:11px}.systemTelemetry b{color:#dceef8;margin-left:4px}
@media(max-width:1150px){.browsercols{grid-template-columns:minmax(290px,.7fr) minmax(460px,1.5fr)!important}.playerwrap{min-height:270px}}
@media(max-width:760px){.browsercols{grid-template-columns:1fr!important}.channels.listbox{height:380px}.playerwrap{min-height:0}.systemTelemetry{left:10px;bottom:10px}}

.mediaKinds{margin-left:auto;display:flex;gap:6px}.mediaKinds button{border:1px solid #24516d;background:#0a2030;color:#9fc0d3;border-radius:8px;padding:8px 10px;cursor:pointer}.mediaKinds button.active{background:#087dbb;color:white}.episodeList{display:grid;gap:6px;max-height:260px;overflow:auto}.episode{border:1px solid #1b4058;background:#091c2a;color:#dceef8;border-radius:8px;padding:9px;text-align:left;cursor:pointer}.episode:hover{background:#0d3048}

.bigpicon.mediaPoster{height:250px;align-items:center}.bigpicon.mediaPoster img{max-height:230px;max-width:190px;object-fit:contain}.mediaMeta{color:#42bfff;font-size:12px;margin:8px 0}.mediaPlot{color:#b8cfdd;line-height:1.55;font-size:13px;margin:10px 0 14px}.seekHint{font-size:10px;color:#6f91a9;margin-top:10px}

.vodControls{display:none;position:absolute;left:12px;right:12px;bottom:12px;z-index:5;align-items:center;gap:8px;padding:9px 10px;border:1px solid #24516d;border-radius:10px;background:#06131eea;backdrop-filter:blur(5px)}.playerwrap.vodMode .vodControls{display:flex}.playerwrap.vodMode video{padding-bottom:54px}.vodControls button{padding:6px 9px;border:1px solid #24516d;background:#0c2233;color:#e9f8ff;border-radius:7px;cursor:pointer}.vodControls span{font-size:11px;color:#b9d6e8;min-width:44px;text-align:center}.vodControls input[type=range]{flex:1;padding:0;border:0;background:transparent;accent-color:#27adff}.playerwrap.vodMode video::-webkit-media-controls-timeline{display:none}
/* 0.6.8 VOD fullscreen overlay */
.vodTrackMenu{display:none;position:absolute;right:10px;bottom:58px;min-width:190px;max-height:240px;overflow:auto;background:#071522f5;border:1px solid #2a5874;border-radius:9px;padding:6px;box-shadow:0 8px 28px #0009}.vodTrackMenu.open{display:grid;gap:4px}.vodTrackMenu button{width:100%;text-align:left}.vodTrackMenu button.active{background:#0e6ba2}.playerwrap:fullscreen,.playerwrap:-webkit-full-screen{width:100vw;height:100vh;aspect-ratio:auto;border:0;border-radius:0;background:#000;margin:0}.playerwrap:fullscreen video,.playerwrap:-webkit-full-screen video{width:100%;height:100%;object-fit:contain;padding:0!important}.playerwrap:fullscreen .vodControls,.playerwrap:-webkit-full-screen .vodControls{left:3%;right:3%;bottom:24px;padding:12px 14px;background:#06131edb;transition:opacity .25s ease,transform .25s ease}.playerwrap.fsControlsHidden .vodControls{opacity:0;pointer-events:none;transform:translateY(16px)}.playerwrap:fullscreen .vodControls,.playerwrap:-webkit-full-screen .vodControls{font-size:15px}.playerwrap:fullscreen .vodControls span,.playerwrap:-webkit-full-screen .vodControls span{font-size:13px}.vodTrackBtn{white-space:nowrap}

/* TvMad Home 0.7.5 - Kamery */
.cameraActions{display:flex;align-items:center;gap:9px;margin-bottom:16px}.cameraActions button{border:1px solid #24516d;background:#0c2233;color:#dff5ff;border-radius:9px;padding:10px 14px;cursor:pointer}.cameraActions #startAllCameras{background:#087dbb;border-color:#1699da}.cameraActions span{font-size:11px;color:#7898ae}.cameraGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px}.cameraTile{border:1px solid #173a53;border-radius:13px;background:#071622;overflow:hidden}.cameraVideo{aspect-ratio:16/9;background:#000;position:relative;display:grid;place-items:center}.cameraVideo video{width:100%;height:100%;object-fit:contain;display:none;background:#000}.cameraEmpty{position:absolute;inset:0;display:grid;place-items:center;color:#58768c;font-size:12px}.cameraBar{display:grid;grid-template-columns:1fr auto auto auto auto;gap:7px;align-items:center;padding:10px}.cameraBar strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cameraBar button{border:1px solid #24516d;background:#0c2233;color:#dff5ff;border-radius:7px;padding:7px 9px;cursor:pointer}.cameraState{font-size:10px;color:#708fa4}.cameraState.on{color:#54e3a2}.cameraConfig{margin-top:4px}.cameraTile:fullscreen{background:#000;display:flex;flex-direction:column}.cameraTile:fullscreen .cameraVideo{flex:1;aspect-ratio:auto}.cameraTile:fullscreen .cameraBar{background:#071622}.cameraTile:fullscreen video{object-fit:contain}@media(max-width:900px){.cameraGrid{grid-template-columns:1fr}}

/* 0.7.6 - per-camera aspect ratio; applies identically in grid and fullscreen */
.cameraTile.cameraAspect-169 .cameraVideo video,.cameraTile.cameraAspect-169:fullscreen .cameraVideo video{width:100%;height:100%;object-fit:fill!important}
.cameraTile.cameraAspect-43 .cameraVideo video,.cameraTile.cameraAspect-43:fullscreen .cameraVideo video{width:100%;height:100%;object-fit:fill!important}
.cameraTile.cameraAspect-43 .cameraVideo{aspect-ratio:4/3}
.cameraTile.cameraAspect-43:fullscreen .cameraVideo{aspect-ratio:auto}

/* TvMad Home 0.7.8 - all camera previews are displayed as 16:9.
   object-fit:fill intentionally matches VLC "Aspect ratio 16:9": it changes
   display geometry only; it does not crop or zoom the RTSP picture. */
.cameraVideo{width:100%;aspect-ratio:16/9!important;overflow:hidden;background:#000}
.cameraVideo video,
.cameraTile.cameraAspect-169 .cameraVideo video,
.cameraTile.cameraAspect-43 .cameraVideo video{
  width:100%!important;
  height:100%!important;
  object-fit:fill!important;
  object-position:center center!important;
}
.cameraTile.cameraAspect-43 .cameraVideo{aspect-ratio:16/9!important}
.cameraTile:fullscreen,.cameraTile:-webkit-full-screen{position:relative;width:100vw;height:100vh;background:#000;display:block}
.cameraTile:fullscreen .cameraVideo,.cameraTile:-webkit-full-screen .cameraVideo{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto!important}
.cameraTile:fullscreen .cameraVideo video,.cameraTile:-webkit-full-screen .cameraVideo video{width:100%!important;height:100%!important;object-fit:fill!important;object-position:center center!important}
.cameraTile:fullscreen .cameraBar,.cameraTile:-webkit-full-screen .cameraBar{position:absolute;left:0;right:0;bottom:0;z-index:3;background:#071622dd}
/* TvMad Home 0.8.3 - dashboard media centre */
.dashboardPro{max-width:1500px!important}.dashboardPro>header,.dashboardPro>.hero,.dashboardPro>h3,.dashboardPro>.cards,.dashboardPro>.stats{display:none!important}
.dashTop{display:grid;grid-template-columns:auto minmax(260px,1fr) auto auto auto auto;gap:18px;align-items:center;margin-bottom:18px}.dashIdentity{display:flex;align-items:center;gap:12px;min-width:280px}.dashHomeIcon{font-size:42px;color:#28a8ff}.dashIdentity h1{font-size:31px;margin:0}.dashIdentity h1 span{color:#36aef7}.dashIdentity p{margin:2px 0;color:#b5c9d6}.dashSearch{max-width:520px;background:#142334;border:1px solid #294056;border-radius:12px;padding:13px 17px;color:#a9bdca}.dashClock{text-align:center;padding:0 18px;border-right:1px solid #294056}.dashClock b{font-size:25px;display:block}.dashClock small{color:#d2dee5}.dashBell,.dashGear{font-size:25px}.dashUser{white-space:nowrap}.dashHero{min-height:170px;border:1px solid #365066;border-radius:15px;padding:35px 48px;display:flex;justify-content:space-between;align-items:center;background:radial-gradient(circle at 72% 30%,#ba613c66,transparent 19%),radial-gradient(circle at 57% 54%,#304f7c88,transparent 30%),linear-gradient(115deg,#081828 15%,#183249 55%,#07131e);box-shadow:inset 0 -45px 80px #020a12aa;margin-bottom:16px}.dashHero h2{font-size:31px;margin:0 0 6px}.dashHero p{font-size:17px;margin:0}.dashHero i{display:block;width:64px;height:3px;background:#1ea7ff;margin-top:20px}.heroWords{text-align:right;font-size:26px;font-style:italic;transform:rotate(-5deg);color:#fff}.heroWords small{font-size:17px}.dashModules{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}.dashModule{height:145px;border-radius:14px;border:1px solid #31516b;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;background:#0b2132}.dashModule b{font-size:38px;margin-bottom:5px}.dashModule strong{font-size:18px}.dashModule small{margin-top:6px;color:#d0dce4}.dashModule.tv{background:linear-gradient(135deg,#073c70,#0a1c31);border-color:#168fff}.dashModule.cams{background:linear-gradient(135deg,#0a4264,#10293b)}.dashModule.disk{background:linear-gradient(135deg,#48224d,#25192d)}.dashModule.radio{background:linear-gradient(135deg,#075943,#0a3028)}.dashModule.settings{background:linear-gradient(135deg,#684515,#33230d)}.dashLiveGrid{display:grid;grid-template-columns:1.45fr .7fr 1.08fr;gap:14px}.dashPanel{background:#0a1b29;border:1px solid #294257;border-radius:14px;padding:14px;min-width:0}.dashPanelTitle{font-size:17px;font-weight:700;margin-bottom:12px}.dashPanelTitle em{font-style:normal;background:#ef3434;border-radius:5px;padding:3px 8px;margin-left:7px;font-size:12px}.dashPanelTitle button{float:right;border:0;background:none;color:#42b9ff;cursor:pointer}.dashTvVideo{aspect-ratio:16/9;background:#02070b;border-radius:9px;overflow:hidden;position:relative}.dashTvVideo video{width:100%;height:100%;object-fit:contain;background:#000;display:none}.dashTvOverlay{position:absolute;left:0;right:0;bottom:0;padding:35px 14px 12px;background:linear-gradient(transparent,#02070be8);pointer-events:none}.dashTvOverlay strong,.dashTvOverlay small{display:block}.dashTvOverlay small{color:#d2dee5;margin-top:3px}.dashMediaEmpty{position:absolute;inset:0;display:grid;place-items:center;color:#63849a;text-align:center;padding:15px}.dashEpg{min-height:205px}.dashEpg .event{margin:7px 0;padding:9px}.dashEpg p{color:#7898ae}.dashMore{width:100%;border:1px solid #31516b;background:#152c40;color:#9fd6f7;border-radius:18px;padding:9px}.dashCameraGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-height:236px;position:relative}.dashCam{position:relative;aspect-ratio:16/9;background:#000;border-radius:8px;overflow:hidden}.dashCam video{width:100%;height:100%;object-fit:fill;background:#000}.dashCam span{position:absolute;left:8px;bottom:6px;font-weight:700;text-shadow:0 1px 4px #000}.dashCam i{position:absolute;left:7px;top:7px;width:9px;height:9px;border-radius:50%;background:#31df68;box-shadow:0 0 8px #31df68}.dashBottom{display:grid;grid-template-columns:1.25fr .85fr;gap:14px;margin-top:14px}.dashPlaceholders,.dashRadios{display:flex;gap:12px}.dashPlaceholders div,.dashRadios span{flex:1;min-height:70px;border:1px solid #294257;border-radius:8px;display:grid;place-items:center;color:#86a9bd}.dashPlaceholders small{display:block}.dashRadios span{min-height:62px;font-weight:700}.dashServer{margin:14px 2px 50px;color:#89a6b8;font-size:12px}.dashServer .dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#35dd68;margin-right:7px}.dashServerStats{float:right}.dashboardPro+.page{} 
@media(max-width:1200px){.dashModules{grid-template-columns:repeat(3,1fr)}.dashLiveGrid{grid-template-columns:1fr 1fr}.dashCamPanel{grid-column:1/-1}.dashTop{grid-template-columns:1fr auto}.dashSearch,.dashBell,.dashUser,.dashGear{display:none}}@media(max-width:760px){.dashModules{grid-template-columns:1fr 1fr}.dashLiveGrid,.dashBottom{grid-template-columns:1fr}.dashTop{grid-template-columns:1fr}.dashClock{display:none}.dashHero{padding:25px}.heroWords{display:none}}

/* 0.8.3 dashboard fullscreen mirrors */
.dashTvVideo,.dashCam{cursor:pointer}
.dashTvVideo:fullscreen,.dashTvVideo:-webkit-full-screen,.dashCam:fullscreen,.dashCam:-webkit-full-screen{width:100vw;height:100vh;aspect-ratio:auto;border-radius:0;background:#000}
.dashTvVideo:fullscreen video,.dashTvVideo:-webkit-full-screen video,.dashCam:fullscreen video,.dashCam:-webkit-full-screen video{width:100%!important;height:100%!important;object-fit:contain!important;background:#000;display:block!important}
.dashCam:fullscreen span,.dashCam:-webkit-full-screen span{left:22px;bottom:18px;font-size:20px}
.dashCam:fullscreen i,.dashCam:-webkit-full-screen i{left:22px;top:18px}

/* 0.8.3 - Dashboard direct media fullscreen (no stream restart) */
#dashTvVideo:fullscreen,#dashTvVideo:-webkit-full-screen,.dashCam video:fullscreen,.dashCam video:-webkit-full-screen{width:100vw!important;height:100vh!important;object-fit:contain!important;background:#000!important;display:block!important}

/* 0.8.3 secure login gate */
.loginGate{position:fixed;inset:0;z-index:99999;background:radial-gradient(circle at 25% 20%,#15365b 0,#071421 42%,#03090f 100%);display:flex;align-items:center;justify-content:center;padding:24px}
.loginGate.hidden{display:none}.loginCard{width:min(390px,92vw);padding:34px;border:1px solid #29445d;border-radius:22px;background:rgba(7,20,33,.96);box-shadow:0 30px 90px #000a;color:#eef7ff}.loginLogo{width:58px;height:58px;border-radius:16px;display:grid;place-items:center;margin:0 auto 16px;background:#0b84ff;font-size:30px;font-weight:900}.loginCard h1{text-align:center;margin:0;font-size:28px}.loginCard>p{text-align:center;color:#8da5b9;margin:7px 0 25px}.loginCard label{display:block;margin:14px 0;color:#bcd0df;font-size:13px}.loginCard input{width:100%;box-sizing:border-box;margin-top:7px;padding:13px 14px;border-radius:10px;border:1px solid #31506a;background:#091724;color:#fff;font-size:16px;outline:none}.loginCard input:focus{border-color:#178bff}.loginCard button{width:100%;margin-top:12px;padding:13px;border:0;border-radius:10px;background:#0b84ff;color:#fff;font-weight:800;cursor:pointer}.loginMsg{min-height:20px;margin-top:13px;text-align:center;color:#ff8791;font-size:13px}

/* 0.8.3 - explicit safe exit */
.dashExit{border:1px solid #36546b;background:#102536;color:#dceaf3;border-radius:10px;padding:9px 12px;font-weight:700;cursor:pointer;white-space:nowrap}.dashExit:hover{border-color:#4fb9ff;color:#fff;background:#15334a}
@media(max-width:1200px){.dashExit{display:inline-block}}
