:root{color-scheme:light;--purple:#7547b7;--bg-x:50%}
*{box-sizing:border-box;margin:0}
html,body{width:100%;min-height:100%;background:#382651}
body{font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;-webkit-tap-highlight-color:transparent}
.background{position:fixed;inset:0;overflow:hidden;pointer-events:none}
.background-image{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--bg-x) center;transform:scale(1.025)}
.purple-filter{position:absolute;inset:0;background:linear-gradient(rgba(18,12,29,.10),rgba(18,12,29,.10)),linear-gradient(180deg,rgba(99,61,151,.14),rgba(74,37,119,.21));box-shadow:inset 0 0 160px rgba(26,12,51,.12)}
.welcome-link{position:fixed;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;padding:32px 20px 60px;color:#fff;text-decoration:none;cursor:pointer;outline:none}
.welcome-link:focus-visible{box-shadow:inset 0 0 0 4px #d4b8ff}
.welcome-content{display:flex;flex-direction:column;align-items:center;width:100%;text-align:center;user-select:none;text-shadow:0 2px 6px rgba(28,12,52,.55),0 5px 26px rgba(28,12,52,.35)}
.welcome-content{transition:opacity .65s ease .15s,transform .65s ease .15s}
.js body:not(.ready) .welcome-content{opacity:0;transform:translateY(10px)}
.intro-screen{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;padding:24px 16px 56px;background:#f8f4ff;color:#352052;text-align:center;text-shadow:none;transition:opacity .6s,visibility 0s .6s;z-index:1}
html:not(.js) .intro-screen{display:none}.ready .intro-screen{opacity:0;visibility:hidden;pointer-events:none}
.intro-badge{position:relative;width:min(64vw,44svh,340px);aspect-ratio:1;animation:intro-pop .7s cubic-bezier(.34,1.56,.64,1) both}
.intro-badge::before{content:"";position:absolute;inset:4%;border-radius:50%;background:#fff}
.intro-badge img{display:block;position:absolute;object-fit:fill}
.intro-ring{inset:0;width:100%;height:100%;z-index:2;clip-path:circle(47.5% at 50% 50%);animation:spin 4s linear infinite}
.intro-core{left:12.76%;top:12.18%;width:74.5%;height:75.7%;z-index:1}
.progress{position:absolute;inset:-5.5%;width:111%;height:111%;transform:rotate(-90deg);overflow:visible}
.progress circle{fill:none;stroke-width:1.1;stroke-linecap:round}.track{stroke:rgba(139,90,209,.22)}.bar{stroke:#8b5ad1;stroke-dasharray:100;stroke-dashoffset:100;animation:fill var(--intro-delay,2600ms) linear forwards}
.intro-copy{display:flex;flex-direction:column;align-items:center;gap:10px}.intro-copy h2{font-size:clamp(26px,7vw,40px);font-weight:800;letter-spacing:.12em;padding-left:.12em}.intro-copy p{font-size:clamp(14px,4vw,17px);line-height:1.7}.intro-copy small{font-size:13px;color:#867199}
.dots i{display:inline-block;width:.3em;height:.3em;margin-left:.18em;border-radius:50%;background:currentColor;vertical-align:middle;animation:dot 1s ease-in-out infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
.paused .intro-ring,.paused .bar,.paused .dots i,.ready .intro-ring{animation-play-state:paused}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes fill{to{stroke-dashoffset:0}}@keyframes intro-pop{from{transform:scale(.55) rotate(-25deg);opacity:0}}@keyframes dot{0%,100%{opacity:.25}40%{opacity:1;transform:translateY(-.25em)}}
@media(prefers-color-scheme:dark){.intro-screen{background:#15101e;color:#f2eafa}.intro-copy small{color:#ad96c6}}
.welcome{font-size:clamp(28px,3.3vw,46px);font-weight:600;letter-spacing:.20em;padding-left:.20em;line-height:1.4}
.emblem{position:relative;width:clamp(100px,15vmin,142px);aspect-ratio:1;margin:22px 0 24px;filter:drop-shadow(0 6px 20px rgba(33,13,67,.24))}
.emblem img{display:block;width:100%;height:100%;object-fit:fill;clip-path:circle(47.5% at 50% 50%)}
h1{font-size:clamp(34px,5.2vw,68px);font-weight:800;letter-spacing:.13em;padding-left:.13em;line-height:1.35}
.subtitle{margin-top:16px;font-size:clamp(13px,1.45vw,19px);line-height:1.8;letter-spacing:.04em;max-width:94vw;text-wrap:balance;font-weight:500}
.about-btn{position:fixed;z-index:2;right:max(16px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));padding:8px 17px;border:1px solid rgba(255,255,255,.25);border-radius:999px;background:rgba(48,25,77,.35);backdrop-filter:blur(8px);color:#fff;font:inherit;font-size:13px;cursor:pointer;transition:background .2s}
.about-btn:hover,.about-btn:focus-visible{background:rgba(100,60,154,.8)}
.about{width:min(380px,calc(100vw - 32px));margin:auto;padding:0;border:0;border-radius:16px;background:#fbf8ff;color:#352052;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.about::backdrop{background:rgba(25,13,42,.42);backdrop-filter:blur(4px)}
.about-body{padding:24px 24px 20px}.about h2{font-size:19px;margin-bottom:14px}.about p{font-size:14px;line-height:1.8}.about p+p{margin-top:10px}.about form{margin-top:20px;text-align:right}
.about form button{padding:9px 19px;border:0;border-radius:999px;background:var(--purple);color:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
@media(max-width:480px){.welcome-link{padding:24px 16px 60px}.welcome{font-size:29px}.emblem{width:112px;margin:20px 0}h1{font-size:36px;letter-spacing:.08em;padding-left:.08em}.subtitle{max-width:340px;font-size:13px;margin-top:14px}}
@media(max-height:540px){.welcome-link{padding:16px 16px 32px}.welcome{font-size:24px}.emblem{width:90px;margin:10px 0}h1{font-size:34px}.subtitle{font-size:12px;margin-top:6px}}
@media(prefers-reduced-motion:reduce){.background-image{transform:none}.about-btn{transition:none}}
@media(prefers-reduced-motion:reduce){.intro-ring,.intro-badge,.dots i{animation:none}.intro-screen,.welcome-content{transition:none}}

