:root{--font: "Pixelify Sans", ui-monospace, monospace;--ink: #f4f4f4;--ink-dim: #b9b9c4;--ink-shadow: #2b2b33;--accent: #84e63c;--accent-deep: #3d8a1c;--gold: #ffd23f;--danger: #ff6b5b;--stone: #8b8b8b;--stone-hi: #c9c9c9;--stone-lo: #4e4e4e;--edge: #111114;--tooltip: #160c1d;--tooltip-edge: #4b1f8c;--px: 3px}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden}body{background:#1f1f25 var(--tile-deep);color:var(--ink);font-family:var(--font);font-size:18px;image-rendering:pixelated;-webkit-font-smoothing:none}button,input,select{font:inherit;color:inherit}.shadow{text-shadow:var(--px) var(--px) 0 var(--ink-shadow)}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 20px;border:var(--px) solid var(--edge);background:var(--stone) var(--tile-panel);background-blend-mode:multiply;box-shadow:inset var(--px) var(--px) 0 var(--stone-hi),inset calc(var(--px) * -1) calc(var(--px) * -2) 0 var(--stone-lo);color:var(--ink);text-shadow:2px 2px 0 var(--ink-shadow);font-size:20px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover:not(:disabled){border-color:#fff;background-color:#9fb48f}.btn:active:not(:disabled){box-shadow:inset var(--px) var(--px) 0 var(--stone-lo),inset calc(var(--px) * -1) calc(var(--px) * -1) 0 var(--stone-hi)}.btn:disabled{background-color:#4a4a4a;color:#9a9a9a;text-shadow:none;cursor:default}.btn.primary{background-color:#6bbf3a;box-shadow:inset var(--px) var(--px) 0 #b4f087,inset calc(var(--px) * -1) calc(var(--px) * -2) 0 var(--accent-deep)}.btn.primary:hover:not(:disabled){background-color:#86d653}.btn.small{min-height:40px;padding:0 12px;font-size:17px}.btn.square{width:48px;padding:0}.field{height:48px;padding:0 14px;border:var(--px) solid #a0a0a0;outline:var(--px) solid var(--edge);outline-offset:0;background:#000;color:var(--ink);font-size:20px;min-width:0}.field:focus{border-color:#fff}.field::placeholder{color:#6c6c74}select.field{appearance:none;padding-right:36px;background:linear-gradient(45deg,transparent 50%,#ddd 50%) right 20px center / 8px 8px no-repeat,linear-gradient(-45deg,transparent 50%,#ddd 50%) right 12px center / 8px 8px no-repeat,#000;cursor:pointer}.title{position:relative;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:40px;padding:24px 16px 64px;background:var(--tile-soil);overflow:auto}.title:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.65) 100%);pointer-events:none}.title>*{position:relative}.logo{text-align:center;line-height:1}.logo-word{display:block;font-weight:700;font-size:clamp(44px,10vw,112px);letter-spacing:.02em;color:#e6e6e6;background:linear-gradient(#fff 0 30%,#bfbfbf 30% 62%,#8e8e8e 62%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 6px 0 #3a3a3a) drop-shadow(0 4px 0 #1a1a1a) drop-shadow(6px 6px 0 rgba(0,0,0,.45))}.logo-word .x{background:linear-gradient(#d6ff9a 0 30%,var(--accent) 30% 62%,var(--accent-deep) 62%);-webkit-background-clip:text;background-clip:text}.logo-for{display:block;margin-top:18px;color:var(--gold);font-size:clamp(16px,2.4vw,22px);text-shadow:2px 2px 0 #3f3100;transform:rotate(-3deg)}.logo.small .logo-word{font-size:30px;filter:drop-shadow(0 3px 0 #2a2a2a) drop-shadow(3px 3px 0 rgba(0,0,0,.4))}.menu{display:flex;flex-direction:column;gap:14px;width:min(460px,100%)}.menu .row{display:flex;gap:10px}.menu .row>.field{flex:1}.menu .btn{width:100%}.menu .row .btn{width:auto}.source{display:flex;align-items:center;gap:12px;min-height:48px;padding:6px 14px;border:var(--px) dashed rgba(255,255,255,.35);background:#00000059}.source.drop{border-color:var(--accent);background:#84e63c1f}.source .grow{flex:1}.status{min-height:24px;text-align:center;color:var(--ink-dim)}.status.error{color:var(--danger)}.legal{position:absolute;left:0;right:0;bottom:0;padding:10px 16px;text-align:center;font-size:14px;color:#a9a9b3;text-shadow:1px 1px 0 #000}.legal a{color:inherit}.explorer{position:relative;height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:var(--px) solid var(--edge);background:#2c2c34 var(--tile-deep);box-shadow:inset 0 calc(var(--px) * -1) 0 #45454f;z-index:3;flex-wrap:wrap}.topbar .home{background:none;border:none;cursor:pointer;padding:0 8px 0 0}.topbar .seed{width:240px}.topbar .spacer{flex:1}.chip{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:var(--px) solid var(--edge);background:#1a1a1f;color:var(--accent);font-size:17px;cursor:pointer}.chip:hover{border-color:#fff}.stage{position:relative;flex:1;min-height:0;overflow:hidden}.stage.sky{background:linear-gradient(#6f9bff,#a9c8ff 55%,#cfe0ff)}.stage canvas{display:block}.map-canvas{touch-action:none;cursor:grab}.map-canvas.picking{cursor:crosshair}.hud{position:absolute;top:12px;left:14px;pointer-events:none;font-size:20px;line-height:1.35;text-shadow:2px 2px 0 #000;z-index:2}.hud .biome{color:var(--gold)}.hud .dim{color:var(--ink-dim)}.tooltip{position:absolute;pointer-events:none;padding:6px 10px;background:var(--tooltip);border:2px solid var(--tooltip-edge);outline:2px solid var(--tooltip);font-size:17px;white-space:nowrap;text-shadow:2px 2px 0 #000;z-index:4}.empty{position:absolute;inset:0;display:grid;place-items:center;font-size:26px;color:var(--ink-dim);text-shadow:2px 2px 0 #000;pointer-events:none}.hotbar-wrap{position:absolute;left:50%;bottom:40px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:3}.hotbar{display:flex;padding:3px;background:#141418d1;border:var(--px) solid var(--edge);box-shadow:inset 0 0 0 var(--px) #5a5a64}.slot{position:relative;width:60px;height:60px;display:grid;place-items:center;margin:0;border:var(--px) solid transparent;background:#8b8b8b2e;box-shadow:inset var(--px) var(--px) 0 #00000073,inset calc(var(--px) * -1) calc(var(--px) * -1) 0 #ffffff1f;cursor:pointer}.slot+.slot{margin-left:3px}.slot.gap{margin-left:14px}.slot:hover{background:#ffffff29}.slot.on{border-color:#fff;outline:var(--px) solid var(--edge);z-index:1}.slot:disabled{opacity:.45;cursor:default}.slot .key{position:absolute;right:3px;bottom:0;font-size:13px;color:var(--ink-dim);text-shadow:1px 1px 0 #000}.slot .tip{display:none;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)}.slot:hover .tip{display:block}.xp{display:flex;flex-direction:column;align-items:center;gap:2px}.xp-count{color:var(--accent);font-size:22px;font-weight:700;text-shadow:2px 0 0 #000,-2px 0 0 #000,0 2px 0 #000,0 -2px 0 #000}.xp-bar{width:364px;max-width:80vw;height:12px;border:2px solid #000;background:repeating-linear-gradient(90deg,#2b2b2b 0 18px,#000 18px 20px)}.xp-bar>div{height:100%;background:repeating-linear-gradient(90deg,var(--accent) 0 18px,#0b2a00 18px 20px);box-shadow:inset 0 3px #c7ff9e;transition:width .2s}.popover{position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%);display:flex;gap:8px;padding:10px;background:#2c2c34 var(--tile-deep);border:var(--px) solid var(--edge);box-shadow:inset 0 0 0 var(--px) #5a5a64;z-index:5}.popover .field{width:110px;height:40px;font-size:18px}.menu-list{flex-direction:column;min-width:220px}.toast{position:absolute;top:14px;right:14px;max-width:min(440px,90vw);padding:10px 14px;background:#000000bf;border:var(--px) solid var(--danger);color:var(--danger);text-shadow:2px 2px 0 #000;z-index:6}.explorer .legal{position:absolute;font-size:13px;padding:6px 12px;pointer-events:none}.explorer .legal a{pointer-events:auto}@media(max-width:720px){.topbar .seed{width:150px}.slot{width:48px;height:48px}.hud{font-size:16px}}.about{position:relative;height:100%;overflow:auto;padding:32px 16px 72px;background:var(--tile-soil)}.about-page{max-width:760px;margin:0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:18px}.about .home{display:block;margin-bottom:6px;text-decoration:none}.about-section{width:100%;padding:18px 22px;background:#0000008c;border:var(--px) solid var(--edge);box-shadow:inset 0 0 0 var(--px) #5a5a64;line-height:1.5}.about-section h2{display:flex;align-items:center;gap:12px;margin:0 0 10px;color:var(--gold);font-size:26px}.about-section p,.about-section ul{margin:0 0 10px}.about-section ul{padding-left:22px}.about-section li+li{margin-top:6px}.about-section .dim{color:var(--ink-dim)}.about-section a{color:var(--accent)}.about .legal{position:static;margin-top:24px}
