.academy-entry{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--entry-color);overflow:hidden;pointer-events:auto}
.academy-entry::backdrop{background:transparent}
.academy-entry-veil{position:absolute;inset:0;opacity:0;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--entry-color) 22%,#17142c),#100d22 78%)}
.academy-entry-gate{position:absolute;max-width:none!important;transform-origin:50% 43%;pointer-events:none;will-change:transform,opacity}
.academy-entry-gate svg{width:100%;height:100%;overflow:visible}.academy-entry-gate .portal-selected-arch{display:none}
.academy-entry-status{position:absolute;left:15%;right:15%;bottom:10%;margin:0;color:#f6efd9;text-align:center;font:600 16px Georgia;text-shadow:0 2px 4px #100c20;animation:entry-caption .5s ease-out both}
.academy-entry-effects{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.academy-entry-effects i{position:absolute;left:calc(50% + (var(--n) - 7)*6%);top:calc(18% + mod(var(--n),5)*14%);width:6px;height:6px;background:var(--entry-color);border-radius:50%;animation:entry-ember 1.2s ease-out infinite;animation-delay:calc(var(--n)*-.12s);opacity:0}
.academy-entry[data-school=fire] .academy-entry-effects i{width:6px;height:16px;border-radius:80% 0 70% 20%;background:#ffd08a}
.academy-entry[data-school=water] .academy-entry-effects i{width:calc(12px + mod(var(--n),3)*18px);height:calc(12px + mod(var(--n),3)*18px);border:1px solid #bdf5ff;background:#a5efff0a;animation-name:entry-bubble}
.academy-entry[data-school=earth] .academy-entry-effects i{width:18px;height:28px;border-radius:0;clip-path:polygon(45% 0,100% 38%,75% 100%,0 70%,10% 20%);background:linear-gradient(110deg,#f2dab4,#908397);animation-name:entry-shard;animation-duration:1.8s}
.academy-entry[data-school=wind] .academy-entry-effects i{width:140px;height:45px;background:none;border-top:2px solid #d0ffec;border-radius:50%;animation-name:entry-gust;animation-duration:1.3s}
@keyframes entry-ember{0%{transform:translateY(100px) scale(.4);opacity:0}30%{opacity:.8}100%{transform:translateY(-180px) scale(1.4);opacity:0}}
@keyframes entry-bubble{0%{transform:translateY(120px) scale(.3);opacity:0}40%{opacity:.7}100%{transform:translateY(-150px) scale(1.5);opacity:0}}
@keyframes entry-shard{0%{transform:translateY(80px) rotate(-20deg);opacity:0}35%{opacity:.8}100%{transform:translateY(-110px) rotate(35deg);opacity:0}}
@keyframes entry-gust{0%{transform:translateX(-220px) rotate(-20deg);opacity:0}35%{opacity:.6}100%{transform:translateX(300px) rotate(15deg);opacity:0}}
@keyframes entry-caption{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.academy-entry *{animation:none!important}.academy-entry-effects{display:none}}
html[data-motion=gentle] .academy-entry *{animation:none!important}html[data-motion=gentle] .academy-entry-effects{display:none}
@media(max-height:450px){.academy-entry-status{bottom:8%;font-size:13px}}

/* A single bright crescendo, never a strobe; small composited surfaces do the motion. */
.academy-entry-burst{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.academy-entry-burst i{position:absolute;left:50%;top:45%;width:min(62vw,520px);aspect-ratio:1;border:3px solid var(--entry-color);border-radius:50%;box-shadow:0 0 24px color-mix(in srgb,var(--entry-color) 50%,transparent),inset 0 0 20px color-mix(in srgb,var(--entry-color) 25%,transparent);animation:entry-rune-burst 2.1s cubic-bezier(.3,0,.2,1) both}
.academy-entry-burst i:nth-child(2){border:7px double var(--entry-color);animation-delay:.22s;opacity:0}
.academy-entry-burst i:before{content:'✧';position:absolute;inset:-18px;text-align:center;color:#fff2cf;font:32px Georgia;transform:rotate(35deg)}
.academy-entry-burst b{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 45%,color-mix(in srgb,var(--entry-color) 85%,white),color-mix(in srgb,var(--entry-color) 35%,transparent) 35%,transparent 72%);animation:entry-crescendo 2.1s ease-in-out both;opacity:0}
.academy-entry-effects i{left:calc(50% + (var(--n) - 11)*5%);box-shadow:0 0 12px var(--entry-color)}
.academy-entry[data-school=fire] .academy-entry-effects i{width:10px;height:34px;background:linear-gradient(#fff2b3,#ff9859 55%,#e95639);animation-duration:1.45s}
.academy-entry[data-school=water] .academy-entry-effects i{border-width:2px;box-shadow:inset 0 0 10px #d8ffff44,0 0 12px #9decff55;background:#9decff14}
.academy-entry[data-school=earth] .academy-entry-effects i{width:28px;height:44px;background:linear-gradient(115deg,#fff3cc 0 38%,#c9a7ed 39% 66%,#776088 67%);box-shadow:none}
.academy-entry[data-school=wind] .academy-entry-effects i{width:220px;height:70px;border-top-width:3px;box-shadow:none}
.academy-entry[data-school=earth] .academy-entry-burst i{border-radius:18%;border-width:4px}
.academy-entry[data-school=fire] .academy-entry-burst i{border-style:dashed}
.academy-entry[data-school=wind] .academy-entry-burst i{border-left-color:transparent;border-right-color:transparent}
@keyframes entry-rune-burst{0%,10%{transform:translate(-50%,-50%) scale(.08) rotate(-35deg);opacity:0}35%{opacity:.6}75%{opacity:.85}100%{transform:translate(-50%,-50%) scale(2.5) rotate(50deg);opacity:0}}
@keyframes entry-crescendo{0%,40%{opacity:0}78%{opacity:.65}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.academy-entry-burst{display:none}}html[data-motion=gentle] .academy-entry-burst{display:none}

/* Verdant follows the shared zoom-through gate with a botanical crescendo. */
.academy-entry-gate>img{display:block;width:100%;height:100%;object-fit:contain}
.academy-entry[data-school=verdant] .academy-entry-veil{background:radial-gradient(ellipse at center,#4b844a,#112f28 65%,#100d22)}
.academy-entry[data-school=verdant] .academy-entry-effects i{width:18px;height:29px;border-radius:85% 10% 75% 15%;background:linear-gradient(135deg,#f3dea4,#bca358 45%,#6a4928);box-shadow:0 0 10px #83d96644;animation:entry-verdant-leaf 1.9s ease-in-out infinite;animation-delay:calc(var(--n)*-.13s)}
.academy-entry[data-school=verdant] .academy-entry-effects i::after{content:'';position:absolute;left:49%;top:16%;width:1px;height:68%;background:#f5e5ba;transform:rotate(20deg)}
.academy-entry[data-school=verdant] .academy-entry-effects i:nth-child(3n){width:21px;height:25px;border-radius:80% 25% 70% 40%;background:linear-gradient(135deg,#ffc1a6,#f14866 45%,#ae1d44);box-shadow:0 0 9px #ff68804d;animation-name:entry-verdant-petal}
.academy-entry[data-school=verdant] .academy-entry-effects i:nth-child(3n)::after{display:none}
.academy-entry[data-school=verdant] .academy-entry-burst i{border-color:#d2bb77;border-width:5px;border-radius:45% 55% 47% 53%;box-shadow:0 0 24px #8ada7955,inset 0 0 20px #83d96633}
.academy-entry[data-school=verdant] .academy-entry-burst i:nth-child(2){border-color:#ed8295;border-width:3px;border-style:dashed;border-radius:55% 45% 53% 47%}
.academy-entry[data-school=verdant] .academy-entry-burst i::before{content:'';inset:-12px;border:2px solid #ebd8a677;border-radius:47% 53% 44% 56%}
@keyframes entry-verdant-leaf{0%{transform:translate(-100px,110px) rotate(-85deg) scale(.45);opacity:0}25%{opacity:.9}65%{transform:translate(55px,-30px) rotate(65deg) scale(1.2);opacity:.85}100%{transform:translate(140px,-180px) rotate(190deg) scale(.7);opacity:0}}
@keyframes entry-verdant-petal{0%{transform:translate(100px,-100px) rotate(25deg) scale(.5);opacity:0}25%{opacity:.95}65%{transform:translate(-45px,25px) rotate(-90deg) scale(1.1);opacity:.9}100%{transform:translate(-140px,170px) rotate(-210deg) scale(.7);opacity:0}}
@media(max-height:450px){.academy-entry[data-school=verdant] .academy-entry-effects i{width:12px;height:19px}.academy-entry[data-school=verdant] .academy-entry-effects i:nth-child(3n){width:14px;height:17px}}

.academy-app[aria-busy=true] *{animation-play-state:paused!important}.academy-entry[data-school=verdant] .academy-entry-gate{contain:layout style;filter:none}.academy-entry[data-school=verdant] .academy-entry-effects i{box-shadow:none}.academy-entry[data-school=verdant] .academy-entry-burst i{box-shadow:none}
