.page-shell{min-height:100dvh}.splash-page,.char-select-page,.settings-page,.credits-page{min-height:100vh;display:flex;flex-direction:column}.splash-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(255,255,255,.04) 0 12px,transparent 12px 24px),linear-gradient(180deg,#0b1112,#151822 38%,#1c1422);background-size:48px 48px,auto;z-index:0}.splash-particles{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background-image:radial-gradient(2px 2px at 20% 30%,rgba(212,168,75,.4),transparent),radial-gradient(2px 2px at 60% 70%,rgba(107,140,255,.3),transparent),radial-gradient(1px 1px at 80% 20%,rgba(255,255,255,.5),transparent);background-size:200% 200%;animation:drift 20s linear infinite}@keyframes drift{0%{background-position:0% 0%}to{background-position:100% 100%}}.splash-content,.char-select-content,.settings-content,.credits-content{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center}.logo-ring{width:120px;height:120px;border:2px solid var(--gold);border-radius:50%;margin-bottom:1.5rem;display:grid;place-items:center;padding:.7rem;position:relative;overflow:hidden;background:radial-gradient(circle at 50% 42%,rgba(95,244,231,.16),transparent 42%),radial-gradient(circle,rgba(12,14,24,.8),rgba(10,12,20,.24) 68%,transparent 70%);box-shadow:0 0 60px #d4a84b66,inset 0 0 30px #d4a84b1a;animation:pulse-ring 3s ease-in-out infinite}.logo-ring:after{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border-radius:50%;border:1px solid rgba(240,201,110,.24);pointer-events:none}.logo-mark{width:88%;height:88%;object-fit:contain;display:block;filter:drop-shadow(0 0 18px rgba(240,201,110,.36));transform:translateY(1px)}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.85}}.game-title{font-size:clamp(2rem,6vw,3.5rem);background:linear-gradient(180deg,var(--gold-bright),var(--gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.5rem}.tagline{color:var(--text-dim);font-size:1rem;margin-bottom:2.5rem;letter-spacing:.15em;text-transform:uppercase}.developer-mark{color:var(--gold-bright);font-size:.78rem;letter-spacing:.14em;margin-bottom:.75rem;text-transform:uppercase}.loading-bar{width:min(400px,90vw);height:6px;background:#ffffff14;border-radius:3px;overflow:hidden;margin-bottom:.75rem}.loading-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--ember),var(--gold-bright));transition:width .2s;box-shadow:0 0 12px var(--gold)}.loading-text{font-size:.85rem;color:var(--text-dim);margin-bottom:2rem}.main-menu{display:flex;flex-direction:column;gap:1rem;animation:fade-in .6s ease}.main-menu.hidden{display:none}@keyframes fade-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;max-width:1100px;width:100%;margin:2rem 0}.class-card{border:1px solid var(--panel-border);color:var(--text);font:inherit;padding:1.25rem;cursor:pointer;text-align:left;transition:transform .2s,border-color .2s,box-shadow .2s}.class-card:hover{transform:translateY(-4px)}.class-card.selected{border-color:var(--gold-bright);box-shadow:0 0 32px #d4a84b59}.class-card h3{color:var(--gold-bright);margin-bottom:.25rem}.class-card .title{font-size:.8rem;color:var(--text-dim);margin-bottom:.75rem}.class-card p{font-size:.85rem;line-height:1.5}.join-panel{max-width:520px;margin:0 auto 1.25rem;padding:1rem 1.25rem;text-align:left}.join-label{display:block;font-size:.8rem;color:var(--text-dim);margin-bottom:.35rem}.join-input{width:100%;padding:.55rem .75rem;margin-bottom:.75rem;background:#0006;border:1px solid rgba(212,168,75,.35);border-radius:6px;color:var(--text);font-size:1rem}.mode-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.mode-option{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.server-row{margin-top:.5rem}.server-row.hidden{display:none}.join-hint{font-size:.72rem;color:var(--text-dim);margin-top:.25rem}.join-hint code{color:var(--gold)}.logo-ring.pulse{animation:logo-pulse 1.5s ease-in-out infinite}@keyframes logo-pulse{50%{box-shadow:0 0 40px #d4a84b80;transform:scale(1.03)}}.main-menu.reveal{animation:menu-reveal .6s ease-out}@keyframes menu-reveal{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.char-actions,.settings-actions{display:flex;gap:1rem;flex-wrap:wrap;justify-content:center}.settings-content{max-width:480px;width:100%;padding:2.5rem;margin:auto}.settings-form{display:flex;flex-direction:column;gap:1.25rem;text-align:left;width:100%;margin:1.5rem 0}.settings-form label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem}.settings-form .toggle-row{flex-direction:row;align-items:center}.settings-form select,.settings-form input[type=range],.settings-form input:not([type=checkbox]){accent-color:var(--gold)}.settings-form input:not([type=checkbox]),.settings-form select{width:100%;padding:.55rem .75rem;background:#00000061;border:1px solid rgba(212,168,75,.35);border-radius:6px;color:var(--text)}.save-status{color:var(--gold);font-size:.85rem;min-height:1.2em}.credits-content{max-width:560px;padding:2.5rem;margin:2rem auto;text-align:left}.credit-block{margin-bottom:1.5rem}.credit-block h2{font-size:1rem;color:var(--gold);margin-bottom:.5rem}.credit-block ul{padding-left:1.25rem;line-height:1.8;color:var(--text-dim)}.lead-credit .developer-name{font-family:Cinzel,serif;font-size:1.5rem;color:var(--gold-bright)}.credits-content .btn{margin-top:1rem;align-self:center}.page-title{font-size:2rem;margin-bottom:.5rem}.subtitle{color:var(--text-dim);margin-bottom:1rem}.splash-page,.char-select-page,.settings-page,.credits-page{overflow:auto;-webkit-overflow-scrolling:touch;min-height:100dvh}@media(max-width:768px),(pointer:coarse){.splash-content,.char-select-content,.settings-content{padding:1.25rem;padding-bottom:max(2rem,env(safe-area-inset-bottom));justify-content:flex-start;padding-top:max(2rem,env(safe-area-inset-top))}.class-grid{grid-template-columns:1fr;margin:1rem 0}.class-card{padding:1rem;min-height:48px}.char-actions,.main-menu{width:100%;max-width:360px}.char-actions .btn,.main-menu .btn{width:100%;min-height:48px}.join-input{font-size:16px}.game-title{font-size:clamp(1.6rem,8vw,2.5rem)}.credits-footer{position:relative;pointer-events:auto}}
