:root{--bg-primary: #04060f;--bg-secondary: #0a1022;--bg-tertiary: #121c38;--bg-slate: #2a3548;--accent-gold: #ffcc00;--accent-gold-bright: #ffd700;--accent-gold-dim: #cd9b4a;--accent-cyan: #00ffff;--accent-cyan-soft: #40e0d0;--accent-blue: #00d4ff;--accent-red: #e85d5d;--accent-green: #40e0d0;--text-primary: #f0ece4;--text-secondary: #8a9bb5;--glass: rgba(8, 14, 30, .82);--glass-border: rgba(255, 204, 0, .28);--glass-border-cyan: rgba(0, 255, 255, .22);--glow-gold: 0 0 20px rgba(255, 204, 0, .45), 0 0 40px rgba(255, 204, 0, .15);--glow-cyan: 0 0 18px rgba(0, 255, 255, .35), 0 0 36px rgba(64, 224, 208, .12);--glow-text-gold: 0 0 12px rgba(255, 204, 0, .7), 0 0 24px rgba(255, 204, 0, .3);--font-fantasy: "Cinzel", Georgia, serif;--font-body: "Crimson Pro", Georgia, serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;height:var(--app-vh, 100dvh);max-height:var(--app-vh, 100dvh);width:100%;overflow:hidden}#root{display:flex;flex-direction:column;min-height:0}.app-shell{flex:1;min-height:0;width:100%;max-width:100%;margin:0 auto;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:1}@media(min-width:520px){body{display:flex;justify-content:center;background:#020408;background-image:radial-gradient(ellipse 50% 80% at 50% 50%,rgba(0,255,255,.04) 0%,transparent 70%),linear-gradient(180deg,#020408,#0a1022)}.app-shell{max-width:430px;box-shadow:0 0 0 1px #ffcc0026,0 0 80px #000000d9,inset 0 0 60px #00ffff08}.mobile-toolbar,.mobile-char-bar,.mobile-enemy-bar-wrap,.mobile-bottom-stack{left:50%;right:auto;transform:translate(-50%);width:430px;max-width:430px}:root{--safe-bottom-effective: 0px;--safe-top-effective: 0px}}body{font-family:var(--font-body);background:var(--bg-primary);background-image:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(0,255,255,.06) 0%,transparent 55%),radial-gradient(ellipse 60% 50% at 80% 80%,rgba(255,204,0,.05) 0%,transparent 50%),radial-gradient(ellipse 50% 40% at 10% 60%,rgba(64,224,208,.04) 0%,transparent 45%),linear-gradient(180deg,var(--bg-primary) 0%,var(--bg-secondary) 45%,#060a14 100%);background-attachment:fixed;color:var(--text-primary);overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%}#particles-bg{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.particle{position:absolute;border-radius:50%;animation:float-particle linear infinite;opacity:.75;box-shadow:0 0 6px currentColor}.particle--gold{color:#fc0c;background:var(--accent-gold)}.particle--cyan{color:#00ffffb3;background:var(--accent-cyan-soft)}.particle--star{color:#ffffffe6;background:#fff}h1,h2,h3,.fantasy-title{font-family:var(--font-fantasy)}button{font-family:var(--font-body);cursor:pointer}input,textarea{font-family:var(--font-body)}.screen{position:relative;z-index:1;flex:1;min-height:0;width:100%;display:flex;flex-direction:column;overflow:hidden}.glass-panel{background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--glass-border);border-radius:16px;box-shadow:inset 0 1px #ffcc000f,0 4px 24px #0006}.btn-primary{padding:14px 28px;font-family:var(--font-fantasy);font-weight:700;font-size:.95rem;letter-spacing:.08em;text-transform:uppercase;line-height:1.3;color:#f2ddd0;background:linear-gradient(180deg,rgba(255,80,50,.12) 0%,transparent 35%),linear-gradient(180deg,#2c0c0c,#160606 48%,#0a0303);border:2px solid #7a1818;border-radius:3px;box-shadow:0 0 22px #a0191459,0 6px 20px #000000bf,inset 0 1px #dc5a3c33,inset 0 -3px 8px #00000080;text-shadow:0 0 14px rgba(220,60,40,.65),0 2px 4px rgba(0,0,0,.95);transition:transform .2s ease,box-shadow .25s ease,border-color .25s ease}.btn-primary:hover:not(:disabled){transform:translateY(-2px);border-color:#b82828;box-shadow:0 0 36px #dc321e8c,0 0 70px #6400004d,0 8px 24px #000000d9,inset 0 1px #ff785040}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.45;box-shadow:none;cursor:not-allowed}.btn-secondary{padding:12px 22px;font-family:var(--font-fantasy);font-weight:700;font-size:.9rem;letter-spacing:.07em;text-transform:uppercase;line-height:1.3;color:#c8b8a0;background:linear-gradient(180deg,rgba(180,120,40,.1) 0%,transparent 40%),linear-gradient(180deg,#1a1410,#0e0a08,#060504);border:2px solid #4a3220;border-radius:3px;box-shadow:0 0 14px #3c230a59,0 5px 18px #000000b3,inset 0 1px #a06e3226,inset 0 -2px 6px #00000073;text-shadow:0 1px 4px rgba(0,0,0,.9);transition:transform .2s ease,box-shadow .25s ease,border-color .25s ease,color .25s ease}.btn-secondary:hover:not(:disabled){border-color:#8b5a28;color:#e8d8c0;transform:translateY(-2px);box-shadow:0 0 28px #a05a1473,0 6px 20px #000c,inset 0 1px #c8963c33}.btn-secondary:active:not(:disabled){transform:translateY(0)}.btn-secondary:disabled{opacity:.45;cursor:not-allowed}.btn-shade{padding:11px 20px;font-family:var(--font-fantasy);font-size:.82rem;letter-spacing:.06em;color:#5a4a4a;background:#0804068c;border:1px solid rgba(80,35,35,.35);border-radius:3px;box-shadow:inset 0 0 20px #0006;transition:color .25s,border-color .25s,box-shadow .25s;cursor:pointer}.btn-shade:hover:not(:disabled){color:#9a7070;border-color:#8c323280;box-shadow:0 0 18px #500a0a40,inset 0 0 16px #28000033}.btn-wide{width:100%}.stat-bar{width:100%;height:28px;border-radius:14px;overflow:hidden;position:relative;border:1px solid rgba(255,204,0,.12);--fill-pct: 50%}.hp-bar{background:linear-gradient(90deg,#c0392b 0%,#e85d5d var(--fill-pct),rgba(0,0,0,.55) var(--fill-pct),rgba(0,0,0,.55) 100%);box-shadow:inset 0 0 8px #e85d5d40;transition:background .6s ease,box-shadow .6s ease,border-color .6s ease}.hp-bar.hp-bar--poisoned{border-color:#50dc6473;background:linear-gradient(90deg,#1a4a22 0%,#3cb85a var(--fill-pct),#0a180c var(--fill-pct),#0a180c 100%);box-shadow:inset 0 0 10px #50dc6459,0 0 12px #3cb45033;animation:poisonHpPulse 2.5s ease-in-out infinite}@keyframes poisonHpPulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.15)}}@media(prefers-reduced-motion:reduce){.hp-bar.hp-bar--poisoned,.dnd-vitals-bar .hp-bar.hp-bar--poisoned{animation:none}}.xp-bar{background:linear-gradient(90deg,var(--accent-gold-dim) 0%,var(--accent-gold-bright) var(--fill-pct),rgba(0,0,0,.55) var(--fill-pct),rgba(0,0,0,.55) 100%)}.mp-bar{background:linear-gradient(90deg,#3a5bff 0%,#7b68ee var(--fill-pct),rgba(0,0,0,.55) var(--fill-pct),rgba(0,0,0,.55) 100%);box-shadow:inset 0 0 8px #5b68ee40}.stat-bar-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;text-shadow:0 1px 4px rgba(0,0,0,.9);z-index:2;pointer-events:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#04060fe0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .3s ease}.modal-overlay--game{z-index:1100}.modal-content{max-width:500px;width:100%;max-height:80vh;overflow-y:auto;padding:24px}.loading-spinner{width:48px;height:48px;border:3px solid rgba(255,204,0,.15);border-top-color:var(--accent-gold);border-radius:50%;animation:spin 1s linear infinite}.death-overlay,.victory-overlay{z-index:2000;background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}.overlay-scene-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0}.overlay-scene-img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transform:scale(1.08);animation:bg-drift-alt 36s ease-in-out infinite;will-change:transform}.overlay-scene-bg--lose .overlay-scene-img{animation:bg-drift 40s ease-in-out infinite}.overlay-scene-bg--win .overlay-scene-img{animation:bg-drift-alt 38s ease-in-out infinite}.overlay-scene-bg--lose:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#14040873}.overlay-scene-bg--win:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#1c120466}.death-screen-vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 50% 40%,transparent 15%,rgba(0,0,0,.72) 100%);animation:fadeIn .8s ease;z-index:1}.death-screen{max-width:440px;width:calc(100% - 32px);text-align:center;padding:32px 24px 28px;border:1px solid rgba(232,93,93,.45);box-shadow:0 0 40px #e85d5d40,inset 0 0 30px #0006;position:relative;z-index:2}.death-screen-icon{font-size:4rem;margin-bottom:4px;filter:drop-shadow(0 0 12px rgba(232,93,93,.8))}.death-pulse{animation:deathPulse 2s ease-in-out infinite}@keyframes deathPulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.85}}.death-screen-eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--accent-red);margin-bottom:6px}.death-screen-title{color:#ff6b6b;font-family:var(--font-fantasy);font-size:1.75rem;margin-bottom:12px;text-shadow:0 0 20px rgba(255,80,80,.5)}.death-screen-text{color:var(--text-secondary);margin-bottom:12px;line-height:1.55;font-size:.92rem}.death-screen-cause{margin:0 0 8px;font-size:.82rem;color:#c9a080;line-height:1.4}.death-screen-cause--muted{color:var(--text-secondary);margin-bottom:14px}.death-screen-stats{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;padding:10px 12px;margin-bottom:12px;font-size:.9rem}.death-screen-hint{font-size:.78rem;color:var(--text-secondary);margin-bottom:18px;line-height:1.4}.death-screen-actions{display:flex;flex-direction:column;gap:10px}.death-revive-btn:disabled{opacity:.7}.victory-screen-rays{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 50% 35%,rgba(255,215,100,.18) 0%,transparent 55%);animation:fadeIn .8s ease;z-index:1}.victory-screen{max-width:440px;width:calc(100% - 32px);text-align:center;padding:32px 24px 28px;border:1px solid rgba(255,200,80,.5);box-shadow:0 0 40px #ffc85040,inset 0 0 30px #00000059;position:relative;z-index:2}.victory-screen-icon{font-size:4rem;margin-bottom:4px;filter:drop-shadow(0 0 14px rgba(255,215,100,.85))}.victory-pulse{animation:victoryPulse 2.2s ease-in-out infinite}@keyframes victoryPulse{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.1) rotate(-3deg)}}.victory-screen-eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:#f0c060;margin-bottom:6px}.victory-screen-title{color:#ffd86b;font-family:var(--font-fantasy);font-size:1.75rem;margin-bottom:12px;text-shadow:0 0 20px rgba(255,200,80,.5)}.victory-screen-text{color:var(--text-secondary);margin-bottom:14px;line-height:1.55}.victory-quest-list{list-style:none;padding:10px 14px;margin:0 0 12px;text-align:left;font-size:.88rem;line-height:1.5}.victory-quest-list li+li{margin-top:4px}.victory-screen-stats{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;padding:10px 12px;margin-bottom:12px;font-size:.9rem}.victory-screen-hint{font-size:.78rem;color:var(--text-secondary);margin-bottom:18px;line-height:1.4}.victory-exit-btn{width:100%}.level-up-overlay{z-index:1900;background:radial-gradient(ellipse at center,#ffcc001f,#04060fe0 65%)}.level-up-rays{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;background:conic-gradient(from 0deg,transparent,rgba(255,204,0,.08),transparent,rgba(255,204,0,.06),transparent);animation:spin 12s linear infinite;pointer-events:none}.level-up-banner{max-width:380px;width:calc(100% - 32px);text-align:center;padding:28px 24px;border:1px solid rgba(255,204,0,.5);box-shadow:var(--glow-gold);position:relative;z-index:1}.level-up-crown{font-size:2.5rem;margin-bottom:4px;animation:glow 2s ease-in-out infinite}.level-up-label{color:var(--accent-gold-dim);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.level-up-level{font-family:var(--font-fantasy);font-size:3rem;color:var(--accent-gold-bright);margin:4px 0 16px;text-shadow:var(--glow-text-gold)}.level-up-rewards{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.level-up-chip{background:#ffcc001f;border:1px solid rgba(255,204,0,.35);border-radius:20px;padding:6px 14px;font-size:.95rem}.level-up-flavor{color:var(--text-secondary);font-size:.9rem;margin-bottom:18px}.level-up-btn{width:100%}.campaign-card-wrap--dead{opacity:.85}.campaign-card--dead{cursor:not-allowed;border-color:#e85d5d59!important;filter:grayscale(.6)}.campaign-dead-badge{display:inline-block;background:#e85d5d33;color:#ff8a8a;border:1px solid rgba(232,93,93,.45);border-radius:6px;padding:2px 10px;font-size:.75rem;font-weight:700;letter-spacing:.06em;margin-bottom:8px}.campaign-card-wrap--victory .campaign-card--victory{border-color:#ffc85066!important}.campaign-victory-badge{display:inline-block;background:#ffc85026;color:#ffd86b;border:1px solid rgba(255,200,80,.45);border-radius:6px;padding:2px 10px;font-size:.75rem;font-weight:700;letter-spacing:.06em;margin-bottom:8px}@media(max-width:768px){.btn-primary{padding:12px 24px;font-size:1rem}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes glow{0%,to{box-shadow:0 0 16px #fc06,0 0 32px #00ffff26}50%{box-shadow:0 0 32px #ffcc00b3,0 0 48px #00ffff40}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes pulse-hp{0%,to{filter:brightness(1)}50%{filter:brightness(1.4)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float-particle{0%{transform:translateY(100vh) scale(0);opacity:0}10%{opacity:.7}90%{opacity:.7}to{transform:translateY(-10vh) scale(1);opacity:0}}@keyframes dice-roll{0%{transform:rotateX(0) rotateY(0) rotate(0)}25%{transform:rotateX(180deg) rotateY(90deg) rotate(45deg)}50%{transform:rotateX(360deg) rotateY(180deg) rotate(90deg)}75%{transform:rotateX(540deg) rotateY(270deg) rotate(135deg)}to{transform:rotateX(720deg) rotateY(360deg) rotate(180deg)}}@keyframes typewriter-cursor{0%,to{opacity:1}50%{opacity:0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes bg-drift{0%,to{transform:scale(1.08) translate(0)}25%{transform:scale(1.08) translate(1.2%,-.8%)}50%{transform:scale(1.08) translate(-1%,.6%)}75%{transform:scale(1.08) translate(.6%,1%)}}@keyframes bg-drift-alt{0%,to{transform:scale(1.08) translate(0)}33%{transform:scale(1.08) translate(-.8%,-1%)}66%{transform:scale(1.08) translate(1%,.5%)}}@keyframes diceCardIn{0%{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes critStampPulse{0%,to{box-shadow:0 0 8px #ffc83c40}50%{box-shadow:0 0 16px #ffdc508c}}@keyframes critFaceGlow{0%,to{box-shadow:0 0 16px #ffc83c59}50%{box-shadow:0 0 28px #ffdc6499}}@keyframes combatPulse{0%,to{box-shadow:inset 0 0 12px #c8282814,0 4px 12px #00000040}50%{box-shadow:inset 0 0 18px #dc32322e,0 4px 16px #78141433}}@keyframes splashEnter{0%{transform:translateY(10px)}to{transform:translateY(0)}}.splash-enter,.splash-enter-header,.splash-enter-actions{opacity:1}.splash-enter{animation:splashEnter .45s ease both}.splash-enter-header{animation:splashEnter .45s ease .08s both}.splash-enter-actions{animation:splashEnter .45s ease .18s both}@media(prefers-reduced-motion:reduce){.splash-enter,.splash-enter-header,.splash-enter-actions{animation:none}}.animate-glow{animation:glow 2s ease-in-out infinite}.animate-shake{animation:shake .5s ease-in-out}.animate-slide-up{animation:slideInUp .4s ease forwards}.animate-scale-in{animation:scaleIn .35s ease forwards}.animate-pulse-hp{animation:pulse-hp .6s ease 2}.dice-rolling{animation:dice-roll .8s ease-in-out}.typewriter-cursor:after{content:"|";animation:typewriter-cursor .8s step-end infinite;color:var(--accent-gold)}.bg-live{animation:bg-drift 32s ease-in-out infinite;will-change:transform}.bg-live--alt{animation:bg-drift-alt 38s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.splash-bg-img,.dnd-menu-bg-img{animation:none}.overlay-scene-img,.action-buttons--horizontal .action-btn{animation:none;transform:scale(1.05)}}@keyframes screenEnter{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.94) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fadeInSoft{0%{opacity:0}to{opacity:1}}@keyframes selectedPulse{0%,to{box-shadow:var(--glow-gold)}50%{box-shadow:0 0 28px #ffcc00a6,0 0 48px #fc03}}@keyframes combatPulse{0%,to{box-shadow:0 0 12px #e85d5d40,inset 0 0 12px #78141433}50%{box-shadow:0 0 22px #e85d5d73,inset 0 0 18px #78141459}}@keyframes barShimmer{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes iconFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes titleShimmer{0%,to{text-shadow:0 0 14px rgba(255,180,60,.35),0 2px 6px rgba(0,0,0,.95)}50%{text-shadow:0 0 22px rgba(255,200,80,.55),0 2px 6px rgba(0,0,0,.95)}}@keyframes goodFlash{0%{background:#40e0a040}to{background:transparent}}@keyframes badFlash{0%{background:#e85d5d33}to{background:transparent}}@keyframes btnGlowPulse{0%,to{box-shadow:0 0 10px #a05a1440}50%{box-shadow:0 0 18px #fc06}}@keyframes overlayFade{0%{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}to{opacity:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}@keyframes msgEnterAi{0%{opacity:0;transform:translate(-16px) translateY(8px)}to{opacity:1;transform:translate(0) translateY(0)}}@keyframes msgEnterPlayer{0%{opacity:0;transform:translate(16px) translateY(8px)}to{opacity:1;transform:translate(0) translateY(0)}}@keyframes emberSway{0%{transform:translateY(100vh) translate(0) scale(0);opacity:0}8%{opacity:.9}50%{transform:translateY(45vh) translate(18px) scale(1);opacity:.75}92%{opacity:.5}to{transform:translateY(-8vh) translate(-12px) scale(.6);opacity:0}}.dnd-menu-screen>:not(.dnd-menu-bg):not(.dnd-menu-bg-dim){position:relative;z-index:1}.screen:not(.splash-screen):not(.dnd-menu-screen){animation:screenEnter .45s ease both}.scenario-scroll h2,.char-create-scroll h2,.campaign-continue-scroll h2,.dnd-menu-title{animation:fadeInSoft .6s ease .1s both}.scenario-card{animation:popIn .45s ease backwards}.scenario-card:nth-child(1){animation-delay:.06s}.scenario-card:nth-child(2){animation-delay:.12s}.scenario-card:nth-child(3){animation-delay:.18s}.scenario-card:nth-child(4){animation-delay:.24s}.class-card{animation:popIn .4s ease backwards}.class-card:nth-child(1){animation-delay:.05s}.class-card:nth-child(2){animation-delay:.1s}.class-card:nth-child(3){animation-delay:.15s}.class-card:nth-child(4){animation-delay:.2s}.create-section{animation:popIn .4s ease backwards}.create-section:nth-of-type(1){animation-delay:.08s}.create-section:nth-of-type(2){animation-delay:.14s}.create-section:nth-of-type(3){animation-delay:.2s}.create-section:nth-of-type(4){animation-delay:.26s}.create-section:nth-of-type(5){animation-delay:.32s}.campaign-card-wrap{animation:popIn .4s ease backwards}.campaign-card-wrap:nth-child(1){animation-delay:.06s}.campaign-card-wrap:nth-child(2){animation-delay:.12s}.campaign-card-wrap:nth-child(3){animation-delay:.18s}.campaign-card-wrap:nth-child(4){animation-delay:.24s}.scenario-card.selected,.class-card.selected{animation:selectedPulse 2.8s ease-in-out infinite}.scenario-icon,.class-card-icon{animation:iconFloat 3.5s ease-in-out infinite}.scenario-card:nth-child(2) .scenario-icon,.class-card:nth-child(2) .class-card-icon{animation-delay:.5s}.scenario-card:nth-child(3) .scenario-icon,.class-card:nth-child(3) .class-card-icon{animation-delay:1s}.btn-primary:not(:disabled),.btn-secondary:not(:disabled){position:relative;overflow:hidden}.btn-primary:not(:disabled):after,.btn-secondary:not(:disabled):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.08) 50%,transparent 60%);transform:translate(-120%);transition:transform .5s ease;pointer-events:none}.btn-primary:not(:disabled):hover:after,.btn-secondary:not(:disabled):hover:after{transform:translate(120%)}.dnd-input-area .send-btn:not(:disabled){animation:btnGlowPulse 2.5s ease-in-out infinite}.actions-toggle-btn:not(:disabled){animation:btnGlowPulse 3s ease-in-out infinite}.toolbar-btn:active:not(:disabled){transform:scale(.94)}.option-chip.active{animation:selectedPulse 2.5s ease-in-out infinite}.message{animation:none}.message.msg-enter--ai{animation:msgEnterAi .4s ease both}.message.msg-enter--player{animation:msgEnterPlayer .35s ease both}.narrative{animation:fadeInSoft .5s ease both}.dialogue{animation:fadeInSoft .45s ease both}.message-body{animation:fadeInSoft .5s ease both}.mechanic{animation:popIn .4s ease both}.dice-mech-block{animation:popIn .4s ease .52s both}.mechanic-title{animation:titleShimmer 3s ease-in-out infinite}.mechanic-good{animation:goodFlash .9s ease}.mechanic-bad{animation:badFlash .9s ease}.combat{animation:fadeInSoft .45s ease both}.ai-typing{animation:msgEnterAi .35s ease both}.combat-enemy-bar:not(.combat-enemy-bar--compact){animation:combatPulse 2.2s ease-in-out infinite}.stat-bar{position:relative;overflow:hidden}.stat-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);transform:translate(-120%);animation:barShimmer 4.5s ease-in-out infinite;pointer-events:none}.mobile-char-avatar-img{animation:iconFloat 4s ease-in-out infinite}.quest-card{animation:popIn .35s ease backwards}.quest-card:nth-child(1){animation-delay:.04s}.quest-card:nth-child(2){animation-delay:.08s}.quest-card:nth-child(3){animation-delay:.12s}.quest-card:nth-child(4){animation-delay:.16s}.modal-overlay:not(.modal-overlay--game){animation:overlayFade .35s ease}.mobile-menu-overlay{animation:overlayFade .3s ease}.mobile-menu{animation:slideInUp .35s ease}.instructions-section{animation:popIn .35s ease backwards}.instructions-section:nth-child(1){animation-delay:.03s}.instructions-section:nth-child(2){animation-delay:.06s}.instructions-section:nth-child(3){animation-delay:.09s}.instructions-section:nth-child(4){animation-delay:.12s}.instructions-section:nth-child(5){animation-delay:.15s}.particle--ember{background:radial-gradient(circle,#ffb040,#e85d20 70%);box-shadow:0 0 8px #ff8c28cc;animation:emberSway linear infinite;border-radius:50%}@media(prefers-reduced-motion:reduce){.screen:not(.splash-screen),.scenario-card,.class-card,.create-section,.campaign-card-wrap,.message.msg-enter--ai,.message.msg-enter--player,.mechanic,.narrative,.dialogue,.message-body,.combat,.ai-typing,.quest-card,.instructions-section{animation:none!important}.dice-mech-block{opacity:1!important}.scenario-card.selected,.class-card.selected,.option-chip.active,.combat-enemy-bar:not(.combat-enemy-bar--compact),.stat-bar:after,.dnd-input-area .send-btn:not(:disabled),.actions-toggle-btn:not(:disabled),.mechanic-title,.dice-mech-block,.scenario-icon,.class-card-icon,.mobile-char-avatar-img{animation:none!important}.btn-primary:not(:disabled):after,.btn-secondary:not(:disabled):after{display:none}}.crit-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2500;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden;animation:critOverlayIn .35s ease forwards}.crit-overlay-flash{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;animation:critFlash .55s ease forwards}.crit-overlay--success .crit-overlay-flash{background:radial-gradient(circle at 50% 45%,rgba(255,220,100,.45) 0%,transparent 55%)}.crit-overlay--fail .crit-overlay-flash{background:radial-gradient(circle at 50% 45%,rgba(180,20,20,.4) 0%,transparent 55%)}.crit-overlay-vignette{position:absolute;top:0;right:0;bottom:0;left:0}.crit-overlay--success .crit-overlay-vignette{background:radial-gradient(ellipse 80% 70% at 50% 50%,transparent 20%,rgba(20,12,0,.75) 100%)}.crit-overlay--fail .crit-overlay-vignette{background:radial-gradient(ellipse 80% 70% at 50% 50%,transparent 15%,rgba(8,0,0,.88) 100%)}.crit-overlay-rays{position:absolute;width:160vmax;height:160vmax;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.35;animation:critRaysSpin 8s linear infinite}.crit-overlay--success .crit-overlay-rays{background:conic-gradient(from 0deg,transparent 0deg,rgba(255,204,0,.12) 20deg,transparent 40deg,rgba(255,180,60,.1) 60deg,transparent 80deg,rgba(255,220,100,.14) 100deg,transparent 120deg,rgba(255,204,0,.1) 160deg,transparent 200deg,rgba(255,180,60,.12) 240deg,transparent 280deg,rgba(255,204,0,.1) 320deg,transparent 360deg)}.crit-overlay--fail .crit-overlay-rays{background:conic-gradient(from 0deg,transparent 0deg,rgba(180,20,20,.15) 30deg,transparent 60deg,rgba(120,0,0,.12) 90deg,transparent 120deg,rgba(200,40,40,.14) 180deg,transparent 240deg,rgba(100,0,0,.1) 300deg,transparent 360deg);animation:critRaysSpin 12s linear infinite reverse}.crit-overlay-ring{position:absolute;width:min(90vw,420px);height:min(90vw,420px);border-radius:50%;border:2px solid transparent;animation:critRingPulse 1.2s ease-out 2}.crit-overlay--success .crit-overlay-ring{border-color:#ffcc0080;box-shadow:0 0 40px #ffcc0059,inset 0 0 30px #ffb43c26}.crit-overlay--fail .crit-overlay-ring{border-color:#c828288c;box-shadow:0 0 40px #b4141466,inset 0 0 30px #50000040}.crit-overlay-sparks{position:absolute;top:0;right:0;bottom:0;left:0}.crit-spark{position:absolute;top:50%;left:50%;width:6px;height:6px;border-radius:50%;transform:translate(-50%,-50%);animation:critSparkFly 1.1s ease-out forwards;animation-delay:calc(var(--i) * .04s);opacity:0}.crit-overlay--success .crit-spark{background:radial-gradient(circle,#fff 0%,#ffd700 50%,transparent 100%);box-shadow:0 0 10px #ffcc00e6}.crit-overlay--fail .crit-spark{background:radial-gradient(circle,#ff8888 0%,#8b0000 60%,transparent 100%);box-shadow:0 0 10px #c82828cc;animation-name:critSparkFlyFail}.crit-overlay-content{position:relative;z-index:2;text-align:center;padding:24px;animation:critTitlePop .65s cubic-bezier(.34,1.4,.64,1) .12s both}.crit-overlay-icon{display:block;font-size:clamp(2.5rem,12vw,4rem);line-height:1;margin-bottom:8px;animation:critIconBounce .8s ease .2s both}.crit-overlay--success .crit-overlay-icon{filter:drop-shadow(0 0 20px rgba(255,204,0,.9))}.crit-overlay--fail .crit-overlay-icon{filter:drop-shadow(0 0 20px rgba(200,40,40,.9));animation:critIconShake .7s ease .15s both}.crit-overlay-eyebrow{font-family:var(--font-fantasy);font-size:clamp(.65rem,2.5vw,.78rem);letter-spacing:.28em;text-transform:uppercase;margin-bottom:10px;opacity:0;animation:fadeInSoft .4s ease .35s forwards}.crit-overlay--success .crit-overlay-eyebrow{color:#c8a860}.crit-overlay--fail .crit-overlay-eyebrow{color:#a86060}.crit-overlay-title{font-family:var(--font-fantasy);font-size:clamp(1.6rem,7.5vw,2.8rem);font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.15;margin-bottom:8px}.crit-overlay--success .crit-overlay-title{color:#ffe8a0;text-shadow:0 0 20px rgba(255,204,0,.9),0 0 40px rgba(255,180,60,.5),0 4px 12px rgba(0,0,0,.95);animation:critTitleGlow 1.5s ease-in-out .5s infinite alternate}.crit-overlay--fail .crit-overlay-title{color:#faa;text-shadow:0 0 20px rgba(200,40,40,.85),0 0 35px rgba(120,0,0,.5),0 4px 12px rgba(0,0,0,.95)}.crit-overlay-sub{font-family:var(--font-body);font-size:clamp(.85rem,3.5vw,1rem);font-style:italic;opacity:0;animation:fadeInSoft .5s ease .55s forwards}.crit-overlay--success .crit-overlay-sub{color:#a89070}.crit-overlay--fail .crit-overlay-sub{color:#886060}@keyframes critOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes critFlash{0%{opacity:0}15%{opacity:1}to{opacity:0}}@keyframes critRaysSpin{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes critRingPulse{0%{transform:scale(.3);opacity:.9}to{transform:scale(1.4);opacity:0}}@keyframes critTitlePop{0%{opacity:0;transform:scale(.5) translateY(30px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes critIconBounce{0%{transform:scale(0) rotate(-20deg);opacity:0}60%{transform:scale(1.25) rotate(8deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes critIconShake{0%,to{transform:translate(0) scale(1);opacity:1}20%{transform:translate(-10px) scale(1.1)}40%{transform:translate(10px) scale(1.05)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes critTitleGlow{0%{filter:brightness(1)}to{filter:brightness(1.25)}}@keyframes critSparkFly{0%{opacity:1;transform:translate(-50%,-50%) rotate(calc(var(--i) * 22.5deg)) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 22.5deg)) translateY(calc(-1 * (80px + var(--i) * 12px))) scale(.2)}}@keyframes critSparkFlyFail{0%{opacity:1;transform:translate(-50%,-50%) rotate(calc(var(--i) * 22.5deg)) translateY(0) scale(1)}to{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 22.5deg)) translateY(calc(60px + var(--i) * 10px)) scale(.3)}}@media(prefers-reduced-motion:reduce){.crit-overlay-rays,.crit-overlay-ring,.crit-spark,.crit-overlay--success .crit-overlay-title{animation:none!important}.crit-overlay-content{animation:fadeInSoft .3s ease both}}@media(min-width:520px){.crit-overlay{left:50%;transform:translate(-50%);width:430px;max-width:430px}}.hp-damage-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2200;pointer-events:none;overflow:hidden;animation:hpDamageOverlayIn .2s ease forwards}.hp-damage-flash{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 42%,rgba(220,30,40,.55) 0%,transparent 52%);opacity:0;animation:hpDamageFlash .45s ease forwards}.hp-damage-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 95% 85% at 50% 50%,transparent 22%,rgba(120,0,0,.35) 58%,rgba(40,0,0,.82) 100%);opacity:0;animation:hpDamageVignette 1.1s ease-out forwards}.hp-damage-overlay--medium .hp-damage-vignette{background:radial-gradient(ellipse 95% 85% at 50% 50%,transparent 18%,rgba(140,0,0,.45) 55%,rgba(30,0,0,.9) 100%)}.hp-damage-overlay--heavy .hp-damage-vignette{background:radial-gradient(ellipse 100% 90% at 50% 50%,transparent 12%,rgba(160,0,0,.55) 50%,rgba(20,0,0,.95) 100%);animation-duration:1.5s}.hp-damage-splats{position:absolute;top:0;right:0;bottom:0;left:0}.hp-damage-splat{position:absolute;width:calc(28px + var(--i) * 6px);height:calc(20px + var(--i) * 4px);border-radius:45% 55% 52% 48%/58% 42%;background:radial-gradient(ellipse at 35% 35%,#b4141ed9,#50000aa6);opacity:0;transform:scale(.2);animation:hpDamageSplat .7s ease-out forwards;animation-delay:calc(.08s + var(--i) * .05s)}.hp-damage-splat:nth-child(1){top:12%;left:8%}.hp-damage-splat:nth-child(2){top:18%;right:10%}.hp-damage-splat:nth-child(3){bottom:28%;left:6%}.hp-damage-splat:nth-child(4){bottom:22%;right:8%}.hp-damage-splat:nth-child(5){top:42%;left:4%}.hp-damage-splat:nth-child(6){top:38%;right:5%}.hp-damage-splat:nth-child(7){bottom:38%;left:14%}.hp-damage-splat:nth-child(8){bottom:34%;right:12%}.hp-damage-blood{position:absolute;top:0;right:0;bottom:0;left:0}.hp-damage-drop{position:absolute;top:46%;left:50%;width:calc(5px + (var(--i) % 3));height:calc(10px + (var(--i) % 4) * 3px);border-radius:50%/60% 60% 40% 40%;background:linear-gradient(180deg,#c41e3a,#6b0a14);box-shadow:0 0 6px #b4141e99;opacity:0;transform:translate(-50%,-50%);animation:hpDamageDrop .85s ease-in forwards;animation-delay:calc(.12s + var(--i) * 35ms)}.hp-damage-drop:nth-child(odd){animation-name:hpDamageDropAlt}.hp-damage-heart-wrap{position:absolute;top:42%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;animation:hpDamageHeartWrap 1s ease-out forwards}.hp-damage-heart{position:relative;width:1em;height:1em;font-size:clamp(3.2rem,16vw,5rem);line-height:1}.hp-damage-heart__half{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#c41e3a;text-shadow:0 0 18px rgba(220,40,50,.9);filter:drop-shadow(0 4px 8px rgba(0,0,0,.5))}.hp-damage-heart__half--left{clip-path:polygon(0 0,52% 0,52% 100%,0 100%);animation:hpHeartSplitLeft .55s cubic-bezier(.34,1.2,.64,1) .1s forwards}.hp-damage-heart__half--right{clip-path:polygon(48% 0,100% 0,100% 100%,48% 100%);animation:hpHeartSplitRight .55s cubic-bezier(.34,1.2,.64,1) .1s forwards}.hp-damage-heart__crack{position:absolute;top:8%;left:50%;width:3px;height:88%;margin-left:-1.5px;background:linear-gradient(180deg,transparent,#1a0508 15%,#2a080c 50%,#1a0508 85%,transparent);transform:scaleY(0);transform-origin:top center;animation:hpHeartCrack .35s ease-out .05s forwards;box-shadow:0 0 8px #000c}.hp-damage-loss{font-family:var(--font-fantasy);font-size:clamp(1.1rem,5vw,1.5rem);font-weight:700;color:#f88;letter-spacing:.08em;text-shadow:0 0 14px rgba(220,40,40,.9),0 2px 8px rgba(0,0,0,.9);opacity:0;animation:hpDamageLossPop .5s ease .25s forwards}@keyframes hpDamageOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes hpDamageFlash{0%{opacity:0}18%{opacity:1}to{opacity:0}}@keyframes hpDamageVignette{0%{opacity:0}12%{opacity:1}to{opacity:0}}@keyframes hpHeartCrack{0%{transform:scaleY(0);opacity:0}to{transform:scaleY(1);opacity:1}}@keyframes hpHeartSplitLeft{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(-14px,8px) rotate(-18deg);opacity:.85}}@keyframes hpHeartSplitRight{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(14px,8px) rotate(18deg);opacity:.85}}@keyframes hpDamageHeartWrap{0%{transform:translate(-50%,-50%) scale(.6);opacity:0}15%{transform:translate(-50%,-50%) scale(1.12);opacity:1}35%{transform:translate(-50%,-50%) scale(1);opacity:1}to{transform:translate(-50%,-50%) scale(.95);opacity:0}}@keyframes hpDamageLossPop{0%{opacity:0;transform:translateY(8px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes hpDamageDrop{0%{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 24deg - 120deg)) translateY(0) scale(.5)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 24deg - 120deg)) translateY(calc(90px + var(--i) * 8px)) scale(1)}}@keyframes hpDamageDropAlt{0%{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 18deg + 40deg)) translateY(0) scale(.4)}15%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--i) * 18deg + 40deg)) translateY(calc(110px + var(--i) * 6px)) scale(.9)}}@keyframes hpDamageSplat{0%{opacity:0;transform:scale(.2)}30%{opacity:.75;transform:scale(1)}to{opacity:0;transform:scale(1.15)}}@media(prefers-reduced-motion:reduce){.hp-damage-heart__half--left,.hp-damage-heart__half--right,.hp-damage-drop,.hp-damage-splat{animation:none!important}.hp-damage-vignette,.hp-damage-heart-wrap{animation:fadeInSoft .3s ease both}}@media(min-width:520px){.hp-damage-overlay{left:50%;transform:translate(-50%);width:430px;max-width:430px}}.arena-victory-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2480;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden;animation:arenaVictoryIn .4s ease forwards}.arena-victory-flash{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;animation:arenaVictoryFlash .65s ease forwards;background:radial-gradient(circle at 50% 42%,rgba(255,160,60,.5) 0%,transparent 58%)}.arena-victory-overlay--champion .arena-victory-flash{background:radial-gradient(circle at 50% 40%,rgba(255,215,80,.55) 0%,rgba(200,80,20,.15) 45%,transparent 62%)}.arena-victory-vignette{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 85% 75% at 50% 50%,transparent 18%,rgba(28,10,0,.82) 100%)}.arena-victory-rays{position:absolute;width:150vmax;height:150vmax;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.4;animation:arenaVictoryRays 10s linear infinite;background:conic-gradient(from 0deg,transparent 0deg,rgba(255,140,40,.14) 25deg,transparent 50deg,rgba(255,200,80,.12) 80deg,transparent 110deg,rgba(255,120,30,.13) 150deg,transparent 200deg,rgba(255,180,60,.11) 260deg,transparent 320deg)}.arena-victory-ring{position:absolute;width:min(88vw,400px);height:min(88vw,400px);border-radius:50%;border:2px solid rgba(255,160,60,.55);box-shadow:0 0 48px #ff782866,inset 0 0 36px #ffb4501f;animation:arenaVictoryRing 1.1s ease-out 2}.arena-victory-overlay--champion .arena-victory-ring{border-color:#ffd764a6;box-shadow:0 0 56px #ffc83c80,inset 0 0 40px #ffe6782e}.arena-victory-sand{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.arena-victory-grain{position:absolute;left:calc(50% + (var(--i) - 12) * 4vw);bottom:-8%;width:6px;height:6px;border-radius:50%;background:#ffb45ad9;animation:arenaSandBurst 1.4s ease-out forwards;animation-delay:calc(var(--i) * .03s);opacity:0}.arena-victory-content{position:relative;z-index:2;text-align:center;padding:24px 28px;animation:arenaVictoryContent .55s cubic-bezier(.22,1,.36,1) .12s both}.arena-victory-icon{display:block;font-size:clamp(3rem,12vw,4.5rem);line-height:1;margin-bottom:10px;filter:drop-shadow(0 0 18px rgba(255,160,50,.65));animation:arenaVictoryIcon 1.8s ease-in-out infinite}.arena-victory-eyebrow{font-family:var(--font-fantasy);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:#ffbe78e6;margin-bottom:8px}.arena-victory-title{font-family:var(--font-fantasy);font-size:clamp(1.6rem,6vw,2.4rem);color:#ffe8b8;text-shadow:0 0 24px rgba(255,140,40,.55),0 2px 8px rgba(0,0,0,.6);margin-bottom:10px}.arena-victory-overlay--champion .arena-victory-title{color:#fff4c8;text-shadow:0 0 28px rgba(255,215,80,.65),0 0 48px rgba(255,140,20,.35)}.arena-victory-sub{font-family:var(--font-body);font-size:clamp(1rem,3.5vw,1.15rem);color:#ffdcb4eb;font-style:italic;max-width:28ch;margin:0 auto}@keyframes arenaVictoryIn{0%{opacity:0}to{opacity:1}}@keyframes arenaVictoryFlash{0%{opacity:0}18%{opacity:1}to{opacity:.15}}@keyframes arenaVictoryRays{to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes arenaVictoryRing{0%{transform:scale(.72);opacity:.9}to{transform:scale(1.08);opacity:0}}@keyframes arenaSandBurst{0%{opacity:0;transform:translateY(0) scale(.5)}20%{opacity:1}to{opacity:0;transform:translateY(-55vh) translate(calc((var(--i) - 12) * 6px)) scale(1.2)}}@keyframes arenaVictoryContent{0%{opacity:0;transform:translateY(24px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes arenaVictoryIcon{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.arena-victory-rays,.arena-victory-ring,.arena-victory-grain,.arena-victory-icon{animation:none}.arena-victory-content{animation:arenaVictoryIn .3s ease forwards}}.splash-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:24px;position:relative;overflow:hidden}.splash-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0}.splash-bg-img{width:100%;height:100%;object-fit:cover;object-position:center;filter:blur(2px);transform:scale(1.08);animation:bg-drift 34s ease-in-out infinite;will-change:transform}.splash-bg-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(180,120,40,.05) 0%,transparent 28%),radial-gradient(ellipse 90% 70% at 50% 100%,rgba(60,20,8,.55) 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 50% 0%,rgba(20,10,6,.5) 0%,transparent 50%),#0403029e;z-index:0}.dnd-splash-header{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:8px}.splash-logo-wrap{margin-bottom:0;border-radius:50%;padding:8px;border:2px solid rgba(255,204,0,.35);box-shadow:var(--glow-gold),var(--glow-cyan)}.splash-logo-img{width:clamp(140px,40vw,220px);height:clamp(140px,40vw,220px);object-fit:cover;border-radius:50%;display:block}.dnd-splash-title-panel{width:100%;max-width:340px;padding:14px 18px 12px;border:2px solid #5a3820;border-radius:3px;background:linear-gradient(180deg,rgba(180,120,40,.08) 0%,transparent 38%),linear-gradient(180deg,#1a1410,#0e0a08 55%,#060504);box-shadow:0 4px 22px #000000a6,inset 0 1px #b478321f}.dnd-splash-flame-panel{position:relative;overflow:visible;border-color:#00b4dc73;box-shadow:0 0 24px #00ffff38,0 0 48px #0078c81f,0 4px 22px #000000a6,inset 0 0 24px #00b4ff1a,inset 0 1px #78dcff33;animation:splashFlamePanelGlow 2.4s ease-in-out infinite}.splash-magic-flames{position:absolute;top:-14px;right:-6px;bottom:-16px;left:-6px;pointer-events:none;z-index:0}.splash-flame{position:absolute;bottom:0;width:11%;min-width:14px;max-width:28px;height:clamp(14px,4vw,22px);left:calc(4% + var(--i) * 10.5%);background:radial-gradient(ellipse 80% 100% at 50% 100%,rgba(0,255,255,.95) 0%,rgba(0,180,255,.7) 35%,rgba(0,80,180,.2) 70%,transparent 100%);border-radius:45% 45% 15% 15%;filter:blur(.5px);transform-origin:bottom center;animation:splashFlameDance 1.1s ease-in-out infinite;animation-delay:calc(var(--i) * .11s);opacity:.88}.splash-flame:nth-child(odd){height:clamp(18px,5vw,28px);animation-duration:.95s}.splash-flame:nth-child(3n){background:radial-gradient(ellipse 80% 100% at 50% 100%,rgba(160,240,255,.95) 0%,rgba(64,224,208,.75) 40%,rgba(0,100,160,.15) 75%,transparent 100%)}.dnd-splash-flame-panel .dnd-splash-eyebrow,.dnd-splash-flame-panel .splash-logo,.dnd-splash-flame-panel .dnd-splash-subtitle{position:relative;z-index:1}.dnd-splash-flame-panel .dnd-splash-eyebrow{color:#80d8e8;text-shadow:0 0 10px rgba(0,255,255,.35)}.dnd-splash-flame-panel .splash-logo,.dnd-splash-flame-panel .dnd-splash-logo{color:#d0f8ff;text-shadow:0 0 8px rgba(0,255,255,.95),0 0 20px rgba(0,200,255,.65),0 0 40px rgba(0,120,200,.35),0 2px 6px rgba(0,0,0,.95);animation:splashTitleFlameText 2.2s ease-in-out infinite}.dnd-splash-flame-panel .dnd-splash-subtitle{color:#6a9898;text-shadow:0 0 8px rgba(0,200,200,.25)}@keyframes splashFlamePanelGlow{0%,to{box-shadow:0 0 20px #00ffff2e,0 0 40px #0078c81a,0 4px 22px #000000a6,inset 0 0 20px #00b4ff14;border-color:#00a0c866}50%{box-shadow:0 0 32px #00ffff59,0 0 60px #0096ff33,0 4px 22px #000000a6,inset 0 0 30px #00c8ff26;border-color:#00dcff8c}}@keyframes splashFlameDance{0%,to{transform:scaleY(.75) scaleX(1) translateY(2px);opacity:.55}35%{transform:scaleY(1.15) scaleX(.85) translateY(-3px);opacity:1}70%{transform:scaleY(.9) scaleX(1.05) translateY(-1px);opacity:.75}}@keyframes splashTitleFlameText{0%,to{text-shadow:0 0 8px rgba(0,255,255,.85),0 0 20px rgba(0,200,255,.55),0 0 36px rgba(0,120,200,.3),0 2px 6px rgba(0,0,0,.95)}50%{text-shadow:0 0 12px rgba(160,255,255,1),0 0 28px rgba(0,255,255,.75),0 0 50px rgba(0,180,255,.4),0 2px 6px rgba(0,0,0,.95)}}@media(prefers-reduced-motion:reduce){.dnd-splash-flame-panel,.splash-flame,.dnd-splash-flame-panel .splash-logo{animation:none}.char-create-screen .dnd-create-footer:before,.char-create-screen .dnd-create-avatar{animation:none}}.dnd-splash-eyebrow{display:block;font-family:var(--font-fantasy);font-size:.62rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#a89070;margin-bottom:6px}.splash-logo{font-family:var(--font-fantasy);font-size:clamp(1.5rem,5.5vw,2.4rem);font-weight:700;color:#e8d8c0;text-shadow:0 0 14px rgba(255,180,60,.35),0 2px 6px rgba(0,0,0,.95);margin-bottom:4px;letter-spacing:.12em;text-transform:uppercase;line-height:1.2}.dnd-splash-subtitle{font-size:.78rem;color:#8a7868;font-style:normal;font-family:var(--font-fantasy);letter-spacing:.18em;text-transform:uppercase;margin-bottom:0;text-shadow:none}.splash-actions{display:flex;flex-direction:column;gap:14px;width:100%;max-width:320px;padding-top:8px;margin-top:20px}.splash-actions:before{content:"◆ ─── ⚔ ─── ◆";display:block;font-family:var(--font-fantasy);font-size:.65rem;letter-spacing:.35em;color:#6a4830;text-shadow:0 0 8px rgba(160,90,20,.25);margin-bottom:4px}.splash-actions .btn-wide{width:100%}.splash-account-badge{margin:12px auto 0;padding:8px 16px;border:1px solid rgba(200,160,80,.45);border-radius:999px;background:#140c06b8;color:#e8d4a8;font-size:.85rem;cursor:pointer;display:inline-flex;align-items:center;gap:8px}.splash-account-badge:hover{border-color:#e6be64b3;background:#1e1208d9}.splash-account-reward{animation:pulse-glow 1.5s ease-in-out infinite}.splash-online-btn{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.25}.splash-online-hint{font-size:.72rem;opacity:.75;font-weight:400}.activities-modal .activities-rank{text-align:center;margin:0 0 12px;color:#e8d4a8;font-size:.9rem}.activities-xp-bar{display:block;font-size:.75rem;opacity:.7;margin-top:4px}.activities-scroll{max-height:50vh}.activities-block{margin-bottom:16px}.activities-block h3{font-size:.95rem;margin:0 0 8px;color:#d4b87a}.activities-muted{font-size:.85rem;opacity:.75;margin:0}.activities-weekly{list-style:none;padding:0;margin:0}.activities-weekly li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid rgba(120,90,50,.25);font-size:.85rem}.activities-weekly li.done{opacity:.65}.activities-claim-sm{padding:4px 10px;font-size:.75rem;flex-shrink:0}.activities-msg{text-align:center;color:#a8e6a0;font-size:.85rem;margin:8px 0 0}.splash-subscribe-hint{margin:0 0 4px;padding:12px 14px;font-size:.82rem;line-height:1.45;text-align:center;color:#d4c4a8;background:#140c08b8;border:1px solid rgba(160,110,50,.35);border-radius:10px}.splash-screen>:not(.splash-bg):not(.splash-bg-dim){position:relative;z-index:1}.dnd-menu-screen{display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden}.dnd-menu-bg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0}.dnd-menu-bg-img{width:100%;height:100%;object-fit:cover;object-position:center;filter:blur(2px);transform:scale(1.08);animation:bg-drift 34s ease-in-out infinite;will-change:transform}.dnd-menu-bg-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(180,120,40,.05) 0%,transparent 28%),radial-gradient(ellipse 90% 70% at 50% 100%,rgba(60,20,8,.55) 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 50% 0%,rgba(20,10,6,.5) 0%,transparent 50%),#040302b8;z-index:0}.dnd-menu-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:14px 16px 16px;padding-top:calc(12px + var(--safe-top-effective));-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:contain;position:relative;z-index:1}.dnd-menu-header{margin-bottom:16px}.dnd-menu-title-panel{max-width:100%;text-align:center}.dnd-menu-title{font-size:clamp(1.1rem,4.5vw,1.55rem);margin-bottom:4px}.dnd-menu-subtitle{font-size:.72rem;line-height:1.45;max-width:320px;margin:0 auto}.dnd-menu-body{display:flex;flex-direction:column;gap:0}.dnd-menu-footer{position:relative;z-index:2;width:100%}.dnd-bronze-panel{background:linear-gradient(180deg,rgba(180,120,40,.08) 0%,transparent 38%),linear-gradient(180deg,#1a1410,#0e0a08 55%,#060504);border:2px solid #5a3820;border-radius:3px;box-shadow:0 4px 18px #0000008c,inset 0 1px #b478321f;backdrop-filter:none;-webkit-backdrop-filter:none}.dnd-bronze-panel.selected{border-color:#00c8e68c;box-shadow:0 0 20px #0ff3,0 0 40px #0078c81f,0 4px 18px #0000008c,inset 0 0 16px #00b4ff14}.dnd-menu-screen .section-title{color:#c8a870;border-bottom:1px solid rgba(90,56,32,.65);padding-bottom:8px;text-shadow:0 1px 3px rgba(0,0,0,.8)}.dnd-menu-screen .section-title:before{content:"✦ ";color:#80d8e8;font-size:.75em}.dnd-menu-screen .option-chip{border:2px solid #5a3820;border-radius:3px;background:linear-gradient(180deg,#14100c,#0a0806);font-family:var(--font-fantasy);font-size:.82rem;letter-spacing:.04em;color:#d8c8b0}.dnd-menu-screen .option-chip.active{border-color:#00c8e68c;background:linear-gradient(180deg,#00506440,#0a0806);box-shadow:0 0 14px #00ffff2e;color:#d0f8ff}.dnd-menu-screen .option-hint{color:#8a7868}.dnd-name-input{width:100%;padding:12px 14px;border:2px solid #5a3820;border-radius:3px;background:linear-gradient(180deg,#14100c,#0a0806);color:#e8d8c0;font-family:var(--font-fantasy);font-size:1rem;letter-spacing:.06em;box-shadow:inset 0 2px 8px #00000073}.dnd-name-input::placeholder{color:#6a5848;font-style:italic}.dnd-name-input:focus{outline:none;border-color:#00c8e68c;box-shadow:0 0 12px #00ffff26,inset 0 2px 8px #00000073}.dnd-menu-screen .class-card:hover{border-color:#00b4dc66;box-shadow:0 0 16px #00ffff1f}.dnd-menu-screen .class-card-name{color:#e8d8c0;font-family:var(--font-fantasy)}.dnd-menu-screen .class-card-desc{color:#8a7868}.dnd-menu-screen .class-card-avatar-wrap{border:2px solid #5a3820;border-radius:3px;box-shadow:inset 0 0 10px #00000080}.dnd-menu-screen .class-details{color:#c8b8a0}.dnd-menu-screen .scenario-note{text-align:center;font-size:.78rem;color:#80d8e8;font-family:var(--font-fantasy);letter-spacing:.08em;margin:-4px 0 14px;text-shadow:0 0 8px rgba(0,255,255,.2)}.dnd-menu-screen .scenario-card h3{font-family:var(--font-fantasy);color:#d0f8ff;letter-spacing:.06em}.dnd-menu-screen .scenario-card p{color:#8a7868}.dnd-menu-screen .campaign-card-name{font-family:var(--font-fantasy);color:#d0f8ff;letter-spacing:.04em}.dnd-menu-screen .campaign-card{color:#d8c8b0}.dnd-menu-screen .campaign-empty p{color:#8a7868;margin-bottom:14px}.dnd-menu-screen .campaign-delete-btn{border:2px solid #5a3820;border-radius:3px;background:linear-gradient(180deg,#14100c,#0a0806)}.dnd-menu-screen .points-badge{border:1px solid #5a3820;background:#140e0ad9;font-family:var(--font-fantasy)}.dnd-menu-screen .stat-item-label{color:#c8a870}.dnd-menu-footer .btn-wide{width:100%}.scenario-screen{display:flex;flex-direction:column;min-height:0}.scenario-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px;padding-top:calc(16px + var(--safe-top-effective));-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:contain}.scenario-scroll h2{text-align:center;color:var(--accent-gold);font-size:1.3rem;margin-bottom:8px}.scenario-grid{display:flex;flex-direction:column;gap:12px}.scenario-card{padding:14px;cursor:pointer;position:relative;transition:all .2s}.scenario-card.selected{border-color:var(--accent-gold-bright);box-shadow:var(--glow-gold)}.scenario-card--locked{opacity:.55;cursor:not-allowed}.scenario-lock{position:absolute;top:10px;right:10px;font-size:.75rem;color:var(--accent-gold)}.scenario-icon{font-size:2rem;margin-bottom:6px}.scenario-card h3{color:var(--accent-gold);font-size:1rem;margin-bottom:6px}.scenario-card p{color:var(--text-secondary);font-size:.85rem;line-height:1.45}.scenario-badge{display:inline-block;margin-top:8px;font-size:.75rem;color:var(--accent-green);border:1px solid rgba(64,224,208,.35);padding:2px 8px;border-radius:10px}.scenario-footer{flex-shrink:0;padding:12px 16px;padding-bottom:calc(12px + var(--safe-bottom))}.dnd-menu-screen.scenario-screen .scenario-scroll{padding-bottom:8px}.quest-modal-title{color:var(--accent-gold);margin-bottom:16px;text-align:center}.quest-empty{color:var(--text-secondary);text-align:center;padding:20px}.quest-list{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}.quest-card{width:100%;text-align:left;padding:14px;border:1px solid var(--glass-border);cursor:pointer;color:inherit;font:inherit}.quest-card-header{display:flex;align-items:center;gap:8px}.quest-card-header strong{flex:1;color:var(--accent-gold);font-size:.95rem}.quest-status{font-size:.7rem;color:var(--text-secondary)}.quest-description{color:var(--text-secondary);margin-top:10px;font-size:.9rem;line-height:1.5;text-align:left}.quest-preview{color:var(--text-secondary);font-size:.75rem;margin-top:6px;opacity:.7}.quest-card--open{border-color:var(--accent-gold-dim)}.quest-card--pending{opacity:.72}.quest-card--pending .quest-card-header strong{color:var(--text-secondary)}.quest-modal-footer{text-align:center;margin-top:16px}.splash-rune{font-size:4rem;margin-bottom:32px;filter:drop-shadow(0 0 20px rgba(0,255,255,.5))}.char-create-screen{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;max-width:100%;margin:0 auto;overflow:hidden}.char-create-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:20px 20px 12px;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:contain;scroll-behavior:smooth}.char-create-scroll h2{text-align:center;color:var(--accent-gold);margin-bottom:20px;font-size:1.8rem}.create-section{margin-bottom:22px}.section-title{color:var(--accent-gold);font-family:var(--font-fantasy);font-size:1rem;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:10px}.points-badge{font-size:.85rem;padding:4px 12px;border-radius:20px;background:#00ffff1a;color:var(--accent-cyan-soft);font-family:var(--font-body);border:1px solid var(--glass-border-cyan)}.points-badge.ready{background:#ffcc001f;color:var(--accent-gold-bright);border-color:#ffcc0059}.option-row{display:flex;gap:8px;flex-wrap:wrap;overflow-x:visible;padding-bottom:4px}.option-row.wrap{flex-wrap:wrap;overflow-x:visible}.option-chip{padding:10px 14px;border-radius:10px;border:1px solid rgba(255,215,0,.25);background:#00000040;color:var(--text-primary);font-size:.9rem;white-space:nowrap;transition:all .2s;flex-shrink:0}.option-chip:hover{border-color:#ffd70080}.option-chip.active{border-color:var(--accent-gold-bright);background:#ffcc001f;box-shadow:var(--glow-gold)}.option-hint{font-size:.85rem;color:var(--text-secondary);margin-top:8px;font-style:italic}.class-details{padding:14px;margin-top:12px}.class-role{color:var(--accent-blue);font-size:.9rem;margin-bottom:8px}.ability-list{list-style:none;font-size:.85rem;color:var(--text-secondary)}.ability-list li{margin-bottom:4px}.char-create-footer{flex-shrink:0;padding:16px 20px;border-top:1px solid var(--glass-border);display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 -8px 30px #0006;z-index:10}.dnd-create-footer{padding:8px 10px;padding-bottom:calc(8px + var(--safe-bottom-effective, 0px));gap:6px;border-top:2px solid #5a3820;background:linear-gradient(0deg,rgba(180,120,40,.07) 0%,transparent 38%),linear-gradient(0deg,#060504,#0e0a08 48%,#1a1410);box-shadow:0 -4px 18px #000000a6,inset 0 1px #b478321a;backdrop-filter:none;-webkit-backdrop-filter:none}.char-create-screen .dnd-create-footer{position:relative;border:none;overflow:visible;padding:14px;padding-bottom:calc(14px + var(--safe-bottom-effective, 0px));gap:8px}.char-create-screen .dnd-create-footer-inner{position:relative;z-index:3;gap:12px;align-items:center}.char-create-screen .dnd-create-avatar{width:64px;height:64px;border-width:3px;border-radius:6px;animation:dndCreateAvatarUnifiedPulse 8s ease-in-out infinite}.char-create-screen .dnd-create-summary{gap:3px;flex:1}.char-create-screen .dnd-create-summary strong{font-size:.95rem}.char-create-screen .dnd-create-summary span{font-size:.82rem;color:#a89888}.char-create-screen .dnd-create-footer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;padding:3px 3px 0;background:linear-gradient(120deg,#ffd200d9,#00dcffbf 22%,#fff050e6 48%,#40e0d0cc 72%,#ffd200d9);background-size:280% 280%;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none;z-index:2;animation:dndCreateUnifiedFramePulse 8s ease-in-out infinite}@keyframes dndCreateUnifiedFramePulse{0%,to{background-position:0% 50%;opacity:.55;filter:brightness(.85);box-shadow:0 -4px 20px #ffc8001f,0 -8px 36px #00c8eb1a}50%{background-position:100% 50%;opacity:1;filter:brightness(1.15);box-shadow:0 -6px 32px #ffe60059,0 -12px 64px #00dcff47,0 0 48px #ffd20026}}@keyframes dndCreateAvatarUnifiedPulse{0%,to{border-color:#c8a028b3;box-shadow:0 0 8px #ffc8001a}50%{border-color:#78e6ffa6;box-shadow:0 0 20px #ffdc0040,0 0 32px #00dcff33}}.splash-actions .btn-primary,.splash-actions .btn-secondary,.dnd-menu-screen .btn-primary:not(:disabled),.dnd-menu-screen .btn-secondary:not(:disabled){box-shadow:0 0 18px #00dcff24,0 0 36px #00b4ff12,0 0 22px #a0191459,0 6px 20px #000000bf,inset 0 1px #dc5a3c33,inset 0 -3px 8px #00000080}.splash-actions .btn-secondary,.dnd-menu-screen .btn-secondary:not(:disabled){box-shadow:0 0 16px #00dcff1f,0 0 32px #00b4ff0f,0 0 14px #3c230a59,0 5px 18px #000000b3,inset 0 1px #a06e3226,inset 0 -2px 6px #00000073}.splash-actions .btn-primary:hover:not(:disabled),.dnd-menu-screen .btn-primary:hover:not(:disabled){box-shadow:0 0 24px #00e6ff33,0 0 48px #00beff1a,0 0 36px #dc321e8c,0 8px 24px #000000d9,inset 0 1px #ff785040}.splash-actions .btn-secondary:hover:not(:disabled),.dnd-menu-screen .btn-secondary:hover:not(:disabled){box-shadow:0 0 22px #00e6ff2e,0 0 40px #00beff14,0 0 28px #a05a1473,0 6px 20px #000c,inset 0 1px #c8963c33}.dnd-create-footer-inner{display:flex;align-items:center;gap:8px;width:100%}.dnd-create-avatar{width:40px;height:40px;border-radius:3px;object-fit:cover;object-position:top center;flex-shrink:0;border:2px solid #8b5a28;box-shadow:inset 0 0 8px #00000080}.dnd-create-summary{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;line-height:1.25}.dnd-create-summary strong{font-family:var(--font-fantasy);font-size:.78rem;color:#e8d8c0;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dnd-create-summary span{font-size:.68rem;color:#8a7868;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dnd-create-actions{display:flex;gap:6px;flex-shrink:0}.btn-compact{min-height:40px;padding:8px 12px;font-size:.72rem;letter-spacing:.06em;white-space:nowrap}.dnd-create-footer .btn-start-game{flex:0 1 auto;max-width:none;font-size:.72rem;padding:8px 12px;min-height:40px}.dnd-create-footer .footer-hint{font-size:.72rem;margin:0;line-height:1.3}.footer-preview{display:flex;align-items:center;gap:12px;width:100%}.footer-avatar{font-size:2.5rem}.footer-info{display:flex;flex-direction:column;gap:2px;font-size:.85rem}.footer-info strong{color:var(--accent-gold);font-family:var(--font-fantasy)}.footer-info span{color:var(--text-secondary)}.btn-start-game{flex:1;max-width:none;font-size:1.2rem;padding:16px 32px}.char-create-footer-actions{display:flex;gap:10px;width:100%;max-width:400px}.char-create-footer-actions .btn-secondary{flex-shrink:0;padding:16px 20px}.footer-hint{font-size:.85rem;color:var(--accent-red);text-align:center}.char-create{height:100%;overflow-y:auto;padding:20px;max-width:900px;margin:0 auto}.char-create h2{text-align:center;color:var(--accent-gold);margin-bottom:24px;font-size:1.8rem}.class-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:28px}.class-card{padding:20px;text-align:center;cursor:pointer;transition:all .3s;border:2px solid transparent}.class-card.selected{border-color:var(--accent-gold-bright);box-shadow:var(--glow-gold),inset 0 0 20px #ffcc0014}.class-card:hover{transform:translateY(-4px);border-color:#00ffff59;box-shadow:var(--glow-cyan)}.class-card-icon{font-size:3rem;margin-bottom:8px}.class-card-avatar-wrap{width:100%;aspect-ratio:1;max-height:120px;margin:0 auto 10px;border-radius:12px;overflow:hidden;border:2px solid rgba(255,204,0,.25);box-shadow:0 4px 16px #00000073}.class-card-avatar{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}.class-card.selected .class-card-avatar-wrap{border-color:var(--accent-gold-bright);box-shadow:var(--glow-gold)}.footer-avatar-img{width:48px;height:48px;border-radius:10px;object-fit:cover;object-position:top center;flex-shrink:0;border:1px solid rgba(255,204,0,.35)}.sheet-hero{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:16px}.sheet-hero-avatar{width:80px;height:80px;border-radius:14px;object-fit:cover;object-position:top center;border:2px solid rgba(255,204,0,.4);box-shadow:var(--glow-gold)}.character-avatar-img,.mobile-char-avatar-img{object-fit:cover;object-position:top center;flex-shrink:0}.character-avatar-img{width:88px;height:88px;border-radius:50%;margin:0 auto 12px;display:block}.class-card-name{font-family:var(--font-fantasy);font-size:1.2rem;color:var(--accent-gold);margin-bottom:6px}.class-card-desc{font-size:.85rem;color:var(--text-secondary)}.name-input{width:100%;padding:14px 18px;background:#00000059;border:1px solid var(--glass-border);border-radius:12px;color:var(--text-primary);font-size:1.1rem;margin-bottom:24px;outline:none;transition:border-color .3s}.name-input:focus{border-color:var(--accent-gold);box-shadow:0 0 12px #ffd70033}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:24px}.stat-item{padding:14px;text-align:center}.stat-item-label{font-size:.85rem;color:var(--text-secondary);margin-bottom:4px}.stat-item-value{font-size:1.8rem;font-weight:700;color:var(--accent-gold);font-family:var(--font-fantasy)}.stat-item-mod{font-size:.9rem;color:var(--accent-blue)}.stat-controls{display:flex;justify-content:center;gap:8px;margin-top:8px}.stat-btn{width:32px;height:32px;border-radius:8px;border:1px solid rgba(255,215,0,.3);background:#ffd7001a;color:var(--accent-gold);font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.stat-btn:hover:not(:disabled){background:#ffd70040}.stat-btn:disabled{opacity:.3;cursor:not-allowed}.points-remaining{text-align:center;color:var(--accent-blue);margin-bottom:20px;font-size:1rem}.char-preview{padding:20px;margin-bottom:24px;text-align:center}.char-preview-avatar{font-size:4rem;margin-bottom:8px}.game-layout{display:flex;flex:1;min-height:0;overflow:hidden}.character-panel{padding:16px;flex-direction:column;gap:16px;overflow-y:auto}.character-avatar{aspect-ratio:1;border-radius:50%;border:3px solid var(--accent-gold-dim);box-shadow:var(--glow-gold),var(--glow-cyan);display:flex;align-items:center;justify-content:center;font-size:4rem;background:radial-gradient(circle,#121c38e6,#04060ff2)}.char-name{font-family:var(--font-fantasy);text-align:center;color:var(--accent-gold);font-size:1.1rem}.char-class{text-align:center;color:var(--text-secondary);font-size:.9rem}.panel-btns{display:flex;flex-direction:column;gap:8px}.panel-btn{padding:10px;text-align:left;font-size:.9rem}.char-gold{text-align:center;color:var(--accent-gold)}.chat-area{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}.chat-header{padding:16px 20px;border-bottom:1px solid var(--glass-border);text-align:center;background:var(--glass)}.chat-header h1{color:var(--accent-gold);font-size:1.3rem;text-shadow:0 0 10px rgba(255,215,0,.4)}.chat-header--compact h1{display:none}.chat-combat-enemy{margin-top:10px;text-align:left}.chat-combat-enemy .combat-enemy-bar{margin:0}.mechanic-title{font-family:var(--font-fantasy);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#c87850;margin-bottom:8px;text-shadow:0 0 12px rgba(180,60,30,.45)}.mechanic-line{font-size:.9rem;line-height:1.45;padding:2px 0}.mechanic-good{color:#7dcea0}.mechanic-bad{color:var(--accent-red)}.quest-hint{font-size:.8rem;color:var(--text-secondary);text-align:center;margin-bottom:12px}.quest-description{font-size:.88rem;color:var(--text-primary);margin-top:8px;line-height:1.45;text-align:left}.quest-reward-hint{font-size:.78rem;color:var(--accent-gold-dim);margin-top:6px}.quest-reward-done{font-size:.8rem;color:#7dcea0;margin-top:6px}.campaign-card-wrap{display:flex;gap:8px;align-items:stretch}.campaign-card-wrap .campaign-card{flex:1}.campaign-delete-btn{flex-shrink:0;width:44px;min-height:44px;border-radius:12px;border:1px solid rgba(232,93,93,.35);background:#e85d5d1f;font-size:1.1rem;touch-action:manipulation}.chat-location{font-size:.85rem;color:var(--text-secondary);margin-top:4px}.chat-window{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overflow-anchor:none;scroll-behavior:auto;padding:16px;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:contain}.chat-window::-webkit-scrollbar{width:6px}.chat-window::-webkit-scrollbar-track{background:#0003}.chat-window::-webkit-scrollbar-thumb{background:var(--accent-gold);border-radius:3px}.message{max-width:85%;padding:14px 16px;border-radius:14px;animation:slideInUp .35s ease;line-height:1.6;scroll-margin-top:6px;overflow-anchor:none}.message-scroll-anchor{display:block;width:100%;height:0;scroll-margin-top:12px;pointer-events:none}.ai-message{align-self:flex-start;background:linear-gradient(135deg,#0a1022eb,#121c38e0);border:1px solid rgba(255,204,0,.22);box-shadow:inset 0 0 20px #00ffff08,0 4px 16px #00000059}.player-message{align-self:flex-end;background:linear-gradient(135deg,#00ffff1a,#40e0d014);border:1px solid var(--glass-border-cyan);box-shadow:var(--glow-cyan)}.message-time{font-size:.7rem;color:var(--text-secondary);margin-top:6px;text-align:right}.narrative{color:var(--text-primary);font-style:italic;margin-bottom:8px;scroll-margin-top:16px}.mechanic{margin:8px 0;padding:0;background:transparent;border-radius:0;border-left:none;box-shadow:none}.dice-scroll-anchor{display:block;width:100%;height:0;scroll-margin-top:16px;pointer-events:none}.dice-mech-block{position:relative;scroll-margin-top:16px;padding:10px 10px 8px;border-radius:4px;border:2px solid rgba(90,56,32,.75);background:linear-gradient(180deg,rgba(0,180,220,.06) 0%,transparent 42%),linear-gradient(180deg,#14100c,#0a0806);box-shadow:0 0 20px #00c8eb14,inset 0 1px #b478321a}.dice-mech-block--fate{overflow:hidden;padding-top:0;border-color:#785028d9;background:radial-gradient(ellipse 80% 60% at 50% 0%,rgba(0,200,235,.1) 0%,transparent 55%),linear-gradient(180deg,#16120e,#0a0806)}.dice-mech-block--combat{border-color:#c85032b3;background:radial-gradient(ellipse 90% 55% at 50% 0%,rgba(220,60,40,.14) 0%,transparent 58%),linear-gradient(180deg,#1a100c,#0a0606);box-shadow:0 0 24px #c8321e1f,inset 0 1px #ff783c1a}.dice-mech-block--check{border-color:#00b4dc8c;background:radial-gradient(ellipse 85% 55% at 50% 0%,rgba(0,200,235,.12) 0%,transparent 58%),linear-gradient(180deg,#101820,#080c10);box-shadow:0 0 22px #00b4dc1a,inset 0 1px #00dcff14}.dice-mech-block--combat .dice-mech-title{color:#f0a080;text-shadow:0 0 12px rgba(255,100,60,.35)}.dice-mech-block--check .dice-mech-title{color:#80d8e8}.dice-mech-header-art{position:relative;height:52px;margin:0 -10px 8px;background:linear-gradient(90deg,transparent 0%,rgba(0,200,235,.08) 50%,transparent 100%),linear-gradient(180deg,rgba(20,16,12,.95) 0%,transparent 100%);border-bottom:1px solid rgba(90,56,32,.5)}.dice-mech-corner{position:absolute;width:18px;height:18px;border-color:#c8a8708c;border-style:solid}.dice-mech-corner--tl{top:8px;left:10px;border-width:2px 0 0 2px}.dice-mech-corner--tr{top:8px;right:10px;border-width:2px 2px 0 0}.dice-mech-corner--bl{bottom:6px;left:10px;border-width:0 0 2px 2px}.dice-mech-corner--br{bottom:6px;right:10px;border-width:0 2px 2px 0}.dice-mech-header-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.dice-mech-header-d20{width:38px;height:38px;display:flex;align-items:center;justify-content:center;font-family:var(--font-fantasy);font-size:1.1rem;font-weight:700;color:#d0f8ff;text-shadow:0 0 12px rgba(0,255,255,.45);background:linear-gradient(145deg,#1e3040,#0a1418 55%,#1a2830);border:2px solid rgba(0,200,230,.55);clip-path:polygon(50% 0%,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);box-shadow:0 0 16px #00dcff33,inset 0 1px #ffffff1f}.dice-mech-header-art--combat .dice-mech-header-d20{border-color:#dc5032a6;background:linear-gradient(145deg,#401810,#180808 55%,#301010);box-shadow:0 0 18px #dc3c284d;color:#ffb0a0;text-shadow:0 0 10px rgba(255,80,40,.5)}.dice-mech-header-art--check .dice-mech-header-d20{border-color:#00c8e699;box-shadow:0 0 18px #00c8ff40}.dice-mech-title-wrap{text-align:center;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid rgba(90,56,32,.55)}.dice-mech-title-wrap .dice-mech-title{margin-bottom:4px;padding-bottom:0;border-bottom:none}.dice-mech-subtitle{margin:0;font-size:.72rem;color:#7a9088;letter-spacing:.03em}.dice-mech-list--combat{gap:10px}.dice-mech-title{color:#80d8e8;text-shadow:0 0 10px rgba(0,255,255,.25);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid rgba(90,56,32,.55)}.dice-mech-list{display:flex;flex-direction:column;gap:8px}.dice-mech-legend{margin:0 0 4px;padding:6px 8px;font-size:.72rem;line-height:1.45;color:#7a9088;border-radius:3px;background:#0000002e;border:1px dashed rgba(90,56,32,.35)}.dice-mech-legend span{color:#80d8e8;font-weight:600}.dice-mech-label-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:4px}.dice-mech-role{font-size:.65rem;letter-spacing:.05em;text-transform:uppercase;color:#6a9898;padding:2px 6px;border-radius:2px;border:1px solid rgba(0,160,200,.25);background:#00283259}.dice-mech-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:3px;border:1px solid rgba(90,56,32,.45);background:#00000038}.dice-mech-row--roll{border-color:#00a0c840}.dice-mech-row--success,.dice-mech-row--crit{border-color:#50dc6459;background:#143c1e40}.dice-mech-row--fail,.dice-mech-row--fumble{border-color:#dc505059;background:#3c141440}.dice-mech-row--chip.dice-mech-row--good{border-color:#50dc644d}.dice-mech-row--chip.dice-mech-row--bad{border-color:#dc50504d}.dice-mech-row--quest{border-color:#fc06;background:#3c2d0a4d}.dice-mech-badge{flex-shrink:0;width:42px;height:42px;border-radius:6px;border:2px solid rgba(0,200,230,.45);background:linear-gradient(145deg,#1a2830,#0a1014);box-shadow:0 0 12px #00dcff26;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.dice-mech-badge-art{font-size:.7rem;color:#00dcff8c;line-height:1;margin-bottom:1px}.dice-mech-badge--player{border-color:#50c87880;background:linear-gradient(145deg,#1a3028,#0a1410);box-shadow:0 0 12px #50dc7826}.dice-mech-badge--player .dice-mech-badge-sides{color:#a8f0c0;text-shadow:0 0 8px rgba(80,255,140,.35)}.dice-mech-badge--enemy{border-color:#dc5a4680;background:linear-gradient(145deg,#301a18,#140a08);box-shadow:0 0 12px #dc503c26}.dice-mech-badge--enemy .dice-mech-badge-sides{color:#f0b0a0;text-shadow:0 0 8px rgba(255,100,80,.35)}.dice-mech-badge-sides{font-family:var(--font-fantasy);font-size:1.05rem;font-weight:700;color:#d0f8ff;text-shadow:0 0 8px rgba(0,255,255,.4)}.dice-mech-badge-label{font-size:.55rem;letter-spacing:.06em;color:#6a9898;margin-top:2px}.dice-mech-main{flex:1;min-width:0}.dice-mech-label{font-family:var(--font-fantasy);font-size:.78rem;letter-spacing:.05em;color:#c8a870;margin-bottom:4px}.dice-mech-formula{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:2px}.dice-mech-formula-part{display:inline-flex;align-items:baseline;gap:5px}.dice-mech-formula-part--total{padding-left:4px;border-left:1px solid rgba(90,56,32,.45)}.dice-mech-formula-key{font-size:.68rem;color:#8a7868;text-transform:lowercase}.dice-mech-formula-nat{font-size:1rem;font-weight:700;color:#80d8e8;font-variant-numeric:tabular-nums;text-shadow:0 0 8px rgba(0,255,255,.25)}.dice-mech-formula-mod{font-size:.9rem;font-weight:600;color:#c8a870;font-variant-numeric:tabular-nums}.dice-mech-formula-eq{font-size:.95rem;font-weight:600;color:#e8e0d0;font-variant-numeric:tabular-nums}.dice-mech-vs{font-size:.78rem;color:#a89888;margin-top:4px}.dice-mech-damage{margin-top:6px;padding-top:6px;border-top:1px dashed rgba(90,56,32,.45);display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}.dice-mech-damage-tag{font-size:.72rem;color:#c87850;font-family:var(--font-fantasy);letter-spacing:.04em}.dice-mech-hp-loss{margin-top:4px;font-size:.78rem;color:#e85d5d;font-weight:600}.dice-mech-outcome{flex-shrink:0;font-size:.68rem;font-family:var(--font-fantasy);letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:3px;align-self:center}.dice-mech-outcome--success{color:#7dcea0;border:1px solid rgba(80,220,100,.4);background:#143c1e66}.dice-mech-outcome--crit{color:#ffe066;border:1px solid rgba(255,230,0,.5);background:#3c320a73}.dice-mech-outcome--fail,.dice-mech-outcome--fumble{color:#e85d5d;border:1px solid rgba(220,80,80,.4);background:#3c141466}.dice-mech-chip-icon{font-size:1.2rem;flex-shrink:0}.dice-mech-chip-value{font-family:var(--font-fantasy);font-size:.92rem;font-weight:700;letter-spacing:.04em}.dice-mech-row--chip.dice-mech-row--good .dice-mech-chip-value{color:#7dcea0}.dice-mech-row--chip.dice-mech-row--bad .dice-mech-chip-value{color:#e85d5d}.dice-mech-quest-text{font-family:var(--font-fantasy);font-size:.85rem;color:gold;letter-spacing:.04em}.dice-mech-row--plain{font-size:.88rem;line-height:1.45;color:#c8b8a0}.dice-mech-row--plain.dice-mech-row--good{color:#7dcea0}.dice-mech-row--plain.dice-mech-row--bad{color:#e85d5d}.dice-mech-plain-text{font-size:.85rem;color:#b8a898;line-height:1.4}.dice-mech-row--player{border-color:#50c87847;background:#10281c47}.dice-mech-row--enemy{border-color:#dc5a4647;background:#28100e47}.dice-mech-banner{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:3px;border:1px solid rgba(90,56,32,.45);background:#00000040;font-family:var(--font-fantasy);font-size:.82rem;letter-spacing:.04em}.dice-mech-banner-icon{font-size:1.1rem;flex-shrink:0}.dice-mech-banner--success{border-color:#50dc6466;background:#143c1e59;color:#7dcea0}.dice-mech-banner--fail,.dice-mech-banner--fumble{border-color:#dc505066;background:#3c141459;color:#e85d5d}.dice-mech-banner--player.dice-mech-banner--success{border-color:#50dc6473}.dice-mech-banner--enemy.dice-mech-banner--success{border-color:#50b4dc66;color:#80d8e8}.dice-mech-phase{border-radius:4px;border:1px solid rgba(90,56,32,.5);overflow:hidden;background:#00000026}.dice-mech-phase--player{border-color:#50c87859;box-shadow:inset 0 1px #50dc7814}.dice-mech-phase--enemy{border-color:#dc5a4659;box-shadow:inset 0 1px #dc503c14}.dice-mech-phase-head{display:flex;align-items:center;gap:8px;padding:7px 10px;font-family:var(--font-fantasy);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid rgba(90,56,32,.4)}.dice-mech-phase--player .dice-mech-phase-head{background:linear-gradient(90deg,#143c238c,#0a1e1433);color:#7dcea0}.dice-mech-phase--enemy .dice-mech-phase-head{background:linear-gradient(90deg,#3c14128c,#1e0a0833);color:#e8a090}.dice-mech-phase-icon{font-size:1rem}.dice-mech-phase-body{display:flex;flex-direction:column;gap:6px;padding:8px}.dice-mech-phase-body .dice-mech-row,.dice-mech-phase-body .dice-mech-banner{border-radius:2px}.dice-board{display:flex;flex-direction:column;gap:10px}.dice-board--combat{gap:12px}.dice-panel{padding:10px 12px;border-radius:6px;border:1px solid rgba(90,56,32,.55);background:linear-gradient(135deg,#14100ce6,#080604f2)}.dice-panel--combat{border-color:#c8783c73;box-shadow:inset 0 1px #ffb45014}.dice-panel--skill{border-color:#00b4dc59;box-shadow:inset 0 1px #00dcff14}.dice-panel__head{display:flex;align-items:flex-start;gap:10px;margin-bottom:8px}.dice-panel__icon{font-size:1.5rem;line-height:1;filter:drop-shadow(0 0 6px rgba(255,200,80,.35))}.dice-panel__title{font-family:var(--font-fantasy);font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:#80d8e8}.dice-panel__sub{font-size:.92rem;color:#e8dcc8;margin-top:2px}.dice-panel__vuln{margin-top:4px;font-size:.78rem;color:#f0c060;line-height:1.35}.dice-hp{margin:6px 0;padding:8px;border-radius:4px;background:#00000040}.dice-hp--enemy{border-left:3px solid #c05040}.dice-hp--player{border-left:3px solid #40a060}.dice-hp__head{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:.78rem}.dice-hp__label{flex:1;color:#a0a8b0}.dice-hp__vals{font-weight:700;color:#f0ece4}.dice-hp__pct{font-size:.68rem;font-weight:700;color:#a0a8b0;padding:1px 5px;border-radius:3px;background:#0000004d}.dice-hp__track{position:relative;height:10px;border-radius:5px;background:#00000073;overflow:hidden}.dice-hp__shine{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),transparent);transform:translate(-100%);animation:barShimmer 3.5s ease-in-out infinite;pointer-events:none}.dice-hp__fill{height:100%;border-radius:4px;transition:width .4s ease}.dice-hp--enemy .dice-hp__fill{background:linear-gradient(90deg,#8b2020,#e05040)}.dice-hp--enemy.dice-hp--low .dice-hp__fill{background:linear-gradient(90deg,#601010,#ff3030);animation:pulse-hp 1.2s ease infinite}.dice-hp--enemy.dice-hp--mid .dice-hp__fill{background:linear-gradient(90deg,#8b3020,#e06040)}.dice-hp--player .dice-hp__fill{background:linear-gradient(90deg,#1a6030,#40c070)}.dice-pill{display:flex;align-items:center;gap:8px;margin-top:6px;padding:6px 10px;border-radius:20px;font-size:.78rem;color:#c8b8a0;background:#0000004d;border:1px solid rgba(90,56,32,.4)}.dice-pill strong{color:#ffd080}.dice-story{margin:8px 0 0;padding:0 0 0 18px;font-size:.82rem;color:#d0c4b0;line-height:1.5}.dice-story li+li{margin-top:4px}.dice-stamp{margin-left:auto;padding:3px 8px;border-radius:4px;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.dice-stamp--success{background:#28783c80;color:#90ffb0}.dice-stamp--crit{background:linear-gradient(135deg,#b48c14a6,#dcb42880);color:#ffe080;box-shadow:0 0 10px #ffc83c59;animation:critStampPulse 1.8s ease-in-out infinite}.dice-stamp--fail,.dice-stamp--fumble{background:#8c282880;color:#ff9090}.dice-stamp--neutral{background:#3c3c5080;color:#b0b8c8}.dice-phase{border-radius:6px;overflow:hidden;border:1px solid rgba(90,56,32,.45)}.dice-phase--player{border-color:#3ca05a66}.dice-phase--enemy{border-color:#b43c3266}.dice-phase__head{display:flex;align-items:center;gap:8px;padding:8px 12px;font-family:var(--font-fantasy);font-size:.8rem;letter-spacing:.05em;text-transform:uppercase}.dice-phase__icon{font-size:1.1rem;line-height:1}.dice-phase__title{flex:1}.dice-card-wrap{animation:diceCardIn .45s ease both;animation-delay:calc(var(--dice-i, 0) * .08s)}.dice-phase--player .dice-phase__head{background:linear-gradient(90deg,rgba(30,80,50,.55),transparent);color:#90e8a8}.dice-phase--enemy .dice-phase__head{background:linear-gradient(90deg,rgba(100,30,25,.55),transparent);color:#f0a090}.dice-phase__body{display:flex;flex-direction:column;gap:8px;padding:8px;background:#0003}.dice-timeline{display:flex;flex-direction:column;gap:10px}.dice-phase__body--cards{gap:10px}.dice-panel__ac{color:#a0a8b0;font-size:.82rem;font-weight:500}.dice-card{border-radius:8px;border:1px solid rgba(90,56,32,.5);background:linear-gradient(165deg,#1c1612f5,#080604fa);overflow:hidden;box-shadow:0 2px 8px #00000040}.dice-card--combat.dice-card--player{border-color:#40c8789e;background:linear-gradient(165deg,#0a2a18f5,#040a06fc);box-shadow:inset 0 0 0 1px #40c8782e,0 0 14px #288c501f}.dice-card--combat.dice-card--enemy{border-color:#e6483aa6;background:linear-gradient(165deg,#340a0af7,#0a0404fc);box-shadow:inset 0 0 0 1px #e6483a33,0 0 14px #b4282824}.dice-phase--player .dice-phase__head{background:#206e3e59;color:#8ef0b0;border:1px solid rgba(64,200,120,.35)}.dice-phase--enemy .dice-phase__head{background:#821c1c61;color:#ffb0a8;border:1px solid rgba(220,70,55,.4)}.dice-dmg--player .dice-dmg__total{color:#7ef0a8}.dice-dmg--enemy .dice-dmg__total{color:#ff8a80}.dice-face--player .dice-face__cube{border-color:#40c8788c}.dice-face--enemy .dice-face__cube{border-color:#dc46378c}.dice-card--skill{border-color:#00a0c859}.dice-card--skill.dice-card--success{border-color:#3cb4648c;box-shadow:inset 0 0 28px #288c4626,0 0 12px #288c461a}.dice-card--skill.dice-card--fail,.dice-card--skill.dice-card--fumble{border-color:#b43c3280;box-shadow:inset 0 0 28px #8c282826,0 0 12px #8c282814}.dice-card--skill.dice-card--crit{border-color:#dcb42899;box-shadow:inset 0 0 32px #c8a01433,0 0 16px #dcb42826}.dice-card__dc-badge{margin-left:6px;padding:1px 6px;border-radius:3px;font-size:.62rem;font-weight:700;color:#80d8e8;background:#00506466;border:1px solid rgba(0,180,220,.35);letter-spacing:.04em}.dice-card--stat-str{border-left:3px solid #c06040}.dice-card--stat-dex{border-left:3px solid #40a0c0}.dice-card--stat-con{border-left:3px solid #60a050}.dice-card--stat-int{border-left:3px solid #5080d0}.dice-card--stat-wis{border-left:3px solid #a080d0}.dice-card--stat-cha{border-left:3px solid #c070a0}.dice-card--success,.dice-card--crit{box-shadow:inset 0 0 24px #28783c1f}.dice-card--fail,.dice-card--fumble{box-shadow:inset 0 0 24px #8c28281f}.dice-card__head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px 8px;border-bottom:1px solid rgba(90,56,32,.28);background:#00000026}.dice-card__step{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:.72rem;font-weight:700;color:#1a1410;background:linear-gradient(145deg,#d4a850,#8a6020);flex-shrink:0}.dice-card__stat-icon{font-size:1.4rem;line-height:1;flex-shrink:0;filter:drop-shadow(0 0 4px rgba(255,200,100,.2))}.dice-card__titles{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.dice-card__stat{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:#8090a0}.dice-card__name{font-size:.88rem;color:#f0e8d8;font-weight:600}.dice-card__body{display:flex;flex-direction:column;align-items:center;gap:12px;padding:14px 12px}.dice-card__foot{padding:8px 12px;font-size:.8rem;border-top:1px solid rgba(90,56,32,.25);color:#c8b8a0}.dice-card__foot--hurt{background:#50141459;color:#f0a0a0}.dice-card__foot--dmg{background:#50320a59;color:#ffd080}.dice-card__notation{font-size:.72rem;opacity:.75}.dice-face{display:flex;flex-direction:column;align-items:center;gap:8px}.dice-face__cube{position:relative;width:72px;height:72px;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#1a3040,#0a1418,#1e2830);border:2px solid rgba(0,200,230,.5);clip-path:polygon(50% 0%,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);box-shadow:0 0 20px #00c8ff33,inset 0 2px 4px #ffffff1a}.dice-face--lg .dice-face__cube{width:84px;height:84px}.dice-face__nat{font-family:var(--font-fantasy);font-size:1.75rem;font-weight:700;color:#d0f8ff;text-shadow:0 0 12px rgba(0,255,255,.5);line-height:1}.dice-face--lg .dice-face__nat{font-size:2rem}.dice-face__tag{position:absolute;bottom:6px;font-size:.55rem;letter-spacing:.08em;color:#00c8e6b3;text-transform:uppercase}.dice-face__math{display:flex;align-items:center;gap:6px;font-family:var(--font-fantasy);font-size:1.1rem}.dice-face__op,.dice-face__eq{color:#708090;font-weight:400}.dice-face__mod{padding:2px 8px;border-radius:4px;background:#00785059;color:#80ffb0;font-weight:700}.dice-face__total{font-size:1.35rem;font-weight:700;color:#ffe080;text-shadow:0 0 8px rgba(255,200,80,.4)}.dice-threshold{width:100%;max-width:300px}.dice-threshold__vs{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:8px}.dice-threshold__roll{font-family:var(--font-fantasy);font-size:1.5rem;font-weight:700;color:#ffe080;text-shadow:0 0 10px rgba(255,200,80,.4);min-width:2.2rem;text-align:center}.dice-threshold__sep{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:#607080;font-weight:600}.dice-threshold__target{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:6px;font-family:var(--font-fantasy);font-size:1.1rem;font-weight:700;border:1px solid rgba(255,200,80,.35);background:#503c1459;color:#ffd080}.dice-threshold__target--ac{border-color:#648cc866;background:#1e325066;color:#a0c8f0}.dice-threshold__labels{display:flex;justify-content:space-between;font-size:.75rem;color:#a0a8b0;margin-bottom:6px}.dice-threshold__labels strong{color:#f0ece4}.dice-threshold__track{position:relative;height:10px;border-radius:5px;background:#00000073;overflow:visible}.dice-threshold__fill{height:100%;border-radius:5px;transition:width .35s ease}.dice-threshold--hit .dice-threshold__fill{background:linear-gradient(90deg,#1a5030,#40c070)}.dice-threshold--miss .dice-threshold__fill{background:linear-gradient(90deg,#502020,#c04040)}.dice-threshold__marker{position:absolute;top:-4px;width:4px;height:18px;background:#ffd080;border-radius:2px;transform:translate(-50%);box-shadow:0 0 8px #ffc850b3}.dice-threshold__marker-label{position:absolute;top:-16px;left:50%;transform:translate(-50%);font-size:.55rem;font-weight:700;letter-spacing:.06em;color:#ffd080;white-space:nowrap}.dice-threshold__gap{font-size:.72rem;font-weight:600;opacity:.85}.dice-threshold__gap--plus{color:#80e8a8}.dice-threshold--miss .dice-threshold__gap{color:#e88888}.dice-threshold__hint{margin:6px 0 0;font-size:.78rem;font-weight:700;text-align:center;letter-spacing:.04em;text-transform:uppercase}.dice-threshold__hint--hit{color:#80e8a8}.dice-threshold__hint--miss{color:#e88888}.dice-dmg__dice{font-size:.68rem;color:#a08060;text-transform:uppercase;letter-spacing:.05em;margin-right:2px}.dice-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}.dice-dmg--enemy{border-color:#c8463759;background:linear-gradient(135deg,#3c140f80,#14080699)}.dice-dmg--enemy .dice-dmg__total{color:#ff6050}.dice-dmg--enemy .dice-dmg__tag{color:#c08070}.dice-dmg--player{border-color:#46a05a4d;background:linear-gradient(135deg,#14321e73,#08140c8c)}.dice-face--player .dice-face__cube{border-color:#50b46480;box-shadow:0 0 12px #3cb45033}.dice-face--enemy .dice-face__cube{border-color:#c8503c8c;box-shadow:0 0 12px #c83c2840}.dice-face--success .dice-face__cube,.dice-face--player .dice-face__cube{border-color:#50b4648c;box-shadow:0 0 16px #3cb4504d}.dice-face--fail .dice-face__cube,.dice-face--fumble .dice-face__cube{border-color:#c83c3299;box-shadow:0 0 14px #b4281e59}.dice-face--crit .dice-face__cube{border-color:#ffc83cbf;box-shadow:0 0 22px #ffc83c73;animation:critFaceGlow 2s ease-in-out infinite}.dice-face--crit .dice-face__nat{color:#ffe080;text-shadow:0 0 16px rgba(255,220,80,.7)}.dice-face--fumble .dice-face__nat{color:#ff9090;text-shadow:0 0 12px rgba(255,60,60,.5)}.dice-face--enemy-hit .dice-face__cube{border-color:#dc4632a6;box-shadow:0 0 16px #c8321e66}.dice-face--enemy-miss .dice-face__cube{border-color:#64647873;opacity:.85}.dice-card--enemy.dice-card--success,.dice-card--enemy.dice-card--crit{box-shadow:inset 0 0 20px #b4322826}.dice-banner--success{border-color:#3c8c5073}.dice-banner--fumble{border-color:#a0282880}.dice-dmg{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;background:#50280a40;border:1px solid rgba(200,120,40,.35)}.dice-dmg__icon{font-size:1.5rem}.dice-dmg__vals{display:flex;align-items:center;gap:6px;font-family:var(--font-fantasy);font-size:1.2rem}.dice-dmg__rolls{color:#ffe0a0;font-weight:700}.dice-dmg__mod{color:#80ffb0;font-weight:700}.dice-dmg__total{color:#ff8060;font-size:1.5rem;font-weight:700}.dice-dmg__tag{font-size:.68rem;color:#a08060;text-transform:uppercase;letter-spacing:.06em}.dice-banner{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;font-size:.85rem;font-weight:600}.dice-banner--success{background:#1e502d73;color:#90e8a8;border:1px solid rgba(60,160,90,.4)}.dice-banner--fail,.dice-banner--fumble{background:#50191973;color:#f0a0a0;border:1px solid rgba(180,60,50,.4)}.dice-banner__icon{font-size:1.2rem}.dice-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:20px;font-size:.82rem;font-weight:600;align-self:flex-start}.dice-chip--good{background:#1e462880;color:#90e8a8;border:1px solid rgba(60,140,80,.4)}.dice-chip--bad{background:#46191980;color:#f0a0a0;border:1px solid rgba(160,50,50,.4)}.dice-chip__icon{font-size:1rem}.dice-plain,.dice-mech-simple-text{margin:0;font-size:.84rem;color:#c8b8a0;line-height:1.45}.dice-mech-combat-summary-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}.dice-mech-combat-summary-icon{font-size:1.4rem;line-height:1}.dice-mech-combat-summary-title{font-family:var(--font-fantasy);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:#c8a870}.dice-mech-combat-summary-enemy{font-size:.95rem;font-weight:700;color:#f0e0d0;margin-top:2px}.dice-mech-hpbar{margin:8px 0;padding:8px 10px;border-radius:3px;background:#00000040;border:1px solid rgba(90,56,32,.4)}.dice-mech-hpbar--enemy{border-color:#dc5a4659}.dice-mech-hpbar--player{border-color:#50c87859}.dice-mech-hpbar-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:.78rem}.dice-mech-hpbar-icon{font-size:1rem}.dice-mech-hpbar-label{flex:1;color:#c8b8a0}.dice-mech-hpbar-values{font-weight:700;font-variant-numeric:tabular-nums;color:#ffe8d0}.dice-mech-hpbar-track{height:10px;border-radius:5px;background:#00000073;overflow:hidden;border:1px solid rgba(90,56,32,.35)}.dice-mech-hpbar-fill{height:100%;border-radius:4px;transition:width .35s ease}.dice-mech-hpbar--enemy .dice-mech-hpbar-fill{background:linear-gradient(90deg,#8b2020,#e85d5d);box-shadow:0 0 8px #e85d5d66}.dice-mech-hpbar--player .dice-mech-hpbar-fill{background:linear-gradient(90deg,#1a6030,#5cd68a);box-shadow:0 0 8px #5cd68a59}.dice-mech-hpbar-hint{margin:5px 0 0;font-size:.65rem;color:#7a9088;line-height:1.35}.dice-mech-stat-pill{display:flex;align-items:flex-start;gap:8px;margin:6px 0;padding:7px 9px;font-size:.76rem;line-height:1.4;color:#b8c8c0;border-radius:3px;background:#0028324d;border:1px solid rgba(0,160,200,.2)}.dice-mech-stat-pill strong{color:#80d8e8}.dice-mech-story{margin:8px 0 0;padding:0 0 0 18px;font-size:.82rem;line-height:1.5;color:#d8c8b0}.dice-mech-story li+li{margin-top:4px}.dice-mech-legend--combat{margin-top:4px}.dice-mech-timeline{display:flex;flex-direction:column;gap:10px}.dice-mech-phase-new{border-radius:4px;overflow:hidden;border:1px solid rgba(90,56,32,.45)}.dice-mech-phase-new--player{border-color:#50c87859}.dice-mech-phase-new--enemy{border-color:#dc5a4659}.dice-mech-phase-new-head{display:flex;align-items:center;gap:8px;padding:8px 10px;font-family:var(--font-fantasy);font-size:.8rem;letter-spacing:.04em;font-weight:600}.dice-mech-phase-new--player .dice-mech-phase-new-head{background:#143c2373;color:#9ee8b8}.dice-mech-phase-new--enemy .dice-mech-phase-new-head{background:#3c141273;color:#f0b0a0}.dice-mech-phase-new-body{display:flex;flex-direction:column;gap:8px;padding:8px}.dice-mech-card{padding:10px;border-radius:3px;border:1px solid rgba(90,56,32,.4);background:#00000038}.dice-mech-card--player{border-color:#50c87847}.dice-mech-card--enemy{border-color:#dc5a4647}.dice-mech-card--success,.dice-mech-card--crit{border-color:#50dc6466;background:#14321c4d}.dice-mech-card--fail,.dice-mech-card--fumble{border-color:#dc505066;background:#3212124d}.dice-mech-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px}.dice-mech-card-step{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-size:.72rem;font-weight:700;color:#d0f8ff;background:#003c5080;border:1px solid rgba(0,200,230,.35)}.dice-mech-card-icon{font-size:1.1rem}.dice-mech-card-title{font-family:var(--font-fantasy);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:#c8a870;flex:1}.dice-mech-card-badge{font-size:.65rem;padding:3px 8px;border-radius:3px;font-weight:700;letter-spacing:.04em}.dice-mech-card-badge--success{color:#7dcea0;background:#143c1e80;border:1px solid rgba(80,220,100,.35)}.dice-mech-card-badge--crit{color:#ffe066;background:#3c320a80;border:1px solid rgba(255,230,0,.4)}.dice-mech-card-badge--fail,.dice-mech-card-badge--fumble{color:#e85d5d;background:#3c141480;border:1px solid rgba(220,80,80,.35)}.dice-mech-card-label{margin:0 0 8px;font-size:.84rem;color:#d8c8b0;line-height:1.4}.dice-mech-roll-result{display:flex;flex-direction:column;gap:6px}.dice-mech-dice-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 10px;border-radius:3px;background:#001e2859;border:1px dashed rgba(0,160,200,.25)}.dice-mech-dice-emoji{font-size:1.2rem}.dice-mech-dice-num,.dice-mech-dice-total{font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums;color:#80d8e8}.dice-mech-dice-bonus{font-size:1rem;font-weight:600;color:#c8a870}.dice-mech-dice-plus,.dice-mech-dice-eq{color:#8a7868;font-weight:600}.dice-mech-compare,.dice-mech-damage-line{margin:0;font-size:.8rem;line-height:1.45;color:#b8a898}.dice-mech-good{color:#7dcea0;font-weight:700}.dice-mech-bad{color:#e85d5d;font-weight:700}.dice-mech-damage-line--hurt{color:#e8a0a0}.dice-mech-banner-card{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:3px;font-size:.82rem;border:1px solid rgba(90,56,32,.4);background:#0003}.dice-mech-banner-card--success{border-color:#50dc6466;color:#9ee8b8}.dice-mech-banner-card--fail,.dice-mech-banner-card--fumble{border-color:#dc505066;color:#f0a0a0}.dice-mech-banner-card-icon{font-size:1.15rem}.dice-mech-chip-card{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:3px;font-size:.85rem;font-weight:600;border:1px solid rgba(90,56,32,.4)}.dice-mech-chip-card--good{border-color:#50dc6459;color:#9ee8b8;background:#14321c40}.dice-mech-chip-card--bad{border-color:#dc505059;color:#f0a0a0;background:#32121240}.dice-mech-simple-text{margin:0;font-size:.84rem;color:#c8b8a0;line-height:1.45}.dice-mech-header-d20{font-size:1.25rem;width:auto;height:auto;clip-path:none;border:none;background:transparent;box-shadow:none}.actions-collapse-btn{display:block;width:100%;margin-top:8px;padding:8px;border:1px solid rgba(90,56,32,.55);border-radius:3px;background:#00000040;color:#a89888;font-size:.78rem;cursor:pointer}.mobile-actions-hint--idle{text-align:center;margin:4px 0}.dialogue{color:var(--accent-cyan-soft);margin:8px 0;text-shadow:0 0 8px rgba(64,224,208,.25)}.combat{color:var(--accent-red);font-weight:600;margin:8px 0}.actions-section{margin-top:12px;color:var(--text-secondary)}.input-area{padding:16px;border-top:1px solid var(--glass-border);background:var(--glass)}.dnd-input-area{padding:8px 10px;border-top:2px solid #5a3820;background:linear-gradient(0deg,rgba(180,120,40,.07) 0%,transparent 38%),linear-gradient(0deg,#060504,#0e0a08 48%,#1a1410);box-shadow:0 -4px 18px #000000a6,inset 0 1px #b478321a}.input-container{display:flex;gap:10px}.input-container-wrap{display:flex;flex-direction:column;gap:6px;width:100%}.input-container--error .message-input{border-color:#a03030;box-shadow:0 0 8px #c8323240}.action-input-error{margin:0;padding:0 4px;font-size:.78rem;line-height:1.35;color:#e8a0a0}.message-input{flex:1;padding:12px 16px;background:#00000059;border:1px solid var(--glass-border);border-radius:10px;color:var(--text-primary);font-size:1rem;outline:none;transition:all .3s}.message-input:focus{border-color:var(--accent-gold);box-shadow:0 0 10px #ffd70033}.send-btn{padding:12px 20px;min-width:52px;font-family:var(--font-fantasy);font-weight:700;font-size:1rem;color:#f2ddd0;background:linear-gradient(180deg,rgba(255,80,50,.1) 0%,transparent 40%),linear-gradient(180deg,#2c0c0c,#160606);border:2px solid #7a1818;border-radius:3px;box-shadow:0 0 16px #a019144d,inset 0 1px #dc5a3c26;transition:transform .2s ease,box-shadow .25s ease,border-color .25s ease}.send-btn:hover:not(:disabled){transform:translateY(-1px);border-color:#b82828;box-shadow:0 0 24px #dc321e73}.send-btn:disabled{opacity:.45;cursor:not-allowed}.action-panel{padding:16px;flex-direction:column;gap:12px;overflow-y:auto}.action-buttons{display:flex;flex-direction:column;gap:10px}.action-panel h3{color:var(--accent-gold);text-align:center;font-size:1rem;font-family:var(--font-fantasy)}.action-btn{padding:10px 12px;font-family:var(--font-fantasy);font-size:.78rem;font-weight:600;letter-spacing:.04em;text-align:left;color:#d8c8b0;background:linear-gradient(180deg,rgba(180,120,40,.08) 0%,transparent 45%),linear-gradient(180deg,#1a1410,#0a0806);border:2px solid #4a3220;border-radius:3px;box-shadow:0 4px 14px #0000008c,inset 0 1px #a06e321f;transition:transform .2s ease,box-shadow .25s ease,border-color .25s ease;animation:slideInRight .4s ease backwards}.action-btn:nth-child(1){animation-delay:.05s}.action-btn:nth-child(2){animation-delay:.12s}.action-btn:nth-child(3){animation-delay:.19s}.action-btn:nth-child(4){animation-delay:.26s}.action-btn:nth-child(5){animation-delay:.33s}.action-btn:nth-child(6){animation-delay:.4s}.action-btn:hover{border-color:#8b5a28;color:#f0e4d0;transform:translateY(-1px);box-shadow:0 0 20px #a05a1459,0 6px 16px #000000a6}.quest-indicator{padding:12px;font-size:.85rem}.quest-indicator h4{color:var(--accent-gold);font-size:.9rem;margin-bottom:6px}.inventory-modal{max-height:92dvh;max-width:100%;width:100%;overflow-x:hidden;overflow-y:auto;padding:14px 12px;box-sizing:border-box}.modal-overlay--game .modal-content{max-width:100%;width:100%;box-sizing:border-box;overflow-x:hidden}.inventory-title{color:var(--accent-gold);font-size:1.1rem;text-align:center;margin-bottom:12px}.inventory-layout{display:flex;flex-direction:column;gap:12px}.paper-doll{padding:10px 8px;max-width:100%;overflow:hidden}.paper-doll-grid{display:flex;flex-direction:column;gap:8px}.slot-row{display:flex;justify-content:center;gap:6px;max-width:100%}.slot-row--main{align-items:stretch}.equip-slot{width:min(68px,26vw);min-height:min(68px,26vw);padding:4px;border-radius:10px;border:1px dashed rgba(255,204,0,.3);background:#00000040;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;color:var(--text-secondary);transition:all .2s}.equip-slot--large{width:min(80px,30vw);min-height:min(80px,30vw)}.equip-slot--filled{border-style:solid;border-color:#ffcc0080;background:#ffcc000f;color:var(--text-primary)}.equip-slot-icon{font-size:1.6rem;line-height:1}.equip-slot-placeholder{font-size:1.4rem;opacity:.5}.equip-slot-label,.equip-slot-name{font-size:.55rem;text-align:center;line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.paper-doll-stats{display:flex;justify-content:center;gap:12px;margin-top:10px;font-size:.8rem;color:var(--accent-cyan-soft)}.inventory-bag{min-height:0}.inventory-empty{grid-column:1 / -1;color:var(--text-secondary);text-align:center;padding:12px}.inventory-item.selected{border-color:var(--accent-gold-bright);box-shadow:var(--glow-gold)}.item-uses{position:absolute;top:4px;right:6px;font-size:.65rem;color:var(--accent-gold)}.inventory-item{position:relative;border:none;font:inherit;color:inherit}.inventory-hint{text-align:center;font-size:.75rem;color:var(--text-secondary);margin:-6px 0 10px}.equip-slot--active{border-color:var(--accent-cyan-soft);box-shadow:var(--glow-cyan)}.item-detail-slot{font-size:.8rem;color:var(--accent-cyan-soft);margin-top:2px}.stat-chip{padding:2px 8px;border-radius:8px;background:#00000040}.inventory-toast--error{color:var(--accent-red)}.item-detail{margin-top:12px;padding:12px}.item-detail-header{display:flex;gap:10px;align-items:center}.item-detail-icon{font-size:2rem}.item-detail-type{color:var(--text-secondary);font-size:.85rem;margin-top:2px}.item-detail-bonus{color:var(--accent-cyan-soft);font-size:.85rem;margin-top:6px}.item-detail-desc{color:var(--text-secondary);font-size:.85rem;margin-top:8px;line-height:1.45}.item-detail-note{color:#a89070;font-size:.82rem;font-style:italic;margin-top:8px;line-height:1.45}.item-detail-actions{display:flex;gap:8px;margin-top:12px}.item-detail-actions .btn-primary,.item-detail-actions .btn-secondary{flex:1;padding:10px;font-size:.85rem}.inventory-stats-row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px;font-size:.75rem;color:var(--text-secondary)}.inventory-toast{text-align:center;color:var(--accent-green);font-size:.85rem;margin-top:8px}.inventory-footer{text-align:center;margin-top:12px}.inventory-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px;max-height:180px;overflow-y:auto}.inventory-item{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;cursor:pointer;transition:all .2s;text-align:center}.inventory-item-icon{font-size:1.6rem}.inventory-item-name{font-size:.62rem;margin-top:4px;color:var(--text-secondary);line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.inventory-filters{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.filter-btn{padding:5px 10px;border-radius:20px;font-size:.75rem;border:1px solid rgba(255,215,0,.3);background:transparent;color:var(--text-secondary);transition:all .2s}.filter-btn.active{background:#ffd70033;color:var(--accent-gold);border-color:var(--accent-gold)}.stats-display{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stat-circle{text-align:center;padding:20px}.stat-circle-value{font-size:2.5rem;font-family:var(--font-fantasy);color:var(--accent-gold)}.stat-circle-mod{font-size:1.1rem;color:var(--accent-blue);margin-top:4px}.stat-circle-label{font-size:.9rem;color:var(--text-secondary);margin-top:8px}.dice-screen{text-align:center}.dice-display{font-size:5rem;margin:24px 0;display:inline-block}.dice-result{font-size:2rem;color:var(--accent-gold);font-family:var(--font-fantasy);margin:16px 0}.dice-buttons{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:24px}.dice-type-btn{padding:12px 20px;font-size:1.1rem;font-family:var(--font-fantasy)}.dice-history{text-align:left;max-height:200px;overflow-y:auto}.dice-history-item{padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.05);font-size:.9rem}.sheet-vitals{margin:0 0 16px;display:flex;flex-direction:column;gap:8px}.sheet-weakness p{color:var(--text-secondary);font-size:.88rem;line-height:1.4}.dnd-modal{background:linear-gradient(180deg,rgba(180,120,40,.08) 0%,transparent 28%),linear-gradient(180deg,#1a1410,#0e0a08 55%,#060504);border:2px solid #5a3820;border-bottom:none;border-radius:12px 12px 0 0;box-shadow:0 -8px 32px #000000bf,inset 0 1px #b4783226;backdrop-filter:none;-webkit-backdrop-filter:none}.dnd-panel{background:linear-gradient(180deg,rgba(180,120,40,.06) 0%,transparent 40%),linear-gradient(180deg,#140f0c,#0a0806);border:1px solid #4a3220;border-radius:3px;box-shadow:inset 0 0 14px #00000073}.hero-sheet-title,.inventory-title,.quest-modal-title,.mobile-menu-title{font-family:var(--font-fantasy);color:#e8c860;font-size:1.05rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-align:center;margin-bottom:14px;text-shadow:0 0 12px rgba(220,180,60,.3)}.inventory-hint,.quest-hint{text-align:center;font-size:.75rem;color:#8a7868;font-family:var(--font-fantasy);letter-spacing:.03em;margin:-6px 0 12px;line-height:1.4}.sheet-hero-name{font-family:var(--font-fantasy);color:#e8d8c0;font-size:1.15rem;font-weight:700;letter-spacing:.06em;text-align:center;text-shadow:0 0 10px rgba(255,180,60,.2)}.sheet-hero-meta,.sheet-hero-bg{text-align:center;color:#a89070;font-family:var(--font-fantasy);font-size:.82rem;letter-spacing:.04em;margin-bottom:12px;line-height:1.45}.sheet-hero-bg{font-size:.78rem;color:#8a7868;margin-bottom:14px}.sheet-hero-avatar{width:84px;height:84px;border-radius:4px;border:2px solid #8b5a28;box-shadow:0 0 16px #a05a1466,inset 0 0 12px #00000080}.dnd-sheet-vitals .stat-bar{border-radius:2px;border:1px solid #4a3220;background:#0a0604;box-shadow:inset 0 2px 8px #000000d9;height:22px}.dnd-sheet-vitals .hp-bar{background:linear-gradient(90deg,#5a1010 0%,#a82828 var(--fill-pct),#120808 var(--fill-pct),#120808 100%)}.dnd-sheet-vitals .mp-bar{background:linear-gradient(90deg,#1e1248 0%,#5b4cdb var(--fill-pct),#0c0818 var(--fill-pct),#0c0818 100%)}.dnd-sheet-vitals .stat-bar-text{justify-content:flex-start;padding:0 8px;font-family:var(--font-fantasy);font-size:.68rem;letter-spacing:.05em;text-transform:uppercase}.sheet-weakness{margin-bottom:16px;padding:12px 14px;background:linear-gradient(90deg,rgba(120,30,30,.15) 0%,transparent 60%),linear-gradient(180deg,#140a0a,#0a0606);border:1px solid rgba(90,50,50,.5);border-left:3px solid #8b2828;border-radius:3px;box-shadow:inset 0 0 14px #00000073}.sheet-weakness h4{color:#e8a090;font-family:var(--font-fantasy);font-size:.88rem;letter-spacing:.04em;margin-bottom:6px}.sheet-section-title{font-family:var(--font-fantasy);color:#e8c860;font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.sheet-section-title--stats{margin-top:4px}.sheet-abilities{margin-bottom:16px}.sheet-ability-item{color:#b8a890;font-size:.88rem;line-height:1.45;margin-bottom:4px;padding-left:4px}.dnd-stat-circle{background:linear-gradient(180deg,rgba(180,120,40,.08) 0%,transparent 45%),linear-gradient(180deg,#1a1410,#0a0806);border:1px solid #4a3220;border-radius:3px;box-shadow:inset 0 0 12px #00000080;padding:14px 8px}.dnd-stat-circle .stat-circle-value{color:#e8d8c0;font-size:1.75rem;text-shadow:0 0 10px rgba(220,180,60,.25)}.dnd-stat-circle .stat-circle-mod{color:#7b9ec8;font-family:var(--font-fantasy);font-size:.95rem}.dnd-stat-circle .stat-circle-label{color:#8a7868;font-family:var(--font-fantasy);font-size:.68rem;letter-spacing:.04em;text-transform:uppercase}.hero-sheet-footer{text-align:center;margin-top:18px}.hero-sheet-footer .btn-secondary{width:100%;max-width:280px}.dnd-modal .equip-slot{border-radius:3px;border:1px dashed #5a3820;background:#00000059;color:#8a7868}.dnd-modal .equip-slot--filled{border-style:solid;border-color:#8b5a28;background:linear-gradient(180deg,rgba(180,120,40,.1) 0%,transparent 50%),#0000004d;color:#e8d8c0}.dnd-modal .equip-slot--active{border-color:#b8860b;box-shadow:0 0 12px #c8962859}.dnd-modal .stat-chip{font-family:var(--font-fantasy);font-size:.72rem;letter-spacing:.04em;padding:3px 8px;border-radius:3px;border:1px solid #4a3220;background:#00000059;color:#b8a890}.dnd-modal .filter-btn{padding:5px 10px;border-radius:3px;font-family:var(--font-fantasy);font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;border:1px solid #4a3220;background:transparent;color:#8a7868}.dnd-modal .filter-btn.active{color:#e8c860;border-color:#8b5a28;background:linear-gradient(180deg,rgba(180,120,40,.12) 0%,transparent 45%),linear-gradient(180deg,#1a1410,#0a0806);box-shadow:inset 0 0 10px #0006}.dnd-item-tile{border:1px solid #4a3220;border-radius:3px;background:linear-gradient(180deg,rgba(180,120,40,.06) 0%,transparent 45%),linear-gradient(180deg,#1a1410,#0a0806);box-shadow:inset 0 0 10px #00000073}.dnd-item-tile.selected{border-color:#b8860b;box-shadow:0 0 14px #c8962859,inset 0 0 10px #0006}.dnd-item-tile .inventory-item-name{color:#a89070;font-family:var(--font-fantasy);font-size:.58rem}.dnd-modal .item-detail strong{font-family:var(--font-fantasy);color:#e8d8c0}.dnd-modal .inventory-stats-row{color:#8a7868;font-family:var(--font-fantasy);font-size:.72rem;letter-spacing:.04em}.dnd-quest-card{width:100%;text-align:left;padding:14px;border:1px solid #4a3220;border-radius:3px;cursor:pointer;color:inherit;font:inherit;background:linear-gradient(180deg,rgba(180,120,40,.06) 0%,transparent 40%),linear-gradient(180deg,#1a1410,#0a0806);box-shadow:inset 0 0 12px #00000073;transition:border-color .2s ease,box-shadow .2s ease}.dnd-quest-card.quest-card--open{border-color:#8b5a28;box-shadow:0 0 12px #a05a1440,inset 0 0 12px #00000073}.dnd-quest-card .quest-card-header strong{font-family:var(--font-fantasy);color:#e8d8c0;letter-spacing:.04em}.dnd-quest-card .quest-status{font-family:var(--font-fantasy);font-size:.65rem;letter-spacing:.05em;text-transform:uppercase;color:#a89070}.dnd-quest-card .quest-description{color:#8a7868}.dnd-quest-card .quest-reward-hint,.dnd-quest-card .quest-reward-done{color:#b8860b;font-family:var(--font-fantasy);font-size:.78rem}.dnd-modal .quest-empty{color:#8a7868;font-family:var(--font-fantasy)}.quest-modal-footer,.inventory-footer{text-align:center;margin-top:16px}.quest-modal-footer .btn-secondary,.inventory-footer .btn-secondary{width:100%;max-width:280px}.dnd-modal.mobile-menu{width:100%;padding:20px;animation:slideInUp .3s ease}.dnd-modal .mobile-menu-scenario{color:#7b9ec8;font-family:var(--font-fantasy);font-size:.85rem;letter-spacing:.04em}.dnd-modal .mobile-menu-quest{color:#e8c860;font-family:var(--font-fantasy);font-size:.9rem}.dnd-modal .mobile-menu-xp{color:#8a7868;font-family:var(--font-fantasy);font-size:.82rem}.class-weakness{font-size:.88rem;color:var(--text-secondary);margin-bottom:10px;line-height:1.4}.mobile-weakness-hint{font-size:.78rem;line-height:1.35;opacity:.9}.mobile-menu-instructions{width:100%;min-height:var(--touch-min);margin-bottom:8px}.instructions-modal{display:flex;flex-direction:column;max-height:90dvh;padding-bottom:calc(12px + var(--safe-bottom-effective))}.instructions-title{color:var(--accent-gold);font-family:var(--font-fantasy);font-size:1.15rem;text-align:center;margin-bottom:6px;letter-spacing:.06em}.instructions-lead{color:var(--text-secondary);font-size:.82rem;text-align:center;margin-bottom:12px;line-height:1.4}.sound-settings-modal{display:flex;flex-direction:column;gap:10px;max-width:360px;padding-bottom:calc(12px + var(--safe-bottom-effective))}.sound-settings-title{color:var(--accent-gold);font-family:var(--font-fantasy);font-size:1.1rem;text-align:center;margin:0}.sound-settings-lead{color:var(--text-secondary);font-size:.78rem;text-align:center;margin:0 0 8px;line-height:1.35}.sound-settings-row{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center;padding:10px 12px;border-radius:10px;background:#00000040;border:1px solid rgba(212,175,55,.15)}.sound-settings-head{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;font-size:.9rem;color:var(--text-primary)}.sound-settings-toggle{font-size:.72rem;padding:4px 10px;border-radius:999px;border:1px solid rgba(212,175,55,.35);background:#00000059;color:var(--text-secondary)}.sound-settings-toggle.is-on{color:var(--accent-gold);border-color:#d4af3799}.sound-settings-slider{grid-column:1;width:100%;accent-color:var(--accent-gold)}.sound-settings-val{font-size:.78rem;color:var(--text-secondary);min-width:2.5rem;text-align:right}.sound-settings-tests{display:grid;grid-template-columns:1fr 1fr;gap:6px}.sound-settings-test{min-height:var(--touch-min);font-size:.78rem;padding:8px 6px}.sound-settings-actions{display:flex;gap:8px;margin-top:4px}.sound-settings-actions .btn-primary,.sound-settings-actions .btn-shade{flex:1;min-height:var(--touch-min)}.instructions-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior-y:contain;padding-right:4px;margin-bottom:12px}.instructions-section{margin-bottom:14px;padding:12px 14px;border:1px solid #4a3220;border-radius:3px;background:linear-gradient(180deg,rgba(180,120,40,.06) 0%,transparent 40%),linear-gradient(180deg,#14100e,#0a0806);box-shadow:inset 0 1px #b4783214}.instructions-section-title{display:flex;align-items:center;gap:8px;font-family:var(--font-fantasy);font-size:.92rem;color:#e8d8c0;margin-bottom:8px;letter-spacing:.04em}.instructions-section-icon{font-size:1.1rem;line-height:1}.instructions-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.instructions-list li{position:relative;padding-left:14px;font-size:.82rem;line-height:1.45;color:#a89888}.instructions-list li:before{content:"◆";position:absolute;left:0;top:0;font-size:.5rem;color:#8b5a28;line-height:1.8}.instructions-close-btn{width:100%;min-height:var(--touch-min);flex-shrink:0}.combat-enemy-bar{margin-top:8px;padding:10px 12px;border:1px solid rgba(255,80,80,.45);border-radius:10px;background:linear-gradient(135deg,#500f0f8c,#280808a6);box-shadow:inset 0 1px #ff64501a,0 4px 12px #00000040}.combat-enemy-bar--low{border-color:#ff3232a6;box-shadow:inset 0 0 20px #c81e1e26,0 0 16px #c828281f}.combat-enemy-bar--mid{border-color:#ff783c80}.combat-enemy-bar--high{border-color:#ff505066}.combat-enemy-bar--compact{margin-top:0;padding:6px 10px;border-radius:0;border-left:none;border-right:none}.mobile-enemy-bar-wrap{flex-shrink:0;border-bottom:1px solid rgba(255,80,80,.25)}.enemy-hp-bar{position:relative}.enemy-hp-bar .stat-bar-text{color:#ffe8e8;font-size:.72rem;letter-spacing:.02em}.combat-enemy-bar__head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.combat-enemy-bar__avatar{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;border-radius:8px;background:#00000059;border:1px solid rgba(255,100,80,.35);box-shadow:inset 0 0 8px #c8323233}.combat-enemy-bar__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.combat-enemy-bar__name{color:#ffb0b0;font-weight:700;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.combat-enemy-bar__meta{display:flex;flex-wrap:wrap;gap:8px;font-size:.72rem}.combat-enemy-bar__ac{color:#a0c8f0;padding:1px 6px;border-radius:4px;background:#1e325073;border:1px solid rgba(100,140,200,.3)}.combat-enemy-bar__round{color:var(--accent-gold)}.combat-enemy-bar__hp-num{flex-shrink:0;font-family:var(--font-fantasy);font-size:1rem;font-weight:700;color:#ff9090}.combat-enemy-bar__hp-sep{opacity:.5;margin:0 1px;font-weight:400}.combat-enemy-bar__hp-wrap{display:flex;align-items:center;gap:8px}.combat-enemy-bar__hp-wrap .enemy-hp-bar{flex:1}.combat-enemy-bar__pct{flex-shrink:0;font-size:.72rem;font-weight:700;color:#c08080;min-width:2.2rem;text-align:right}.combat-enemy-bar--low .combat-enemy-bar__pct{color:#ff6060}.combat-enemy-bar__vuln{margin-top:5px;font-size:.72rem;color:#f0c060;line-height:1.35}.enemy-hp-bar{height:22px;border-radius:6px;border:1px solid rgba(255,100,100,.35);background:linear-gradient(90deg,#6a1515 0%,#d04040 var(--fill-pct),rgba(0,0,0,.55) var(--fill-pct),rgba(0,0,0,.55) 100%);box-shadow:inset 0 0 8px #c832324d}.combat-enemy-bar--low .enemy-hp-bar{background:linear-gradient(90deg,#801010 0%,#ff3030 var(--fill-pct),rgba(0,0,0,.55) var(--fill-pct),rgba(0,0,0,.55) 100%);animation:pulse-hp 1.4s ease infinite}.combat-enemy-bar--compact .enemy-hp-bar{height:18px}.combat-enemy-bar--compact .combat-enemy-bar__head{margin-bottom:4px}.combat-enemy-bar--compact .combat-enemy-bar__avatar{width:28px;height:28px;font-size:1rem}.combat-enemy-bar--compact .combat-enemy-bar__name{font-size:.78rem}.combat-enemy-bar--compact .combat-enemy-bar__hp-num{font-size:.82rem}.combat-banner{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding:8px 12px;font-size:.85rem;border:1px solid rgba(255,80,80,.4);background:#78141459}.combat-hp{color:#ff8a8a}.combat-round{color:var(--accent-gold);font-size:.8rem}.campaign-continue-screen{display:flex;flex-direction:column;height:100%}.campaign-continue-scroll{flex:1;overflow-y:auto;padding:20px 16px 100px}.campaign-continue-hint{color:var(--text-secondary);margin-bottom:16px;font-size:.9rem}.campaign-continue-scroll h2{color:var(--accent-gold);margin-bottom:8px}.dnd-menu-screen .campaign-continue-scroll{padding-bottom:16px}.campaign-list{display:flex;flex-direction:column;gap:12px}.campaign-card{text-align:left;padding:14px 16px;width:100%;cursor:pointer;transition:border-color .2s,box-shadow .2s;color:var(--text-primary)}.campaign-card:hover,.campaign-card:focus{border-color:var(--accent-gold)}.campaign-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.campaign-card-name{font-size:1.05rem;font-weight:700;color:var(--accent-gold-bright, #ffd700)}.campaign-card-lvl{color:var(--accent-gold);font-size:.85rem;font-weight:600}.campaign-card-scenario{font-size:.95rem;color:var(--text-primary);margin-bottom:4px}.campaign-card-loc{font-size:.85rem;color:var(--text-secondary);margin-bottom:8px}.campaign-card-stats{display:flex;flex-wrap:wrap;gap:10px;font-size:.82rem;color:#c8d4e8;margin-bottom:6px}.campaign-card-meta{font-size:.75rem;color:var(--text-secondary);margin-top:4px}.campaign-empty{padding:24px;text-align:center}.channel-gate{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;padding:20px 20px 28px;position:relative;overflow:hidden;text-align:center}.channel-gate-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.channel-gate-bg-img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:blur(1px) saturate(1.1);transform:scale(1.05)}.channel-gate-dim{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#08060e59,#08060ee0 55%,#040308f5),radial-gradient(ellipse 80% 50% at 50% 0%,rgba(180,120,40,.12) 0%,transparent 60%);z-index:0}.channel-gate-content{position:relative;z-index:1;width:100%;max-width:420px}.channel-gate-eyebrow{display:block;font-size:.78rem;letter-spacing:.14em;color:var(--accent-gold);margin-bottom:6px}.channel-gate-title{font-family:var(--font-display);font-size:2rem;color:#f5e6c8;margin:0 0 2px;text-shadow:0 2px 16px rgba(0,0,0,.6)}.channel-gate-subtitle{font-size:1rem;color:#c9b896;margin:0 0 16px}.channel-gate-card{background:#0c0a14b8;border:1px solid rgba(180,140,60,.28);border-radius:14px;padding:14px 16px;margin-bottom:18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 32px #00000059}.channel-gate-lead{font-size:.95rem;line-height:1.45;color:#e8dcc8;margin:0 0 8px}.channel-gate-text{font-size:.88rem;line-height:1.4;color:#b8a890;margin:0}.channel-gate-actions{display:flex;flex-direction:column;gap:10px}.channel-gate-subscribe{text-decoration:none;display:flex;align-items:center;justify-content:center;font-size:1.05rem;padding:14px 20px}.channel-gate-hint{font-size:.8rem;color:#9a8a70;margin:4px 0 0}.theme-dark{--bg-primary: #04060f;--bg-secondary: #0a1022}.theme-dungeon{--bg-primary: #0d0d0d;--bg-secondary: #1a0a0a;--accent-gold: #c9a227}.theme-forest{--bg-primary: #0a1a0f;--bg-secondary: #0f2a1a;--accent-gold: #8fbc8f}.crit-success{color:var(--accent-gold);text-shadow:0 0 15px rgba(255,215,0,.8);animation:glow 1s ease-in-out 3}.crit-fail{color:var(--accent-red);animation:shake .5s ease-in-out}.level-up-banner{background:linear-gradient(135deg,#ffd70033,#ff6b6b33);border:2px solid var(--accent-gold);border-radius:12px;padding:20px;text-align:center;animation:scaleIn .5s ease}.level-up-banner h3{color:var(--accent-gold);font-size:1.5rem;font-family:var(--font-fantasy)}.ai-typing{display:flex;align-items:center;gap:8px;padding:12px 16px;color:var(--text-secondary);font-style:italic}.typing-dots span{display:inline-block;width:6px;height:6px;background:var(--accent-gold);border-radius:50%;animation:typing-bounce 1.4s ease-in-out infinite}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-6px);opacity:1}}.msg-section-label{display:flex;align-items:center;gap:.55rem;margin-bottom:.45rem;padding:.35rem .65rem;border-radius:8px;background:linear-gradient(90deg,rgba(201,162,39,.12),transparent 85%);border-left:3px solid var(--gold-dim, #c9a227)}.msg-section-label--narrative{border-left-color:#7eb8da;background:linear-gradient(90deg,rgba(126,184,218,.14),transparent 85%)}.msg-section-label--dialogue{border-left-color:#b19cd9;background:linear-gradient(90deg,rgba(177,156,217,.14),transparent 85%)}.msg-section-label--combat{border-left-color:#e07070;background:linear-gradient(90deg,rgba(224,112,112,.14),transparent 85%)}.msg-section-label__icon{font-size:1.15rem;line-height:1;flex-shrink:0}.msg-section-label__text-wrap{display:flex;flex-direction:column;gap:.05rem;min-width:0}.msg-section-label__text{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gold-light, #e8d5a3)}.msg-section-label__sub{font-size:.62rem;opacity:.65;letter-spacing:.02em}.narrative.message-body,.dialogue.message-body,.combat.message-body{padding-top:.15rem}.class-avatar-img{display:block;object-fit:cover;object-position:top center;flex-shrink:0}.class-avatar-img--sm{width:36px;height:36px;border-radius:10px}.class-avatar-img--md{width:48px;height:48px;border-radius:3px}.class-avatar-img--lg{width:80px;height:80px;border-radius:14px}.class-avatar{flex-shrink:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,color-mix(in srgb,var(--class-color, #c9a227) 35%,#1a1520),#0d0a12);border:2px solid color-mix(in srgb,var(--class-color, #c9a227) 70%,transparent);box-shadow:0 2px 8px #00000059}.class-avatar--sm{width:36px;height:36px;border-radius:10px}.class-avatar--md{width:48px;height:48px;border-radius:3px}.class-avatar--lg{width:80px;height:80px;border-radius:14px}.class-avatar__emoji{font-size:1.35rem;line-height:1}.class-avatar--lg .class-avatar__emoji{font-size:2rem}.class-avatar--sm .class-avatar__emoji{font-size:1.1rem}img.class-avatar-img.mobile-char-avatar-img,.class-avatar.mobile-char-avatar-img{width:48px;height:48px;border-radius:3px;border:2px solid #8b5a28;box-shadow:0 0 14px #a05a1459,inset 0 0 10px #0000008c}img.class-avatar-img.sheet-hero-avatar,.class-avatar.sheet-hero-avatar{width:80px;height:80px;border-radius:14px;border:2px solid rgba(255,204,0,.4);box-shadow:var(--glow-gold)}img.class-avatar-img.class-card-avatar,.class-avatar.class-card-avatar{width:100%;height:100%;min-height:0;border-radius:0;border:none;box-shadow:none}img.class-avatar-img.dnd-create-avatar,.class-avatar.dnd-create-avatar{width:40px;height:40px;border-radius:3px;border:2px solid #8b5a28;box-shadow:inset 0 0 8px #00000080}.char-create-screen img.class-avatar-img.dnd-create-avatar,.char-create-screen .class-avatar.dnd-create-avatar{width:58px;height:58px}.action-btn{display:inline-flex;align-items:center;gap:.45rem;text-align:left}.action-btn-icon{font-size:1.1rem;line-height:1;flex-shrink:0;width:1.35rem;text-align:center}.action-btn-text{flex:1;min-width:0}.filter-btn{display:inline-flex;align-items:center;gap:.3rem}.filter-btn-icon{font-size:.95rem;line-height:1}.filter-btn-label{font-size:.78rem}.item-detail-type-badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.78rem;opacity:.85}.stat-circle-label{display:flex;flex-direction:column;align-items:center;gap:.1rem}.stat-circle-icon{font-size:.75rem;line-height:1;opacity:.85}.stat-circle-name{font-size:.62rem}.stat-bar-text--labeled{display:inline-flex;align-items:center;gap:.25rem}.stat-bar-text__icon{font-size:.85em;line-height:1}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom-effective: min(var(--safe-bottom), 20px);--safe-top-effective: min(var(--safe-top), 8px);--app-vh: 100dvh;--toolbar-h: 50px;--toolbar-total-h: calc(var(--toolbar-h) + var(--safe-bottom-effective));--bottom-ui-gap: 10px;--actions-bar-h: 54px;--actions-bar-expanded-h: 112px;--bottom-stack-h: var(--actions-bar-h);--game-bottom-reserve: calc(var(--toolbar-total-h) + var(--bottom-ui-gap) + var(--bottom-stack-h));--char-bar-inner-h: 92px;--char-bar-total-h: calc(var(--char-bar-inner-h) + var(--safe-top-effective));--enemy-bar-h: 54px;--mobile-bar-h: 52px;--touch-min: 44px}html.max-webapp{--safe-top: 0px;--safe-top-effective: 0px}.app-shell{touch-action:none}.scroll-touch,.char-create-scroll,.scenario-scroll,.campaign-continue-scroll,.chat-window{touch-action:pan-y!important;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.action-buttons--horizontal,.action-buttons--horizontal .action-btn{touch-action:pan-x!important}button,.btn-primary,.btn-secondary,.btn-ghost,.toolbar-btn,.option-chip,.stat-btn,.class-card,.scenario-card,.campaign-card{touch-action:manipulation}.mobile-only{display:flex}.desktop-only{display:none}.game-layout{display:flex;flex-direction:column;flex:1;min-height:0;height:100%;overflow:hidden;padding-bottom:var(--game-bottom-reserve);padding-top:var(--char-bar-total-h);box-sizing:border-box}.mobile-char-bar{position:fixed;top:0;left:0;right:0;width:100%;max-width:100%;z-index:40;flex-shrink:0;display:flex;align-items:center;gap:10px;padding:4px 12px;padding-top:calc(4px + var(--safe-top-effective));margin-top:0;border-radius:0;border-left:none;border-right:none;border-top:none;cursor:pointer;-webkit-tap-highlight-color:transparent;box-sizing:border-box}.dnd-vitals-bar{background:linear-gradient(180deg,rgba(180,120,40,.06) 0%,transparent 35%),linear-gradient(180deg,#1a1410,#0e0a08 55%,#060504);border-bottom:2px solid #5a3820;box-shadow:0 4px 18px #000000a6,inset 0 1px #b478321f;backdrop-filter:none;-webkit-backdrop-filter:none}.dnd-vitals-bar:active{background:linear-gradient(180deg,rgba(180,120,40,.04) 0%,transparent 35%),linear-gradient(180deg,#140f0c,#0a0706)}.mobile-char-avatar-img{width:48px;height:48px;border-radius:3px;border:2px solid #8b5a28;box-shadow:0 0 14px #a05a1459,inset 0 0 10px #0000008c}.mobile-char-avatar{font-size:1.8rem;flex-shrink:0}.mobile-char-info{flex:1;min-width:0}.mobile-char-name{font-family:var(--font-fantasy);color:#e8d8c0;font-size:.88rem;font-weight:700;letter-spacing:.06em;text-shadow:0 0 10px rgba(255,180,60,.25),0 1px 3px rgba(0,0,0,.9);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-char-lvl{color:#a89070;font-family:var(--font-fantasy);font-size:.72rem;font-weight:600;letter-spacing:.04em}.dnd-vitals-bar .stat-bar{width:100%;border-radius:2px;overflow:hidden;position:relative;border:1px solid #4a3220;background:#0a0604;box-shadow:inset 0 2px 8px #000000d9}.mobile-hp{height:17px;margin-top:4px}.mobile-mp,.mobile-xp{height:14px;margin-top:3px}.dnd-vitals-bar .hp-bar{background:linear-gradient(90deg,#5a1010 0%,#a82828 var(--fill-pct),#120808 var(--fill-pct),#120808 100%);box-shadow:inset 0 0 8px #c8322833;transition:background .6s ease,box-shadow .6s ease,border-color .6s ease}.dnd-vitals-bar .hp-bar.hp-bar--poisoned{border-color:#50dc6466;background:linear-gradient(90deg,#0e3014 0%,#2da845 var(--fill-pct),#081008 var(--fill-pct),#081008 100%);box-shadow:inset 0 0 10px #50dc644d,0 0 10px #3cb4502e;animation:poisonHpPulse 2.5s ease-in-out infinite}.dnd-vitals-bar .mp-bar{background:linear-gradient(90deg,#1e1248 0%,#5b4cdb var(--fill-pct),#0c0818 var(--fill-pct),#0c0818 100%);box-shadow:inset 0 0 8px #6450dc33}.dnd-vitals-bar .xp-bar{background:linear-gradient(90deg,#3d2a08 0%,#b8860b var(--fill-pct),#140e04 var(--fill-pct),#140e04 100%);box-shadow:inset 0 0 6px #c8962826}.dnd-vitals-bar .stat-bar-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:flex-start;padding:0 6px;font-family:var(--font-fantasy);font-weight:700;font-size:.62rem;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 1px 3px rgba(0,0,0,.95);color:#f0e8dc}.mobile-hp .stat-bar-text{font-size:.65rem}.mobile-xp .stat-bar-text{font-size:.6rem;color:#e8d4a8}.mobile-char-gold{font-family:var(--font-fantasy);color:#e8c860;font-size:.72rem;font-weight:700;letter-spacing:.05em;flex-shrink:0;padding:5px 8px;background:linear-gradient(180deg,rgba(180,120,40,.1) 0%,transparent 45%),linear-gradient(180deg,#1a1410,#0a0806);border:1px solid #5a3820;border-radius:3px;box-shadow:inset 0 0 8px #00000080,0 0 10px #a0781426;text-shadow:0 0 8px rgba(220,180,60,.35)}.chat-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.exit-btn{background:#e85d5d26;border:1px solid rgba(232,93,93,.35);border-radius:8px;padding:4px 8px;font-size:1rem;line-height:1;flex-shrink:0}.game-layout--combat{padding-top:calc(var(--char-bar-total-h) + var(--enemy-bar-h))}.mobile-enemy-bar-wrap{position:fixed;top:var(--char-bar-total-h);left:0;right:0;z-index:39;flex-shrink:0;border-bottom:1px solid rgba(255,80,80,.25);background:linear-gradient(180deg,rgba(120,30,30,.12) 0%,transparent 40%),linear-gradient(180deg,#140c0c,#0a0606);box-shadow:0 4px 14px #00000073}.chat-area{width:100%;flex:1;min-height:0;display:flex;flex-direction:column}.mobile-bottom-stack{position:fixed;left:0;right:0;bottom:calc(var(--toolbar-total-h) + var(--bottom-ui-gap));z-index:45;display:flex;flex-direction:column;width:100%;max-width:100%;box-sizing:border-box;gap:0}.game-layout--actions-expanded,.game-layout--actions-compact{--bottom-stack-h: var(--actions-bar-expanded-h);--game-bottom-reserve: calc(var(--toolbar-total-h) + var(--bottom-ui-gap) + var(--bottom-stack-h))}.game-layout:not(.game-layout--actions-expanded):not(.game-layout--actions-compact){--bottom-stack-h: 0px;--game-bottom-reserve: calc(var(--toolbar-total-h) + var(--bottom-ui-gap))}.mobile-actions-panel{display:flex;flex-direction:column;flex-shrink:0;padding:0 10px 4px;background:transparent;border-top:none;pointer-events:none}.mobile-actions-panel>*{pointer-events:auto}.mobile-actions-panel--compact{padding:4px 10px 2px}.mobile-actions-panel--expanded{padding:8px 10px 6px;border-top:1px solid rgba(90,50,30,.35);background:linear-gradient(180deg,#0c0606eb,#080a12f2);pointer-events:auto}.mobile-bottom-stack .input-area{flex-shrink:0;margin-bottom:0;border-radius:3px 3px 0 0}.mobile-bottom-stack .dnd-input-area{box-shadow:0 -4px 18px #000000a6,0 4px 14px #00000073,inset 0 1px #b478321a}.mobile-actions-strip{display:flex;flex-direction:column;gap:8px}.actions-toggle-btn--input-slot{margin-top:0;border-top:none}.actions-toggle-btn{width:100%;max-width:none;margin:0;min-height:50px;padding:12px 16px;display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font-fantasy);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#e8d8c0;background:linear-gradient(180deg,rgba(180,120,40,.12) 0%,transparent 40%),linear-gradient(180deg,#1f1610,#0e0a08 55%,#060504);border:2px solid #5a3820;border-radius:3px;box-shadow:0 0 18px #502d0a59,0 5px 16px #000000a6,inset 0 1px #b4783226;touch-action:manipulation;transition:transform .2s ease,box-shadow .25s ease,border-color .25s ease;flex-shrink:0}.actions-toggle-btn--open{color:#a89090;border-color:#5a32328c;background:linear-gradient(180deg,rgba(80,20,20,.08) 0%,transparent 40%),linear-gradient(180deg,#140a0a,#080404);box-shadow:inset 0 0 20px #00000073;letter-spacing:.08em}.actions-toggle-btn:active:not(:disabled){transform:scale(.98)}.actions-toggle-btn:disabled{opacity:.55}.actions-toggle-rune{font-size:1rem;line-height:1;filter:drop-shadow(0 0 6px rgba(180,80,30,.45))}.actions-toggle-label{line-height:1.2}.actions-count{background:linear-gradient(180deg,#8b1a1a,#5a0e0e);color:#f2ddd0;font-size:.72rem;font-weight:700;min-width:22px;height:22px;padding:0 6px;border-radius:3px;border:1px solid rgba(200,80,60,.45);display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 10px #a01e1466}.chat-header{padding:6px 14px;flex-shrink:0}.chat-header--compact{padding:2px 14px 4px}.chat-header--compact .chat-location{font-size:.85rem;color:var(--accent-cyan-soft);text-align:center;margin:0}.chat-header h1{font-size:1rem}.chat-location{font-size:.75rem}.chat-window{flex:1;min-height:0;padding:10px 12px;gap:10px}.message{max-width:92%;padding:10px 12px;font-size:.95rem;line-height:1.5}.action-buttons--horizontal{display:flex;flex-direction:row;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-x!important;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:2px 0 4px;margin:0;scrollbar-width:none;max-width:100%}.mobile-actions-hint{font-size:.78rem;color:var(--text-secondary);text-align:center;padding:6px 0}.mobile-actions-hint--error{color:#e88}.action-buttons--horizontal::-webkit-scrollbar{display:none}.action-buttons--horizontal .action-btn{flex:0 0 auto;scroll-snap-align:start;width:min(78vw,300px);min-width:200px;max-width:300px;min-height:52px;max-height:none;padding:10px 12px;font-size:.8rem;line-height:1.4;white-space:normal;text-align:left;animation:none;display:block}.input-area{flex-shrink:0;padding:8px 10px}.dnd-input-area{background:linear-gradient(0deg,rgba(180,120,40,.07) 0%,transparent 38%),linear-gradient(0deg,#060504,#0e0a08 48%,#1a1410);border-top:2px solid #5a3820;box-shadow:0 -4px 18px #000000a6,inset 0 1px #b478321a}.dnd-input-area .input-container{gap:8px}.dnd-input-area .message-input{min-height:var(--touch-min);padding:10px 14px;font-size:16px;font-family:var(--font-body);color:#e8d8c0;background:#0a0604;border:1px solid #4a3220;border-radius:3px;box-shadow:inset 0 2px 8px #000000d9;transition:border-color .2s ease,box-shadow .2s ease}.dnd-input-area .message-input::placeholder{color:#6a5a48;opacity:1}.dnd-input-area .message-input:focus{border-color:#8b5a28;box-shadow:inset 0 2px 8px #000000d9,0 0 12px #a05a1447;outline:none}.dnd-input-area .message-input:disabled{opacity:.55}.dnd-input-area .send-btn{min-width:var(--touch-min);min-height:var(--touch-min);padding:0;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0;border-radius:3px}.input-container{gap:8px}.message-input{min-height:var(--touch-min);padding:10px 14px;font-size:16px}.send-btn{min-width:var(--touch-min);min-height:var(--touch-min);padding:0;display:flex;align-items:center;justify-content:center;font-size:1.2rem;flex-shrink:0}.mobile-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;max-width:100%;margin-top:0;display:flex;justify-content:space-around;align-items:flex-end;gap:2px;padding:4px 6px 0;padding-bottom:var(--safe-bottom-effective);background:linear-gradient(0deg,rgba(180,120,40,.07) 0%,transparent 38%),linear-gradient(0deg,#060504,#0e0a08 48%,#1a1410);border-top:2px solid #5a3820;box-shadow:0 -4px 18px #000000a6,inset 0 1px #b478321a;backdrop-filter:none;-webkit-backdrop-filter:none;z-index:50;box-sizing:border-box}.toolbar-btn{flex:1;max-width:88px;min-height:var(--toolbar-h);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:2px;padding:2px 2px 4px;background:transparent;border:1px solid transparent;border-radius:3px;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease;-webkit-tap-highlight-color:transparent}.toolbar-btn-icon{font-size:1.2rem;line-height:1;filter:drop-shadow(0 1px 3px rgba(0,0,0,.8))}.toolbar-btn-label{font-family:var(--font-fantasy);font-size:.54rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#8a7868;line-height:1.1;text-align:center}.toolbar-btn:active,.toolbar-btn.active{background:linear-gradient(180deg,rgba(180,120,40,.14) 0%,transparent 45%),linear-gradient(180deg,#1f1610,#0e0a08 55%,#060504);border-color:#5a3820;box-shadow:inset 0 0 14px #0000008c,0 0 12px #a05a1433}.toolbar-btn.active .toolbar-btn-icon{filter:drop-shadow(0 0 6px rgba(220,180,60,.45))}.toolbar-btn.active .toolbar-btn-label{color:#e8c860;text-shadow:0 0 8px rgba(220,180,60,.35)}.mobile-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:900;display:flex;align-items:flex-end;padding-bottom:calc(var(--toolbar-h) + var(--safe-bottom-effective))}.mobile-menu-title{margin-bottom:12px;font-size:1.1rem}.mobile-menu-scenario{color:var(--accent-cyan-soft);font-size:.9rem;margin-bottom:8px;text-align:center}.mobile-menu-exit{width:100%;min-height:var(--touch-min);margin-top:8px}.mobile-menu{width:100%;padding:20px;border-radius:16px 16px 0 0;animation:slideInUp .3s ease}.mobile-menu.dnd-modal{border-radius:12px 12px 0 0}.mobile-menu-quest{color:var(--accent-gold);font-size:.95rem;margin-bottom:8px}.mobile-menu-xp{color:var(--text-secondary);font-size:.85rem;margin-bottom:16px}.mobile-menu-close{width:100%;min-height:var(--touch-min)}.actions-empty{color:var(--text-secondary);font-size:.85rem;text-align:center}.char-create-screen{flex:1;min-height:0}.char-create-scroll{padding:14px 14px 8px;padding-top:calc(10px + var(--safe-top-effective));padding-bottom:12px}.char-create-scroll h2{font-size:1.3rem;margin-bottom:14px}.create-section{margin-bottom:16px}.section-title{font-size:.9rem}.class-grid{grid-template-columns:repeat(2,1fr);gap:10px}.class-card{padding:10px 8px}.class-card-avatar-wrap{max-height:100px;border-radius:10px}.class-card-icon{font-size:2rem}.class-card-name{font-size:.95rem}.class-card-desc{font-size:.75rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stats-grid{grid-template-columns:repeat(3,1fr);gap:8px}.stat-item{padding:10px 6px}.stat-item-value{font-size:1.4rem}.stat-btn{width:36px;height:36px}.option-chip{min-height:var(--touch-min);padding:10px 12px}.char-create-footer{padding:0}.dnd-create-footer .dnd-create-footer-inner{gap:10px}.dnd-create-footer .btn-compact{min-height:38px;padding:6px 10px;font-size:.68rem}.char-create-screen .dnd-create-avatar{width:58px;height:58px}.char-create-screen .dnd-create-footer .btn-compact{min-height:44px}.splash-screen{padding:20px;padding-top:calc(20px + var(--safe-top-effective));padding-bottom:calc(20px + var(--safe-bottom-effective))}.splash-logo{font-size:clamp(1.35rem,5vw,1.9rem)}.dnd-splash-title-panel{max-width:100%;padding:12px 14px 10px}.splash-subtitle,.dnd-splash-subtitle{font-size:.72rem;margin-bottom:0}.splash-actions{max-width:100%}.modal-overlay{padding:0;padding-bottom:var(--safe-bottom-effective);align-items:flex-end}.modal-overlay--game .modal-content,.modal-content.dnd-modal,.modal-content.inventory-modal,.modal-content.quest-modal,.modal-content.hero-sheet-modal,.modal-content.instructions-modal{max-width:100%;width:100%;margin:0;border-radius:16px 16px 0 0;box-sizing:border-box;overflow-x:hidden}.modal-content{max-height:85dvh;padding:18px;border-radius:16px 16px 0 0}.stats-display{grid-template-columns:repeat(2,1fr);gap:10px}.stat-circle{padding:14px 10px}.stat-circle-value{font-size:2rem}.inventory-grid{grid-template-columns:repeat(4,1fr);gap:8px}.dice-display{font-size:3.5rem}.dice-type-btn{min-height:var(--touch-min);min-width:56px}button,.btn-primary,.btn-secondary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.btn-primary,.btn-secondary{min-height:var(--touch-min)}@media(max-width:360px){.stats-grid{grid-template-columns:repeat(2,1fr)}.class-grid{grid-template-columns:1fr 1fr}.message{font-size:.9rem}.dice-face__cube{width:64px;height:64px}.dice-face--lg .dice-face__cube{width:72px;height:72px}.dice-face__nat{font-size:1.5rem}.dice-card__head{padding:8px 10px 6px}.dice-card__body{padding:12px 10px}.dice-threshold{max-width:100%}.dice-panel__title{font-size:.75rem}.dice-mech-row{flex-wrap:wrap;gap:8px;padding:8px}.dice-mech-badge{width:36px;height:36px}.dice-mech-outcome{width:100%;text-align:center;margin-top:2px}.dice-mech-legend{font-size:.65rem}.dice-mech-formula-part--total{border-left:none;padding-left:0}.dice-mech-header-art{height:44px}.dice-mech-header-d20{width:32px;height:32px;font-size:.8rem}.dice-mech-phase-head{font-size:.72rem;padding:6px 8px}.dice-mech-phase-body{padding:6px;gap:5px}.dice-mech-card{padding:8px}.dice-mech-dice-row{padding:6px 8px}.dice-mech-hpbar-hint{font-size:.6rem}.dice-mech-combat-summary{padding:8px}}@media(max-height:500px)and (orientation:landscape){.mobile-char-bar{padding:4px 12px}.chat-header{display:none}.splash-rune{font-size:2rem;margin-bottom:8px}.splash-subtitle{margin-bottom:16px}}
