/* Local entrance artwork. Timings describe the animation, never school synchronization. */
.intro-dialog{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#081735;color:#fff;overflow:hidden;isolation:isolate;outline:0;color-scheme:dark;opacity:1;transition:opacity .48s ease,filter .48s ease}
.intro-dialog:not([open]){display:none}.intro-dialog::backdrop{background:transparent}
body.intro-active{overflow:hidden}
.intro-scene{position:absolute;left:50%;top:50%;width:max(100vw,100dvh);height:max(100vw,100dvh);transform:translate(-50%,-50%);transform-origin:50.5% 55%;will-change:transform;overflow:visible}
.intro-background{display:block;width:100%;height:100%;object-fit:cover;opacity:0;filter:brightness(.8) saturate(1.04)}
.intro-scene-shade{position:absolute;inset:0;background:linear-gradient(125deg,transparent 40%,#06254e14 70%,#08173338)}
.intro-emblem{position:absolute;left:50.5%;top:55%;width:var(--badge-size,260px);height:var(--badge-size,260px);transform:translate(-50%,-50%);isolation:isolate}
.intro-badge{position:relative;display:block;width:100%;height:100%;object-fit:contain;opacity:0;filter:drop-shadow(0 0 6px #dcfbff) drop-shadow(0 8px 28px #08214965);z-index:3;will-change:transform,opacity}
.intro-aura{position:absolute;inset:-26%;border-radius:50%;background:radial-gradient(circle,#f4fcff55 0,#5af0ff38 35%,#1ae8fa18 58%,transparent 70%);opacity:0;z-index:0}
.intro-orbit{position:absolute;inset:-9%;border-radius:50%;opacity:0;z-index:2;box-shadow:0 0 15px #8cefff52,inset 0 0 8px #94f1ff3d}
.orbit-a{border:1px solid #e4fcffd9;border-left-color:transparent;border-bottom-color:#9af3ff60;transform:rotate(-25deg)}
.orbit-b{inset:-17%;border:1px dashed #c3faff66;border-right-color:transparent;border-top-color:transparent}
.intro-wave{position:absolute;inset:-2%;border:1px solid #dcfcffa6;border-radius:50%;opacity:0;z-index:0}
.intro-spark{position:absolute;width:5px;height:5px;background:#edffff;border-radius:50%;box-shadow:0 0 9px 3px #9ff8ff6e;opacity:0;z-index:4}.spark-a{left:-7%;top:35%}.spark-b{left:83%;top:-7%;width:3px;height:3px}.spark-c{right:-12%;bottom:28%}.spark-d{left:24%;bottom:-14%;width:3px;height:3px}
.intro-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#0517304d 0,transparent 25%,transparent 61%,#051530ac 100%),radial-gradient(ellipse at 50% 48%,transparent 28%,#05163320 75%,#05163352 100%);z-index:5}
.intro-top{position:absolute;inset:26px 34px auto;display:flex;align-items:center;justify-content:space-between;z-index:6;gap:15px}
.intro-top>span{font:10px/1.6 ui-monospace,monospace;letter-spacing:3.4px;text-shadow:0 2px 12px #051633}.intro-top i{font-style:normal;opacity:.5;margin:0 9px}
.intro-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.intro-sound{display:flex;align-items:center;justify-content:center;gap:7px;min-width:44px;min-height:44px;padding:9px;border:1px solid #e0fbff60;border-radius:30px;background:#09243c80;backdrop-filter:blur(8px);color:#fff;transition:background .15s}
.intro-sound svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.intro-sound .sound-cross{display:none}
.intro-sound[data-sound="muted"] .sound-waves,.intro-sound[data-sound="blocked"] .sound-waves,.intro-sound[data-sound="unavailable"] .sound-waves{display:none}.intro-sound[data-sound="muted"] .sound-cross,.intro-sound[data-sound="blocked"] .sound-cross,.intro-sound[data-sound="unavailable"] .sound-cross{display:block}
.intro-sound-label{font-size:11px;letter-spacing:1px;white-space:nowrap;padding-right:4px}.intro-sound-label[hidden]{display:none}.intro-sound:hover{background:#205369a0}.intro-sound:focus-visible{outline:2px solid #fff;outline-offset:4px}.intro-sound:disabled{opacity:.5;cursor:default}
.intro-controls{display:flex;align-items:center;border:1px solid #e0fbff60;border-radius:30px;background:#09243c80;backdrop-filter:blur(8px);padding:4px;color:#fff}
.intro-countdown{display:flex;align-items:baseline;justify-content:center;gap:3px;min-width:57px;padding:0 12px;font:600 17px/1 ui-monospace,monospace;font-variant-numeric:tabular-nums;color:#d2faff}.intro-countdown small{font:11px/1.2 "Microsoft YaHei UI",system-ui,sans-serif;color:#dcefffcc}
.intro-controls button{min-height:36px;border:0;border-left:1px solid #e0fbff40;border-radius:0 24px 24px 0;background:transparent;color:#fff;padding:7px 16px;font-size:12px;letter-spacing:1px;transition:background .15s}
.intro-controls button:hover{background:#4e82904a}.intro-controls button:focus-visible{outline:2px solid #fff;outline-offset:4px}
.intro-bottom{position:absolute;inset:auto 20px 40px;text-align:center;z-index:6;opacity:0;text-shadow:0 2px 18px #082945;pointer-events:none}
.intro-kicker{font:9px ui-monospace,monospace;letter-spacing:4px;color:#ddfaffc7}.intro-bottom h2{font:400 clamp(21px,2.3vw,32px)/1.6 "SimSun","Songti SC",serif;letter-spacing:5px;margin:12px 0 8px}.intro-bottom p{font-size:11px;letter-spacing:3px;margin:0;color:#e1f5ffde}.intro-bottom p span{margin:0 8px}.intro-rule{display:block;width:44px;height:1px;margin:21px auto 0;background:#d5f8ff85}
.intro-accessible{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.intro-dialog.is-playing .intro-scene{animation:intro-scene-arrive 6.4s cubic-bezier(.2,.65,.2,1) both}
.intro-dialog.is-playing .intro-background{animation:intro-background-arrive 1s ease both}
.intro-dialog.is-playing .intro-badge{animation:intro-badge-arrive 1.05s .35s cubic-bezier(.18,.75,.22,1) both}
.intro-dialog.is-playing .intro-aura{animation:intro-aura-arrive 1.4s .2s ease both}
.intro-dialog.is-playing .orbit-a{animation:intro-orbit-arrive 2.7s .25s ease-out both}
.intro-dialog.is-playing .orbit-b{animation:intro-orbit-outer 2.9s .35s ease-out both}
.intro-dialog.is-playing .wave-a{animation:intro-wave-out 1.7s .45s ease-out both}.intro-dialog.is-playing .wave-b{animation:intro-wave-out 1.9s .78s ease-out both}
.intro-dialog.is-playing .intro-spark{animation:intro-spark-arrive 2.2s .6s ease both}.intro-dialog.is-playing .spark-b{animation-delay:.8s}.intro-dialog.is-playing .spark-c{animation-delay:.9s}.intro-dialog.is-playing .spark-d{animation-delay:1.05s}
.intro-dialog.is-playing .intro-bottom{animation:intro-caption-arrive .8s .72s ease both}
.intro-dialog.is-paused *{animation-play-state:paused!important}
.intro-dialog.is-leaving{opacity:0;pointer-events:none;filter:blur(3px)}
.intro-dialog.is-still .intro-background,.intro-dialog.is-still .intro-badge,.intro-dialog.is-still .intro-aura,.intro-dialog.is-still .intro-orbit,.intro-dialog.is-still .intro-bottom{opacity:1}
.intro-dialog.is-still .intro-background{filter:brightness(.92) saturate(1.04)}
.header-tools{display:flex;align-items:center;gap:12px;margin-left:14px}.header-tools .appearance-trigger{margin-left:0}.intro-replay{border:0;background:transparent;border-radius:50%;padding:0;width:42px;height:42px;display:grid;place-items:center;flex-shrink:0}.intro-replay img{display:block;width:42px;height:42px;object-fit:contain;transition:transform .18s}.intro-replay:hover img{transform:rotate(-7deg) scale(1.06)}
.intro-setting-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:9px}.intro-setting-footer>small{font-size:11px;color:var(--muted);line-height:1.7}.intro-setting-footer .text-button{white-space:nowrap}
@keyframes intro-background-arrive{from{opacity:0;filter:brightness(.42) saturate(1.1)}to{opacity:1;filter:brightness(.92) saturate(1.04)}}
@keyframes intro-scene-arrive{from{transform:translate(-50%,-50%) scale(1.065)}to{transform:translate(-50%,-50%) scale(1)}}
@keyframes intro-badge-arrive{0%{opacity:0;transform:translateY(20px) scale(.64) rotate(-12deg)}70%{opacity:1;transform:translateY(0) scale(1.025) rotate(1deg)}100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@keyframes intro-aura-arrive{from{opacity:0;transform:scale(.55)}to{opacity:1;transform:scale(1)}}
@keyframes intro-orbit-arrive{0%{opacity:0;transform:scale(.55) rotate(-95deg)}35%{opacity:1}100%{opacity:.85;transform:scale(1) rotate(45deg)}}
@keyframes intro-orbit-outer{0%{opacity:0;transform:scale(.7) rotate(50deg)}35%{opacity:.75}100%{opacity:.7;transform:scale(1) rotate(-30deg)}}
@keyframes intro-wave-out{0%{opacity:0;transform:scale(.5)}20%{opacity:.6}100%{opacity:0;transform:scale(2.8)}}
@keyframes intro-spark-arrive{0%{opacity:0;transform:scale(.2)}40%{opacity:.85;transform:scale(1.2)}100%{opacity:.6;transform:scale(1)}}
@keyframes intro-caption-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.header-tools{gap:8px;margin-left:0}.intro-replay,.intro-replay img{width:36px;height:36px}}
@media(max-width:600px){.intro-top{inset:18px 18px auto}.intro-top>span{font-size:8px;letter-spacing:1.6px}.intro-top i{margin:0 4px}.intro-countdown{font-size:16px;min-width:49px;padding:0 9px}.intro-countdown small{font-size:10px}.intro-controls button{font-size:12px;padding:7px 13px;min-height:36px}.intro-bottom{bottom:max(35px,env(safe-area-inset-bottom))}.intro-kicker{font-size:8px;letter-spacing:2px}.intro-bottom h2{letter-spacing:3px}.intro-bottom p{font-size:10px;letter-spacing:2px}.intro-setting-footer{align-items:flex-start}.site-header{gap:10px}.header-tools{gap:6px}.intro-replay,.intro-replay img{width:32px;height:32px}}
@media(max-width:420px){.intro-top{gap:8px}.intro-top>span{font-size:7px;letter-spacing:1px}.intro-top>span i{margin:0 2px}.intro-actions{gap:6px}.intro-sound[data-sound="blocked"]{position:relative}.intro-sound[data-sound="blocked"] .intro-sound-label{position:absolute;top:calc(100% + 7px);right:0;padding:7px 10px;border:1px solid #e0fbff50;border-radius:20px;background:#09243ce6}.intro-bottom h2{font-size:21px;letter-spacing:2px}}
@media(max-height:500px){.intro-top{top:14px}.intro-bottom{bottom:17px}.intro-bottom h2{font-size:20px;margin:5px 0}.intro-kicker{display:none}.intro-rule{display:none}}
@media(prefers-reduced-motion:reduce){.intro-dialog,.intro-replay img{transition:none}.intro-dialog.is-playing *{animation:none!important}.intro-dialog.is-playing .intro-background,.intro-dialog.is-playing .intro-badge,.intro-dialog.is-playing .intro-aura,.intro-dialog.is-playing .intro-orbit,.intro-dialog.is-playing .intro-bottom{opacity:1}.intro-dialog.is-leaving{filter:none}.intro-replay:hover img{transform:none}}
