.app-shell{width:100%;max-width:100vw;min-width:0;height:100dvh;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto;background:var(--bg)}
.topbar{position:relative;width:100%;max-width:100vw;min-width:0;min-height:calc(44px + var(--safe-t));padding:var(--safe-t) var(--safe-r) 0 var(--safe-l);display:grid;grid-template-columns:minmax(48px,1fr) auto minmax(48px,1fr);align-items:center;gap:8px;background:var(--chrome);border-bottom:1px solid var(--line);z-index:40}.frame-side{display:flex;align-items:center;min-width:0}.frame-left{justify-content:flex-start}.frame-right{justify-content:flex-end}.frame-btn{width:var(--control);height:var(--control);display:grid;place-items:center;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer}.frame-btn:hover,.frame-btn:focus-visible{background:color-mix(in srgb,var(--text) 8%,transparent);border-color:var(--line);outline:none}.frame-btn:active{transform:translateY(1px)}.frame-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.presentation-title{justify-self:center;display:flex;align-items:center;gap:8px;min-width:0;max-width:min(60vw,580px)}.presentations-icon{width:30px;height:30px;border-radius:8px;flex:none}.title-input{width:min(350px,44vw);min-width:90px;height:38px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--chrome) 94%,transparent);padding:0 12px;text-align:center;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title-input:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);border-color:var(--accent);text-align:left}.dirty-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);opacity:0;flex:none}.dirty-dot.visible{opacity:1}
.statusbar{width:100%;max-width:100vw;min-width:0;min-height:calc(30px + var(--safe-b));padding:0 var(--safe-r) var(--safe-b) var(--safe-l);display:flex;align-items:center;gap:12px;background:var(--chrome);border-top:1px solid var(--line);font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;z-index:25}.statusbar span{min-width:0;overflow:hidden;text-overflow:ellipsis}.statusbar #statusText{flex:1 1 auto}.statusbar #slideStatus{flex:0 0 auto;font-variant-numeric:tabular-nums}
.backdrop{position:fixed;inset:0;background:var(--overlay);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:100}.drawer{position:fixed;z-index:110;top:calc(var(--safe-t) + 48px);left:var(--safe-l);width:min(340px,calc(100vw - var(--safe-l) - var(--safe-r)));max-height:calc(100dvh - var(--safe-t) - var(--safe-b) - 72px);overflow:auto;background:var(--chrome);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 70px rgba(10,18,30,.25);padding:12px}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.drawer-title{display:flex;align-items:center;gap:9px;font-weight:750}.drawer-icon{width:30px;height:30px;border-radius:8px}.close-btn{width:40px;height:40px;display:grid;place-items:center;border:1px solid transparent;border-radius:11px;background:transparent;cursor:pointer}.close-btn:hover{background:var(--accent-soft);border-color:var(--line)}.close-btn svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.drawer-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.drawer-section-label{padding:2px 5px 7px;color:var(--muted);font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.04em}.menu-list{display:grid;gap:4px}.menu-item{width:100%;min-height:46px;border:1px solid transparent;border-radius:11px;background:transparent;padding:0 10px;display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:10px;text-align:left;cursor:pointer}.menu-item:hover,.menu-item:focus-visible{background:var(--accent-soft);outline:none}.menu-item:disabled{opacity:.38;cursor:default}.menu-item svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.hint{font-size:11px;color:var(--muted)}.appearance-switch{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px;border-radius:12px;background:var(--panel)}.appearance-choice{height:36px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}.appearance-choice.active{background:var(--chrome);border-color:var(--line-strong);color:var(--text);box-shadow:0 1px 5px rgba(0,0,0,.08)}
.zoom-popover{position:fixed;z-index:90;width:min(310px,calc(100vw - var(--safe-l) - var(--safe-r)));padding:14px;background:var(--chrome);border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 58px rgba(10,18,30,.24)}.zoom-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.zoom-head output{font-variant-numeric:tabular-nums;font-weight:750}.zoom-row{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;gap:8px;align-items:center}.zoom-round{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--panel);font-size:18px;cursor:pointer}.zoom-row input{width:100%;accent-color:var(--accent)}.zoom-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:12px}.zoom-presets button{min-height:38px;border:1px solid var(--line);border-radius:9px;background:var(--panel);cursor:pointer}.zoom-presets button.active{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.zoom-popover small{display:block;margin-top:9px;color:var(--muted);text-align:center}
@media(pointer:fine){.topbar{min-height:calc(44px + var(--safe-t))}.drawer{top:calc(var(--safe-t) + 48px)}.appearance-choice{height:30px;font-size:11px}}
@media(max-width:720px){.presentation-title{max-width:56vw}.presentations-icon{width:27px;height:27px}.title-input{width:42vw;padding:0 8px}.drawer{top:calc(var(--safe-t) + 48px);border-radius:16px}}
@media(max-width:470px){.presentations-icon{display:none}.presentation-title{max-width:52vw}.title-input{width:48vw;min-width:86px}.drawer{width:calc(100vw - var(--safe-l) - var(--safe-r));padding:10px}.statusbar #statusText{display:none}}
