:root{color:#f8fafc;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#0f172a;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}button,input{font:inherit}.app-shell{background:#060614;width:100%;height:100%;position:relative;overflow:hidden}.app-shell canvas{z-index:0;position:absolute;inset:0}.app-shell--auth{background:radial-gradient(circle at top,#1e293b,#0f172a 55%);place-items:center;display:grid}.auth-panel{background:#0f172aeb;border:1px solid #94a3b840;border-radius:1rem;width:min(420px,92vw);padding:2rem;box-shadow:0 24px 80px #0f172a73}.auth-panel h1,.auth-panel p{margin-top:0}.auth-panel form{gap:1rem;display:grid}.auth-panel label{gap:.35rem;font-size:.9rem;display:grid}.auth-panel input,.auth-panel button,.hud__chat input,.hud__chat button{color:inherit;background:#0f172ad9;border:1px solid #94a3b859;border-radius:.65rem;padding:.75rem .9rem}.auth-panel button,.hud__chat button{cursor:pointer;background:#4f46e5;border-color:#0000}.auth-panel__tabs{gap:.5rem;margin-bottom:1rem;display:flex}.auth-panel__tabs button{background:0 0;flex:1}.auth-panel__tabs button.active{background:#4f46e533;border-color:#6366f1}.auth-panel__error{color:#f87171;margin:0}.auth-panel__divider{color:#94a3b8;text-align:center;margin:1.25rem 0 1rem;font-size:.85rem}.auth-panel__guest{gap:.85rem;display:grid}.auth-panel__secondary{background:0 0;border-color:#94a3b859}.auth-modal{z-index:100;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));pointer-events:auto;place-items:center;display:grid;position:fixed;inset:0}.auth-modal__backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);cursor:pointer;background:#020617b8;border:none;position:absolute;inset:0}.auth-modal__dialog{z-index:1;width:min(420px,100%);max-height:min(90vh,720px);animation:.2s ease-out auth-modal-in;position:relative;overflow-y:auto}.auth-modal__close{z-index:2;color:#e2e8f0;cursor:pointer;background:#0f172ae6;border:1px solid #94a3b859;border-radius:999px;place-items:center;width:2rem;height:2rem;font-size:1.25rem;line-height:1;display:grid;position:absolute;top:.85rem;right:.85rem}.auth-modal__close:hover{background:#4f46e540;border-color:#6366f1}.auth-modal__dialog .auth-panel{width:100%;margin:0}@keyframes auth-modal-in{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.hud{z-index:20;pointer-events:none;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,240px) 1fr minmax(0,min(360px,100%));gap:.75rem;display:grid;position:absolute;inset:0}.hud__header,.hud__sidebar,.hud__chat,.hud__bottom-dock,.game-ui__topbar,.game-ui__action-button{pointer-events:auto}.hud__header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172ab8;border-radius:1rem;flex-direction:column;grid-column:1/-1;gap:.75rem;padding:1rem 1.25rem;display:flex}.hud__header-body{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem 1rem;width:100%;display:flex}.hud__header-info{flex:220px;min-width:0}.hud__header-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.hud__title{margin:0;font-size:1.1rem;font-weight:700}.hud__subtitle{color:#cbd5e1;margin:.15rem 0 0;font-size:.85rem}.nickname-editor{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;margin-top:.45rem;display:flex}.nickname-editor__label{color:#94a3b8;font-size:.78rem}.nickname-editor__value{color:#e2e8f0;font-size:.9rem}.nickname-editor__edit,.nickname-editor__secondary{color:#cbd5e1;cursor:pointer;background:#0f172aa6;border:1px solid #94a3b859;border-radius:.45rem;padding:.2rem .55rem;font-size:.72rem}.nickname-editor__edit:hover,.nickname-editor__secondary:hover{color:#e2e8f0;border-color:#6366f1}.nickname-editor--editing{flex-direction:column;align-items:stretch}.nickname-editor__form{gap:.25rem;display:grid}.nickname-editor__form input{color:inherit;background:#0f172ad9;border:1px solid #94a3b859;border-radius:.5rem;padding:.45rem .65rem}.nickname-editor__actions{gap:.4rem;display:flex}.nickname-editor__actions button{color:#fff;cursor:pointer;background:#4f46e5;border:1px solid #0000;border-radius:.5rem;padding:.35rem .7rem;font-size:.78rem}.nickname-editor__error{color:#fca5a5;margin:0;font-size:.75rem}.session-banner{z-index:20;color:#fde047;pointer-events:auto;background:#facc1526;border:1px solid #facc1559;border-radius:.75rem;align-items:center;gap:.75rem;padding:.5rem .85rem;font-size:.82rem;display:flex;position:absolute;top:.75rem;left:50%;transform:translate(-50%)}.session-banner button{color:inherit;cursor:pointer;background:0 0;border:1px solid #facc1573;border-radius:.45rem;padding:.25rem .6rem;font-size:.75rem}.hud__save-status{color:#94a3b8;margin:.35rem 0 0;font-size:.72rem}.hud__status-notch{border-radius:999px;flex-shrink:0;width:.42rem;height:1.25rem;box-shadow:0 0 10px}.hud__status-notch--connected{color:#4ade8073;background:#4ade80}.hud__status-notch--connecting,.hud__status-notch--idle,.hud__status-notch--reconnecting{color:#facc1573;background:#facc15;animation:1.4s ease-in-out infinite hud-status-notch-pulse}.hud__status-notch--disconnected,.hud__status-notch--error{color:#f8717173;background:#f87171}@keyframes hud-status-notch-pulse{0%,to{opacity:1;transform:scaleY(1)}50%{opacity:.55;transform:scaleY(.82)}}.hud__sidebar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172ab8;border-radius:1rem;grid-area:2/1/4;align-self:start;width:100%;max-height:min(320px,40vh);padding:1rem;overflow-y:auto}.hud__sidebar h2{margin:0 0 .75rem;font-size:.95rem}.hud__sidebar ul{margin:0;padding-left:0;list-style:none}.hud__sidebar li{align-items:center;gap:.5rem;margin-bottom:.35rem;font-size:.9rem;display:flex}.hud__player-dot{border-radius:999px;flex-shrink:0;width:.55rem;height:.55rem}.hud__player--self{color:#bfdbfe}.hud__empty{color:#94a3b8;margin:0;font-size:.85rem}.hud__error{color:#fecaca;background:#f8717133;border-radius:.75rem;width:100%;margin:0;padding:.5rem .85rem;font-size:.85rem}.hud__chat{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f172ab8;border-radius:1rem;grid-area:2/3/4;align-self:end;width:100%;padding:1rem}.hud__bottom-dock{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:9;background:#0f172ae0;border:1px solid #94a3b838;border-radius:999px;grid-area:3/2;place-self:end center;align-items:center;gap:.65rem;padding:.4rem .45rem .4rem 1rem;display:flex;box-shadow:0 10px 40px #02061766}.hud__bottom-dock-divider{background:#94a3b840;flex-shrink:0;width:1px;height:1.5rem}.controls-hint{flex-wrap:wrap;align-items:center;gap:.35rem .5rem;display:flex}.controls-hint__item{align-items:center;gap:.35rem;display:inline-flex}.controls-hint__key{color:#f1f5f9;letter-spacing:.05em;background:#1e293bf2;border:1px solid #94a3b859;border-radius:.35rem;justify-content:center;align-items:center;min-width:1.75rem;padding:.15rem .45rem;font-family:inherit;font-size:.68rem;font-weight:700;line-height:1.2;display:inline-flex}.controls-hint__label{color:#94a3b8;white-space:nowrap;font-size:.74rem}.controls-hint__sep{color:#94a3b866;-webkit-user-select:none;user-select:none}.game-bottom-dock{bottom:max(1.25rem, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;background:#0f172ae0;border:1px solid #94a3b838;border-radius:999px;align-items:center;padding:.55rem 1.1rem;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 10px 40px #02061766}.game-bottom-dock--solo{padding:.6rem 1.15rem}.hud__messages{max-height:180px;margin-bottom:.75rem;overflow-y:auto}.hud__messages p{margin:0 0 .5rem}.hud__chat form{grid-template-columns:1fr auto;gap:.5rem;display:grid}.game-ui__action-button{color:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#0f172ad9;border:1px solid #94a3b859;border-radius:.65rem;padding:.55rem .9rem;font-size:.85rem;font-weight:600;transition:background .2s,border-color .2s}.game-ui__action-button:hover{background:#4f46e540;border-color:#6366f1}.game-ui__topbar{top:max(1rem, env(safe-area-inset-top));left:max(1rem, env(safe-area-inset-left));right:max(1rem, env(safe-area-inset-right));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:30;pointer-events:none;background:#0f172ab8;border-radius:1rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex;position:absolute}.game-ui__topbar>*{pointer-events:auto}.game-ui__topbar-title{margin:0;font-size:1rem;font-weight:700}.game-ui__topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-left:auto;display:flex}.loading-screen-overlay{z-index:50;background:#060614;place-items:center;animation:.15s loading-fadein;display:grid;position:absolute;inset:0}@keyframes loading-fadein{0%{opacity:0}to{opacity:1}}.error-boundary{z-index:60;text-align:center;color:#f8fafc;background:#060614f2;place-content:center;gap:.75rem;padding:2rem;display:grid;position:absolute;inset:0}.error-boundary__title{margin:0;font-size:1.1rem;font-weight:700}.error-boundary__message{color:#fca5a5;word-break:break-word;max-width:36rem;margin:0;font-size:.9rem}.loading-screen{color:#f8fafc;letter-spacing:.04em;flex-direction:column;align-items:center;gap:1.25rem;font-size:.95rem;display:flex}.loading-screen:before{content:"";border:3px solid #ffffff26;border-top-color:#818cf8;border-radius:50%;width:2.5rem;height:2.5rem;animation:.8s linear infinite loading-spin;display:block}@keyframes loading-spin{to{transform:rotate(360deg)}}.mobile-controls{pointer-events:none;z-index:8;position:absolute;inset:0}.mobile-controls__joystick{pointer-events:auto;touch-action:none;width:140px;height:140px;position:absolute;bottom:5.5rem;left:1.25rem}.mobile-controls__joystick-base{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172a8c;border:1px solid #94a3b859;border-radius:50%;width:100%;height:100%;position:relative}.mobile-controls__joystick-knob{will-change:transform;background:#4f46e5d9;border:2px solid #ffffff59;border-radius:50%;width:56px;height:56px;position:absolute;top:50%;left:50%;box-shadow:0 4px 16px #0f172a73}.mobile-controls__jump{color:#f8fafc;letter-spacing:.04em;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#4f46e5d9;border:1px solid #94a3b859;border-radius:50%;width:72px;height:72px;font-size:.72rem;font-weight:700;position:absolute;bottom:5.5rem;right:1.25rem;box-shadow:0 4px 16px #0f172a73}.mobile-controls__jump:active{background:#6366f1f2;transform:scale(.94)}.mobile-camera{pointer-events:none;z-index:7;position:absolute;inset:0}.mobile-camera__orbit-zone{pointer-events:auto;touch-action:none;width:55%;height:100%;position:absolute;top:0;right:0}.emoji-wheel{pointer-events:auto;position:relative}.hud__bottom-dock .emoji-wheel__toggle{box-shadow:none;background:#4f46e538;border:1px solid #6366f173;padding:.45rem .85rem}.hud__bottom-dock .emoji-wheel__toggle:hover:not(:disabled){background:#4f46e561;border-color:#818cf8}.hud__bottom-dock .emoji-wheel__toggle-label{font-size:.78rem}.emoji-wheel__toggle{color:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172ad9;border:1px solid #94a3b859;border-radius:999px;align-items:center;gap:.45rem;padding:.65rem 1rem;transition:background .2s,border-color .2s,transform .15s;display:flex;box-shadow:0 8px 24px #0f172a73}.emoji-wheel__toggle:hover:not(:disabled){background:#4f46e540;border-color:#6366f1}.emoji-wheel__toggle:active:not(:disabled){transform:scale(.96)}.emoji-wheel__toggle:disabled{opacity:.55;cursor:not-allowed}.emoji-wheel__toggle-icon{font-size:1.25rem;line-height:1}.emoji-wheel__toggle-label{font-size:.85rem;font-weight:600}.emoji-wheel__menu{pointer-events:none;width:220px;height:220px;animation:.22s ease-out emoji-wheel-in;position:absolute;bottom:calc(100% + .75rem);left:50%;transform:translate(-50%)}@keyframes emoji-wheel-in{0%{opacity:0;transform:translate(-50%)scale(.85)}to{opacity:1;transform:translate(-50%)scale(1)}}.emoji-wheel__center{opacity:.65;pointer-events:none;font-size:1.4rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.emoji-wheel__item{cursor:pointer;pointer-events:auto;background:#0f172aeb;border:1px solid #94a3b859;border-radius:50%;width:52px;height:52px;font-size:1.45rem;line-height:1;transition:transform .15s,background .15s,border-color .15s;position:absolute;top:50%;left:50%;box-shadow:0 6px 18px #0f172a66}.emoji-wheel__item:hover{filter:brightness(1.08);background:#4f46e559;border-color:#818cf8}@media (width<=900px){.hud{grid-template-columns:minmax(0,200px) 1fr minmax(0,min(300px,100%))}}@media (width<=768px){.hud{padding-bottom:max(7rem, calc(1rem + env(safe-area-inset-bottom)));grid-template-rows:auto auto minmax(0,1fr) auto auto;grid-template-columns:1fr}.hud__header{align-items:stretch}.hud__header-actions{justify-content:flex-start;width:100%}.hud__sidebar{grid-area:2/1;max-height:none}.hud__chat{grid-area:4/1}.hud__bottom-dock{border-radius:1rem;flex-direction:column;grid-area:5/1;justify-self:center;align-items:stretch;gap:.65rem;width:min(100%,420px);padding:.75rem .85rem}.hud__bottom-dock-divider{width:100%;height:1px}.hud__bottom-dock .emoji-wheel{justify-content:center;display:flex}.controls-hint{justify-content:center}.controls-hint__sep--mobile,.controls-hint__item--mobile{display:none}.hud__messages{max-height:120px}.mobile-controls__joystick,.mobile-controls__jump{bottom:6.5rem}.game-bottom-dock{bottom:max(1rem, env(safe-area-inset-bottom));justify-content:center;width:calc(100% - 2rem);max-width:420px}}@media (width<=480px){.hud__subtitle{display:none}.hud__header-actions .game-ui__action-button{text-align:center;flex:calc(50% - .25rem);padding-inline:.5rem;font-size:.78rem}.game-ui__topbar-actions{width:100%}.game-ui__topbar-actions .game-ui__action-button{text-align:center;flex:calc(50% - .25rem)}}.locations-panel{align-items:center;display:flex;position:relative}.locations-panel__toggle{color:#94a3b8;cursor:pointer;pointer-events:auto;background:#0f172abf;border:1px solid #94a3b840;border-radius:.65rem;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .7rem;transition:background .15s,color .15s,border-color .15s;display:flex;position:relative}.locations-panel__toggle:hover{color:#e0e7ff;background:#4f46e533;border-color:#818cf8}.locations-panel__badge{color:#fff;background:#4f46e5;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;font-size:.65rem;font-weight:700;display:inline-flex}.locations-panel__drawer{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:40;pointer-events:auto;background:#0a0c18f2;border:1px solid #94a3b833;border-radius:.875rem;flex-direction:column;width:min(340px,90vw);max-height:420px;display:flex;position:absolute;bottom:calc(100% + .6rem);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 20px 60px #0009}.locations-panel__header{border-bottom:1px solid #94a3b81f;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.75rem 1rem;display:flex}.locations-panel__header-title{color:#e2e8f0;font-size:.825rem;font-weight:600;display:block}.locations-panel__header-sub{color:#64748b;margin-top:.15rem;font-size:.7rem;font-weight:500;display:block}.locations-panel__close{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:.3rem;padding:.15rem .35rem;font-size:.9rem;transition:color .15s}.locations-panel__close:hover{color:#e2e8f0}.locations-panel__list{padding:.35rem 0 .5rem;overflow-y:auto}.locations-panel__section{padding-bottom:.25rem}.locations-panel__section-label{letter-spacing:.08em;text-transform:uppercase;color:#475569;margin:0;padding:.45rem 1rem .35rem;font-size:.65rem;font-weight:700}.locations-panel__empty{text-align:center;color:#475569;margin:0;padding:1.25rem 1rem;font-size:.825rem}.locations-panel__item{border-radius:.65rem;align-items:flex-start;gap:.65rem;margin:0 .5rem;padding:.65rem 1rem;transition:background .12s,box-shadow .12s;display:flex}.locations-panel__item--building{border-left:3px solid var(--loc-accent,#4f46e5);background:linear-gradient(90deg, color-mix(in srgb, var(--loc-accent,#4f46e5) 12%, transparent), transparent 55%)}.locations-panel__item:hover{background:#ffffff0d}.locations-panel__item--building:hover{box-shadow:0 0 0 1px color-mix(in srgb, var(--loc-accent,#4f46e5) 25%, transparent)}.locations-panel__item-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-top:.25rem}.locations-panel__item-icon{border:1px solid #94a3b833;border-radius:.55rem;flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1rem;line-height:1;display:inline-flex}.locations-panel__item-info{flex:1;min-width:0}.locations-panel__item-name{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.875rem;font-weight:600;overflow:hidden}.locations-panel__item-type{color:#64748b;text-transform:uppercase;letter-spacing:.04em;flex-wrap:wrap;align-items:center;gap:.35rem;margin:.1rem 0 0;font-size:.725rem;display:flex}.locations-panel__item-coords{text-transform:none;letter-spacing:0;color:#94a3b8;font-size:.7rem;font-weight:500}.locations-panel__item-desc{color:#94a3b8;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.25rem 0 0;font-size:.775rem;line-height:1.4;display:-webkit-box;overflow:hidden}.locations-panel__travel-btn{color:#a5b4fc;cursor:pointer;background:#6366f126;border:1px solid #6366f180;border-radius:.45rem;flex-shrink:0;align-self:center;padding:.3rem .75rem;font-size:.775rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.locations-panel__travel-btn:hover{color:#e0e7ff;background:#6366f159;border-color:#818cf8}.building-title-label{flex-direction:column;align-items:center;gap:.25rem;font-family:inherit;display:flex}.building-title-label__pill{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;background:#080a16e0;border:1px solid;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .7rem;display:inline-flex}.building-title-label__dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.building-title-label__name{color:#f8fafc;letter-spacing:.02em;text-shadow:0 1px 3px #000000e6;font-size:12px;font-weight:700}.building-title-label__desc{color:#cbd5e1;text-align:center;background:#080a16bf;border-radius:.4rem;max-width:160px;margin:0;padding:.2rem .5rem;font-size:10px;font-weight:500;line-height:1.35}.building-storefront-sign__text{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;padding:0 .15rem;font-size:11px;font-weight:800}
