:root{--shadow-xl:0 40px 100px #0000008c}html,body{height:100%}body{cursor:default;background:var(--base);overflow:hidden}body.viewer-page:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(80% 60%,#ec7aa012,#0000 60%),radial-gradient(50% 40% at 50% 120%,#b892e80d,#0000 60%);position:fixed;inset:0}.stage{z-index:2;justify-content:center;align-items:center;padding:80px 60px 180px;display:flex;position:fixed;inset:0;container-type:size}.stage>*{display:none}body[data-type=image] .media-frame,body[data-type=video] .media-frame,body[data-type=image] .stage-image,body[data-type=video] .stage-video,body[data-type=audio] .stage-audio,body[data-type=text] .stage-text,body[data-type=binary] .stage-binary{display:flex}.media-frame{user-select:none;min-width:0;max-width:100%;min-height:0;max-height:100%;display:flex;position:relative}.stage-image,.stage-video{border-radius:var(--radius-md);width:auto;min-width:0;max-width:100%;height:auto;min-height:0;max-height:100%;box-shadow:var(--shadow-xl);background:var(--surface);object-fit:contain;z-index:1;user-select:none;position:relative}.media-frame .stage-image,.media-frame .stage-video{width:100%;height:100%}.media-ph{z-index:0;border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-xl);pointer-events:none;animation:media-ph-in .3s var(--ease-out) both;position:absolute;inset:0}@keyframes media-ph-in{0%{opacity:0}}@media (scripting:enabled){.media-frame .stage-image,.media-frame .stage-video{opacity:0;transition:opacity .3s var(--ease-out)}.media-frame .stage-image.loaded,.media-frame .stage-video.loaded{opacity:1}}@media (prefers-reduced-motion:reduce){.media-frame .stage-image,.media-frame .stage-video{transition:none}.media-ph{animation:none}}.media-frame>.media-meta{color:var(--text-dim);font-variant-numeric:tabular-nums;pointer-events:none;justify-content:center;gap:14px;font-size:12px;display:flex;position:absolute;top:calc(100% + 8px);left:0;right:0}.media-meta span{white-space:nowrap}.stage-audio{background:linear-gradient(180deg, var(--elevated) 0%, var(--surface) 100%);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:min(720px,92vw);max-height:calc(100vh - 220px);box-shadow:var(--shadow-xl);flex-direction:column;padding:36px 40px 32px;position:relative;overflow:hidden}.stage-audio:before{content:"";background:radial-gradient(circle, var(--accent-1-soft), transparent 60%);filter:blur(40px);pointer-events:none;width:360px;height:360px;position:absolute;inset:-40% -20% auto auto}body[data-type=text] .stage-text{width:100%;max-width:1100px;max-height:calc(100vh - 300px)}.stage-binary{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);min-width:420px;box-shadow:var(--shadow-xl);text-align:center;flex-direction:column;align-items:center;gap:22px;padding:48px}.binary-icon{border-radius:var(--radius-lg);background:var(--elevated);border:1px solid var(--border);width:108px;height:108px;color:var(--accent-3);place-items:center;display:grid}.binary-icon svg{width:56px;height:56px}.binary-name{letter-spacing:-.01em;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:520px;font-family:Fraunces,serif;font-size:26px;font-weight:500;overflow:hidden}.binary-hint{color:var(--text-mute);max-width:360px;margin-top:6px;font-size:12px}body[data-encrypted] .stage>.stage-binary,body[data-encrypted] .enc-unlock{display:flex}.enc-unlock{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:min(380px,90vw);box-shadow:var(--shadow-xl);flex-direction:column;align-items:stretch;gap:16px;padding:32px 30px}.enc-title{letter-spacing:-.01em;color:var(--text-primary);text-align:center;font-family:Fraunces,serif;font-size:22px;font-weight:500}.enc-unlock input{border:1px solid var(--border-strong);background:var(--base);width:100%;color:var(--text-primary);transition:border-color .18s var(--ease-out);border-radius:10px;padding:11px 14px;font-family:Geist Mono,monospace;font-size:14px}.enc-unlock input:focus{border-color:var(--accent-1);outline:none}.enc-unlock button{background:var(--accent-1);color:var(--base);cursor:pointer;transition:filter .18s var(--ease-out);border:1px solid #0000;border-radius:999px;padding:11px 16px;font-family:Geist,sans-serif;font-size:13px;font-weight:500}.enc-unlock button:hover{filter:brightness(1.08)}.enc-error{color:var(--danger);text-align:center;font-size:12px}.stage[data-enc-state=decrypting] .enc-unlock{opacity:.55;pointer-events:none}@keyframes enc-shake{30%{transform:translate(-6px)}60%{transform:translate(4px)}}.enc-unlock.shake{animation:.28s ease-in-out enc-shake}.enc-unlock.shake input{border-color:var(--danger)}.infobar{z-index:10;-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);max-width:calc(100vw - 180px);transition:opacity .32s var(--ease-out), transform .32s var(--ease-out);background:#1c1420b8;border-radius:999px;align-items:center;gap:22px;padding:14px 16px 14px 24px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.infobar-main{flex-direction:column;gap:2px;min-width:0;display:flex}.infobar-name{color:var(--text-primary);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-family:Fraunces,serif;font-size:18px;font-weight:500;overflow:hidden}.infobar-sub{color:var(--text-dim);letter-spacing:.04em;white-space:nowrap;font-family:Geist Mono,monospace;font-size:12px}.infobar-actions{flex-shrink:0;gap:8px;display:flex}.infobar-actions .pill-btn{padding:10px 18px}.infobar-actions .pill-btn.primary{background:var(--accent-1);color:var(--base)}.infobar-actions .pill-btn.primary:hover{background:var(--accent-1);box-shadow:0 0 30px var(--accent-1-glow)}.infobar-actions .pill-btn[aria-disabled=true]{opacity:.4;pointer-events:none}body.idle .chrome,body.idle .infobar,body.idle .fs-btn{opacity:0;pointer-events:none}body.idle{cursor:none}@media (width<=720px){.stage{padding:60px 20px 160px}.infobar{border-radius:var(--radius-lg);gap:14px;max-width:calc(100vw - 24px);padding:12px 14px}.infobar-name{font-size:15px}}.audio-native{width:100%;margin-top:4px}.stage-audio .cc-audio{z-index:2;position:relative}