*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:Georgia,serif;background:#0d0a06;color:#d4b483;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}button:focus-visible{outline:2px solid #c8a060;outline-offset:2px}:root{--clr-bg: #0d0a06;--clr-panel: #1a1208;--clr-border: #5a3a10;--clr-border-gold: #c08020;--clr-gold: #f0c040;--clr-gold-dim: #c8a060;--clr-red: #cc2200;--clr-red-dark: #8b0000;--clr-text: #d4b483;--clr-text-dim: #8a6a30;--clr-heart: #e84040;--clr-heart-empty: #444;--tile-size: 48px;--tileset-tile-px: 64;--tileset-sheet-px: 256}.screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}.splash-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/images/dweepersplash.png);background-size:cover;background-position:center;z-index:0}.death-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/images/DungeonDeath.png);background-size:cover;background-position:center top;z-index:0}.menu-panel{position:relative;z-index:1;background:#100a04e0;border:2px solid var(--clr-border-gold);border-radius:8px;padding:32px 40px;display:flex;flex-direction:column;align-items:center;gap:14px;min-width:320px;max-width:480px}.menu-title{font-size:2rem;color:var(--clr-gold);text-shadow:0 0 12px #ff8800,0 2px 4px #000;letter-spacing:3px;text-align:center}.menu-subtitle{font-size:.85rem;color:var(--clr-gold-dim);letter-spacing:2px;margin-top:-8px}.menu-best{font-size:.8rem;color:var(--clr-text-dim);min-height:1.2em}.mode-toggle{display:flex;gap:8px}.mode-btn{padding:7px 18px;border-radius:4px;border:1px solid var(--clr-border);background:var(--clr-panel);color:var(--clr-text-dim);font-size:.8rem;transition:all .15s}.mode-btn.active.classic{border-color:var(--clr-red);color:#ff8060;background:#64000040}.mode-btn.active.adventure{border-color:#30a060;color:#60e090;background:#00502840}.btn-descend{background:linear-gradient(180deg,#6b3a00,#3d1f00);border:2px solid var(--clr-border-gold);color:#ffe080;padding:10px 32px;border-radius:4px;font-size:1rem;letter-spacing:1px;transition:filter .15s}.btn-descend:hover{filter:brightness(1.2)}.btn-secondary{background:var(--clr-panel);border:1px solid var(--clr-border);color:var(--clr-gold-dim);padding:7px 20px;border-radius:4px;font-size:.8rem}.btn-secondary:hover{border-color:var(--clr-border-gold)}.game-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;background:#13100a;overflow:auto}.game-header{width:100%;max-width:900px;display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--clr-border)}.header-stat{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:70px}.header-label{font-size:.6rem;letter-spacing:2px;color:var(--clr-text-dim);text-transform:uppercase}.header-value{font-size:1.2rem;color:var(--clr-gold);font-family:Courier New,monospace;font-weight:700}.hero-btn{background:none;border:2px solid var(--clr-border);border-radius:6px;padding:4px 8px;font-size:1.4rem;cursor:pointer;transition:border-color .15s}.hero-btn:hover{border-color:var(--clr-border-gold)}.flag-mode-btn{background:none;border:2px solid var(--clr-border);border-radius:6px;padding:4px 8px;font-size:1.2rem;cursor:pointer;transition:border-color .15s,background .15s;opacity:.5}.flag-mode-btn.active{border-color:var(--clr-border-gold);background:#c0802040;opacity:1}.flag-mode-btn:hover{opacity:1}.hearts{display:flex;gap:4px;font-size:1.2rem}.heart-full{color:var(--clr-heart)}.heart-empty{color:var(--clr-heart-empty)}.board-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;gap:12px}.game-board{display:grid;gap:0;grid-auto-rows:var(--tile-size)}.tile{width:var(--tile-size);height:var(--tile-size);background-image:url(/assets/images/tileset.png);background-repeat:no-repeat;background-size:calc(var(--tile-size) * 4) calc(var(--tile-size) * 4);image-rendering:pixelated;cursor:pointer;user-select:none;-webkit-user-select:none;transition:filter .08s}.tile.hidden:hover{filter:brightness(1.25)}.tile.revealed,.tile.flagged{cursor:default}.adventure-log{width:100%;max-width:600px;padding:8px 16px;border:1px solid var(--clr-border);border-radius:4px;background:#100a04b3;font-size:.8rem;color:var(--clr-gold-dim);font-style:italic;text-align:center;min-height:2em}.transition-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000000b3;z-index:100;animation:fade-in .2s ease-out}.transition-text{font-size:1.6rem;color:var(--clr-gold);text-shadow:0 0 20px #ff8800;letter-spacing:3px;animation:gold-pulse .6s ease-in-out infinite alternate}.transition-depth{font-size:1rem;color:var(--clr-gold-dim);margin-top:8px}@keyframes gold-pulse{0%{text-shadow:0 0 10px #ff8800}to{text-shadow:0 0 30px #ffcc00,0 0 60px #ff8800}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.dead-overlay{position:absolute;bottom:32px;left:50%;transform:translate(-50%);z-index:1;width:100%;max-width:460px;padding:20px 32px;background:#080202d9;border:1px solid rgba(139,0,0,.55);border-radius:8px;display:flex;flex-direction:column;align-items:center;gap:12px;animation:fade-in .4s ease-out}.dead-quip{font-size:.85rem;color:var(--clr-gold-dim);font-style:italic;text-align:center}.dead-stats{font-size:.8rem;color:var(--clr-text-dim)}.dead-hearts{display:flex;gap:6px;font-size:1.3rem}.btn-danger{background:linear-gradient(180deg,#5c1a00,#3a0d00);border:2px solid var(--clr-red);color:#fc4;padding:9px 26px;border-radius:4px;font-size:.9rem;letter-spacing:1px;transition:filter .15s}.btn-danger:hover{filter:brightness(1.2)}.difficulty-section{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%}.difficulty-label{font-size:.6rem;letter-spacing:2px;color:var(--clr-text-dim);text-transform:uppercase}.difficulty-toggle{display:flex;gap:8px}.diff-btn{padding:6px 16px;border-radius:4px;border:1px solid var(--clr-border);background:var(--clr-panel);color:var(--clr-text-dim);font-size:.8rem;transition:all .15s;cursor:pointer}.diff-btn.active.diff-easy{border-color:#30a060;color:#60e090;background:#0050284d}.diff-btn.active.diff-hard{border-color:var(--clr-red);color:#ff8060;background:#6400004d}.difficulty-desc{font-size:.7rem;color:var(--clr-text-dim);font-style:italic;text-align:center}.dice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000000e0;z-index:150;animation:fade-in .15s ease-out}.dice-container{display:flex;flex-direction:column;align-items:center;gap:18px;-webkit-user-select:none;user-select:none}.dice-status{font-size:.85rem;letter-spacing:3px;color:var(--clr-gold-dim);text-transform:uppercase;min-height:1.4em;text-align:center}.dice-status-save{color:#60e090;text-shadow:0 0 12px #00cc44;animation:gold-pulse .5s ease-in-out infinite alternate}.dice-status-doom{color:#ff5050;text-shadow:0 0 12px #cc0000;animation:gold-pulse .5s ease-in-out infinite alternate}.dice-image-wrap{position:relative;width:280px;height:280px}.dice-img{width:100%;height:100%;object-fit:contain;display:block}.dice-wrap-rolling .dice-img{animation:dice-shake .18s ease-in-out infinite}.dice-wrap-settled .dice-img{animation:dice-land-glow .6s ease-out forwards}.dice-number{position:absolute;top:46%;left:50%;transform:translate(-50%,-50%);font-family:Cinzel,Georgia,Times New Roman,serif;font-size:76px;font-weight:900;color:#f0c040;text-shadow:0 0 14px #ff9900,0 0 28px #ff6600,2px 2px 0 rgba(0,0,0,.95),-2px -2px 0 rgba(0,0,0,.95),2px -2px 0 rgba(0,0,0,.95),-2px 2px 0 rgba(0,0,0,.95);line-height:1;pointer-events:none;letter-spacing:-2px}.dice-number.dice-settled{animation:number-land .35s cubic-bezier(.22,1,.36,1) forwards}.dice-number.dice-saved{color:#60e090;text-shadow:0 0 16px #00ff66,0 0 32px #00cc44,2px 2px 0 rgba(0,0,0,.95),-2px -2px 0 rgba(0,0,0,.95),2px -2px 0 rgba(0,0,0,.95),-2px 2px 0 rgba(0,0,0,.95)}.dice-number.dice-doomed{color:#ff5050;text-shadow:0 0 16px #ff2200,0 0 32px #cc0000,2px 2px 0 rgba(0,0,0,.95),-2px -2px 0 rgba(0,0,0,.95),2px -2px 0 rgba(0,0,0,.95),-2px 2px 0 rgba(0,0,0,.95)}.dice-flavor{font-size:.82rem;color:var(--clr-text);font-style:italic;text-align:center;max-width:260px;min-height:1.3em;opacity:0;transition:opacity .4s ease-in}.dice-flavor.dice-flavor-visible{opacity:1}@keyframes dice-shake{0%{transform:translate(0) rotate(0)}20%{transform:translate(-4px,2px) rotate(-3deg)}40%{transform:translate(4px,-2px) rotate(3deg)}60%{transform:translate(-3px,3px) rotate(-2deg)}80%{transform:translate(3px,-3px) rotate(2deg)}to{transform:translate(0) rotate(0)}}@keyframes dice-land-glow{0%{filter:drop-shadow(0 0 6px rgba(240,192,64,.3))}40%{filter:drop-shadow(0 0 40px rgba(240,192,64,1)) drop-shadow(0 0 80px rgba(255,150,0,.6))}to{filter:drop-shadow(0 0 18px rgba(240,192,64,.65))}}@keyframes number-land{0%{transform:translate(-50%,-50%) scale(1.5);opacity:.5}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:200}.modal-box{background:#1a1208;border:2px solid var(--clr-border-gold);border-radius:8px;padding:28px 32px;max-width:480px;width:90%;max-height:80vh;overflow-y:auto}.modal-title{font-size:1.2rem;color:var(--clr-gold);margin-bottom:16px}.modal-section{margin-bottom:14px}.modal-section h4{color:var(--clr-gold-dim);margin-bottom:6px;font-size:.85rem;letter-spacing:1px}.modal-section p,.modal-section li{font-size:.8rem;color:var(--clr-text);line-height:1.6}.modal-section ul{padding-left:16px}.modal-close{margin-top:16px;width:100%}@media (max-width: 600px){:root{--tile-size: 36px}.menu-panel{padding:24px 20px;min-width:280px}.menu-title{font-size:1.5rem}.game-header{padding:6px 10px}.header-value{font-size:1rem}.dead-overlay{bottom:16px;padding:16px 20px;max-width:92vw}.death-bg{background-image:url(/assets/images/DeathDungeonMobile.png);background-position:center top}}@media (max-width: 380px){:root{--tile-size: 28px}}
