:root{font:15px/1.5 system-ui,-apple-system,sans-serif;color:#e8f6f4;color-scheme:dark;background:#07171c}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 90% 0,#23474a,#07171c 52%);min-height:100svh}
main{max-width:560px;padding:20px 16px 64px;margin:0 auto}
a{color:#98e7ce}h1{font-size:26px;letter-spacing:-.6px;margin:6px 0 4px}h2{font-size:17px;margin:6px 0 12px}
.hint{font-size:13px;color:#b1cecb;line-height:1.5}.tiny{font-size:11px;color:#a1bdbc}
.pill{display:inline-block;border:1px solid #42645d;border-radius:40px;padding:3px 8px;font-size:11px;color:#a8ebd0}
nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px;gap:10px}
section{background:#152c30;border:1px solid #35545b;border-radius:18px;padding:16px;margin:13px 0}
button,select,input{font:inherit;border-radius:12px;min-height:44px}
button{border:0;background:#99e9c9;color:#05261d;font-weight:750;padding:11px 15px;cursor:pointer}
button.secondary{background:#28454a;color:#c0e1df;border:1px solid #4b7276}
button.danger{background:#543138;color:#ffdbdc}
button:disabled{opacity:.38}
button.full{width:100%;margin-top:10px}
select,input{width:100%;background:#223c41;border:1px solid #507078;color:white;padding:10px}
label{display:block;font-size:12px;color:#b1d0c9;margin:13px 0 5px}
.metric{font-size:22px;font-weight:800;letter-spacing:-.5px}.metric.good{color:#a0f4d1}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid>div{border:1px solid #3d5d63;border-radius:11px;padding:10px}
#qr{background:white;border-radius:15px;display:flex;justify-content:center;align-items:center;padding:12px;min-height:180px;width:max-content;max-width:100%;margin:12px auto}
#qr img{max-width:100%;height:auto}#share{word-break:break-all;overflow-wrap:anywhere;font-size:12px;background:#0b1d23;padding:10px;border-radius:11px}
.hidden{display:none!important}#video{background:#020607;width:100%;aspect-ratio:4/5;max-height:65vh;object-fit:contain;border-radius:16px;border:1px solid #385359}
.status{padding:10px;background:#244246;border-radius:10px;color:#b9edda;font-size:12px;min-height:39px}.status.error{background:#56343b;color:#ffcdcd}
.meter{display:grid;grid-template-columns:1fr 1fr;gap:10px}small{display:block;color:#a7c3bf}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row>*{flex:1}
#events{font-size:12px;max-height:130px;overflow:auto;color:#a6c6c3;padding-left:18px;margin:4px 0}
/* OLED-friendly overlay; does not control physical screen brightness. */
#lockBrightness{min-height:20px;accent-color:#8edbbe}
.lock-screen{position:fixed;inset:0;z-index:99999;background:#000;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding:calc(28px + env(safe-area-inset-top)) 22px calc(24px + env(safe-area-inset-bottom));overflow:hidden;overscroll-behavior:contain;user-select:none;-webkit-user-select:none}
.lock-status{text-align:center;opacity:var(--lock-visibility,.08)}
.lock-mark{font-size:18px;font-weight:650;letter-spacing:.2px}
.lock-state{font-size:13px;margin-top:12px}
.lock-viewers{font-size:12px;margin-top:5px}
.lock-bottom{width:min(100%,380px)}
.unlock-help{text-align:center;font-size:12px;margin-bottom:12px;opacity:var(--lock-visibility,.08)}
.unlock-track{height:64px;width:100%;position:relative;touch-action:none;overflow:hidden;border:1px solid #182128;background:#07090b;border-radius:36px;display:flex;align-items:center;justify-content:center;color:#637575;outline-offset:3px}
.unlock-track:focus-visible{outline:2px solid #6fceae}
.unlock-progress{position:absolute;left:0;top:0;bottom:0;width:0;background:#1b5747;opacity:.7;pointer-events:none}
.unlock-knob{position:absolute;top:6px;bottom:6px;left:6px;width:52px;border-radius:50%;background:#24483c;color:#b8e6d2;display:grid;place-items:center;font-size:25px;z-index:2;pointer-events:none;transform:translateX(var(--knob-x,0px))}
.unlock-caption{font-size:12px;margin-left:40px;color:#708885;pointer-events:none}
.lock-screen:not(.tracking) .unlock-track{opacity:.34}
.lock-screen.tracking .unlock-track{opacity:1}
@media(prefers-reduced-motion:no-preference){.lock-screen:not(.tracking) .unlock-knob{transition:transform .18s}}

/* V0.5 viewer: pinch zoom photo/video and a one-touch stop. */
.watch-section{display:flex;flex-direction:column;gap:11px}
.watch-section .row{display:flex;gap:8px;align-items:stretch}
.watch-section .row button{flex:1;min-width:0;font-size:12px;padding:11px 5px}
.media-box{position:relative;border-radius:16px;overflow:hidden;background:#000;aspect-ratio:4/3;display:grid;place-items:center;touch-action:none}
.image-wrap{position:absolute;inset:0;width:100%;height:100%;transform-origin:0 0;will-change:transform}
.media-box img,.media-box video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:none;background:#000;border:0;border-radius:0;max-height:none;aspect-ratio:auto}
.media-box img.show,.media-box video.show{display:block}
.empty-photo{color:#9bb8b4;font-size:13px;text-align:center;pointer-events:none}
.empty-photo span{font-size:55px;display:block}
.media-caption{position:absolute;left:8px;right:8px;bottom:8px;display:flex;justify-content:space-between;gap:10px;pointer-events:none;background:#06131499;border-radius:9px;padding:5px 8px;color:#b5ddcb;font-size:11px;z-index:3}
.exit-fullscreen{position:absolute;right:12px;top:12px;z-index:4;background:#152b2a;color:#fff;min-height:36px}
.media-box.immersive{position:fixed;inset:0;border-radius:0;width:100vw;height:100dvh;aspect-ratio:auto;z-index:10000;background:#000}
.media-box.immersive .media-caption{bottom:max(env(safe-area-inset-bottom),12px)}
.media-box.immersive .exit-fullscreen{display:block!important}
.ptt{background:#156b4d;color:#fff;width:100%;min-height:70px;font-size:15px;touch-action:none;-webkit-user-select:none;user-select:none}
.ptt.active{background:#ac3e3b;color:#fff;box-shadow:0 0 0 3px #e09f82}
.ptt:disabled{background:#35584b}
.observe{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#284343;border:1px solid #476e64;border-radius:12px;padding:8px 10px}
.observe button{flex-shrink:0;font-size:13px;padding:8px}
#videoControls{background:#10282a;padding:11px;border-radius:12px}
#videoControls label{margin-top:0}
#maxWarning{color:#e9bd7c;margin-top:7px}
#mediaState{font-weight:750}
#mediaBox{overscroll-behavior:contain}
#photo{user-select:none;-webkit-user-drag:none}

#mediaBox #video{aspect-ratio:auto;max-height:none;border-radius:0;border:0;object-fit:contain;height:100%;width:100%}
#mediaBox #photo{object-fit:contain;height:100%;width:100%}

/* V0.6: family-first viewer; technical setup stays in disclosure. */
.advanced-options{background:#102729;border:1px solid #31504c;border-radius:11px;padding:10px;margin:0}
.advanced-options summary{cursor:pointer;font-size:13px;color:#d2ede2;min-height:24px}
.advanced-options[open]{padding-bottom:14px}
#cameraControls{background:#102729;border-radius:12px;padding:10px}
#cameraControls label{margin-top:2px}
#cameraZoom{min-height:26px;accent-color:#96e7c4}
#imageActions{margin:0}
#imageActions button{flex:1}
#mediaBox .exit-fullscreen{background:#193e37;color:#fff}
#mediaBox:not(.immersive) #exitFullscreen{display:none!important}

/* Even fullscreen must not show a video Stop action while displaying a photo. */
.media-box.immersive #fsStop.hidden{display:none!important}
.media-box.immersive #fsStop:not(.hidden){display:block!important}

/* V0.6.1: camera image first, controls second. */
body.viewer-hd-open{overflow:hidden;touch-action:none}
body:has(.watch-section) main{max-width:540px;padding:12px 14px 28px}
body:has(.watch-section) nav{margin-bottom:4px}
body:has(.watch-section) nav a{font-size:12px}
body:has(.watch-section) h1{font-size:25px;line-height:1.3;margin:7px 3px 9px}
#compactConnection{font-weight:400;letter-spacing:0;vertical-align:middle;color:#b2d2c5}
.watch-section{gap:9px;padding:12px;margin-top:0}
.viewer-actions button{font-size:14px!important;padding:11px!important;min-height:47px}
.watch-section > .status{font-size:12px;background:transparent;color:#bad5c9;min-height:0;padding:0 3px;margin:0}
.watch-section > .status.error{color:#ffbbbb;background:#462e33;padding:6px 9px}
#photoFullscreen{position:absolute;right:10px;top:10px;z-index:4;background:#101c1cc9;border:1px solid #69807780;min-height:35px;min-width:37px;padding:4px;font-size:18px;color:#fff}
.media-box.immersive #photoFullscreen{display:none!important}
#photoFullscreen:disabled{display:none}
#photoFullscreen.hidden{display:none!important}
#viewerSettings{border-color:#31514b;background:#112b2d}
#viewerSettings summary{color:#c7e1d7}
#viewerSettings #cameraControls{padding:8px 0 0;background:transparent}
#viewerSettings #cameraControls select{margin-bottom:6px}
.advanced-nested{background:#122729;margin-top:8px;border:0;border-top:1px solid #3b5855;border-radius:0;padding:10px 0 0}
.advanced-nested summary{font-size:12px}
.viewer-diagnostics{max-width:540px;margin:10px 14px 20px}
.viewer-diagnostics .metric{font-size:18px}
.viewer-diagnostics > .grid{margin-top:10px}
.watch-section #ptt{min-height:62px;margin-top:4px}
.watch-section #pttState{line-height:1.3;color:#a2c2b6;margin:0 2px 2px}
.media-box{aspect-ratio:4/3}
.media-caption{bottom:8px}

/* Full-screen HD viewer, independent from WebRTC video/fullscreen state.
   Fixed overlay works on iOS Safari without Element.requestFullscreen(). */
.hd-overlay{position:fixed;inset:0;width:100%;height:100dvh;background:#000;z-index:20000;color:#fff;overflow:hidden;touch-action:none;overscroll-behavior:none}
.hd-viewport{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none}
.hd-viewport img{display:block;width:100%;height:100%;object-fit:contain;transform-origin:center center;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;touch-action:none;will-change:transform}
.hd-topbar{position:absolute;top:0;left:0;right:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:calc(env(safe-area-inset-top) + 12px) max(14px,env(safe-area-inset-right)) 14px max(14px,env(safe-area-inset-left));background:linear-gradient(#000a,#0000);pointer-events:none}
.hd-topbar>*{pointer-events:auto}
.hd-topbar span{font-size:14px;font-weight:700;text-shadow:0 1px 4px #000}
.hd-close{background:#263735d9;color:#fff;border:1px solid #ffffff33;border-radius:50%;width:44px;height:44px;padding:0;min-height:44px;font-size:18px}
.hd-actions{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:stretch;justify-content:center;gap:10px;padding:18px max(14px,env(safe-area-inset-right)) calc(18px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));z-index:2;background:linear-gradient(#0000,#000c)}
.hd-actions button{flex:1;max-width:240px;font-size:14px;color:#fff;border-radius:14px;background:#263f3bce;border:1px solid #67837b}
.hd-actions button:disabled{opacity:.30}
.hd-loading{position:absolute;z-index:1;left:50%;top:50%;transform:translate(-50%,-50%);width:90%;text-align:center;font-size:15px;color:#cfe7dc;background:#172e2bc4;border-radius:12px;padding:16px;pointer-events:none}
.hd-loading.hidden{display:none!important}

/* V0.7 validated layout: unobtrusive camera presets below the picture. */
.lens-bar,.immersive-lens{display:flex;gap:9px;align-items:center;justify-content:center;flex-wrap:wrap}
.lens-bar{padding:1px 3px 3px;min-height:42px}
.lens-preset{flex:0 0 auto;min-height:39px;min-width:51px;padding:5px 11px;border-radius:999px;background:#284446;color:#E1F1EA;border:1px solid #47605C;font-size:14px;font-weight:650}
.lens-preset.active{background:#A8E9CB;border-color:#A8E9CB;color:#12392A}
.lens-preset:disabled{opacity:.45}
.immersive-lens{position:absolute;bottom:max(62px,calc(env(safe-area-inset-bottom) + 52px));left:0;right:0;z-index:6;pointer-events:auto;padding:8px 12px;background:linear-gradient(#0000,#0009,#0000)}
.immersive-lens .lens-preset{background:#1c2c2ce0;color:#fff;border-color:#ffffff55;min-height:42px;min-width:55px}
.immersive-lens .lens-preset.active{background:#fff;color:#102620}
.media-box.immersive .immersive-lens:not(.hidden){display:flex!important}
.media-box.immersive.controls-hidden .immersive-lens{display:none!important}
.media-box:not(.immersive) .immersive-lens{display:none!important}
.media-box.immersive #fsStop.hidden{display:none!important}
.media-box.immersive #fsStop:not(.hidden){display:block!important}
.media-box.immersive .media-caption{bottom:max(8px,env(safe-area-inset-bottom))}
.hd-overlay #hdActions.hidden{display:none!important}
.hd-overlay:not(.hidden) #hdPreview{pointer-events:none}
#hdViewport{overscroll-behavior:none}

/* V0.7.1: in-viewer QR camera, visually contained inside pairing details. */
.qr-scanner{border:1px solid #456a63;border-radius:13px;background:#091b1c;padding:10px;margin-top:10px}
.qr-viewfinder{position:relative;aspect-ratio:4/3;width:100%;max-height:300px;overflow:hidden;background:#050c0c;border-radius:12px}
.qr-viewfinder video{display:block;object-fit:cover;width:100%;height:100%;background:#071112}
.qr-frame{pointer-events:none;position:absolute;inset:15%;border:3px solid #a7e9c9;border-radius:16px;box-shadow:0 0 0 100vmax #00000030;opacity:.88}
#scanStatus{padding:9px 4px;min-height:26px;font-size:12px}
#scanQR{font-size:14px}
#stopScan{margin-top:4px}
.media-box.capture-pending .image-wrap{opacity:.68;transition:opacity .18s}
.media-box.capture-pending .media-caption{background:#12342edd;color:#e0f5ea}
/* V0.8: only the four essentials, no unreliable camera/lens presets. */
.viewer-v08 main{max-width:530px;padding:14px 14px 48px}
.viewer-v08 .simple-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:6px 4px 12px}
.viewer-v08 h1{font-size:25px;margin:0}
.viewer-v08 .simple-connection{font-size:12px;color:#b7d9ca;white-space:nowrap}
.viewer-v08 .watch-section{padding:11px 11px 14px;margin:0 0 12px;gap:11px}
.viewer-v08 .media-box{aspect-ratio:4/3}
.viewer-v08 .media-box .media-caption{bottom:8px}
.viewer-v08 .media-box.immersive{position:fixed;inset:0;z-index:10000;width:100vw;height:100dvh;aspect-ratio:auto;border-radius:0;background:#000}
.viewer-v08 .media-expand,.viewer-v08 .media-exit,.viewer-v08 .media-stop{position:absolute;z-index:5;background:#152622df;color:#fff;border:1px solid #ffffff40;border-radius:14px;min-height:39px;padding:8px 12px}
.viewer-v08 .media-expand{top:10px;right:10px;font-size:19px}
.viewer-v08 .media-exit{top:calc(env(safe-area-inset-top) + 12px);right:12px;font-size:17px}
.viewer-v08 .media-stop{top:calc(env(safe-area-inset-top) + 12px);left:12px;background:#7c3631e8}
.viewer-v08 .media-box:not(.immersive) .media-exit,.viewer-v08 .media-box:not(.immersive) .media-stop{display:none!important}
.viewer-v08 .media-box.immersive .media-expand{display:none!important}
.viewer-v08 .media-box.immersive .media-exit:not(.hidden),
.viewer-v08 .media-box.immersive .media-stop:not(.hidden){display:block!important}
.viewer-v08 .status{background:transparent;color:#bfd8cd;padding:0 4px;margin:0;min-height:0;font-size:12px}
.viewer-v08 .status.error{background:#552d32;color:#ffe1e1;padding:9px}
.viewer-v08 .v08-actions{gap:9px}
.viewer-v08 .v08-actions button{min-height:48px;font-size:15px}
.viewer-v08 #ptt{min-height:66px;font-size:15px;margin-top:3px}
.viewer-v08 #pttState{padding:0 3px;margin:0}
.viewer-v08 .simple-hint{margin:0 4px;color:#9fbbb2;font-size:11px}
.viewer-v08 #connectionOptions,.viewer-v08 #diagnostics{margin:10px 0;padding:10px;background:#102628}
.viewer-v08 #diagnostics{opacity:.86}
.viewer-v08 .hd-overlay:not(.hidden){display:block}
.viewer-v08 .hd-viewport img{pointer-events:none}
.viewer-v08 .hd-actions.hidden{display:none!important}
.viewer-v08 #stillLoading{z-index:3}

/* V0.8.1: fullscreen overlay remains separate from the transformed media image. */
.viewer-v08 .fs-controls{position:absolute;inset:0;z-index:6;pointer-events:none;color:#fff;}
.viewer-v08 .fs-controls.hidden{display:none!important}
.viewer-v08 .fs-topline{position:absolute;top:max(58px,calc(env(safe-area-inset-top) + 55px));left:12px;right:12px;display:flex;justify-content:space-between;gap:10px;align-items:center}
.viewer-v08 .fs-battery,.viewer-v08 .fs-state{background:#101f20ae;border:1px solid #ffffff24;border-radius:11px;padding:5px 8px;font-size:12px;line-height:1.2}
.viewer-v08 .fs-battery.low{color:#ffc1a9}
.viewer-v08 .fs-battery.hidden{display:none}
.viewer-v08 .fs-bottomline{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom));left:8px;right:8px;display:flex;flex-direction:column;gap:9px;align-items:center}
.viewer-v08 .fs-buttons{width:100%;display:flex;justify-content:center;align-items:center;flex-wrap:nowrap;gap:clamp(3px,1.4vw,11px);pointer-events:auto;}
.viewer-v08 .fs-buttons button,.viewer-v08 .fs-lenses button{border:1px solid #ffffff48;background:#0c2426a9;color:#fff;box-shadow:0 2px 8px #0005;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:50%;width:clamp(39px,11vw,45px);height:clamp(39px,11vw,45px);min-height:0;min-width:0;padding:0;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;}
.viewer-v08 .fs-buttons button:disabled{opacity:.34}
.viewer-v08 .fs-buttons button.active{background:#a2e7c9;color:#073229}
.viewer-v08 .fs-buttons .fs-ptt{background:#226e53;border-color:#54ac83;font-size:19px;touch-action:none}
.viewer-v08 .fs-buttons .fs-ptt.active{background:#d73c43}
.viewer-v08 .fs-lenses{display:flex;justify-content:center;align-items:center;gap:6px;pointer-events:auto;}
.viewer-v08 .fs-lenses.hidden{display:none!important}
.viewer-v08 .fs-lenses button{width:auto;min-width:39px;padding:0 9px;border-radius:50px;font-size:12px;white-space:nowrap}
.viewer-v08 .fs-lenses button.active{background:#eafbf5;color:#12382b}
.viewer-v08 .fs-lenses button:disabled{opacity:.45}
.viewer-v08 .media-box:not(.immersive) .fs-controls{display:none!important}
.viewer-v08 .media-box.immersive .fs-controls:not(.hidden){display:block!important}
.viewer-v08 .media-box.immersive .media-caption{display:none}
.viewer-v08 .media-box.immersive .media-exit{z-index:9!important}
.viewer-v08 .media-box.immersive .media-stop{z-index:9!important}
.viewer-v08 .fs-autorefresh{display:flex;gap:10px;align-items:center;font-size:13px;cursor:pointer;margin:5px 0}
.viewer-v08 .fs-autorefresh input{width:19px;height:19px;flex-shrink:0;accent-color:#91e2b8}
.viewer-v08 #viewerPreferences{margin:10px 0;padding:10px;background:#102628}
.viewer-v08 .media-box:fullscreen,.viewer-v08 .media-box:-webkit-full-screen{width:100vw!important;height:100dvh!important;max-height:none!important;border-radius:0!important;background:#000!important}
@media (max-width:355px){
 .viewer-v08 .fs-buttons button{width:39px;height:39px;font-size:14px}
 .viewer-v08 .fs-buttons{gap:2px}
}

/* V0.8.1 refined: battery + minimal controls (44px touch targets, visually smaller). */
.viewer-v08 .viewer-status-pills{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.viewer-v08 .simple-battery{font-size:11px;white-space:nowrap;color:#c9e9d7;border:1px solid #49746d;border-radius:12px;padding:2px 6px}
.viewer-v08 .simple-battery.low{color:#ffc1a9;border-color:#a75a49}
.viewer-v08 .fs-buttons button{position:relative;isolation:isolate;background:transparent!important;border:0!important;box-shadow:none!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;flex:0 0 44px;padding:0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
.viewer-v08 .fs-buttons button::before{content:'';position:absolute;inset:4px;z-index:-1;border-radius:50%;border:1px solid #ffffff49;background:#0c2426ab;box-shadow:0 2px 8px #0005;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.viewer-v08 .fs-buttons button.active::before{background:#a2e7c9}
.viewer-v08 .fs-buttons .fs-ptt::before{background:#226e53e0;border-color:#54ac83}
.viewer-v08 .fs-buttons .fs-ptt.active::before{background:#d73c43}
.viewer-v08 .fs-buttons button:disabled{opacity:.32}
.viewer-v08 .fs-buttons{gap:clamp(0px,1vw,6px)}
.viewer-v08 .fs-topline{top:max(12px,calc(env(safe-area-inset-top) + 12px));left:12px;right:58px;justify-content:flex-start}
.viewer-v08 .fs-state{font-size:10px}
.viewer-v08 .fs-battery{font-size:11px}
.viewer-v08 .fs-lenses button{min-height:36px;height:36px}
@media(max-width:380px){.viewer-v08 .fs-buttons button{width:42px!important;height:44px!important;min-width:42px!important;flex-basis:42px}.viewer-v08 .fs-bottomline{left:3px;right:3px}}

/* V0.8.2: Native fullscreen on capable browsers, CSS viewport on Safari iOS
   after the user taps the fullscreen control. Both share fixed unzoomed overlays. */
.viewer-v08 .fs-cameras-zoom{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;max-width:100%;pointer-events:auto}
.viewer-v08 .fs-zoom{display:flex;align-items:center;gap:3px;padding:3px;background:#101d1ed4;border:1px solid #ffffff36;border-radius:100px;pointer-events:auto}
.viewer-v08 .fs-zoom button{min-width:39px;min-height:34px;height:34px;width:auto;border:0;border-radius:100px;padding:0 8px;background:transparent;color:#dfede7;box-shadow:none;font-size:12px;font-weight:650;line-height:1}
.viewer-v08 .fs-zoom button.active{background:#afedd1;color:#073026}
.viewer-v08 .fs-zoom button:focus-visible{outline:2px solid #fff;outline-offset:1px}
.viewer-v08 .fs-bottomline{gap:7px}
.viewer-v08 #fsTorch:disabled{opacity:.27}

/* V0.8.4: iPhone portrait safe-area and unblocked 50px exit hit target.
   Landscape and native desktop fullscreen keep their original layout. */
.viewer-v08 .media-box.immersive #exitFullscreen:not(.hidden){
 z-index:50!important;pointer-events:auto;touch-action:manipulation;
 display:flex!important;align-items:center;justify-content:center;
 width:50px;min-width:50px;height:50px;min-height:50px;
 padding:0;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent;
}
@media (orientation:portrait) and (max-width:600px){
 .viewer-v08 .media-box.immersive #exitFullscreen:not(.hidden){
  top:max(calc(env(safe-area-inset-top) + 12px),62px);
  right:max(env(safe-area-inset-right),12px);
 }
}

/* V0.8.3 charging state and actual percentage gauge. */
.viewer-v08 .fs-battery,.viewer-v08 .simple-battery{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.viewer-v08 .fs-battery::before,.viewer-v08 .simple-battery::before{
 content:'';display:inline-block;box-sizing:border-box;width:20px;height:10px;
 border:1px solid #9ebeb2;border-radius:3px;
 background:linear-gradient(to right,#90e1b5 var(--battery-level,0%),#ffffff12 var(--battery-level,0%));
 box-shadow:2px 0 0 -1px #9ebeb2;flex:0 0 auto
}
.viewer-v08 .fs-battery.charging,.viewer-v08 .simple-battery.charging{color:#a2f1cb;border-color:#5ea989}
.viewer-v08 .fs-battery.low::before,.viewer-v08 .simple-battery.low::before{
 background:linear-gradient(to right,#f5a38c var(--battery-level,0%),#ffffff12 var(--battery-level,0%))
}


/* V0.9.0 — privacy panel masks the entire camera image, even fullscreen.
   Keep the fullscreen close button accessible above the privacy mask. */
.viewer-v08 .privacy-overlay{
 position:absolute;inset:0;z-index:8;display:grid;place-items:center;
 padding:35px 18px;text-align:center;font-weight:750;
 font-size:clamp(15px,3vw,20px);color:#e3f7ee;background:#07171c;
}
.viewer-v08 .media-box.immersive .privacy-overlay{position:fixed;inset:0}
.viewer-v08 #presenceBanner{background:#2a3d41;color:#dbf1ed}
