:root{color-scheme:dark;--navy:#041139;--cyan:#39eff4;--ink:#092556;--muted:#9bb6dc;--line:rgba(133,187,250,.35);font-family:"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #42faff;outline-offset:3px}input:focus,textarea:focus{outline:2px solid var(--cyan);outline-offset:2px}[hidden]{display:none!important}.invitation{background:#01091c;color:#fff;overflow:hidden}#loading{padding:30vh 2rem;text-align:center;color:var(--muted)}.pages{height:100vh;height:100svh;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior-y:contain;scrollbar-width:none;width:min(100%,560px);margin:auto;background:var(--navy)}.pages::-webkit-scrollbar{display:none}.page{position:relative;min-height:100vh;min-height:100svh;scroll-snap-align:start;scroll-snap-stop:always}.poster{height:100vh;height:100svh;display:flex;align-items:center;justify-content:center;background:#02103a}.poster img{width:100%;height:100%;object-fit:contain;display:block}.float-tools{position:fixed;top:max(16px,env(safe-area-inset-top));right:max(14px,calc((100vw - 560px)/2 + 14px));z-index:8;display:grid;justify-items:center;gap:10px}.music-disc{height:40px;width:40px;display:grid;place-items:center;color:white;border:1px solid #83b0e6;border-radius:50%;background:repeating-radial-gradient(#0a1b44 0 3px,#21365b 4px 5px);font-size:22px;animation:spin 6s linear infinite;animation-play-state:paused;box-shadow:0 2px 16px #0006}.music-disc.playing{animation-play-state:running;border-color:var(--cyan)}@keyframes spin{to{transform:rotate(360deg)}}.share-button{border:1px solid #99bee34d;border-radius:20px;background:#021032a8;padding:7px 10px;color:#e4faff;font-size:12px}.page-dots{position:fixed;right:max(6px,calc((100vw - 560px)/2 + 5px));top:45%;display:grid;gap:7px;z-index:6}.page-dots button{width:16px;height:16px;padding:4px;border:0;background:none}.page-dots button:after{content:"";display:block;background:#91a2c06b;width:5px;height:5px;border-radius:50%;margin:auto}.page-dots button.active:after{background:var(--cyan);box-shadow:0 0 8px var(--cyan);height:12px}.jump-register{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));right:max(16px,calc((100vw - 560px)/2 + 16px));z-index:6;border:1px solid #53def875;background:#061336d9;color:#bffcff;border-radius:25px;padding:10px 15px;font-size:14px;box-shadow:0 4px 24px #0003}.jump-register span{margin-left:8px}.registration{background:radial-gradient(ellipse at -10% 5%,#0a65c4 0,transparent 50%),linear-gradient(150deg,#041a4c,#061337 70%);padding:40px 30px max(40px,env(safe-area-inset-bottom));min-height:100svh}.reg-brand{letter-spacing:2px;font-size:14px;color:#d3e9ff;margin:0 0 46px}.registration h1{font-size:clamp(34px,8.7vw,53px);letter-spacing:3px;line-height:1.15;margin:0 0 13px}.eyebrow{color:#b7d7ff;font-size:12px;letter-spacing:3px;font-weight:400}.rule-line{height:3px;width:36px;background:var(--cyan);margin:24px 0}.intro{font-size:16px;line-height:1.8;color:#ccdcf3;margin:0 0 22px}label.field{display:block;margin:0 0 19px}.field>span{display:block;font-size:16px;letter-spacing:1px;font-weight:600;margin-bottom:10px}.required{color:#ff6259;margin-right:5px;font-style:normal}.field input,.field textarea,.field select{width:100%;border:1px solid #648dcb;border-radius:5px;background:#071f506b;color:white;padding:13px 14px;font-size:16px;min-width:0}.field input::placeholder,.field textarea::placeholder{color:#99acd0}.field input:read-only{color:#c0def4}.field textarea{resize:vertical;min-height:84px}.code-row{display:flex;gap:8px}.code-row input{flex:1;width:0}.code-row button{border:1px solid #4eb9d8;border-radius:5px;background:#145e8440;color:var(--cyan);padding:0 11px;white-space:nowrap;font-size:14px}.challenge-row{display:flex;gap:10px;align-items:center;margin:0 0 16px}.challenge-row label{font-size:14px;color:#c0d7f6}.challenge-row input{min-width:0;width:68px;background:#0c2755;border:1px solid #6085b8;border-radius:4px;padding:8px;color:white;font-size:16px}.challenge-row button{background:none;border:0;color:#9ad7ee;padding:8px;font-size:14px}.consent{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.7;margin:20px 0}.consent input{accent-color:var(--cyan);width:20px;height:20px;margin:2px 0;flex-shrink:0}.privacy{color:#8eaacc;font-size:12px;line-height:1.8;margin:0 0 20px}.primary{background:var(--cyan);color:#052154;border:0;border-radius:5px;padding:16px 20px;font-size:20px;letter-spacing:2px;font-weight:700;width:100%}.form-error{color:#ffd3b9;font-size:14px;line-height:1.7;min-height:24px;margin:10px 0}.test-code{background:#604211;color:#ffe0a8;border:1px solid #96702a;padding:10px;font-size:14px}.dev-badge{position:fixed;top:0;left:0;z-index:12;background:#775311e6;color:#fff3cf;font-size:11px;padding:3px 9px}.success-state{padding-top:10vh}.success-icon{font-size:38px;color:var(--cyan);width:80px;height:80px;border:1px solid #43eddd77;border-radius:50%;display:grid;place-items:center;margin-bottom:32px}.success-state h2{font-size:30px}.success-state p{line-height:1.9;color:#cadcf4}.event-detail{border-top:1px solid var(--line);padding:22px 0}.event-detail small{color:var(--cyan);font-size:13px;letter-spacing:2px}.event-detail p{margin:10px 0 0;font-size:16px}.event-detail a{color:white}.toast{position:fixed;z-index:30;left:50%;bottom:18%;transform:translateX(-50%);max-width:88vw;background:#effaff;color:#082448;border-radius:8px;padding:12px 20px;font-size:14px;box-shadow:0 10px 50px #0007}dialog{background:#0b2248;color:white;border:1px solid #508caf66;border-radius:12px;padding:36px 26px;width:min(90vw,420px)}dialog::backdrop{background:#000a}.close-dialog{position:absolute;right:12px;top:8px;font-size:28px;color:#bcd1ef;background:none;border:0}dialog h2{font-size:23px;margin:22px 0}dialog p{font-size:16px;line-height:1.8}dialog .primary{font-size:16px;letter-spacing:0}.muted{color:#90a6c6;font-size:12px!important}@media(max-width:360px){.registration{padding:35px 22px}.code-row button{font-size:12px;padding:0 6px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important}}@media(min-width:800px){.invitation{background:radial-gradient(ellipse at center,#0a2344,#010713 70%)}.pages{box-shadow:0 0 80px #00102f}.page-dots{right:calc((100vw - 560px)/2 - 28px)}}

/* Keyboard height changes must not narrow the form or move floating tools over it. */
.pages:focus-within{scroll-snap-type:none;scroll-behavior:auto}
.pages:focus-within ~ .float-tools,.pages:focus-within ~ .page-dots,.pages:focus-within ~ .jump-register{visibility:hidden;pointer-events:none}
.challenge-row{display:grid;grid-template-columns:minmax(0,1fr) 56px auto;gap:8px}
.challenge-row label b,.challenge-row button{white-space:nowrap}
.challenge-row input{width:100%}
.field input,.field textarea,.challenge-row input{scroll-margin-block:24px}

/* Compact registration: all fields and submit fit together on typical phone screens. */
.registration{padding:24px 24px max(20px,env(safe-area-inset-bottom))}
.reg-brand{font-size:12px;margin:0 0 8px}
.registration h1{font-size:32px;line-height:1.15;margin:0 0 6px}
.registration>.eyebrow{font-size:10px;letter-spacing:2px}
.registration>.rule-line{display:none}
.registration>.intro{font-size:13px;line-height:1.5;margin:10px 0 14px}
#registrationForm{display:grid;gap:10px}
.registration label.field{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:8px;margin:0}
.registration .field>span{font-size:14px;letter-spacing:0;margin:0}
.registration .required{margin-right:3px}
.registration .field input,.registration .field textarea{font-size:16px;height:44px;min-height:44px;padding:10px;border-radius:6px}
.registration .field textarea{resize:vertical;line-height:22px}
.registration .code-row{min-width:0;gap:6px}
.registration .code-row button{font-size:12px;padding:0 8px}
.registration .challenge-row{margin:0;min-height:38px;grid-template-columns:minmax(0,1fr) 56px auto}
.registration .challenge-row input{height:38px}
.registration .challenge-row label,.registration .challenge-row button{font-size:13px}
.registration .consent{margin:2px 0;gap:8px;font-size:12px;line-height:1.65}
.registration .consent input{width:18px;height:18px}
.privacy-link{display:inline;padding:0;border:0;background:none;color:var(--cyan);font-size:inherit;text-decoration:underline;text-underline-offset:3px;line-height:inherit}
.registration .primary{height:46px;padding:10px 16px;font-size:18px}
.registration .form-error{margin:0;min-height:0;font-size:12px}
.registration .form-error:empty{display:none}
#privacyDialog{max-height:85svh;overflow:auto}
@media(max-width:360px){.registration{padding:20px 16px max(16px,env(safe-area-inset-bottom))}.registration label.field{grid-template-columns:66px minmax(0,1fr);gap:6px}.registration .field>span{font-size:13px}.registration .code-row button{padding:0 6px;font-size:12px}.registration .field input{padding:10px 8px}}
