:root{--panel:#24182cd1;--panel-edge:#ffd27859;--text:#fff6e8;--muted:#cdbfd8;--accent:#fc3;--danger:#ff6b6b;--font:ui-rounded, "Segoe UI Rounded", "Nunito", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;--ui-scale:1}*{box-sizing:border-box}html,body{height:100%;color:var(--text);font-family:var(--font);background:#2a1f33;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}canvas#game{touch-action:none;cursor:crosshair;width:100vw;height:100vh;display:block;position:fixed;inset:0}.hidden{display:none!important}button{font:inherit;color:inherit;cursor:pointer}.panel{background:var(--panel);border:2px solid var(--panel-edge);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:14px;box-shadow:0 4px #00000040}.big{font-size:18px;font-weight:800;line-height:1.15}.small{color:var(--muted);font-size:12.5px;font-weight:600}#hud{padding:max(10px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 0 max(12px, env(safe-area-inset-left));pointer-events:none;justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:fixed;top:0;left:0;right:0}#hud>*{pointer-events:auto}.hud-col{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.hud-left{flex-direction:column;gap:1px;min-width:150px;padding:8px 14px 9px;display:flex}.hud-left #depth{letter-spacing:.2px;font-size:19px}.hud-left #biome{margin-bottom:4px}.hud-left #tool{color:var(--text);font-weight:700}.hud-right{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.hud-top{align-items:stretch;gap:8px;display:flex}.hud-buttons{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.level-row{align-items:center;gap:8px;margin-top:4px;display:flex}.lv{color:var(--accent);font-size:14px;font-weight:900}.bar.xp{background:#ffffff26;border-radius:4px;flex:1;min-width:70px;height:7px;overflow:hidden}#xp-fill{background:linear-gradient(90deg,#62b4ff,#c584ff);width:0;height:100%;transition:width .3s;display:block}.coins{color:#ffe08a;align-items:center;gap:7px;padding:8px 12px;font-size:18px;font-weight:900;display:flex}.coin{vertical-align:-.12em;background:radial-gradient(circle at 35% 35%,#fff3b0,#fc3 45%,#c98a12);border-radius:50%;width:.95em;height:.95em;margin-right:3px;display:inline-block;box-shadow:inset 0 0 0 1.5px #78460099}.badge{background:var(--danger);color:#fff;text-align:center;border-radius:9px;min-width:18px;margin-left:5px;padding:0 5px;font-size:11.5px;font-weight:900;line-height:18px;display:inline-block}.tracker{text-align:left;opacity:.75;max-width:230px;box-shadow:none;background:#24182c99;flex-direction:column;gap:2px;padding:5px 10px;font-size:12px;display:flex}.tracker:hover{opacity:1}.tracker:empty{display:none}.tq{color:var(--muted);justify-content:space-between;gap:10px;font-weight:600;display:flex}.tq b{color:var(--text);white-space:nowrap;font-weight:700}.tq.done b{color:#7fe07f}.bag-btn{text-align:left;grid-template-columns:auto auto;align-items:center;gap:2px 10px;padding:8px 12px;display:grid}.bag-btn .bar{background:#ffffff26;border-radius:4px;grid-column:1/-1;height:8px;overflow:hidden}#bag-fill{background:linear-gradient(90deg,#7fe07f,#fc3);width:0;height:100%;transition:width .25s;display:block}.bag-btn.full #bag-fill{background:var(--danger)}.bag-btn.full #bag-count{color:var(--danger)}.pill{border:2px solid var(--panel-edge);background:var(--panel);border-radius:999px;min-height:34px;padding:6px 12px;font-size:13.5px;font-weight:700}.pill:hover{border-color:var(--accent)}.pill:disabled{opacity:.45;cursor:default}.pill.primary{background:var(--accent);color:#3a2400;border-color:#ffe08a}.pill.danger{color:#ffc2c2;border-color:#ff6b6b99}.prompt{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));color:var(--accent);padding:10px 18px;font-size:16px;font-weight:800;animation:1.6s ease-in-out infinite bob;position:fixed;transform:translate(-50%)}@keyframes bob{50%{transform:translate(-50%)translateY(-4px)}}body.touch .prompt{bottom:calc(150px + env(safe-area-inset-bottom))}#net{text-align:center;flex-direction:column;align-items:center;gap:10px;max-width:min(90vw,360px);padding:16px 22px;font-weight:800;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#toasts{pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:min(92vw,420px);display:flex;position:fixed;top:84px;left:50%;transform:translate(-50%)}.toast{background:var(--panel);border:2px solid var(--panel-edge);text-align:center;border-radius:12px;padding:8px 14px;font-size:14px;font-weight:700;transition:opacity .4s,transform .4s}.toast.warn{border-color:#ffaa5ab3}.toast.out{opacity:0;transform:translateY(-8px)}#celebrate{pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}#celebrate .burst{text-align:center;background:var(--panel);border:3px solid var(--c);box-shadow:0 0 40px var(--c), 0 6px 0 #0000004d;border-radius:22px;padding:18px 28px;animation:.45s cubic-bezier(.2,1.6,.4,1) pop}#celebrate img{width:84px;height:84px;filter:drop-shadow(0 0 12px var(--c))}#celebrate .title{text-transform:uppercase;letter-spacing:1px;font-size:26px;font-weight:900}#celebrate .name{font-size:20px;font-weight:800}#celebrate .sub{color:var(--muted);margin-top:2px;font-size:13px}@keyframes pop{0%{opacity:0;transform:scale(.4)}}#hud,#touch{z-index:10}.prompt{z-index:11}#toasts{z-index:30}.modal{z-index:20}#celebrate{z-index:40}#net{z-index:50}.modal{background:#0a050f8c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.sheet{border:2px solid var(--panel-edge);background:#2b1d36;border-radius:18px;flex-direction:column;width:min(520px,100%);max-height:min(86vh,720px);display:flex;box-shadow:0 8px #0000004d}.sheet.wide{width:min(860px,100%)}.sheet header{border-bottom:1px solid #ffffff14;align-items:baseline;gap:10px;padding:14px 16px 10px;display:flex}.sheet h2{margin:0;font-size:21px}.sheet h3{margin:0;font-size:16px}.close{color:var(--muted);background:0 0;border:none;margin-left:auto;padding:0 4px;font-size:28px;line-height:1}.close:hover{color:var(--text)}.item-list{flex-direction:column;gap:8px;padding:10px 12px 14px;display:flex;overflow-y:auto}.item{background:#ffffff0d;border-radius:12px;align-items:center;gap:10px;padding:8px 10px;display:flex}.item img{flex:none;width:48px;height:48px}.item .info{flex:1;min-width:0}.item .name{font-weight:800}.item .count{color:var(--accent)}.item .meta{color:var(--muted);font-size:12.5px}.item .rarity{font-weight:800}.item .desc{color:#e4d8ec;margin-top:2px;font-size:13px}.item .desc.found{color:var(--muted);font-size:12px}.item .move{flex:none;gap:4px;display:flex}.item .move .pill{min-height:30px;padding:4px 10px;font-size:12.5px}.compact .item img{width:38px;height:38px}.empty{color:var(--muted);text-align:center;margin:0;padding:18px 0}.item.current{outline:2px solid #ffcc3380}.ladder-icon{flex:none;place-items:center;width:48px;height:48px;font-size:34px;display:grid}.item .move .pill.primary{padding:6px 16px;font-size:14px}.tag{color:var(--muted);white-space:nowrap;background:#ffffff12;border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:800}.tag.on{color:#3a2400;background:var(--accent)}.tag.lock{color:#ffc2c2}.cost{flex-wrap:wrap;gap:4px 12px;margin-top:5px;font-size:13px;font-weight:700;display:flex}.cost span{align-items:center;gap:3px;display:inline-flex}.cost img{width:20px;height:20px}.cost small{color:var(--muted);font-weight:600}.cost .short{color:#ff9a9a}.cost .ok{color:#a6f0a6}.tabs{gap:6px;padding:10px 12px 0;display:flex}.tab{border:2px solid var(--panel-edge);background:0 0;border-radius:999px;padding:6px 16px;font-weight:800}.tab.active{background:var(--accent);color:#3a2400;border-color:#ffe08a}.shop-coins{color:#ffe08a;margin-left:8px;font-size:14px;font-weight:800}.shop-note{flex-wrap:wrap;align-items:center;gap:8px 12px;padding:2px 2px 6px;display:flex}.item.quest .info{flex-direction:column;gap:5px;display:flex}.progress{background:#ffffff1f;border-radius:5px;height:10px;overflow:hidden}.progress span{background:linear-gradient(90deg,#7fe07f,#fc3);height:100%;display:block}.book{flex-direction:column;gap:14px;padding:10px 14px 16px;display:flex;overflow-y:auto}.set{background:#ffffff0a;border-radius:14px;padding:10px 12px}.set-head{flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:8px;display:flex}.set-head h3{margin-right:auto}.cards{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;display:grid}.card{text-align:center;background:#ffffff0f;border-radius:12px;padding:8px;font-size:13px}.card img{width:54px;height:54px}.card .name{font-weight:800}.card.unknown img{filter:brightness(0)opacity(.35)}.card.unknown .name{color:var(--muted)}.columns{grid-template-columns:1fr 1fr;min-height:0;display:grid;overflow:hidden}.columns section{flex-direction:column;min-height:0;display:flex}.columns section+section{border-left:1px solid #ffffff14}.col-head{justify-content:space-between;align-items:center;gap:8px;padding:10px 12px 0;display:flex}#tutorial{left:50%;bottom:calc(64px + env(safe-area-inset-bottom));z-index:11;border-color:#7fe07f8c;align-items:center;gap:10px;max-width:min(92vw,560px);padding:10px 14px;font-size:14.5px;font-weight:600;display:flex;position:fixed;transform:translate(-50%)}#tutorial .tut-step{color:#7fe07f;background:#7fe07f26;border-radius:999px;flex:none;padding:3px 7px;font-size:12px;font-weight:900}#tutorial .linkbtn{color:var(--muted);flex:none}body.touch #tutorial{bottom:calc(150px + env(safe-area-inset-bottom))}#btn-ladder{left:max(12px, env(safe-area-inset-left));bottom:calc(66px + env(safe-area-inset-bottom));z-index:10;color:var(--accent);border-radius:999px;padding:6px 14px;font-size:18px;font-weight:900;position:fixed}#btn-ladder.empty{color:#ff9a9a}body.touch #btn-ladder{bottom:calc(150px + env(safe-area-inset-bottom))}.map{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;padding:12px 14px 16px;display:grid;overflow-y:auto}.place{text-align:center;background:#ffffff0d;border:2px solid #ffffff14;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:14px 12px 12px;display:flex}.place.here{border-color:var(--accent);background:#ffcc3314}.place.locked,.place.off{opacity:.7}.place-icon{margin-bottom:4px;font-size:34px;line-height:1}.place-name{font-size:15px;font-weight:800}.place-sub{color:var(--muted);min-height:2.4em;font-size:12.5px}.place .pill,.place .tag{margin-top:6px}#emote-menu{z-index:12;border-radius:999px;align-items:center;gap:2px;padding:4px 8px 4px 10px;display:flex;position:fixed}#emote-menu .small{white-space:nowrap;margin-right:4px}#emote-menu button{background:0 0;border:none;border-radius:50%;width:36px;height:36px;font-size:20px;line-height:1}#emote-menu button:hover{background:#ffffff1f}.surface-btn{color:var(--accent);font-weight:900}.credits{color:var(--muted);margin-top:14px}#emotes{left:max(12px, env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom));z-index:10;border-radius:999px;gap:2px;padding:4px;display:flex;position:fixed}#emotes button{background:0 0;border:none;border-radius:50%;width:40px;height:40px;font-size:22px;line-height:1}#emotes button:hover{background:#ffffff1f}#emotes .emote-list{display:none}#emotes.open .emote-list{display:inline-flex}#emotes{opacity:.8}#emotes:hover,#emotes.open{opacity:1}body.touch #emotes{bottom:calc(96px + env(safe-area-inset-bottom))}.code-row{flex-wrap:wrap;align-items:center;gap:10px;margin:8px 0;display:flex}.code-row b{letter-spacing:1px;color:var(--accent);font-family:ui-monospace,Consolas,monospace;font-size:20px}.code-input{min-width:150px;font:inherit;letter-spacing:1px;text-transform:uppercase;color:var(--text);border:2px solid var(--panel-edge);-webkit-user-select:text;user-select:text;background:#ffffff14;border-radius:10px;flex:1;padding:8px 12px;font-weight:800}.code-input:focus{border-color:var(--accent);outline:none}.friends-top{border-bottom:1px solid #ffffff14;padding-bottom:4px}.list-head{color:var(--muted);margin:6px 2px 0;font-size:14px}.account-btn{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}.account-btn.nudge{border-color:var(--accent);color:var(--accent)}.field{flex-direction:column;gap:4px;margin:10px 0;font-size:14px;font-weight:700;display:flex}.field input{font:inherit;color:var(--text);border:2px solid var(--panel-edge);-webkit-user-select:text;user-select:text;background:#ffffff14;border-radius:10px;padding:9px 12px;font-weight:600}.field input:focus{border-color:var(--accent);outline:none}.form-error{color:#ff9a9a;min-height:1.2em;font-size:14px;font-weight:700}.form-actions{gap:10px;margin-top:6px;display:flex}.linkbtn{color:var(--accent);background:0 0;border:none;padding:0;font-weight:800;text-decoration:underline}.warn-text{color:#ffcf8a}.help .tag{margin-left:6px}.help{padding:6px 18px 18px;font-size:15px;line-height:1.45;overflow-y:auto}.help ul{margin:6px 0 12px;padding-left:20px}.help h3{color:var(--accent);margin-top:12px}.help-actions{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:14px;display:flex}#touch{padding:0 max(14px, env(safe-area-inset-right)) calc(14px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));pointer-events:none;justify-content:space-between;display:flex;position:fixed;bottom:0;left:0;right:0}#touch>div{pointer-events:auto;gap:10px;display:flex}#touch button{border:2px solid var(--panel-edge);background:var(--panel);touch-action:none;border-radius:50%;width:68px;height:68px;font-size:15px;font-weight:800}#touch button[data-key=left],#touch button[data-key=right]{font-size:24px}#touch button.held{border-color:var(--accent);background:#fc36}@media (max-width:640px){.big{font-size:16px}.hud-left{min-width:0;padding:6px 10px}.hud-buttons .pill{min-height:30px;padding:4px 9px;font-size:12px}.tracker{display:none}.hud-top{flex-direction:column;align-items:flex-end;gap:6px}.coins{padding:5px 10px;font-size:15px}.hud-left{min-width:120px}.bar.xp{min-width:50px}.columns{grid-template-columns:1fr;overflow-y:auto}.columns section+section{border-top:1px solid #ffffff14;border-left:none}.item-list{overflow:visible}#touch button{width:60px;height:60px}}@media (prefers-reduced-motion:reduce){.prompt,#celebrate .burst{animation:none}.toast,#bag-fill{transition:none}}
