/* v3.7 entry gate. Original, procedural arrow UI. No raster mockup or blur. */
body.entry-pending{background:#ffe797}
body.entry-pending #home,body.entry-pending .backdrop,body.entry-pending .skip,body.entry-pending #resume-room,body.entry-pending #toast{visibility:hidden}
body.entry-revealing #home,body.entry-revealing .backdrop{visibility:visible}
.prepage{position:fixed;inset:0;z-index:5000;isolation:isolate;overflow:hidden;background:#ffdd50;contain:layout paint}
.entry-party{position:absolute;inset:0;background:conic-gradient(from -24deg at 50% 50%,#ffefa3 0deg 58deg,#c3f391 58deg 105deg,#9ce7f1 105deg 157deg,#ddc0ff 157deg 204deg,#ffbddd 204deg 262deg,#98e5f4 262deg 310deg,#ffeaa3 310deg 360deg)}
.entry-party:after{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,#29165717 1.5px,transparent 1.5px);background-size:18px 18px;pointer-events:none}
.entry-arrows{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.entry-arrow{transform-box:view-box;animation:entry-nudge var(--period,7s) ease-in-out infinite;animation-delay:var(--delay,0s)}
.entry-arrow.spin{animation-name:entry-turn}.entry-arrow.loop{animation-name:entry-orbit}.entry-arrow.draw .arrow-color{stroke-dasharray:var(--length,600);animation:entry-trace var(--period,7s) ease-in-out infinite;animation-delay:var(--delay,0s)}
@keyframes entry-nudge{0%,40%,100%{translate:0 0}58%,70%{translate:var(--nudge-x,0) var(--nudge-y,8px)}85%{translate:0 0}}
@keyframes entry-turn{0%,66%,100%{rotate:0deg}89%{rotate:360deg}}
@keyframes entry-orbit{0%,55%,100%{translate:0 0;rotate:0deg}66%{translate:9px -11px;rotate:6deg}75%{translate:-7px -14px;rotate:-4deg}85%{translate:-8px 7px;rotate:0deg}}
@keyframes entry-trace{0%,12%{stroke-dashoffset:var(--length,600)}42%,100%{stroke-dashoffset:0}}
.entry-center{position:absolute;left:50%;top:50%;width:min(880px,calc(100% - 48px));transform:translate(-50%,-50%);transform-origin:center;z-index:5}
.entry-button{position:relative;display:block;width:100%;min-height:152px;padding:35px 32px;border:6px solid #311651;border-radius:34px;background:#ffdd50;color:#301350;font-family:var(--display,'Trebuchet MS',sans-serif);font-size:clamp(26px,4.3vw,62px);font-weight:700;letter-spacing:-1.5px;line-height:1.13;text-align:center;box-shadow:0 12px 0 #311651,0 0 0 8px #fff8d5;transform:none;cursor:pointer;touch-action:manipulation;transition:translate .15s,box-shadow .15s}
.entry-button:hover:not(:disabled){filter:none;translate:0 -3px;box-shadow:0 15px 0 #311651,0 0 0 8px #fff8d5}
.entry-button:focus-visible{outline:5px dashed #311651;outline-offset:16px;filter:none}
.entry-button:active:not(:disabled){translate:0 6px;box-shadow:0 6px 0 #311651,0 0 0 8px #fff8d5}
.entry-button:disabled{opacity:1;cursor:default}
.entry-button span{display:block;position:relative;text-shadow:0 2px #fff7bd;pointer-events:none}
.prepage[data-stage=zooming] .entry-center{will-change:transform}
.prepage[data-stage=zooming] .entry-button{translate:0 0;box-shadow:0 0 0 8px #fff8d5}
.entry-cover{position:absolute;inset:0;background:#ffdd50;z-index:6;pointer-events:none}
@media(max-width:600px){.entry-center{width:calc(100% - 42px)}.entry-button{padding:27px 19px;min-height:142px;border-width:4px;border-radius:24px;font-size:clamp(29px,6.4vw,38px);letter-spacing:-.8px;box-shadow:0 9px #311651,0 0 0 6px #fff8d5}.entry-party:after{background-size:14px 14px}.entry-button:focus-visible{outline-offset:12px}}
@media(max-height:420px){.entry-center{width:min(760px,calc(100% - 86px))}.entry-button{min-height:98px;font-size:clamp(26px,4.5vw,44px);padding:22px 25px}}
@media(prefers-reduced-motion:reduce){.entry-arrow,.entry-arrow *{animation:none!important}.entry-button{transition:none}}
