/* MENACE reader. Concept: the comic is the light source; the UI is a pocket cassette deck.
   Ink-dark chrome, Walkman pink as the single accent, cassette-label cream for the track card. */
@font-face{font-family:"Space Mono";src:url(SpaceMono-Regular.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Space Mono";src:url(SpaceMono-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
:root{
  --ink:#0b0d10; --ink-2:#14181e; --ink-3:#1f252d; --line:#2a313b;
  --fog:#c9ced6; --dim:#8a93a0; --cream:#efe6cf; --cream-ink:#2b2418;
  --pink:#e2457c; --pink-soft:#e2457c33; --teal:#57b9ae;
  --stage:var(--ink);
  --ui:"Archivo Narrow","Roboto Condensed","Arial Narrow",system-ui,sans-serif;
  --mono:"Space Mono",ui-monospace,Menlo,Consolas,monospace;
  --marker:"Permanent Marker","Comic Sans MS",cursive;
  --bar:56px; --deck:64px;
  color-scheme:dark;
}
html[data-bg="paper"]{--stage:#e9e6df}
html[data-bg="black"]{--stage:#000}
*{box-sizing:border-box}
html,body{height:100%;margin:0;background:var(--ink);color:var(--fog);font:15px/1.4 var(--ui);overscroll-behavior:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--pink);outline-offset:2px;border-radius:4px}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
[hidden]{display:none!important}

#app{position:fixed;inset:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);background:var(--stage)}

/* top bar */
.topbar{position:relative;z-index:20;display:flex;align-items:center;gap:12px;height:calc(var(--bar) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) max(12px,env(safe-area-inset-right,0px)) 0 max(12px,env(safe-area-inset-left,0px));background:linear-gradient(var(--ink) 70%,#0b0d10e6);border-bottom:1px solid var(--line);transition:transform .25s ease,opacity .25s ease}
.brand{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:6px 8px;border-radius:6px;min-width:0}
.brand:hover{background:var(--ink-3)}
.brand-word{font:700 18px/1 var(--ui);letter-spacing:.32em;color:#fff}
.brand-track{font:400 11px/1.2 var(--mono);color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
.modes{display:flex;margin-left:auto;background:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:3px}
.modes button{padding:6px 12px;border-radius:999px;font:700 12px var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.modes button[aria-checked="true"]{background:var(--fog);color:var(--ink)}
.tools{display:flex;gap:2px}
.icon{width:40px;height:40px;display:grid;place-items:center;border-radius:8px;color:var(--fog)}
.icon:hover{background:var(--ink-3)}
#bookmark[aria-pressed="true"] svg{fill:var(--pink);stroke:var(--pink)}
@media (max-width:640px){
  .modes button{padding:6px 9px;font-size:11px;letter-spacing:.04em}
  #open-transcript{display:none}
  .brand-word{font-size:15px;letter-spacing:.24em}
}
@media (max-width:420px){ #fullscreen{display:none} }

/* stage */
#stage{position:relative;overflow:hidden;outline:none;touch-action:none;min-width:0;min-height:0}
.pager{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:0}
.pager .leaf{position:relative;height:100%;display:flex;align-items:center;justify-content:center;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .32s}
.pager img{display:block;max-height:calc(100% - 24px);max-width:calc(100vw - 24px);height:auto;width:auto;box-shadow:0 18px 60px #000a,0 0 0 1px #ffffff10;user-select:none;-webkit-user-drag:none;background:#222}
.pager.two img{max-width:calc(50vw - 16px)}
.pager.two .leaf{flex:1 1 50%;min-width:0}
.pager.two .leaf:first-child{justify-content:flex-end}
.pager.two .leaf:last-child{justify-content:flex-start}
.pager.two .leaf:first-child img{box-shadow:0 18px 60px #000a,inset -30px 0 40px -30px #0008}
.fit-width .pager{overflow-y:auto;align-items:flex-start;touch-action:pan-y}
.fit-width .pager .leaf{height:auto;padding:12px 0}
.fit-width .pager img{max-height:none;width:min(100vw - 20px,1100px)}
.pager .zoomwrap{transform-origin:0 0;transition:transform .2s ease;height:100%;display:flex;align-items:center;justify-content:inherit;min-width:0}
.turning .pager .leaf{transition:none}

.scroller{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;scroll-snap-type:none}
.scroller .page{width:min(100%,920px);margin:0 auto;display:block;aspect-ratio:2/3;background:#1b1f25}
.scroller .page img{width:100%;height:100%;display:block}
.scroller .divider{display:flex;align-items:center;gap:14px;width:min(100% - 32px,920px);margin:56px auto 40px;font:700 12px var(--mono);letter-spacing:.2em;color:var(--dim)}
.scroller .divider::before,.scroller .divider::after{content:"";flex:1;height:1px;background:var(--line)}

.guide{position:absolute;inset:0;overflow:hidden;background:#000}
.guide-frame{position:absolute;left:0;top:0;transform-origin:0 0;transition:transform .55s cubic-bezier(.3,.7,.2,1)}
.guide-frame img{display:block;width:100%;height:100%}
.guide-frame .veil{position:absolute;box-shadow:0 0 0 400vmax #000d;transition:all .55s cubic-bezier(.3,.7,.2,1);pointer-events:none;border-radius:2px}

.zone{position:absolute;top:0;bottom:0;width:28%;z-index:5;opacity:0}
.zone.prev{left:0}.zone.next{right:0}
[data-mode="scroll"] .zone{display:none}

/* deck */
.deck{position:relative;z-index:20;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;height:calc(var(--deck) + env(safe-area-inset-bottom,0px));padding:0 max(12px,env(safe-area-inset-right,0px)) env(safe-area-inset-bottom,0px) max(12px,env(safe-area-inset-left,0px));background:linear-gradient(#0b0d10e6,var(--ink) 30%);border-top:1px solid var(--line);transition:transform .25s ease,opacity .25s ease}
.step{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--ink-2);border:1px solid var(--line)}
.step:hover{border-color:var(--fog)}
.tape{position:relative;display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;background:var(--ink-2);border:1px solid var(--line);border-radius:10px;min-width:0}
.reel{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;position:relative}
.reel span{display:block;border-radius:50%;background:radial-gradient(circle,#2b2f36 0 22%,#4b3b33 23% 100%);transition:width .3s,height .3s}
.reel::after{content:"";position:absolute;width:6px;height:6px;border-radius:50%;background:var(--ink)}
.playing .reel{animation:spin 1.2s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#scrub{flex:1;min-width:0;appearance:none;-webkit-appearance:none;height:28px;background:transparent}
#scrub::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,var(--pink) var(--p,0%),var(--line) var(--p,0%))}
#scrub::-moz-range-track{height:4px;border-radius:2px;background:var(--line)}
#scrub::-moz-range-progress{height:4px;background:var(--pink)}
#scrub::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;margin-top:-6px;border-radius:3px;background:var(--cream);box-shadow:0 0 0 3px var(--ink)}
#scrub::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:3px;background:var(--cream)}
.counter{display:flex;align-items:baseline;gap:6px;padding:6px 10px;border-radius:8px;background:#05070a;border:1px solid var(--line)}
.digits{font:700 18px/1 var(--mono);color:var(--cream);letter-spacing:.12em;font-variant-numeric:tabular-nums}
.of{font:400 11px var(--mono);color:var(--dim)}
@media (max-width:520px){ .reel{display:none} .of{display:none} .deck{gap:8px} }

/* chrome auto-hide */
.chrome-off .topbar{transform:translateY(-100%);opacity:0}
.chrome-off .deck{transform:translateY(100%);opacity:0}
.chrome-off{cursor:none}

/* sheets */
.sheet{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:16px;background:#05070acc;backdrop-filter:blur(6px)}
.sheet.side{place-items:stretch end;background:transparent;backdrop-filter:none;pointer-events:none;padding:calc(var(--bar) + 12px) 12px calc(var(--deck) + 12px)}
.sheet.side .transcript-panel{pointer-events:auto}
.close{width:36px;height:36px;border-radius:50%;font-size:22px;line-height:1;color:var(--dim)}
.close:hover{color:#fff;background:var(--ink-3)}
.thumbs-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 4px 12px;font:700 13px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}

.jcard{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);width:min(560px,100%);max-height:min(720px,calc(100dvh - 32px));background:var(--cream);color:var(--cream-ink);border-radius:6px;overflow:hidden;box-shadow:0 30px 80px #000c}
.jcard-spine{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;justify-content:space-between;gap:24px;padding:16px 0;background:var(--pink);color:#fff;font:700 12px var(--mono);letter-spacing:.24em;text-align:center;align-items:center}
.jcard-body{padding:22px 24px 24px;overflow-y:auto;background:repeating-linear-gradient(transparent 0 31px,#2b241814 31px 32px)}
.jcard-title{font:400 34px/1 var(--marker);margin-bottom:14px}
.tracklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.tracklist li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:baseline;gap:8px;min-height:44px;padding:6px 4px;border-bottom:1px dashed #2b241833}
.tracklist .side{font:700 11px var(--mono);color:#2b2418aa}
.tracklist button{text-align:left;font:400 21px/1.15 var(--marker);color:var(--cream-ink);padding:0}
.tracklist button:disabled{color:#2b241866;cursor:default}
.tracklist .meta{font:400 11px var(--mono);color:#2b2418aa}
.tracklist li.current button{color:var(--pink)}
.jcard-bookmarks{margin-top:18px;font:400 12px var(--mono)}
.jcard-bookmarks b{display:block;margin-bottom:6px;letter-spacing:.14em}
.jcard-bookmarks button{font:700 12px var(--mono);padding:4px 8px;margin:0 6px 6px 0;border-radius:4px;background:#2b241812;color:var(--cream-ink)}
.jcard .close{position:absolute;top:8px;right:8px;color:var(--cream-ink)}

.thumbs-panel,.settings-panel,.transcript-panel{width:min(980px,100%);max-height:calc(100dvh - 32px);overflow-y:auto;background:var(--ink-2);border:1px solid var(--line);border-radius:12px;padding:16px}
.thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:12px}
.thumb-grid button{display:flex;flex-direction:column;gap:6px;padding:0;text-align:left}
.thumb-grid img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:3px;outline:1px solid var(--line);background:#1b1f25}
.thumb-grid span{font:400 11px var(--mono);color:var(--dim)}
.thumb-grid .current img{outline:3px solid var(--pink)}
.thumb-grid .marked span::after{content:" ●";color:var(--pink)}
.settings-panel{width:min(440px,100%)}
fieldset{border:0;border-top:1px solid var(--line);margin:0;padding:12px 4px;display:flex;flex-direction:column;gap:8px}
legend{font:700 11px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim);padding:0 6px 0 0}
label{display:flex;align-items:center;gap:10px;min-height:32px}
input[type=radio],input[type=checkbox]{accent-color:var(--pink);width:18px;height:18px}
.keys{font:400 12px/1.6 var(--mono);color:var(--dim);border-top:1px solid var(--line);margin:4px 0 0;padding:12px 4px 0}
.transcript-panel{width:min(380px,calc(100vw - 24px));max-height:100%;box-shadow:0 20px 60px #000c}
#transcript-body .p{padding:10px 4px;border-top:1px solid var(--line)}
#transcript-body .p:first-child{border-top:0}
#transcript-body .alt{font:400 12px/1.5 var(--mono);color:var(--dim);margin-bottom:6px}
#transcript-body .ln{margin:3px 0;font-size:15px}
#transcript-body .ln b{font:700 11px var(--mono);letter-spacing:.08em;color:var(--pink);margin-right:6px;text-transform:uppercase}
#transcript-body .ln.caption{font-family:var(--mono);font-size:13px}

.toast{position:fixed;left:50%;bottom:calc(var(--deck) + 20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);z-index:50;padding:10px 16px;border-radius:999px;background:var(--cream);color:var(--cream-ink);font:700 13px var(--mono);opacity:0;pointer-events:none;transition:all .25s ease;max-width:calc(100vw - 32px)}
.toast.show{opacity:1;transform:translate(-50%,0)}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
