/* Canvas remains 1920×1080; UI alone adapts to the screen. */
@font-face{font-family:"Noto Serif JP";src:url("assets/fonts/noto-serif-jp.woff2") format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Noto Serif SC Index";src:url("assets/fonts/index-serif-sc-400.ttf") format("truetype");font-weight:400;font-display:swap}
:root{--stage-bg:#e9e7df;--slide-bg:#f7f5ee;--ink:#183e34;--line:#94a992;--sc:"Noto Serif SC Index","Noto Serif JP",serif}
*{box-sizing:border-box}body{color:var(--ink);font-family:var(--sc)}button,input{font:inherit;color:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;background:#f7f5ee;border:1px solid var(--line);border-radius:3px;min-height:44px;padding:7px 12px}button:hover:not(:disabled){background:#e2e9d5}button:disabled{opacity:.35;cursor:default}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #397c83;outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:pre-wrap}.skip{position:fixed;top:-80px;z-index:1005;background:#f7f5ee;padding:12px}.skip:focus{top:0}.topbar{position:fixed;inset:0 0 auto;min-height:58px;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:6px max(18px,env(safe-area-inset-left));background:#f7f5ee;z-index:1001;font-size:16px}.topbar>a{min-height:44px;display:flex;align-items:center;text-decoration:none;white-space:nowrap}.brand{font-size:15px}.tools{display:flex;gap:8px}.deck-viewport{inset:64px 16px 74px}.deck-stage{box-shadow:0 5px 30px #34493612}.slide-transcript{left:0;top:0;pointer-events:none}.slide-image{display:block;width:1920px;height:1080px;max-width:none;max-height:none}.native-link{position:absolute;display:block;cursor:pointer;border-radius:2px}.native-link:hover{background:#d8e89133}.native-link:focus-visible{outline:4px solid #397c83;background:#f7f5ee44}.deck-controls{bottom:8px;max-width:calc(100% - 24px);display:flex;align-items:center;justify-content:center;gap:12px;white-space:nowrap;font-size:15px;min-height:52px;background:#f7f5ee;padding:4px 14px;border-radius:4px}.counter{min-width:68px;text-align:center;font-variant-numeric:tabular-nums}.jump{display:flex;align-items:center;gap:7px}.jump input{width:60px;min-height:44px;background:#f7f5ee;border:1px solid var(--line);border-radius:3px;padding:6px;font-variant-numeric:tabular-nums}.source-map{font-size:12px;color:#46614d;margin-left:8px}.error{position:fixed;bottom:74px;left:50%;transform:translateX(-50%);background:#f7f5ee;padding:12px;border:1px solid #ad7254;z-index:1010;font-size:16px;max-width:90vw}dialog{width:min(760px,calc(100% - 28px));max-height:85dvh;border:1px solid var(--line);background:#f7f5ee;color:var(--ink);padding:24px;overscroll-behavior:contain}dialog::backdrop{background:#183e344d}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.dialog-top h2{font-size:25px;margin:0}.chapters{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:14px}.chapters button{font-size:16px}.toc-list{list-style:none;padding:0;margin:0}.toc-list button{display:flex;gap:15px;border:0;border-bottom:1px solid var(--line);background:transparent;width:100%;text-align:left;font-size:18px;line-height:1.6;padding:12px 4px}.toc-list button[aria-current=page]{background:#e4ead9}.toc-page{flex:0 0 40px;color:#536d54;font-size:15px}
@media(max-width:700px){.topbar{font-size:14px;gap:8px;padding-inline:12px}.brand{display:none}.tools{gap:5px}.tools button{font-size:14px;padding-inline:9px}.deck-viewport{inset:64px 8px 92px}.deck-controls{bottom:8px;gap:8px;font-size:14px;flex-wrap:wrap;width:max-content;max-width:calc(100% - 16px);padding:3px 9px}.deck-controls button span,.jump label{display:none}.deck-controls button{padding-inline:10px}.counter{min-width:62px}.jump{gap:5px}.jump input{width:48px}.source-map{flex-basis:100%;margin:0;text-align:center;font-size:12px}.error{bottom:100px}dialog{padding:18px}}
@media(max-height:550px){.topbar{min-height:48px;padding-block:2px}.topbar button,.topbar a{min-height:40px}.deck-viewport{inset:53px 8px 59px}.deck-controls{bottom:4px;min-height:46px;gap:8px;padding-block:2px;font-size:13px}.deck-controls button,.jump input{min-height:40px}.deck-controls button span{display:none}.jump label{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
