@font-face{font-family:JetBrains Sans;src:url(fonts/JetBrainsSans-Regular.woff2)}@font-face{font-family:JetBrains Mono;src:url(fonts/JetBrainsMono-Regular.woff2)}:root{--stone-0: #0a0806;--stone-1: #14100c;--stone-2: #211a13;--gold: #e8b64c;--gold-bright: #ffd479;--ember: #ff8a3c;--wcoin: #ffcf5c;--dust: #8fe3ff;--parchment: #ece0c8;--parchment-dim: rgba(236, 224, 200, .6);--danger: #ff7a6b;--success: #7ee0a8;--serif: "Cinzel", "Trajan Pro", Georgia, "Times New Roman", serif;--body: "Marcellus", "JetBrains Sans", system-ui, Avenir, Helvetica, Arial, sans-serif;font-family:var(--body);font-weight:400;color:var(--parchment);text-align:center;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-width:320px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;overflow-x:hidden;position:relative;background-color:var(--stone-0);background-image:radial-gradient(120% 90% at 50% 40%,#0a080659,#0a0806b8 75%,#060403eb),url(mine-panorama.svg);background-repeat:no-repeat,no-repeat;background-position:center,center bottom;background-size:cover,cover;background-attachment:fixed,fixed;image-rendering:pixelated}.cavern-glow{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(70% 55% at 50% 8%,rgba(255,160,70,.14),transparent 60%);animation:flicker 5s ease-in-out infinite}@keyframes flicker{0%,to{opacity:.85}45%{opacity:1}55%{opacity:.72}70%{opacity:.95}}.embers{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:radial-gradient(2px 2px at 20% 80%,rgba(255,200,120,.7),transparent),radial-gradient(2px 2px at 70% 90%,rgba(255,170,90,.6),transparent),radial-gradient(1.5px 1.5px at 40% 70%,rgba(143,227,255,.6),transparent),radial-gradient(1.5px 1.5px at 85% 60%,rgba(255,210,140,.6),transparent),radial-gradient(1.5px 1.5px at 55% 85%,rgba(255,190,110,.5),transparent);background-repeat:no-repeat;animation:rise 12s linear infinite;opacity:.7}@keyframes rise{0%{transform:translateY(0);opacity:.7}to{transform:translateY(-40px);opacity:0}}@media (prefers-reduced-motion: reduce){.cavern-glow,.embers{animation:none}}img{max-width:100%;height:auto}#app{position:relative;z-index:1;width:100%;max-width:1280px;display:flex;justify-content:center;padding:32px 20px}.auth-card,.welcome-card{width:100%;max-width:440px;padding:38px 40px 34px;text-align:left;position:relative;background:linear-gradient(180deg,#2e251aeb,#14100cf0);border:1px solid rgba(232,182,76,.35);border-radius:18px;box-shadow:0 0 0 1px #0009,0 24px 60px #000000a6,inset 0 1px #ffd68226,inset 0 -30px 60px #0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-card:before,.auth-card:after{content:"";position:absolute;top:12px;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--gold-bright),#7a5a1c);box-shadow:0 0 6px #ffc85a80}.auth-card:before{left:12px}.auth-card:after{right:12px}.welcome-card{text-align:center}.brand{text-align:center;margin-bottom:26px}.brand-crest{font-size:40px;line-height:1;filter:drop-shadow(0 2px 6px rgba(255,150,60,.5));margin-bottom:6px}.brand-name{font-family:var(--serif);font-weight:900;font-size:40px;letter-spacing:3px;margin:0;background:linear-gradient(180deg,var(--gold-bright),var(--gold) 55%,#a9791f);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 2px 12px rgba(232,182,76,.25)}.brand-tagline{font-family:var(--serif);font-weight:500;font-size:14px;letter-spacing:.5px;color:var(--parchment-dim);margin:8px 0 16px}.currencies{display:flex;gap:10px;justify-content:center}.coin{display:inline-flex;align-items:center;gap:7px;font-family:var(--serif);font-size:12px;letter-spacing:1px;text-transform:uppercase;padding:5px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#00000059}.coin-dot{width:10px;height:10px;border-radius:50%}.coin-wcoin{color:var(--wcoin);border-color:#ffcf5c66}.coin-wcoin .coin-dot{background:radial-gradient(circle at 35% 30%,#fff2c4,var(--wcoin) 60%,#b8860b);box-shadow:0 0 8px #ffcf5cb3}.coin-dust{color:var(--dust);border-color:#8fe3ff66}.coin-dust .coin-dot{background:radial-gradient(circle at 35% 30%,#ffffff,var(--dust) 60%,#2b6f88);box-shadow:0 0 8px #8fe3ffb3}.auth-tabs{display:flex;gap:6px;margin-bottom:26px;padding:5px;border-radius:12px;background:#0006;border:1px solid rgba(232,182,76,.15)}.auth-tab{flex:1;padding:12px 0;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--parchment-dim);font-family:var(--serif);font-size:14px;letter-spacing:.5px;cursor:pointer;transition:color .18s ease,background .18s ease,border-color .18s ease}.auth-tab:hover{color:var(--parchment)}.auth-tab.is-active{color:#2a1c07;background:linear-gradient(180deg,var(--gold-bright),var(--gold));border-color:#ffd68299;box-shadow:0 2px 10px #e8b64c59;font-weight:700}.auth-title{font-family:var(--serif);font-weight:700;font-size:24px;line-height:1.25;margin:0 0 6px;color:var(--parchment)}.auth-subtitle{margin:0 0 26px;font-size:15px;color:var(--parchment-dim)}.field{margin-bottom:18px}.field label{display:block;margin-bottom:8px;font-family:var(--serif);font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--gold)}.field input{width:100%;padding:14px 16px;font-size:16px;font-family:var(--body);color:var(--parchment);background:#00000073;border:1px solid rgba(232,182,76,.25);border-radius:10px;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.field input::placeholder{color:#ece0c84d}.field input:focus{border-color:var(--gold);box-shadow:0 0 0 3px #e8b64c33,0 0 18px #ffa04626}.field input.has-error{border-color:var(--danger)}.field-error{margin:6px 0 0;min-height:16px;font-size:13px;color:var(--danger)}.password-wrap{position:relative;display:flex;align-items:center}.password-wrap input{padding-right:84px}.toggle-password{position:absolute;right:8px;padding:7px 12px;border:1px solid rgba(232,182,76,.3);border-radius:8px;background:#0000004d;color:var(--gold);font-family:var(--serif);font-size:12px;letter-spacing:.5px;cursor:pointer;transition:background .15s ease}.toggle-password:hover{background:#e8b64c26}.submit-btn{width:100%;padding:15px;margin-top:10px;font-family:var(--serif);font-weight:700;font-size:16px;letter-spacing:1px;color:#2a1c07;background:linear-gradient(180deg,var(--gold-bright),var(--gold) 60%,#c8912a);border:1px solid rgba(255,224,150,.7);border-radius:11px;cursor:pointer;position:relative;overflow:hidden;box-shadow:0 6px 20px #e8b64c4d,inset 0 1px #fff6;transition:transform .08s ease,box-shadow .2s ease,filter .2s ease}.submit-btn:hover{filter:brightness(1.08);box-shadow:0 8px 28px #ffb45073}.submit-btn:active{transform:translateY(1px)}.submit-btn:after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transition:left .6s ease}.submit-btn:hover:after{left:130%}.form-message{margin:18px 0 0;min-height:18px;font-size:14px;text-align:center}.form-message.is-error{color:var(--danger)}.form-message.is-success{color:var(--success)}.welcome-card .brand-crest{font-size:46px;margin-bottom:10px}.welcome-card .submit-btn{margin-top:24px;max-width:260px;margin-inline:auto}[hidden]{display:none!important}.hall-footer{position:relative;z-index:1;margin:20px 0 28px;font-family:var(--serif);font-size:12px;letter-spacing:1px;color:#ece0c859}@media (max-width: 560px){.auth-card,.welcome-card{padding:30px 24px 26px}.brand-name{font-size:32px}}.prep{margin:8px 0 20px}.prep-label{font-family:var(--serif);font-size:13px;letter-spacing:1px;color:var(--gold);margin:0 0 10px}.loading-bar{height:12px;border-radius:999px;background:#0000008c;border:1px solid rgba(232,182,76,.3);overflow:hidden;box-shadow:inset 0 1px 3px #0009}.loading-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#d99a2f,var(--gold-bright));box-shadow:0 0 10px #ffc85a99}.loading-fill.is-loading{animation:loadfill 3.5s ease-in-out forwards}@keyframes loadfill{0%{width:0}to{width:100%}}.play-btn{animation:rise-in .4s ease both}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ghost-btn{margin-top:14px;padding:10px 18px;background:transparent;border:1px solid rgba(232,182,76,.35);border-radius:999px;color:var(--parchment-dim);font-family:var(--serif);font-size:13px;letter-spacing:.5px;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.ghost-btn:hover{color:var(--parchment);border-color:var(--gold);background:#e8b64c1a}body.playing{overflow:hidden}body.playing #app,body.playing .hall-footer{display:none}.game-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;padding:14px clamp(12px,4vw,40px);gap:12px;background:radial-gradient(90% 60% at 50% 0%,rgba(255,138,60,.1),transparent 60%),linear-gradient(180deg,#0a0806db,#060403f2)}.hud{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.hud-currencies{display:flex;gap:8px;flex-wrap:wrap}.hud-coin{display:inline-flex;align-items:center;gap:7px;font-family:var(--serif);font-size:13px;letter-spacing:.5px;padding:7px 13px;border-radius:999px;background:#00000080;border:1px solid rgba(255,255,255,.12)}.hud-coin b{font-size:15px}.hud-dot{width:11px;height:11px;border-radius:50%}.hud-coin.wcoin{color:var(--wcoin);border-color:#ffcf5c66}.hud-coin.wcoin .hud-dot{background:radial-gradient(circle at 35% 30%,#fff2c4,var(--wcoin) 60%,#b8860b);box-shadow:0 0 8px #ffcf5cb3}.hud-coin.dust{color:var(--dust);border-color:#8fe3ff66}.hud-coin.dust .hud-dot{background:radial-gradient(circle at 35% 30%,#fff,var(--dust) 60%,#2b6f88);box-shadow:0 0 8px #8fe3ffb3}.hud-depth{position:absolute;left:50%;top:0;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;line-height:1}.hud-depth-label{font-family:var(--serif);font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--parchment-dim);margin-bottom:2px}.depth-stats{display:flex;gap:6px;align-items:stretch}.depth-stat{display:flex;flex-direction:column;align-items:center;gap:1px;padding:4px 12px;border-radius:10px;background:#00000080;border:1px solid rgba(232,182,76,.2);font-family:var(--serif);font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--parchment-dim);line-height:1.1}.depth-stat b{font-size:22px;color:var(--gold-bright);text-shadow:0 2px 10px rgba(232,182,76,.4)}.depth-stat.vein b{color:#c79bff;text-shadow:0 2px 10px rgba(199,155,255,.4)}.depth-stat.stratum b{color:var(--dust);text-shadow:0 2px 10px rgba(143,227,255,.4)}.hud-exit{margin-top:0}.mine-viewport{position:relative;flex:1;min-height:0;border-radius:16px;overflow:hidden;border:1px solid rgba(232,182,76,.18);box-shadow:inset 0 0 60px #0009}.mine-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;touch-action:none;image-rendering:pixelated}.mine-hint{position:absolute;left:50%;bottom:12px;transform:translate(-50%);margin:0;padding:7px 16px;max-width:90%;font-family:var(--serif);font-size:13px;letter-spacing:.5px;color:var(--parchment);text-align:center;background:#0000008c;border:1px solid rgba(232,182,76,.25);border-radius:999px;pointer-events:none}.mine-hint:empty{display:none}.player-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:12px 16px;border-radius:14px;background:#00000080;border:1px solid rgba(232,182,76,.2)}.player-name{font-family:var(--serif);font-size:15px;color:var(--parchment)}.player-name b{color:var(--gold)}.player-level{display:flex;align-items:center;gap:12px;font-family:var(--serif);font-size:14px}.player-lvl b{color:var(--gold-bright);font-size:16px}.xp-bar{width:min(48vw,240px);height:12px;border-radius:999px;background:#0009;border:1px solid rgba(232,182,76,.3);overflow:hidden}.xp-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#7a52c4,#c79bff);box-shadow:0 0 8px #c79bff99;transition:width .35s ease}.xp-text{color:var(--parchment-dim);font-size:13px;min-width:84px;text-align:right}@media (prefers-reduced-motion: reduce){.miner,.gem,.tile.mining{animation:none}}@media (max-width: 560px){.depth-stat{padding:3px 8px;font-size:9px;letter-spacing:1px}.depth-stat b{font-size:17px}.player-bar{justify-content:center}}
