.tfr-studio{--tfr-border:var(--line,#494949);--tfr-surface:var(--card-surface,#323232);--tfr-text:var(--foreground,#fff);color:var(--tfr-text)}
.tfr-studio [hidden]{display:none!important}.tfr-deck{max-width:48rem;font-size:clamp(18px,2vw,24px);line-height:1.5}.tfr-mode-controls{display:flex;gap:8px;margin:28px 0}.tfr-studio button,.tfr-studio select{font:inherit;color:var(--tfr-text);border:1px solid var(--tfr-border);background:var(--tfr-surface);padding:12px 16px;min-height:44px}.tfr-studio button[aria-pressed=true]{background:var(--red,#f14834);color:#1e1e1e;border-color:var(--red,#f14834)}.tfr-studio :focus-visible{outline:3px solid var(--red,#f14834);outline-offset:4px}.tfr-stage{aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden;background:var(--tfr-surface);border:1px solid var(--tfr-border);margin-top:24px}.tfr-active-art{width:100%;height:100%;object-fit:contain;grid-area:1/1}.tfr-art-pending{grid-area:1/1;padding:30px;text-align:center;font-family:Kanit,sans-serif;font-size:clamp(24px,5vw,64px);line-height:1.05;text-transform:uppercase}.tfr-active-title{font-family:Kanit,sans-serif;font-size:clamp(24px,4vw,48px);margin:18px 0}.tfr-audio{display:block;width:100%;margin:20px 0}.tfr-audio-state,.tfr-timing-note,.tfr-caption-help{line-height:1.5}.tfr-caption{font-size:clamp(18px,2.5vw,28px);line-height:1.5;min-height:3em;padding:16px;border-left:3px solid var(--red,#f14834);white-space:pre-line}.tfr-scene-nav{display:flex;flex-wrap:wrap;gap:8px;margin:32px 0;font-size:12px}.tfr-scene-nav a{border:1px solid var(--tfr-border);padding:12px;min-height:44px;display:flex;align-items:center;letter-spacing:0}.tfr-scene-nav a[aria-current=true]{border-color:var(--red,#f14834);color:var(--red,#f14834)}.tfr-read{max-width:100%}.tfr-read-scene{scroll-margin-top:24px}.tfr-read-scene img{width:100%;max-height:560px;object-fit:contain}.tfr-illustration-note{border-bottom:1px solid var(--tfr-border);padding-bottom:16px;color:var(--subtle,#bfbfbf);font-size:14px!important}.tfr-narration{font-style:italic}.tfr-read-scene.is-active{border-color:var(--red,#f14834)}.tfr-stage[data-effect=fade] img{animation:tfr-scene-fade .4s ease both}.tfr-stage[data-effect=slow-zoom] img{animation:tfr-scene-zoom 12s linear both}.tfr-stage[data-paused=true] img{animation-play-state:paused}@keyframes tfr-scene-fade{from{opacity:.2}to{opacity:1}}@keyframes tfr-scene-zoom{from{transform:scale(1)}to{transform:scale(1.04)}}@media(max-width:600px){.tfr-mode-controls button{flex:1}.tfr-scene-nav{flex-direction:column}.tfr-studio select{max-width:100%}}@media(prefers-reduced-motion:reduce){.tfr-studio *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep the inherited comment form within the episode width. */.tfr-studio textarea{width:100%;max-width:100%}

/* v1.0.1 — own typography even with another theme or an earlier enqueue order. */
.tfr-studio,.tfr-studio *,.tfr-studio *::before,.tfr-studio *::after{letter-spacing:0!important}
/* The quote occupies no inline width; only its glyph hangs into the scene padding.
   Speakers, narration, subsequent lines and stored text keep their original positions. */
.tfr-studio .dialogue{position:relative;overflow-wrap:anywhere}
.tfr-studio .tfr-opening-quote{position:absolute;inset-inline-start:0;transform:translateX(-100%)}
.tfr-studio .tfr-opening-quote:dir(rtl){transform:translateX(100%)}
