:root{--bg-deep: #0c1218;--bg-forest: #1a2e24;--accent-foxfire: #f4a261;--accent-glow: #e9c46a;--text-warm: #f5e6c8;--text-muted: #a89b84;--ui-panel: rgba(12, 18, 24, .82);--ui-border: rgba(244, 162, 97, .35);--heart: #e76f51;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text-warm);background:var(--bg-deep);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden;background:var(--bg-deep);-webkit-user-select:none;user-select:none}body{display:flex;place-items:center}.app-shell{position:relative;width:100%;height:100%;overflow:hidden}.game-layer{position:absolute;inset:0;z-index:0}.game-layer canvas{display:block;image-rendering:pixelated;image-rendering:crisp-edges}.ui-layer{position:absolute;inset:0;z-index:10;pointer-events:none}.ui-layer .title-screen,.ui-layer .inventory-backdrop,.ui-layer .hub-shop-backdrop,.ui-layer .hud-inv-btn,.ui-layer .hud-extract-btn,.ui-layer .btn,.ui-layer button{pointer-events:auto}.touch-overlay{position:absolute;inset:0;z-index:5;pointer-events:none}.touch-stick{position:absolute;left:max(16px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));width:160px;height:160px;pointer-events:auto;touch-action:none;z-index:6}.touch-stick-base{position:absolute;inset:0;border-radius:50%;background:#1a1520b8;border:3px solid rgba(244,162,97,.9);box-shadow:0 0 0 1px #0006,0 4px 16px #00000059}.touch-stick-knob{position:absolute;left:50%;top:50%;width:68px;height:68px;margin:0;border-radius:50%;background:#e07a3df2;border:3px solid rgba(255,240,220,.9);transform:translate(-50%,-50%);box-shadow:0 2px 8px #0006;will-change:transform}.touch-actions{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:flex-end;gap:16px;pointer-events:none;z-index:6}.touch-btn{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border:3px solid rgba(244,162,97,.95);border-radius:50%;background:#2a2438e0;color:#fff0dc;font-weight:700;font-size:.85rem;letter-spacing:.04em;box-shadow:0 4px 14px #0006;display:flex;align-items:center;justify-content:center;cursor:pointer}.touch-btn:active{background:#e07a3df2;transform:scale(.96)}.touch-btn-attack{width:108px;height:108px;font-size:1rem}.touch-btn-dodge{width:88px;height:88px;margin-right:8px;font-size:.75rem}.touch-btn-bag{position:absolute;top:max(64px,calc(env(safe-area-inset-top) + 52px));right:max(16px,env(safe-area-inset-right));width:64px;height:64px;font-size:.7rem;background:#3d3550eb;z-index:6;pointer-events:auto;touch-action:none}.title-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background:radial-gradient(ellipse at 50% 30%,rgba(42,74,58,.55) 0%,transparent 55%),radial-gradient(ellipse at 50% 100%,rgba(12,18,24,.95) 0%,transparent 50%),linear-gradient(180deg,#152820,#0c1218 70%);pointer-events:auto}.title-mark{font-size:.85rem;letter-spacing:.35em;text-transform:uppercase;color:var(--accent-foxfire);margin-bottom:.75rem;opacity:.9}.title-screen h1{font-size:clamp(1.75rem,4vw,2.75rem);font-weight:700;text-align:center;line-height:1.15;color:var(--text-warm);text-shadow:0 0 24px rgba(244,162,97,.35);margin-bottom:.5rem}.title-tagline{color:var(--text-muted);font-size:.95rem;margin-bottom:2.5rem;font-style:italic}.title-actions{display:flex;flex-direction:column;gap:.75rem;align-items:center}.btn{appearance:none;border:1px solid var(--ui-border);background:var(--ui-panel);color:var(--text-warm);font:inherit;font-size:1rem;padding:.7rem 2.25rem;border-radius:6px;cursor:pointer;min-width:200px;transition:background .15s ease,border-color .15s ease,transform .1s ease,box-shadow .15s ease}.btn:hover{background:#f4a2611f;border-color:var(--accent-foxfire);box-shadow:0 0 16px #f4a26133}.btn:active{transform:scale(.98)}.btn-primary{background:linear-gradient(180deg,#f4a26140,#f4a2611a);border-color:var(--accent-foxfire);font-weight:600}.btn-primary:hover{background:linear-gradient(180deg,#f4a26166,#f4a2612e)}.title-hint{margin-top:2rem;font-size:.75rem;color:var(--text-muted);opacity:.7}.title-meta{margin-top:1.25rem;font-size:.85rem;color:var(--accent-glow);opacity:.9}.hud-extract-btn{pointer-events:auto;appearance:none;border:1px solid var(--ui-border);background:var(--ui-panel);color:var(--text-warm);font:inherit;font-size:.75rem;padding:6px 12px;border-radius:6px;cursor:pointer;margin-left:8px}.hud-extract-btn:hover{border-color:var(--accent-foxfire);background:#f4a2611f}.hub-shop .hub-level{font-weight:500;color:var(--text-muted);font-size:.8em}.inventory-slot.dim{opacity:.55}.hud-bottom{align-items:flex-end;gap:8px}.hud{position:absolute;inset:0;pointer-events:none;padding:12px 16px;display:flex;flex-direction:column;justify-content:space-between}.hud-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.hud-room{flex:1;text-align:center;min-width:0;max-width:420px;margin:0 auto;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:6px;padding:6px 14px}.hud-biome{font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;color:var(--accent-foxfire);opacity:.85;margin-bottom:2px}.hud-room-name{font-size:.9rem;font-weight:600;color:var(--accent-glow);letter-spacing:.04em}.hud-room-blurb{font-size:.72rem;color:var(--text-muted);font-style:italic;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hud-hearts{display:flex;gap:4px;align-items:center}.heart{width:22px;height:20px;position:relative;filter:drop-shadow(0 0 3px rgba(231,111,81,.5))}.heart:before,.heart:after{content:"";position:absolute;width:11px;height:18px;background:var(--heart);border-radius:11px 11px 0 0;top:0}.heart:before{left:11px;transform:rotate(-45deg);transform-origin:0 100%}.heart:after{left:0;transform:rotate(45deg);transform-origin:100% 100%}.heart.empty{opacity:.25;filter:none}.hud-shards{display:flex;align-items:center;gap:6px;background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:6px;padding:4px 10px;font-size:.85rem;font-variant-numeric:tabular-nums}.shard-icon{width:12px;height:12px;background:linear-gradient(135deg,#7ec8e3,#4a90c8);clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);box-shadow:0 0 6px #7ec8e399}.hud-bottom{display:flex;justify-content:space-between;align-items:flex-end}.hud-status{background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:6px;padding:6px 12px;font-size:.75rem;color:var(--text-muted);max-width:280px}.hud-status strong{color:var(--accent-glow);font-weight:600}.hud-controls{background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:6px;padding:6px 10px;font-size:.7rem;color:var(--text-muted);line-height:1.5;text-align:right}.hud-controls kbd{display:inline-block;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:3px;padding:0 4px;font-family:inherit;font-size:.68rem;color:var(--text-warm)}.hud-top-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.hud-passives{display:flex;gap:4px;margin-left:8px;align-items:center}.hud-passive{font-size:.85rem;filter:drop-shadow(0 0 4px rgba(244,162,97,.6))}.hud-inv-btn{pointer-events:auto;appearance:none;border:1px solid var(--ui-border);background:var(--ui-panel);color:var(--text-warm);font:inherit;font-size:.75rem;padding:4px 10px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:6px}.hud-inv-btn:hover{border-color:var(--accent-foxfire);background:#f4a2611f}.hud-inv-btn kbd{font-size:.65rem;padding:0 4px;border-radius:3px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f}.inventory-backdrop{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#060a0e8c;pointer-events:auto;z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.inventory-panel{width:min(440px,92vw);max-height:min(520px,85vh);overflow:auto;background:linear-gradient(180deg,#161e24f5,#0c1218fa);border:1px solid var(--ui-border);border-radius:12px;box-shadow:0 12px 40px #00000073,0 0 24px #f4a26114;padding:1.1rem 1.25rem .9rem}.inventory-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.inventory-header h2{font-size:1.15rem;font-weight:700;color:var(--text-warm)}.inventory-sub{font-size:.78rem;color:var(--text-muted);margin-top:.25rem}.inventory-sub strong{color:var(--accent-glow)}.inventory-close{min-width:auto;padding:.4rem .75rem;font-size:.8rem}.inventory-empty{color:var(--text-muted);font-size:.9rem;font-style:italic;padding:1.5rem .5rem;text-align:center}.inventory-grid{list-style:none;display:flex;flex-direction:column;gap:.5rem}.inventory-slot{width:100%;display:grid;grid-template-columns:40px 1fr auto;grid-template-rows:auto auto;gap:.15rem .75rem;align-items:center;text-align:left;appearance:none;border:1px solid rgba(255,255,255,.08);background:#ffffff08;color:var(--text-warm);font:inherit;padding:.65rem .75rem;border-radius:8px;cursor:default;position:relative}.inventory-slot.usable{cursor:pointer}.inventory-slot.usable:hover{border-color:var(--accent-foxfire);background:#f4a2611a}.inventory-slot:disabled{opacity:.95}.inventory-slot-body{display:flex;flex-direction:column;gap:2px;min-width:0}.inventory-slot-name{font-size:.9rem;font-weight:600}.inventory-slot-desc{font-size:.72rem;color:var(--text-muted);line-height:1.35}.inventory-qty{font-variant-numeric:tabular-nums;color:var(--accent-glow);font-weight:600;font-size:.85rem;align-self:start}.inventory-use-hint,.inventory-tag{grid-column:2;font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--accent-foxfire);opacity:.85}.inventory-tag{color:var(--text-muted)}.inventory-footer{margin-top:1rem;padding-top:.75rem;border-top:1px solid rgba(255,255,255,.06);font-size:.72rem;color:var(--text-muted)}.inventory-footer kbd{display:inline-block;padding:0 4px;border-radius:3px;border:1px solid rgba(255,255,255,.12);background:#ffffff0f;color:var(--text-warm);font-size:.68rem}.inv-icon{width:36px;height:36px;border-radius:6px;display:block;image-rendering:pixelated;box-shadow:inset 0 0 0 1px #ffffff14}.inv-icon-shard{background:linear-gradient(135deg,transparent 40%,#a8e0ff 40% 60%,transparent 60%),linear-gradient(45deg,#4a90c8,#7ec8e3);clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);border-radius:0}.inv-icon-berry{background:radial-gradient(circle at 35% 45%,#e76f51 0 35%,transparent 36%),radial-gradient(circle at 65% 45%,#c23b4a 0 35%,transparent 36%),radial-gradient(circle at 50% 20%,#3d7a45 0 18%,transparent 19%),#1a2420}.inv-icon-charm{background:radial-gradient(circle at 50% 60%,#ffe8a0 0 18%,#f4a261 18% 42%,transparent 43%),linear-gradient(180deg,#8b6914 0 20%,transparent 20%),#1a1520}.inv-icon-bell{background:radial-gradient(ellipse at 50% 55%,#e9c46a 0 40%,#c9a84c 40% 55%,transparent 56%),#1a1520}.boss-bar{position:absolute;top:64px;left:50%;transform:translate(-50%);width:min(420px,70vw);pointer-events:none;z-index:15;text-align:center}.boss-bar-names{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}.boss-bar-name{font-size:1rem;font-weight:700;color:#e8d4ff;text-shadow:0 0 12px rgba(179,136,255,.6);letter-spacing:.06em}.boss-bar-title{font-size:.72rem;color:var(--text-muted);font-style:italic}.boss-bar-track{height:12px;border-radius:6px;background:#0c0814d9;border:1px solid rgba(179,136,255,.45);overflow:hidden;box-shadow:0 0 12px #b388ff33}.boss-bar-fill{height:100%;background:linear-gradient(90deg,#6b3fa0,#b388ff 55%,#f4a261);transition:width .15s ease-out;border-radius:5px}.boss-bar-hp{margin-top:4px;font-size:.7rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.toast-stack{position:absolute;top:72px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;pointer-events:none;z-index:30;max-width:min(420px,90vw)}.toast{background:var(--ui-panel);border:1px solid var(--ui-border);color:var(--text-warm);font-size:.85rem;padding:.55rem 1rem;border-radius:8px;text-align:center;box-shadow:0 4px 16px #00000059;animation:toast-in .25s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
