/* The slide owns fullscreen. No site controls or overlays remain on the display. */
.player-body{height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.player-header{flex:none;min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px;border-bottom:1px solid var(--line);font-size:12px}
.player-header>a{text-decoration:none}.deck-label{width:220px;height:26px}.header-actions{display:flex;gap:8px;align-items:center}.player-header button{font-size:12px}
.phone-button{display:inline-flex;gap:8px;align-items:center;justify-content:center}.phone-button svg{width:20px;height:22px;flex:none}
.player{display:flex;flex:1;flex-direction:column;background:#000;min-height:0}.stage-area{position:relative;flex:1;min-height:0;display:grid;place-items:center;background:#000;overflow:hidden}
.stage{position:relative;aspect-ratio:16/9;max-width:100%;max-height:100%;isolation:isolate;background:#000}.slide{position:absolute;inset:0;overflow:hidden;background:#000}.layer{position:absolute;object-fit:fill;max-width:none}
.media-layer{border:0;padding:0;margin:0;object-fit:contain;cursor:pointer}.read-only .media-layer{pointer-events:none;cursor:default}.media-layer:focus-visible{outline:2px solid #fff;outline-offset:2px}
.blank-screen{position:absolute;inset:0;z-index:10;background:#000}
.load-panel{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;text-align:center;background:#000;max-width:650px;margin:auto}.load-panel h1{font:40px/1.1 var(--serif);margin-bottom:20px}
.load-message{height:100px;width:100%;max-width:52ch}.file-input{position:absolute;width:1px;height:1px;opacity:0}.load-panel label:focus-within{outline:2px solid #fff;outline-offset:5px}.small{font-size:12px;color:var(--muted);line-height:1.5}.load-panel .small{margin-top:18px}
.player-controls{flex:none;display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line)}.player-controls button{font-size:12px;min-height:44px;padding:8px 12px}
.slide-picker select{width:160px;min-height:44px;background:#000;color:#fff;border:1px solid #777;font-size:12px}.seek-control{width:100px}.seek-control input{width:100%}input[type=range]{accent-color:#fff;min-height:36px}
.player-status{flex:none;min-height:112px;padding:8px 24px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.viewer-options{display:flex;align-items:center;gap:20px;min-height:40px}.viewer-options button{font-size:12px;min-height:40px;padding:6px 10px}.controls-toggle{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;color:#fff;font-size:13px}.controls-toggle input{width:17px;height:17px;accent-color:#fff;flex:none}
#control-note{margin:0;min-height:20px}.status-text{height:30px;width:100%;margin-top:4px}.gesture{position:absolute;bottom:20px;z-index:15;max-width:90%;background:#fff;color:#000;font-size:13px}
.player:fullscreen,.player.cinema{width:100vw;height:100dvh;background:#000}.player.cinema{position:fixed;inset:0;z-index:1000}.player:fullscreen .stage-area,.player.cinema .stage-area{height:100dvh;width:100vw;flex:1}
.player:fullscreen .player-controls,.player.cinema .player-controls,.player:fullscreen .gesture,.player.cinema .gesture{display:none!important}.player:fullscreen,.player.cinema{cursor:none}.player:fullscreen dialog,.player.cinema dialog{cursor:auto}
.player:fullscreen .media-layer,.player.cinema .media-layer{pointer-events:none}
dialog{border:1px solid #777;background:#000;color:#fff;width:min(460px,calc(100% - 32px));padding:28px}dialog::backdrop{background:#000b}dialog h2{font:30px/1.15 var(--serif)}dialog>p{font-size:14px}.dialog-close{position:absolute;right:10px;top:10px;min-height:36px;width:36px;padding:0;font-size:22px;border:0}.dialog-actions{display:flex;gap:12px;margin:16px 0}.dialog-actions button{flex:1}.qr{width:220px;height:220px;margin:20px auto;background:#fff;color:#000}.qr svg{width:100%;height:100%;display:block}#invite-link,#join-url{width:100%;min-width:0;font-size:12px;padding:10px;border:1px solid #777;background:#111;color:#fff}.name-box{height:75px;margin:20px 0;font-family:var(--serif)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.remote-shell{width:min(calc(100% - 32px),1040px);margin:0 auto 30px}.remote-header{height:80px;display:flex;gap:20px;align-items:center;border-bottom:1px solid var(--line);font-size:13px}.remote-header>span{flex:1}.remote-header button{font-size:12px}#remote-status{height:48px;margin:14px 0}.remote-preview{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:16/9;background:#000;border:1px solid var(--line);overflow:hidden}.remote-preview>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.remote-preview>img:not([src]){display:none}.waiting-slide{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:13px}.remote-preview>.stage{z-index:1}.viewer-summary{display:flex;align-items:center;gap:20px;margin:12px 0}.remote-title{height:36px;flex:1;min-width:0;margin:0;font-family:var(--serif)}#remote-counter{font-size:12px}
#hotspots{position:absolute;inset:0;z-index:11}#hotspots button{position:absolute;min-height:0;padding:0;border:1px solid #ffffff50;background:transparent}#hotspots button:hover{background:#ffffff20}
#control-panel{max-width:600px;margin-top:12px;border-top:1px solid var(--line);padding-top:20px}#join-form label{font-size:13px}.request-row{display:flex;gap:8px;margin:8px 0}.request-row input{flex:1;min-width:0;background:#111;color:#fff;border:1px solid #777;padding:10px}.request-row button{font-size:12px}#request-note{min-height:40px;overflow-wrap:anywhere}
.remote-navigation,.remote-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.remote-navigation button{min-height:56px}.remote-controls button{font-size:12px;min-height:48px}.remote-seek{display:block;font-size:12px;color:var(--muted);margin:20px 0}.remote-seek input{display:block;width:100%}#leave{width:100%;font-size:13px}.join-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px;border-top:1px solid var(--line);padding-top:16px}.join-footer button{font-size:12px}
.remote-preview:fullscreen,.remote-preview.cinema{width:100vw;height:100dvh;border:0;background:#000}.remote-preview.cinema{position:fixed;inset:0;z-index:1000}.remote-preview:fullscreen #hotspots,.remote-preview.cinema #hotspots{display:none!important}
.presentation-entry{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:40px;border-top:1px solid var(--line);padding-top:28px}.preview-tile{display:block;position:relative;aspect-ratio:16/9;border:1px solid var(--line);background:#000;overflow:hidden}.preview-tile>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.cover-fallback{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:24px}.cover-fallback>span:first-child{font:clamp(24px,4vw,48px)/1.1 var(--serif)}.cover-fallback>span:last-child{font-size:12px;color:var(--muted)}.preview-caption{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px}.preview-caption h2{font:27px/1.2 var(--serif);margin:0}.preview-caption>span{font-size:12px;white-space:nowrap}.join-box{min-width:0;text-align:center}.join-box h2{font-size:15px;font-weight:400;margin:0}.join-box .qr{width:180px;height:180px;margin:16px auto}.join-box>a{font-size:13px}.join-box button{font-size:12px;margin-top:8px;width:100%}.join-box #join-url{font-size:11px}.presentation-entry+ #session-status{min-height:24px;margin-top:20px}
@media(max-width:700px){.player-header{min-height:72px;padding:8px 12px;gap:8px}.deck-label{display:none}.header-actions{gap:6px}.player-header button{padding:8px;font-size:11px}.phone-button{gap:5px}.phone-button svg{width:17px}.player-controls{gap:6px;padding:8px}.player-controls button{font-size:11px;padding:8px}.slide-picker select{width:110px}.seek-control{width:90px}.player-status{padding:8px 12px;min-height:120px}.viewer-options{gap:12px}.viewer-options button{font-size:11px}.load-panel{padding:16px}.load-panel h1{font-size:28px}.load-message{height:92px}.load-panel .small{display:none}.remote-shell{width:calc(100% - 24px)}.remote-header{height:70px}.presentation-entry{grid-template-columns:minmax(0,1fr);gap:30px}.join-box{display:grid;grid-template-columns:160px minmax(0,1fr);gap:8px 20px;text-align:left}.join-box h2{grid-column:2;margin-top:12px}.join-box .qr{grid-column:1;grid-row:1/6;width:160px;height:160px;margin:0}.join-box .small{margin:0}.join-box input{grid-column:2}.join-box button{grid-column:2;margin:0}.preview-caption h2{font-size:24px}.join-footer{gap:12px}.join-footer .small{font-size:11px}}
@media(max-width:380px){.join-box{display:flex;flex-direction:column;align-items:center;text-align:center}.join-box .qr{margin:8px 0}.join-box input,.join-box button{max-width:240px}.player-header>a{font-size:11px}.header-actions button{font-size:10px}.header-actions{gap:4px}}

/* Presentation-only fullscreen: no application buttons, dialogs or loading chrome. */
.player:fullscreen .load-panel,.player.cinema .load-panel,.player:fullscreen dialog,.player.cinema dialog{display:none!important}
.remote-preview:fullscreen,.remote-preview.cinema{cursor:none}
.remote-preview:fullscreen .waiting-slide,.remote-preview.cinema .waiting-slide{font-size:0}
.remote-preview[data-offline="true"]::after{content:"Display disconnected";position:absolute;inset:0;z-index:20;display:grid;place-items:center;background:#000b;color:#fff;font-size:13px;pointer-events:none}

/* Both native fullscreen and its cinema fallback leave only the slide on screen. */
.presentation-fullscreen > .player-header,
.presentation-fullscreen > .player-status,
.presentation-fullscreen > dialog { visibility:hidden; pointer-events:none; }
.player.phone-controlled #local-controls { display:none!important; }
.player:fullscreen .media-layer,
.player.cinema .media-layer { cursor:none; }
.controls-toggle:has(input:disabled) { color:var(--muted); cursor:default; }
