*{box-sizing:border-box}body{margin:0;background:#151512;color:#dbd9ce;font:13px/1.5 system-ui,sans-serif;display:grid;grid-template-columns:minmax(0,1fr) 300px;height:100vh}main{min-width:0;display:flex;flex-direction:column;padding:0 28px}header{height:70px;display:flex;align-items:center;gap:24px;border-bottom:1px solid #34342d;font-size:10px;letter-spacing:1.5px}.mark{font-size:16px;font-weight:650;letter-spacing:3px}header button{margin-left:auto}button,.file{color:inherit;background:none;border:1px solid #515146;padding:7px 12px;border-radius:2px;cursor:pointer;font:inherit;letter-spacing:0}button:hover,.file:hover{background:#34342b}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #d9bd79;outline-offset:3px}#stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:20px 0}canvas{display:block;max-width:100%;max-height:100%;aspect-ratio:4/3;background:#101110}#notice{position:absolute;bottom:24px;left:10px;color:#e4c99a;background:#181812d9;padding:6px 10px;max-width:90%}#notice:empty{display:none}footer{display:flex;align-items:center;gap:15px;padding:12px 0;border-top:1px solid #34342d}#seek{flex:1}.file input{display:none}.caption{font-family:Georgia,serif;font-style:italic;color:#87877b;margin:5px 0 24px}aside{border-left:1px solid #34342d;padding:25px 23px;overflow-y:auto}.aside-head{padding-bottom:20px}h1{font:22px Georgia,serif;margin:0}p{color:#99998a}.aside-head p{margin:6px 0}details{border-top:1px solid #393930;padding:12px 0}summary{cursor:pointer;font-size:11px;letter-spacing:1.3px;text-transform:uppercase;margin-bottom:12px}label.control{display:grid;grid-template-columns:1fr 45px;gap:2px 8px;margin:12px 0;font-size:12px}label.control input[type=range]{grid-column:1/-1;width:100%;margin:3px 0}output{text-align:right;color:#bca87a}input{accent-color:#bca87a}select,input[type=number]{width:100%;background:#24241e;border:1px solid #555547;color:#dedace;padding:6px;font:inherit}label.control select,label.control input[type=number]{grid-column:1/-1}.actions{display:flex;gap:8px;margin-top:16px}.hint,#performance{font-size:11px;line-height:1.7}#performance{color:#bca87a}@media(max-width:800px){body{display:block;height:auto}main{padding:0 16px}header{gap:12px}header span:nth-child(2){display:none}#stage{height:65vh}aside{border-left:0;border-top:1px solid #34342d}footer{flex-wrap:wrap}.caption{margin-bottom:15px}}

#exit-fullscreen{display:none}#stage:fullscreen{width:100vw;height:100vh;padding:0;background:#0e0e0e}#stage:fullscreen canvas{aspect-ratio:auto;max-width:none;max-height:none}#stage:fullscreen #exit-fullscreen{display:block;position:absolute;z-index:2;right:18px;top:18px;opacity:0;background:#181812b0}#stage:fullscreen:hover #exit-fullscreen,#exit-fullscreen:focus-visible{opacity:1}

/* Presentation player; studio settings remain available through the API. */
body{display:block;height:100dvh;overflow:hidden;background:#0e0e0e}main{padding:0;height:100%}aside[hidden]{display:none}
#stage{position:fixed;inset:0;width:100%;height:100%;padding:0;background:#0e0e0e}
#stage canvas{aspect-ratio:auto;max-width:none;max-height:none}
#player-controls{position:absolute;z-index:3;bottom:0;left:0;right:0;margin:0;padding:28px 24px 18px;border:0;background:linear-gradient(transparent,rgba(0,0,0,.8));transition:opacity .25s;gap:14px}
#seek{min-width:60px}#notice{bottom:86px}
#stage.idle #player-controls{opacity:0;pointer-events:none}
#stage:fullscreen #fullscreen{display:none}
#stage:fullscreen #exit-fullscreen{display:block;position:static;opacity:1;background:none}
@media(max-width:600px){#player-controls{padding:20px 12px 12px;gap:8px;flex-wrap:wrap}#seek{order:5;flex-basis:100%}button,.file{padding:7px 9px}}

#parameters-drawer{position:absolute;z-index:4;right:12px;top:12px;bottom:90px;width:min(340px,calc(100% - 24px));padding:0 20px 20px;background:#191a17f5;border:1px solid #44443a;border-radius:4px;overflow:auto;overscroll-behavior:contain}.drawer-heading{position:sticky;top:0;z-index:1;background:#191a17;display:flex;justify-content:space-between;align-items:center;padding:16px 0}.drawer-heading h1{font:20px Georgia,serif}#parameters-drawer[hidden]{display:none}@media(max-width:600px){#parameters-drawer{bottom:150px}#player-controls{flex-wrap:wrap}}

#playlist{width:180px;max-width:30vw;min-width:90px}#player-controls{flex-wrap:wrap}button:disabled{opacity:.45;cursor:default}

/* Quiet presentation controls, with a generous hit area around the thin line. */
#player-controls button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:8px;border:0;background:none;color:#deddd6;border-radius:50%}
#player-controls button:hover{background:#ffffff14}
#player-controls button[hidden],#player-controls input[hidden]{display:none}
#player-controls #exit-fullscreen{display:none}
#stage:fullscreen #exit-fullscreen{display:inline-flex}
#stage:fullscreen #fullscreen{display:none}
#playlist{width:auto;max-width:180px;background:transparent;border:0;font-size:11px;color:#deddd6;padding:6px}
#playlist option{background:#20201c}
#seek{appearance:none;-webkit-appearance:none;background:transparent;height:24px;margin:0;cursor:pointer;--played:0%}
#seek::-webkit-slider-runnable-track{height:4px;background:linear-gradient(#deddd6,#deddd6) left center/var(--played) 4px no-repeat,linear-gradient(#ffffff45,#ffffff45) center/100% 2px no-repeat}
#seek::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:0;height:0;border:0;background:transparent}
#seek::-moz-range-track{height:2px;background:#ffffff45;border:0}
#seek::-moz-range-progress{height:4px;background:#deddd6;border:0}
#seek::-moz-range-thumb{width:0;height:0;border:0;background:transparent}
#parameters-drawer{transition:opacity .25s}
#stage.idle #parameters-drawer{opacity:0;pointer-events:none}
@media(hover:hover) and (pointer:fine){#stage.idle{cursor:none}}

#export-dialog{width:min(380px,calc(100% - 32px));padding:24px;border:1px solid #55554b;border-radius:6px;background:#191a17;color:#deddd6}
#export-dialog::backdrop{background:#0008}
#export-dialog h2{font-size:18px;margin:0 0 20px}
#export-form>label{display:block;margin:12px 0}
#export-form input[type=number],#export-form select{display:block;margin-top:4px}
#export-form .export-audio{display:flex;align-items:center;gap:8px}
.export-actions{display:flex;gap:12px}#export-status{min-height:3em}
