:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#d8ead2;color:#f4efff;font-synthesis:none;text-rendering:geometricPrecision;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:none;-webkit-user-select:none;user-select:none}html.app-fullscreen,html.app-fullscreen body,html.app-fullscreen #root{position:fixed;inset:0;width:100%;height:100dvh;overflow:hidden;background:#050b2a}button,a{font:inherit}.portfolio-shell{position:relative;width:100%;height:100%;min-height:100svh;overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;background:linear-gradient(115deg,rgba(255,241,196,.34),transparent 38%,rgba(215,230,255,.2) 72%,transparent),linear-gradient(180deg,#d8ead2,#abc58b 46%,#607f3f)}.portfolio-shell:before{position:absolute;inset:0;z-index:1;pointer-events:none;content:"";background-image:radial-gradient(circle,rgba(255,251,199,.32) 0 1px,transparent 1.5px),radial-gradient(circle,rgba(239,255,224,.24) 0 1px,transparent 1.6px);background-position:0 0,28px 44px;background-size:92px 92px,136px 136px;opacity:.12}.portfolio-shell:after{display:none}.world-canvas{position:relative;z-index:2;display:block;width:100%;height:100%;touch-action:none}.portfolio-shell.fallback-fullscreen{height:100dvh;min-height:100dvh}.topbar{position:absolute;top:clamp(16px,3vw,32px);left:clamp(16px,3vw,36px);right:clamp(16px,3vw,36px);z-index:5;display:flex;align-items:flex-start;justify-content:space-between;gap:18px;pointer-events:none}.topbar h1{margin:0;color:#fff7ff;font-size:clamp(2rem,4.9vw,4.7rem);font-weight:850;line-height:.95;max-width:720px}.eyebrow{margin:0 0 8px;color:#9fe7ff;font-size:.72rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.contact-link{pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 16px;border:1px solid rgba(198,145,255,.34);border-radius:8px;color:#f9f2ff;background:#120c2e94;text-decoration:none;box-shadow:0 18px 52px #15083661;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.intro-panel,.info-panel{position:absolute;z-index:6;width:min(360px,calc(100vw - 32px));border:1px solid rgba(196,152,255,.26);border-radius:8px;background:linear-gradient(145deg,#150d37c2,#091444a8);box-shadow:0 20px 58px #05041873;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.intro-panel{left:clamp(16px,3vw,36px);bottom:clamp(104px,16vw,132px);padding:18px}.intro-panel h2,.info-panel h2{margin:0;color:#fff7ff;font-size:1.28rem;line-height:1.1}.intro-panel p,.info-panel p{color:#d9d3ff;font-size:.95rem;line-height:1.55}.intro-panel p:last-child,.info-panel p:last-child{margin-bottom:0}.info-panel{right:clamp(16px,3vw,36px);bottom:clamp(104px,16vw,132px);padding:18px;transform:translateY(0);transition:opacity .18s ease,transform .18s ease}.info-panel.open{border-top:5px solid var(--node-color)}.info-panel.compact{opacity:.9}.close-button{position:absolute;top:10px;right:10px;display:inline-flex;width:34px;height:34px;align-items:center;justify-content:center;border:1px solid rgba(199,154,255,.22);border-radius:8px;color:#f7efff;background:#ffffff14}.info-heading{display:flex;align-items:center;gap:12px;padding-right:32px}.info-icon{display:inline-flex;width:42px;height:42px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:8px;color:#080615;background:color-mix(in srgb,var(--node-color) 70%,#ffffff)}.info-panel ul{display:grid;gap:8px;margin:16px 0;padding:0;list-style:none}.info-panel li{display:flex;align-items:center;gap:9px;color:#efeaff;font-size:.92rem}.info-panel li:before{content:"";display:block;width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:var(--node-color, #47a8bd)}.details-link{display:inline-flex;align-items:center;gap:6px;color:#9fe7ff;font-weight:800;text-decoration:none}.economy-panel{position:absolute;top:14px;left:14px;z-index:7;display:grid;width:min(320px,calc(100vw - 112px));gap:6px;padding:10px 12px;border:1px solid rgba(143,238,255,.24);border-radius:8px;background:#0c082294;box-shadow:0 12px 32px #04031447;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none}.economy-total{display:inline-flex;align-items:center;gap:7px;color:#ffe28a;font-size:1.08rem;font-weight:850;line-height:1}.economy-row{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#f3eeff;font-size:.74rem;font-weight:780}.economy-row span{display:inline-flex;min-width:0;align-items:center;gap:6px}.economy-row.muted{color:#bfc2ff}.economy-bar{overflow:hidden;height:5px;border-radius:999px;background:#ffffff1a}.economy-bar span{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#74fff0,#d99cff);transform-origin:left center;transition:transform .16s ease}.economy-panel p{margin:0;color:#cfe8ff;font-size:.72rem;line-height:1.35}.map-strip{position:absolute;left:50%;bottom:22px;z-index:7;display:flex;max-width:min(760px,calc(100vw - 32px));transform:translate(-50%);gap:8px;padding:8px;border:1px solid rgba(196,152,255,.28);border-radius:8px;background:#0c08229e;box-shadow:0 18px 48px #0403146b;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.map-pill{display:inline-flex;min-width:104px;min-height:42px;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;color:#eae4ff;background:#ffffff14;cursor:pointer}.map-pill.active{border-color:color-mix(in srgb,var(--node-color) 52%,#25343a);background:color-mix(in srgb,var(--node-color) 26%,#ffffff);color:#fffaff}.joystick{position:fixed;z-index:8;display:flex;width:128px;height:128px;align-items:center;justify-content:center;border:1px solid rgba(215,173,255,.38);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.42),transparent 36%),linear-gradient(145deg,#a051ff52,#00d2ff2e);box-shadow:0 18px 44px #07031c6b,0 0 38px #b84cff47;touch-action:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none;transform:translate(-50%,-50%)}.joystick-thumb{width:50px;height:50px;border-radius:50%;background:linear-gradient(145deg,#fff,#b9ddff 50%,#dd9aff);box-shadow:inset 0 -4px 10px #46187038,0 12px 28px #09042652;transition:transform 40ms linear}.status-dot{position:absolute;right:18px;top:18px;width:10px;height:10px;border-radius:50%;background:#ff6ef5;box-shadow:0 0 0 6px #ff6ef529}.status-dot.ready{background:#00d7ff;box-shadow:0 0 0 6px #00d7ff29}.fps-meter{position:absolute;top:14px;right:14px;z-index:7;display:grid;min-width:188px;min-height:42px;align-items:center;justify-content:center;gap:1px;padding:5px 8px;border:1px solid rgba(196,152,255,.28);border-radius:8px;color:#fff7ff;background:#0c082294;box-shadow:0 14px 34px #04031452;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:none}.fps-meter span{display:inline-flex;align-items:baseline;justify-content:center;gap:5px}.fps-meter strong{font-size:.92rem;font-weight:850}.fps-meter small{color:#9fe7ff;font-size:.62rem;font-weight:800}.fps-meter em{color:#cfd4ff;font-size:.56rem;font-style:normal;font-weight:760;line-height:1.2;max-width:210px;text-align:center}.quality-toggle{position:absolute;top:64px;right:14px;z-index:7;display:inline-grid;grid-template-columns:1fr 1fr;gap:3px;width:188px;padding:3px;border:1px solid rgba(196,152,255,.28);border-radius:8px;background:#0c082294;box-shadow:0 14px 34px #04031452;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.quality-toggle button{min-width:0;height:28px;border:0;border-radius:6px;color:#bfc2ff;background:transparent;cursor:pointer;font-size:.68rem;font-weight:850}.quality-toggle button.active{color:#071033;background:linear-gradient(135deg,#74fff0,#d99cff);box-shadow:0 0 18px #74fff02e}.debug-panel{position:absolute;top:188px;right:14px;z-index:7;display:grid;width:188px;gap:5px;padding:8px;border:1px solid rgba(196,152,255,.28);border-radius:8px;color:#dfe2ff;background:#0c082294;box-shadow:0 14px 34px #04031452;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.debug-panel strong{color:#9fe7ff;font-size:.62rem;font-weight:850;line-height:1}.debug-panel label{display:grid;grid-template-columns:58px 1fr;align-items:center;gap:6px;font-size:.58rem;font-weight:800}.debug-panel label span{display:flex;align-items:center;justify-content:space-between;gap:5px}.debug-panel label em{color:#9fe7ff;font-size:.52rem;font-style:normal;font-weight:850}.debug-panel input{width:100%;accent-color:#9fe7ff}.sound-toggle,.fullscreen-toggle{position:absolute;right:14px;z-index:7;display:inline-flex;width:38px;height:34px;align-items:center;justify-content:center;border:1px solid rgba(196,152,255,.28);border-radius:8px;color:#bfc2ff;background:#0c082294;box-shadow:0 14px 34px #04031452;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer}.sound-toggle{top:104px}.fullscreen-toggle{top:146px}.sound-toggle.active,.fullscreen-toggle.active{color:#071033;background:linear-gradient(135deg,#74fff0,#d99cff);box-shadow:0 0 18px #74fff02e}@media(hover:hover)and (pointer:fine){.map-pill:hover,.contact-link:hover,.details-link:hover,.quality-toggle button:hover,.sound-toggle:hover,.fullscreen-toggle:hover{transform:translateY(-1px)}}@media(max-width:860px){.topbar{align-items:flex-start}.topbar h1{max-width:520px}.intro-panel{display:none}.economy-panel{top:14px;left:14px;width:min(250px,calc(100vw - 106px))}.quality-toggle{top:64px;width:132px}.fps-meter{min-width:132px}.fps-meter em{max-width:122px;font-size:.5rem}.debug-panel{width:132px}.debug-panel label{grid-template-columns:48px 1fr;gap:4px}.debug-panel label em{display:none}.info-panel{left:16px;right:16px;bottom:164px;width:auto}.map-strip{left:16px;right:156px;bottom:18px;max-width:none;transform:none;justify-content:flex-start;overflow-x:auto;padding-right:8px}.map-pill{min-width:96px}.contact-link span{display:none}}@media(max-width:560px){.topbar{top:14px;left:14px;right:14px}.topbar h1{font-size:clamp(2rem,10vw,3rem)}.info-panel{bottom:150px;max-height:42svh;overflow:auto;padding:14px}.info-panel p{font-size:.9rem}.info-panel ul{margin:12px 0}.map-strip{right:132px;padding:7px}.map-pill{min-width:84px;min-height:40px;font-size:.84rem}.quality-toggle{top:64px;right:10px;width:118px}.quality-toggle button{height:26px;font-size:.62rem}}
