/* V31 EVOLUTION CINEMA — standalone full-screen audiovisual ritual.
   Original artwork remains centered, full-body, and never cropped. */
.v31-trial{margin:14px 0 22px;padding:18px 15px;border:1px solid #ad95cf77;border-radius:19px;background:linear-gradient(145deg,#161932,#1e1835 64%,#112b32);box-shadow:inset 0 0 30px #9b73d319}
.v31-trial-eyebrow{display:block;font:700 9px system-ui,sans-serif;letter-spacing:.17em;color:#e6c89a}
.v31-trial h3{font-size:20px;color:#f8ecd2;margin:8px 0 6px}.v31-trial p{font:12px/1.65 system-ui,sans-serif;color:#b5bad0;margin:0 0 14px}
.v31-trial-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v31-trial-buttons button{border:1px solid #bba7db88;border-radius:12px;min-height:49px;background:#262341;color:#f8edda;font-weight:700;font-size:13px}.v31-trial-buttons button:active{background:#48405e;transform:scale(.98)}
.v31-evo-veil.v20-evo-veil{position:fixed!important;inset:0!important;display:block!important;background:#090a1b!important;color:#fff8e8!important;isolation:isolate;overflow:hidden!important;z-index:10050!important;--v31-accent:#a9d6fa;--v31-warm:#e9b57a;--v31-dark:#122d4d;--v31-rune:rgba(178,228,255,.64)}
.v31-evo-veil[data-theme="holy"]{--v31-accent:#ffe5a6;--v31-warm:#f8ca83;--v31-dark:#2c2120;--v31-rune:rgba(255,221,145,.62)}
.v31-evo-veil[data-theme="blight"]{--v31-accent:#e0b1f5;--v31-warm:#d6ee9f;--v31-dark:#211328;--v31-rune:rgba(199,157,231,.62)}
.v31-evo-veil[data-theme="arcane"]{--v31-accent:#c3efdc;--v31-warm:#dfc198;--v31-dark:#112f29;--v31-rune:rgba(167,238,216,.62)}
.v31-evo-veil *{box-sizing:border-box}
.v31-evo-atmosphere,.v31-evo-mist,.v31-evo-iris,.v31-evo-strobe,.v31-evo-impact,.v31-evo-particles{position:absolute;inset:0;pointer-events:none}
.v31-evo-atmosphere{background:radial-gradient(ellipse 105% 63% at 50% 46%,color-mix(in srgb,var(--v31-accent) 18%,transparent),transparent 70%),linear-gradient(180deg,#070b1c 0%,var(--v31-dark) 53%,#04080d 100%)}
.v31-evo-mist{background:radial-gradient(ellipse 65% 40% at 50% 66%,color-mix(in srgb,var(--v31-warm) 20%,transparent),transparent 80%),repeating-linear-gradient(120deg,transparent 0 44px,#d2c9ff04 47px 48px,transparent 50px 95px);opacity:.75;animation:v31-drift 7s ease-in-out infinite alternate}
.v31-evo-iris{inset:5% -30%;background:conic-gradient(from 0deg at 50% 45%,transparent 0deg,var(--v31-rune) 3deg,transparent 8deg 29deg,var(--v31-rune) 32deg,transparent 38deg 60deg,var(--v31-rune) 62deg,transparent 69deg 86deg,var(--v31-rune) 88deg,transparent 95deg 360deg);-webkit-mask-image:radial-gradient(ellipse at center,transparent 19%,#0007 36%,transparent 68%);mask-image:radial-gradient(ellipse at center,transparent 19%,#0007 36%,transparent 68%);opacity:.37;animation:v31-iris 34s linear infinite}
.v31-evo-energy-ring{position:absolute;left:50%;top:43%;height:min(90vw,49vh);width:min(90vw,49vh);border-radius:50%;border:1px solid var(--v31-rune);box-shadow:0 0 32px color-mix(in srgb,var(--v31-accent) 36%,transparent),inset 0 0 25px color-mix(in srgb,var(--v31-accent) 25%,transparent);pointer-events:none;opacity:.46;transform:translate(-50%,-50%);animation:v31-orbit 21s linear infinite}
.v31-evo-energy-ring:before{content:"";position:absolute;inset:7%;border-radius:50%;border:2px dashed var(--v31-rune)}
.v31-evo-energy-ring.ring-inner{height:min(65vw,37vh);width:min(65vw,37vh);opacity:.28;animation-duration:16s;animation-direction:reverse}
.v31-evo-particles{width:100%;height:100%;z-index:5;opacity:.86}
.v31-evo-strobe{z-index:10;background:radial-gradient(circle at 50% 47%,#fff 0%,var(--v31-accent) 26%,transparent 80%);opacity:0}
.v31-evo-impact{z-index:11;background:linear-gradient(110deg,transparent 35%,#ffffffb3 49.5%,#ffffffba 50.5%,transparent 65%);opacity:0;transform:scale(.4)}
.v31-evo-head{position:absolute;top:calc(20px + env(safe-area-inset-top));left:12px;right:12px;text-align:center;z-index:14;display:flex;flex-direction:column;gap:4px}
.v31-evo-head b{font:800 clamp(17px,5vw,23px)/1.2 Georgia,serif;letter-spacing:.16em;text-shadow:0 2px 8px #000}
.v31-evo-head span{font:700 10px/1.4 system-ui,sans-serif;letter-spacing:.21em;color:var(--v31-accent)}
.v31-evo-main{position:absolute;top:17.2%;bottom:25%;left:2.5%;right:2.5%;z-index:8;pointer-events:none;display:flex;align-items:center;justify-content:center}
.v31-evo-aura{position:absolute;inset:1%;background:radial-gradient(ellipse 55% 64% at 50% 51%,color-mix(in srgb,var(--v31-accent) 25%,transparent),transparent 74%);filter:blur(15px);transform:scale(.78);opacity:.6;animation:v31-pulse 3.6s ease-in-out infinite alternate}
.v31-evo-main img{position:absolute;inset:0;width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;object-position:center center!important;opacity:0;transform:translate3d(0,0,0) scale(.88);filter:brightness(.08) contrast(1.28) drop-shadow(0 0 22px #ffffff33)!important;transition:transform 1.6s cubic-bezier(.2,.72,.18,1),filter 1.5s ease,opacity .7s ease;mix-blend-mode:normal!important;-webkit-mask-image:none!important;mask-image:none!important}
.v31-evo-main img.v31-evo-before{opacity:1;transform:scale(.85);filter:brightness(.47) saturate(.56) drop-shadow(0 0 22px var(--v31-accent))!important}
.v31-evo-column{position:absolute;left:49.5%;top:-25%;width:2%;height:160%;border-radius:100%;background:linear-gradient(180deg,transparent,var(--v31-accent) 30%,#ffffffa8 51%,var(--v31-accent) 68%,transparent);filter:blur(9px);transform:scaleX(.01);opacity:0;pointer-events:none}
.v31-evo-side-label{position:absolute;z-index:12;left:calc(15px + env(safe-area-inset-left));top:27%;writing-mode:vertical-rl;transform:rotate(180deg);font:700 9px Georgia,serif;letter-spacing:.33em;color:var(--v31-accent);opacity:.58;text-shadow:0 1px 7px #000}
.v31-evo-narrative{position:absolute;z-index:15;bottom:calc(91px + env(safe-area-inset-bottom));left:8px;right:8px;text-align:center;padding:24px 8px 9px;background:linear-gradient(180deg,transparent,#050913d9 26%,#050913ee 100%);text-shadow:0 2px 12px #000}
.v31-evo-narrative>small{font:700 10px/1.4 system-ui,sans-serif;letter-spacing:.26em;color:var(--v31-warm)}
.v31-evo-narrative>[data-v20-evo-live]{font:700 clamp(16px,4.6vw,23px)/1.55 'Yu Mincho',serif;color:#fff3da;margin-top:7px;min-height:35px}
.v31-evo-result{display:none}.v31-evo-result>span{font:700 9px system-ui,sans-serif;letter-spacing:.13em;color:var(--v31-accent)}
.v31-evo-result h2{font:800 clamp(25px,6.2vw,37px)/1.2 'Yu Mincho',serif;color:#fffbe8;letter-spacing:.035em;margin:6px 0 10px;text-wrap:balance;text-shadow:0 2px 16px #000,0 0 25px var(--v31-accent)}
.v31-evo-stats{display:flex;gap:6px;justify-content:center}.v31-evo-stats span{flex:1;min-width:0;border:1px solid #ddceac66;border-radius:12px;background:#090f22dc;color:#e6e0d4;font:10px system-ui,sans-serif;padding:5px}.v31-evo-stats b{display:block;color:var(--v31-accent);font:700 17px Georgia,serif;margin-top:3px}
.v31-preview-tag{font:11px/1.45 system-ui,sans-serif;color:#d5e9d5;display:block;padding:4px}
.v31-evo-progress{position:absolute;z-index:19;bottom:calc(77px + env(safe-area-inset-bottom));left:12%;right:12%;display:flex;gap:6px;justify-content:center}
.v31-evo-progress i{flex:1;max-width:62px;height:2px;background:#ffffff29;transition:background .5s ease,box-shadow .5s ease;border-radius:2px}.v31-evo-progress i.lit{background:var(--v31-accent);box-shadow:0 0 12px var(--v31-accent)}
.v31-evo-actions{position:absolute;z-index:20;bottom:calc(15px + env(safe-area-inset-bottom));left:12px;right:12px;display:flex;justify-content:center;gap:7px;align-items:center;flex-wrap:wrap}
.v31-evo-actions button,.v31-evo-gallery-return{border-radius:13px;min-height:43px;padding:10px 13px;border:1px solid color-mix(in srgb,var(--v31-accent) 48%,transparent);background:#141b30e8;color:#fff3df;font:700 12px system-ui,sans-serif;letter-spacing:.01em}
.v31-evo-actions .v31-evo-exit{background:linear-gradient(110deg,#ffe4ab,#cdb98a);border-color:#f8d6a0;color:#191725}
.v31-evo-actions .v31-evo-exit,.v31-evo-actions .v31-evo-gallery,.v31-evo-actions .v31-evo-replay{display:none}
/* Phase choreography: light and the character react to beats in the soundtrack */
.v31-evo-veil[data-phase="fracture"] .v31-evo-before{transform:scale(.92) rotate(-.6deg);filter:brightness(.8) contrast(1.1) drop-shadow(0 0 45px var(--v31-accent))!important}
.v31-evo-veil[data-phase="fracture"] .v31-evo-energy-ring{box-shadow:0 0 55px var(--v31-rune),inset 0 0 55px var(--v31-rune)}
.v31-evo-veil[data-phase="shatter"] .v31-evo-before{opacity:.25;transform:scale(1.04) rotate(1.5deg);filter:brightness(2) saturate(0) contrast(1.65)!important}
.v31-evo-veil[data-phase="shatter"] .v31-evo-strobe{animation:v31-burst 1.55s ease-out both}.v31-evo-veil[data-phase="shatter"] .v31-evo-impact{animation:v31-crack 1.1s ease-out both}
.v31-evo-veil[data-phase="shatter"] .v31-evo-column{animation:v31-column 1.7s ease-out both}
.v31-evo-veil[data-phase="morph"] .v31-evo-before,.v31-evo-veil[data-phase="complete"] .v31-evo-before{opacity:0!important;transform:scale(1.20);filter:brightness(3)!important}
.v31-evo-veil[data-phase="morph"] .v31-evo-after{opacity:1!important;transform:scale(.94)!important;filter:brightness(.27) contrast(1.2) drop-shadow(0 0 40px var(--v31-accent))!important}
.v31-evo-veil[data-phase="morph"] .v31-evo-column{opacity:.5;transform:scaleX(1.8)}
.v31-evo-veil[data-phase="complete"] .v31-evo-after{opacity:1!important;transform:scale(1)!important;filter:brightness(1.03) contrast(1.08) drop-shadow(0 0 24px var(--v31-rune))!important}
.v31-evo-veil[data-phase="complete"] .v31-evo-strobe{animation:v31-flare .95s ease-out both}
.v31-evo-veil[data-phase="complete"] .v31-evo-energy-ring{opacity:.72}
.v31-evo-veil[data-phase="complete"] .v31-evo-narrative>[data-v20-evo-live],.v31-evo-veil[data-phase="complete"] .v31-evo-narrative>small{display:none}
.v31-evo-veil[data-phase="complete"] .v31-evo-result{display:block;animation:v31-text .8s cubic-bezier(.1,.7,.1,1) both}
.v31-evo-veil[data-phase="complete"] .v31-evo-actions .v31-evo-skip{display:none}
.v31-evo-veil[data-phase="complete"] .v31-evo-actions .v31-evo-exit,.v31-evo-veil[data-phase="complete"] .v31-evo-actions .v31-evo-gallery,.v31-evo-veil[data-phase="complete"] .v31-evo-actions .v31-evo-replay{display:block}
.v31-evo-gallery-return{display:none;position:absolute;bottom:calc(13px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:30;white-space:nowrap}
.v31-evo-veil.v22-gallery .v31-evo-narrative,.v31-evo-veil.v22-gallery .v31-evo-progress,.v31-evo-veil.v22-gallery .v31-evo-actions{display:none}
.v31-evo-veil.v22-gallery .v31-evo-main{top:15%;bottom:9%}.v31-evo-veil.v22-gallery .v31-evo-gallery-return{display:block}
@media(max-height:740px){.v31-evo-main{top:15%;bottom:27%}.v31-evo-narrative{bottom:calc(76px + env(safe-area-inset-bottom));padding-top:12px}.v31-evo-progress{bottom:calc(67px + env(safe-area-inset-bottom))}.v31-evo-head{top:calc(8px + env(safe-area-inset-top))}.v31-evo-actions{bottom:calc(9px + env(safe-area-inset-bottom))}.v31-evo-actions button{min-height:38px;padding:7px 10px}}
@media(max-width:370px){.v31-evo-actions button{font-size:11px;padding:9px 8px}.v31-evo-result h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){.v31-evo-veil *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@keyframes v31-drift{to{transform:scale(1.1) translateY(-2%);opacity:.48}}
@keyframes v31-iris{to{transform:rotate(360deg)}}
@keyframes v31-orbit{to{transform:translate(-50%,-50%) rotate(360deg)}}
@keyframes v31-pulse{to{transform:scale(1.08);opacity:.92}}
@keyframes v31-crack{0%{opacity:0;transform:scale(.3) rotate(-11deg)}16%{opacity:1}100%{opacity:0;transform:scale(3) rotate(8deg)}}
@keyframes v31-column{0%{opacity:0;transform:scaleX(.1)}28%{opacity:.92;transform:scaleX(3)}100%{opacity:0;transform:scaleX(6)}}
@keyframes v31-burst{0%{opacity:0}18%{opacity:.96}36%{opacity:.08}44%{opacity:.7}100%{opacity:0}}
@keyframes v31-flare{0%{opacity:.82}100%{opacity:0}}
@keyframes v31-text{from{opacity:0;transform:translateY(22px) scale(.9)}to{opacity:1;transform:none}}
