/* 隐藏入口：暗号门 + CRT 开机动画（旧小游戏房间的样式已随房间一起移除） */
/* Kevin's hidden after-hours arcade. */
html.arcade-open,html.arcade-open body{overflow:hidden!important}
html.arcade-open.has-cursor *,html.arcade-open.has-cursor{cursor:auto!important}
html.arcade-open .cursor-dot,html.arcade-open .cursor-ring{display:none!important}
.logo{-webkit-touch-callout:none;user-select:none}
.arcade-dialog{--paper:#f7efd9;--purple:#653bb3;--orange:#ed5b35;--dark:#30283e;color:var(--dark);background:var(--paper);border:0;padding:0;max-width:none;max-height:none;font-family:'Space Grotesk','Noto Sans SC',sans-serif}
.arcade-dialog::backdrop{background:radial-gradient(ellipse at 50% 42%,rgba(24,17,38,.8),rgba(12,8,20,.94))}
.arcade-dialog button{font:inherit;color:inherit;cursor:pointer!important}
.arcade-dialog button:focus-visible,.arcade-dialog input:focus-visible{outline:3px solid var(--purple);outline-offset:4px}
.arcade-dialog button:disabled{cursor:default!important}
#arcade-gate{width:min(420px,calc(100% - 32px));margin:auto;padding:32px;border:3px solid var(--dark);box-shadow:8px 8px 0 var(--orange)}
#arcade-gate.is-accepted{animation:gatePress .19s ease-in both}
@keyframes gatePress{to{transform:translate(5px,5px);box-shadow:0 0 0 var(--orange);opacity:.55}}
.ag-top{display:flex;justify-content:space-between;align-items:center;font:12px var(--mono);letter-spacing:.1em;margin-bottom:22px}
#arcade-gate h2{font-size:32px;margin-bottom:12px}
#arcade-gate label{display:block;font-size:14px;margin:18px 0 10px}
#arcade-code{width:100%;padding:13px;background:#fffaf0;border:2px solid var(--dark);font:18px var(--mono);color:var(--dark)}
#arcade-gate .ag-error{min-height:28px;padding-top:7px;font-size:12px;color:#a12c20}
.ag-enter{width:100%;padding:13px;background:var(--purple)!important;color:white!important;border:2px solid var(--dark)!important}
@media(prefers-reduced-motion:reduce){.arcade-dialog *{transition:none!important;animation:none!important}}
#arcade-boot{position:fixed;inset:0;margin:0;width:100%;height:100dvh;max-width:none;max-height:none;border:0;background:#070806;padding:0;font-family:'Space Grotesk','Microsoft YaHei',sans-serif;text-align:center;overflow:hidden}
#arcade-boot::backdrop{background:#070806}
.boot-crt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform:scaleY(.0035);opacity:0;background:radial-gradient(ellipse at 50% 46%,#2b351b 0%,#11150b 58%,#0a0d06 100%)}
#arcade-boot.is-on .boot-crt{transform:scaleY(1);opacity:1;animation:crtOn .5s cubic-bezier(.23,1,.32,1) both,crtFlicker .32s .5s linear 2}
.boot-inner{display:flex;flex-direction:column;align-items:center;opacity:0}
#arcade-boot.is-on .boot-inner{animation:bootContent .34s .3s both}
.boot-warm{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,rgba(209,238,131,.045),transparent 55%)}
.boot-lines{position:absolute;top:max(26px,env(safe-area-inset-top));left:30px;text-align:left;font:11px/2.1 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.12em;color:#9db86a;text-shadow:0 0 8px rgba(209,238,131,.3)}
.boot-lines span{display:block}
.boot-title{font-size:clamp(24px,4.6vw,40px);letter-spacing:.14em;font-weight:500;color:#d1ee83;margin:0 0 16px;min-height:1.3em;text-shadow:0 0 12px rgba(209,238,131,.28)}
.boot-sub{font:10px 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.3em;color:#8ba463;margin:0 0 42px}
.boot-bar{width:min(300px,62vw);height:10px;border:1px solid #d1ee8340;padding:2px;background:rgba(13,16,10,.5)}
.boot-bar i{display:block;height:100%;background:repeating-linear-gradient(90deg,#d1ee83 0 6px,transparent 6px 8px);transform:scaleX(0);transform-origin:left;transition:transform .12s steps(3)}
.boot-pct{font:10px 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.2em;color:#9db86a;margin-top:12px}
.boot-grant{margin:34px 0 0;font:700 13px 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.18em;color:#0d100c;background:#d1ee83;padding:9px 20px;transform:rotate(-4deg) scale(1.7);opacity:0;box-shadow:0 0 34px rgba(209,238,131,.5)}
#arcade-boot.is-grant .boot-grant{animation:stampIn .3s cubic-bezier(.2,1.75,.35,1) both}
/* 交接：票面黄绿色铺满屏幕，房间从同色落地，没有黑屏断层 */
#arcade-boot.is-xfer .boot-crt{transform:scaleY(1);opacity:1}
#arcade-boot.is-xfer .boot-inner>:not(.boot-grant),#arcade-boot.is-xfer .boot-lines,#arcade-boot.is-xfer .boot-scan,#arcade-boot.is-xfer .boot-vignette,#arcade-boot.is-xfer .boot-warm{transition:opacity .16s ease;opacity:0}
#arcade-boot.is-xfer .boot-grant{animation:grantExpand .42s cubic-bezier(.55,0,.85,.4) both}
.boot-inner small{font:9px 'JetBrains Mono',ui-monospace,monospace;letter-spacing:.17em;color:#78866a;margin-top:26px}
.boot-scan{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.24) 0 1px,transparent 1px 3px)}
.boot-scan::after{content:'';position:absolute;left:0;right:0;height:130px;background:linear-gradient(180deg,transparent,rgba(209,238,131,.055),transparent);animation:scanDrift 4.6s linear infinite}
.boot-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 52%,rgba(0,0,0,.58) 100%)}
@keyframes crtOn{0%{transform:scaleY(.0035);opacity:1;filter:brightness(4)}45%{transform:scaleY(.0035);filter:brightness(2.6)}72%{transform:scaleY(1.015);filter:brightness(1.5)}100%{transform:scaleY(1);opacity:1;filter:brightness(1)}}
@keyframes crtFlicker{0%,100%{opacity:1}30%{opacity:.82}55%{opacity:.95}78%{opacity:.88}}
@keyframes bootContent{from{opacity:0}to{opacity:1}}
@keyframes stampIn{0%{opacity:0;transform:rotate(-4deg) scale(1.7)}62%{opacity:1;transform:rotate(-4deg) scale(.96)}100%{opacity:1;transform:rotate(-4deg) scale(1)}}
@keyframes grantExpand{0%{transform:rotate(-4deg) scale(1);opacity:1}18%{transform:rotate(0deg) scale(1.05);opacity:1}40%{color:transparent;box-shadow:none;opacity:1}100%{transform:rotate(0deg) scale(60);color:transparent;box-shadow:none;opacity:1}}
@keyframes scanDrift{from{transform:translateY(-140px)}to{transform:translateY(110vh)}}
@media(prefers-reduced-motion:reduce){#arcade-boot .boot-crt,#arcade-boot .boot-inner{animation:none!important;transform:none;opacity:1}#arcade-boot *,#arcade-boot *::before,#arcade-boot *::after{animation:none!important}#arcade-room.ar-enter,#arcade-room.ar-enter .ar-shell>*{animation:none!important}}
/* 房间打开时，暂停身后主页的装饰动画 */
html.arcade-open .mq-track,html.arcade-open .orb,html.arcade-open .fx-scan,html.arcade-open .fx-grid,html.arcade-open .sb-dot{animation-play-state:paused!important}
.logo.is-holding{outline:2px solid #e3c188;outline-offset:7px;border-radius:3px}
@media(prefers-reduced-motion:no-preference){.logo.is-holding{animation:secret-hold .7s ease-out both}@keyframes secret-hold{from{outline-color:transparent}to{outline-color:#e3c188}}}
/* 进街机的交接：主页瞬间换成街机夜色，再跳转 */
html.to-play{background:#16111e}
html.to-play body{visibility:hidden}
