/* A cinematic interruption with protected reading time, independent of fast playback. */
.mezameru-film{position:absolute;inset:0;overflow:hidden;color:#fff9ed;background:#050810;--energy:hsl(var(--awake-hue) 85% 72%);isolation:isolate;font-family:system-ui,sans-serif}
.mezameru-backdrop{position:absolute;inset:0;background:radial-gradient(ellipse at 70% 45%,hsl(var(--awake-hue) 65% 20%/.85),transparent 65%),linear-gradient(115deg,#02040a,#111628);z-index:-1}
.mezameru-letterbox{position:absolute;inset:0;border-block:18px solid #010207;z-index:6;pointer-events:none;animation:mez-frame .5s ease-out both}
.mezameru-field{position:absolute;right:-2%;top:0;width:70%;height:100%;overflow:visible;stroke:var(--energy);fill:none;stroke-width:.55;opacity:.65;filter:drop-shadow(0 0 5px hsl(var(--awake-hue) 90% 55%/.3));animation:mez-field-reveal .8s var(--release-at) both}
.mezameru-field>*{transform-box:fill-box;transform-origin:center;animation:mez-energy 2.5s ease-out both;animation-delay:calc(var(--release-at) + var(--i) * 18ms)}
.mezameru-focus{position:absolute;left:50%;top:45%;width:210px;text-align:center;transform:translate(-50%,-50%);animation:mez-focus var(--beat-duration,8s) cubic-bezier(.16,1,.3,1) both;z-index:2}
.mezameru-fighter{position:relative;width:128px;height:128px;margin:auto;display:grid;place-items:center;border:1px solid var(--energy);background:linear-gradient(135deg,hsl(var(--awake-hue) 55% 20%),#030610);box-shadow:0 0 60px hsl(var(--awake-hue) 80% 60%/.25);transform:rotate(-4deg)}
.mezameru-fighter>span{font:900 36px/1 system-ui;color:#fff7e8;letter-spacing:-.06em}
.mezameru-fighter .weapon-sprite{position:absolute;width:190px;height:190px;right:-70px;top:-32px;filter:drop-shadow(0 5px 8px #000);transform:rotate(14deg)}
.mezameru-focus-name{display:block;margin-top:22px;font:650 14px/1.4 system-ui;letter-spacing:.1em;color:var(--energy);text-transform:uppercase}
.mezameru-prologue{position:absolute;left:8%;right:8%;top:64%;text-align:center;z-index:3;animation:mez-prologue var(--beat-duration,8s) linear both}
.mezameru-prologue>span{font:600 12px/1.4 ui-monospace,monospace;text-transform:uppercase;letter-spacing:.14em;color:var(--energy)}
.mezameru-prologue q{display:block;margin:12px auto 16px;max-width:720px;font:650 clamp(19px,2.8vw,30px)/1.4 system-ui;animation:mez-quote .55s var(--quote-at) both}
.mezameru-prologue small{font:500 14px/1.5 system-ui;color:#c6cddd;animation:mez-quote .4s var(--hold-at) both}
.mezameru-release{position:absolute;inset:0;z-index:4;background:radial-gradient(ellipse at 50% 48%,hsl(var(--awake-hue) 80% 87%/.85),hsl(var(--awake-hue) 80% 45%/.22) 35%,transparent 70%);animation:mez-release .75s var(--release-at) both;pointer-events:none}
.mezameru-readout{position:absolute;left:7%;right:7%;top:12%;bottom:13%;z-index:5;max-width:850px;animation:mez-readout .5s var(--readout-at) both;overflow:auto;scrollbar-width:thin;pointer-events:auto;padding:10px 12px 12px 0;text-shadow:0 2px 18px #000}
.mezameru-eyebrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font:800 13px/1.5 ui-monospace,monospace;letter-spacing:.15em;color:var(--energy)}
.mezameru-eyebrow b{padding:4px 8px;border:1px solid var(--energy);background:hsl(var(--awake-hue) 50% 15%);font-size:12px;letter-spacing:.08em}
.mezameru-owner{margin:13px 0 6px!important;font:600 14px/1.5 system-ui;text-transform:uppercase;letter-spacing:.12em;color:#e1e4ef}
.mezameru-readout h3{font:850 clamp(26px,4.6vw,55px)/1.08 system-ui;letter-spacing:-.045em;margin:0 0 20px!important;max-width:820px;text-wrap:balance;overflow-wrap:anywhere}
.mezameru-buffs{display:flex;flex-wrap:wrap;gap:8px;max-width:680px;margin-bottom:18px}
.mezameru-buffs>span{font:650 14px/1.4 system-ui;padding:8px 11px;border-left:3px solid var(--energy);background:#090e1ce8;box-shadow:0 2px 14px #0005}
.mezameru-techniques{max-width:710px}.mezameru-techniques>span{font:600 12px/1.6 ui-monospace,monospace;letter-spacing:.15em;color:var(--energy)}
.mezameru-techniques ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 20px;list-style:none;margin:10px 0 0;padding:0}
.mezameru-techniques li{display:flex;align-items:baseline;gap:10px;font:550 14px/1.4 system-ui;animation:mez-move .3s calc(var(--readout-at) + var(--move)*65ms) both}
.mezameru-techniques li>span{font:600 12px/1 ui-monospace,monospace;color:var(--energy)}
.mezameru-footer{position:absolute;left:7%;right:7%;bottom:5%;display:flex;gap:10px;justify-content:space-between;align-items:center;z-index:6;border-top:1px solid #c0d1ef35;padding-top:10px;animation:mez-readout .5s var(--readout-at) both}
.mezameru-footer>span{font:650 12px/1.5 ui-monospace,monospace;text-transform:uppercase;color:var(--energy)}.mezameru-footer small{font:400 12px/1.5 system-ui;color:#aeb9cc}
/* Personality is carried by delivery and rhythm as well as words. */
.voice-hushed .mezameru-prologue q,.voice-soft .mezameru-prologue q{font-family:Georgia,serif;font-weight:400;font-style:italic;letter-spacing:.02em}
.voice-feral .mezameru-prologue q,.voice-roar .mezameru-prologue q,.voice-command .mezameru-prologue q{font-weight:900;text-transform:uppercase;letter-spacing:-.03em}
.voice-abyssal .mezameru-prologue q{text-shadow:3px 1px #af72aa55,-3px -1px #72a9bd55;letter-spacing:.06em;font-family:Georgia,serif}
.voice-synthetic .mezameru-prologue q,.voice-precise .mezameru-prologue q,.voice-cold .mezameru-prologue q{font-family:ui-monospace,monospace;font-weight:500}
.voice-reverent .mezameru-prologue q,.voice-sovereign .mezameru-prologue q,.voice-silken .mezameru-prologue q{font-family:Georgia,serif;font-weight:400}
.voice-fractured .mezameru-prologue q,.voice-displaced .mezameru-prologue q{text-shadow:3px 0 #4ac8ea80,-3px 0 #ca739f70}
.voice-choral .mezameru-prologue q,.voice-doubled .mezameru-prologue q{text-shadow:0 5px #a9a0db40,0 -5px #a9a0db30}
.voice-bass .mezameru-prologue q{font-weight:900;letter-spacing:.025em}.voice-musical .mezameru-prologue q,.voice-playful .mezameru-prologue q{font-style:italic}
/* Forty motion scores. No shared colour-swap fallback for a documented form. */
.motion-waltz .mezameru-field>*{animation-name:mez-waltz;fill:hsl(var(--awake-hue) 60% 60%/.1)}
.motion-lock .mezameru-field>*{animation-name:mez-lock;stroke-dasharray:130;stroke-width:.4}
.motion-anchor .mezameru-field>*{animation-name:mez-anchor;stroke-width:1.3}
.motion-veil .mezameru-field>*{animation-name:mez-veil;stroke-width:1.6;opacity:.6}
.motion-surrender .mezameru-field>*{animation-name:mez-surrender;stroke-width:1.2}
.motion-zenith .mezameru-field>*{animation-name:mez-zenith;stroke-width:1.2}
.motion-uppercut .mezameru-field>*{animation-name:mez-uppercut;stroke-width:2.1}
.motion-evaluate .mezameru-field>*{animation-name:mez-evaluate;stroke-dasharray:5 2}
.motion-shelter .mezameru-field>*{animation-name:mez-shelter;fill:hsl(var(--awake-hue) 50% 40%/.06)}
.motion-ascend .mezameru-field>*{animation-name:mez-ascend;stroke-width:.9}
.motion-compress .mezameru-field>*{animation-name:mez-compress;stroke-width:.7}
.motion-bloom .mezameru-field>*{animation-name:mez-bloom;fill:hsl(var(--awake-hue) 60% 60%/.13)}
.motion-launch .mezameru-field>*{animation-name:mez-launch;stroke-width:1.1}
.motion-cleanse .mezameru-field>*{animation-name:mez-cleanse;stroke-width:1.8}
.motion-consecrate .mezameru-field>*{animation-name:mez-consecrate;stroke-width:.6}
.motion-serve .mezameru-field>*{animation-name:mez-serve;stroke-width:.8}
.motion-reroll .mezameru-field>*{animation-name:mez-reroll;stroke-width:1.2}
.motion-drop .mezameru-field>*{animation-name:mez-drop}
.motion-spiral .mezameru-field>*{animation-name:mez-spiral;stroke-dasharray:9 2}
.motion-accelerate .mezameru-field>*{animation-name:mez-accelerate;stroke-dasharray:18 12;stroke-width:1.5}
.motion-fuse .mezameru-field>*{animation-name:mez-fuse;stroke-width:1.2}
.motion-stalk .mezameru-field>*{animation-name:mez-stalk;fill:hsl(var(--awake-hue) 50% 50%/.12)}
.motion-consume .mezameru-field>*{animation-name:mez-consume;stroke-width:1.6}
.motion-reject .mezameru-field>*{animation-name:mez-reject;stroke-width:1}
.motion-desync .mezameru-field>*{animation-name:mez-desync;stroke-width:.8}
.motion-bond .mezameru-field>*{animation-name:mez-bond;stroke-width:.8}
.motion-overclock .mezameru-field>*{animation-name:mez-overclock;stroke-width:1.4}
.motion-still .mezameru-field>*{animation-name:mez-still;stroke-width:.6}
.motion-sight .mezameru-field>*{animation-name:mez-sight;stroke-width:.35}
.motion-break .mezameru-field>*{animation-name:mez-break;stroke-width:1.4}
.motion-erupt .mezameru-field>*{animation-name:mez-erupt;stroke-width:1.3}
.motion-crescendo .mezameru-field>*{animation-name:mez-crescendo;stroke-width:1}
.motion-fracture .mezameru-field>*{animation-name:mez-fracture;fill:hsl(var(--awake-hue) 60% 60%/.08)}
.motion-assemble .mezameru-field>*{animation-name:mez-assemble;stroke-width:1.4}
.motion-focus .mezameru-field>*{animation-name:mez-focus-dust;fill:var(--energy);stroke:none}
.motion-converge .mezameru-field>*{animation-name:mez-converge;stroke-width:1.8}
.motion-temper .mezameru-field>*{animation-name:mez-temper;stroke-width:1.2}
.motion-arrest .mezameru-field>*{animation-name:mez-arrest;stroke-width:.7}
.motion-align .mezameru-field>*{animation-name:mez-align;fill:hsl(var(--awake-hue) 60% 70%/.06)}
.motion-unfold .mezameru-field>*{animation-name:mez-unfold;stroke-width:1.4}
@keyframes mez-frame{from{clip-path:inset(48% 0)}to{clip-path:inset(0)}}
@keyframes mez-focus{0%{opacity:0;transform:translate(-50%,-40%) scale(.4) rotate(var(--awake-roll))}9%,30%{opacity:1;transform:translate(-50%,-50%) scale(1.3) rotate(0)}43%{opacity:1;transform:translate(-50%,-50%) scale(1.45)}54%,100%{opacity:.12;transform:translate(85%,-60%) scale(2.1) rotate(var(--awake-roll))}}
@keyframes mez-prologue{0%,5%{opacity:0}10%,41%{opacity:1}49%,100%{opacity:0;visibility:hidden}}
@keyframes mez-quote{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes mez-release{0%{opacity:0;transform:scale(.3)}20%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.6)}}
@keyframes mez-readout{from{opacity:0;transform:translateX(-22px)}to{opacity:1;transform:none}}
@keyframes mez-move{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes mez-field-reveal{from{opacity:.05;filter:blur(8px)}to{opacity:.52;filter:none}}
@keyframes mez-energy{from{opacity:0;transform:scale(.1)}to{opacity:.7;transform:scale(1)}}
@keyframes mez-waltz{0%{transform:rotate(-100deg) scale(.15);opacity:0}55%{transform:rotate(16deg) scale(1.2);opacity:1}100%{transform:rotate(0) scale(1);opacity:.7}}
@keyframes mez-lock{from{stroke-dashoffset:130;opacity:.2}to{stroke-dashoffset:0;opacity:.9}}
@keyframes mez-anchor{0%{transform:scale(2);opacity:0}25%{transform:scale(.9);opacity:1}40%,100%{transform:scale(1);opacity:.8}}
@keyframes mez-veil{from{transform:translateY(-18px) skewX(-15deg);opacity:0}to{transform:translateY(4px) skewX(6deg);opacity:.65}}
@keyframes mez-surrender{0%{transform:scale(1.7);opacity:.1}48%{transform:scale(.05);opacity:1}70%,100%{transform:scale(1.1);opacity:.6}}
@keyframes mez-zenith{0%{transform:translateY(-50px) scale(.2);opacity:0}48%{transform:translateY(0) scale(1);opacity:1}100%{transform:scale(1.15);opacity:.7}}
@keyframes mez-uppercut{from{transform:translateY(90px) skewX(20deg);opacity:0}25%{opacity:1}to{transform:translateY(-8px) skewX(0);opacity:.65}}
@keyframes mez-evaluate{0%{stroke-dashoffset:90;opacity:.1}45%{stroke-dashoffset:20;opacity:1}100%{stroke-dashoffset:0;opacity:.7}}
@keyframes mez-shelter{from{transform:scaleY(.02);opacity:0}to{transform:scaleY(1);opacity:.7}}
@keyframes mez-ascend{0%{transform:translateY(95px);opacity:0}70%{transform:translateY(-4px);opacity:1}100%{transform:none;opacity:.65}}
@keyframes mez-compress{0%{transform:scale(1.7);opacity:.1}65%{transform:scale(.12);opacity:1}100%{transform:scale(.25);opacity:.9}}
@keyframes mez-bloom{from{transform:rotate(-45deg) scale(.01);opacity:0}to{transform:rotate(8deg) scale(1.15);opacity:.75}}
@keyframes mez-launch{0%{transform:translateY(110px);opacity:0}35%{transform:translateY(0);opacity:1}100%{transform:translateY(-45px);opacity:.5}}
@keyframes mez-cleanse{from{transform:translateX(-70px);opacity:.1}to{transform:translateX(10px);opacity:.8}}
@keyframes mez-consecrate{0%{stroke-dasharray:220;stroke-dashoffset:220;opacity:0}100%{stroke-dasharray:220;stroke-dashoffset:0;opacity:.8}}
@keyframes mez-serve{from{transform:translateX(65px) scaleX(.2);opacity:0}to{transform:translateX(0) scaleX(1);opacity:.8}}
@keyframes mez-reroll{0%{transform:skewY(40deg);opacity:0}25%{transform:skewY(-20deg);opacity:1}60%{transform:skewY(12deg)}100%{transform:none;opacity:.7}}
@keyframes mez-drop{0%{transform:scaleY(.1);opacity:.1}35%{transform:scaleY(1.4);opacity:1}50%{transform:scaleY(.65)}70%{transform:scaleY(1.2)}100%{transform:scaleY(1);opacity:.8}}
@keyframes mez-spiral{from{transform:rotate(-150deg) scale(.3);opacity:0}to{transform:rotate(20deg) scale(1);opacity:.8}}
@keyframes mez-accelerate{from{stroke-dashoffset:180;transform:translateX(-30px);opacity:0}to{stroke-dashoffset:-60;transform:translateX(0);opacity:.75}}
@keyframes mez-fuse{from{transform:scaleX(2.4);opacity:0}50%{transform:scaleX(.65);opacity:1}to{transform:scaleX(1);opacity:.8}}
@keyframes mez-stalk{0%{clip-path:inset(0 0 100% 0);opacity:.1}55%{clip-path:inset(0);opacity:1}100%{clip-path:inset(0);opacity:.6}}
@keyframes mez-consume{0%{transform:rotate(50deg) scale(1.8);opacity:0}70%{transform:rotate(0) scale(.6);opacity:.9}100%{transform:rotate(-20deg) scale(.8);opacity:.75}}
@keyframes mez-reject{0%{transform:scale(.1);opacity:0}20%{transform:scale(1);opacity:1}30%{transform:scale(.95)}100%{transform:scale(1.5);opacity:.5}}
@keyframes mez-desync{0%{transform:translateX(-12px);opacity:.1}15%{transform:translateX(8px);opacity:1}32%{transform:translateX(-5px)}55%{transform:translateX(3px)}100%{transform:none;opacity:.8}}
@keyframes mez-bond{from{transform:rotate(-80deg) scale(.35);opacity:0}to{transform:rotate(0) scale(1);opacity:.65}}
@keyframes mez-overclock{from{stroke-dasharray:170;stroke-dashoffset:170;opacity:0}40%{opacity:1}to{stroke-dasharray:170;stroke-dashoffset:-40;opacity:.7}}
@keyframes mez-still{0%{transform:scale(1.3) rotate(15deg);opacity:.2}35%,100%{transform:none;opacity:.8}}
@keyframes mez-sight{0%{transform:rotate(35deg) scale(1.5);opacity:0}60%,100%{transform:none;opacity:.9}}
@keyframes mez-break{0%{transform:scale(.2);opacity:0}15%{transform:scale(1.15);opacity:1}22%{transform:scale(.9)}100%{transform:scale(1.25);opacity:.6}}
@keyframes mez-erupt{from{transform:translateY(25px) scale(.1);opacity:0}40%{opacity:1}to{transform:translateY(-4px) scale(1.1);opacity:.65}}
@keyframes mez-crescendo{from{transform:scaleY(.05);stroke-dasharray:5 20;opacity:.2}to{transform:scaleY(1.3);stroke-dasharray:30 0;opacity:.8}}
@keyframes mez-fracture{0%{transform:scale(.1) rotate(90deg);opacity:0}60%{transform:scale(1.2) rotate(-8deg);opacity:.9}100%{transform:none;opacity:.7}}
@keyframes mez-assemble{0%{transform:translateY(-40px) scale(1.8);opacity:0}40%{transform:translateY(2px) scale(.96);opacity:1}100%{transform:none;opacity:.75}}
@keyframes mez-focus-dust{0%{transform:translateY(-35px) scale(3);opacity:0}60%{transform:translateY(4px) scale(1);opacity:.9}100%{transform:none;opacity:.7}}
@keyframes mez-converge{0%{transform:rotate(-110deg) scale(1.9);opacity:0}65%{transform:rotate(0) scale(.7);opacity:1}100%{transform:rotate(15deg) scale(1);opacity:.8}}
@keyframes mez-temper{from{transform:scaleX(1.8);opacity:0}30%{transform:scaleX(.8);opacity:1}to{transform:scaleX(1);opacity:.75}}
@keyframes mez-arrest{0%{transform:rotate(-110deg);opacity:0}27%,100%{transform:rotate(0);opacity:.8}}
@keyframes mez-align{from{transform:rotate(60deg) scale(.1);opacity:0}to{transform:rotate(0) scale(1);opacity:.8}}
@keyframes mez-unfold{from{stroke-dasharray:150;stroke-dashoffset:150;transform:scale(.1);opacity:0}to{stroke-dasharray:150;stroke-dashoffset:0;transform:scale(1.15);opacity:.8}}
.film-fixed .mezameru-focus{animation-name:mez-fixed-focus}.film-fixed .mezameru-release{animation-name:mez-fixed-release}
@keyframes mez-fixed-focus{0%,42%{opacity:1;transform:translate(-50%,-50%)}54%,100%{opacity:.08;transform:translate(-50%,-50%)}}
@keyframes mez-fixed-release{0%,100%{opacity:0}30%{opacity:.3}}
.film-still *{animation:none!important}.film-still .mezameru-prologue,.film-still .mezameru-release,.film-still .mezameru-focus{display:none}.film-still .mezameru-field{opacity:.25}
/* The delivery is timed by the voice score, including reduced-motion scenes. */
.mezameru-film[data-voice-stage] .mezameru-prologue{display:block;animation:none;opacity:1;visibility:visible}
.mezameru-film[data-voice-stage] .mezameru-prologue q{animation:none;min-height:2.8em}
.mezameru-film[data-voice-stage=delivery] .mezameru-readout,.mezameru-film[data-voice-stage=delivery] .mezameru-footer{visibility:hidden;pointer-events:none}
.mezameru-film[data-voice-stage=release] .mezameru-prologue{opacity:0;visibility:hidden}
.film-still[data-voice-stage=delivery] .mezameru-prologue{top:35%}
.mezameru-prologue q:empty:after{content:'…';opacity:.4}
.sound-panel{max-height:min(82vh,740px);overflow-y:auto;overscroll-behavior:contain}
.is-paused .mezameru-film *{animation-play-state:paused!important}
.battle-stage[data-type="form"] .battle-dialogue,.battle-stage[data-type="form"] .battle-cue-host,.battle-stage[data-type="form"] .battle-moment{visibility:hidden}
@media(max-width:750px){.mezameru-field{right:-25%;width:110%;opacity:.4}.mezameru-focus{top:34%;width:180px}.mezameru-fighter{width:100px;height:100px}.mezameru-fighter .weapon-sprite{width:145px;height:145px;right:-48px;top:-20px}.mezameru-prologue{top:57%;left:7%;right:7%}.mezameru-readout{top:8%;bottom:16%;left:6%;right:6%}.mezameru-readout h3{font-size:clamp(25px,7vw,38px)}.mezameru-buffs>span{font-size:13px;padding:6px 8px}.mezameru-techniques ul{grid-template-columns:1fr;gap:6px}.mezameru-techniques li{font-size:14px}.mezameru-footer{flex-direction:column;align-items:flex-start;gap:4px;bottom:4%;left:6%}.mezameru-footer small{font-size:12px}.mezameru-eyebrow{font-size:12px}.mezameru-owner{font-size:13px}.mezameru-letterbox{border-block-width:10px}}
@media(prefers-reduced-motion:reduce){.mezameru-film *{animation:none!important}.mezameru-prologue,.mezameru-release,.mezameru-focus{display:none}.mezameru-field{opacity:.18}}
html[data-motion="quiet"] .mezameru-film *{animation:none!important}html[data-motion="quiet"] .mezameru-prologue,html[data-motion="quiet"] .mezameru-release,html[data-motion="quiet"] .mezameru-focus{display:none}
