:root{--bg: #050816;--road: #111827;--building: #1e293b;--glass: rgba(255, 255, 255, .08);--primary: #7c3aed;--secondary: #06b6d4;--accent: #00f5ff;--highlight: #f59e0b;--text: #f8fafc}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;background:var(--bg);overflow:hidden;font-family:Rajdhani,sans-serif;color:var(--text)}.app{position:fixed;top:0;right:0;bottom:0;left:0}canvas.scene-canvas{display:block;width:100%;height:100%;filter:brightness(1.06) saturate(1.15) contrast(1.03)}.vignette{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;background:radial-gradient(ellipse at center,#05081600 45%,#0508168c)}.scanlines{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:6;opacity:.05;mix-blend-mode:overlay;background:repeating-linear-gradient(to bottom,#fff 0px,#fff 1px,transparent 1px,transparent 3px)}.grade{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;background:linear-gradient(180deg,#7c3aed0f,#06b6d40a 50%,#00000026)}.loading{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;transition:opacity 1s ease,visibility 1s}.loading.hidden{opacity:0;visibility:hidden;pointer-events:none}.logo-mark{font-family:Orbitron,sans-serif;font-weight:900;font-size:clamp(32px,6vw,64px);letter-spacing:10px;background:linear-gradient(90deg,var(--secondary),var(--accent),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 40px rgba(0,245,255,.25);animation:flicker 3.2s infinite}@keyframes flicker{0%,89%,93%,to{opacity:1}90%{opacity:.55}92%{opacity:.85}}.logo-sub{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:6px;color:var(--secondary);opacity:.85}.bar-track{width:260px;height:2px;background:#ffffff14;position:relative;overflow:hidden;border-radius:2px}.bar-fill{position:absolute;left:0;top:0;height:100%;background:linear-gradient(90deg,var(--secondary),var(--accent));box-shadow:0 0 12px var(--accent);transition:width .2s ease}.pct{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text);opacity:.6;letter-spacing:2px}.enter-btn{margin-top:8px;padding:14px 38px;font-family:Orbitron,sans-serif;font-size:12px;letter-spacing:3px;background:#00f5ff0f;border:1px solid rgba(0,245,255,.5);color:var(--accent);cursor:pointer;border-radius:2px;opacity:0;transform:translateY(10px);transition:all .3s ease;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.enter-btn.show{opacity:1;transform:translateY(0);pointer-events:auto}.enter-btn:hover{background:#00f5ff29;box-shadow:0 0 30px #00f5ff59}.hud{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;pointer-events:none;opacity:0;transition:opacity 1.2s ease}.hud.show{opacity:1}.hud-top{position:absolute;top:26px;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:0 28px}.brand{font-family:Orbitron,sans-serif;font-weight:700;font-size:15px;letter-spacing:5px;color:var(--text);text-shadow:0 0 18px rgba(0,245,255,.4)}.brand span{color:var(--accent)}.district-tag{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:3px;color:var(--secondary);background:#06b6d40f;border:1px solid rgba(6,182,212,.3);padding:8px 16px;border-radius:2px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-align:center;pointer-events:auto}.district-tag b{color:var(--text);font-family:Rajdhani,sans-serif;font-weight:600;letter-spacing:2px;font-size:12px}.bottom-left{position:absolute;bottom:26px;left:28px;pointer-events:auto}.scroll-hint{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:2px;color:var(--text);opacity:.5;transition:opacity 1.5s}.citymap{position:absolute;bottom:24px;right:24px;width:246px;pointer-events:auto;background:#080c1ab8;-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%);border:1px solid rgba(6,182,212,.28);border-radius:14px;padding:14px 14px 12px;box-shadow:0 12px 40px #00000073,inset 0 0 40px #06b6d408}.cm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.cm-title{font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:3px;color:#f8fafc73}.cm-current{font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:1px;color:var(--accent);text-shadow:0 0 10px rgba(0,245,255,.5);text-align:right}.cm-map{position:relative;height:150px;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.07);background-color:#ffffff04;background-image:linear-gradient(rgba(6,182,212,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(6,182,212,.12) 1px,transparent 1px);background-size:16px 16px}.cm-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.cm-node-hit{cursor:pointer}.cm-node-dot{transition:r .2s ease}.cm-node-label{font-family:JetBrains Mono,monospace;font-size:4.6px;letter-spacing:.3px;fill:#f8fafcb3;pointer-events:none;text-anchor:middle}.cm-node-label.active{fill:var(--accent);font-weight:700}.cm-ring{transform-box:fill-box;transform-origin:center;animation:cmpulse 1.8s ease-in-out infinite}@keyframes cmpulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:.25;transform:scale(1.9)}}.cm-hint{margin-top:10px;font-family:JetBrains Mono,monospace;font-size:8.5px;letter-spacing:1px;text-align:center;color:#f8fafc66}.float-card{position:fixed;left:0;top:0;z-index:22;width:min(380px,88vw);max-height:72vh;overflow-y:auto;background:#090d1ce6;-webkit-backdrop-filter:blur(22px) saturate(150%);backdrop-filter:blur(22px) saturate(150%);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:24px 24px 28px;box-shadow:0 24px 70px #0000008c,0 0 34px #00f5ff1a;opacity:0;visibility:hidden;transition:opacity .3s ease;pointer-events:auto}.float-card.open{opacity:1;visibility:visible;pointer-events:auto}.float-card::-webkit-scrollbar{width:5px}.float-card::-webkit-scrollbar-thumb{background:#00f5ff4d}.card-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:#ffffff0f;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px;color:var(--text)}.card-close:hover{border-color:var(--accent);color:var(--accent)}.eyebrow{font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:3px;color:var(--secondary);margin-bottom:8px}.float-card h2{font-family:Orbitron,sans-serif;font-size:20px;letter-spacing:1px;margin-bottom:6px;line-height:1.35;padding-right:26px;color:#fff}.float-card .lede{color:#f8fafcb8;font-size:14px;margin-bottom:16px;font-weight:600;line-height:1.5}.float-card p{color:#f8fafcd1}.divider{height:1px;background:linear-gradient(90deg,rgba(0,245,255,.4),transparent);margin:16px 0}.tagrow{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.tag{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:1px;padding:4px 9px;border-radius:2px;background:#7c3aed29;border:1px solid rgba(124,58,237,.45);color:#d8c8ff}.floor{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.07)}.floor:last-child{border-bottom:none}.floor .fnum{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--accent);min-width:22px;padding-top:2px}.floor h4{font-size:14px;font-weight:700;margin-bottom:3px;letter-spacing:.3px;color:#fff}.floor p{font-size:12.8px;line-height:1.55}.floor .when{font-family:JetBrains Mono,monospace;font-size:10px;color:#f8fafc73;margin-top:3px;display:block}.skillbar{margin:6px 0 4px}.skillbar .sname{display:flex;justify-content:space-between;font-size:13px;font-weight:700;margin-bottom:6px;letter-spacing:.3px;color:#fff}.skillbar .sname span:last-child{font-family:JetBrains Mono,monospace;color:var(--accent);font-size:11px}.track{height:6px;background:#ffffff14;border-radius:3px;overflow:hidden}.fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--secondary),var(--accent));box-shadow:0 0 8px #00f5ff80;transition:width 1.1s cubic-bezier(.16,.84,.44,1)}.project-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.pbtn{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:1px;padding:7px 12px;border-radius:2px;border:1px solid rgba(6,182,212,.45);color:#7dd3fc;text-decoration:none;background:#06b6d414;transition:all .2s ease}.pbtn:hover{background:#06b6d433}.contact-row{display:flex;flex-direction:column;gap:8px;font-size:13.5px;margin:14px 0;color:#f8fafce6}.contact-row a{color:var(--accent);text-decoration:none}.contact-form input,.contact-form textarea{width:100%;background:#ffffff0d;border:1px solid rgba(255,255,255,.15);color:var(--text);font-family:Rajdhani,sans-serif;font-size:14px;padding:10px 12px;border-radius:4px;margin-bottom:10px;outline:none;transition:border .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent)}.contact-form textarea{resize:vertical;min-height:70px}.send-btn{width:100%;padding:11px;font-family:Orbitron,sans-serif;font-size:11px;letter-spacing:2px;background:linear-gradient(90deg,var(--primary),var(--secondary));border:none;color:#fff;border-radius:4px;cursor:pointer;transition:opacity .2s}.send-btn:hover{opacity:.85}.social-row{display:flex;gap:10px;margin-top:14px}.social-row a{width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;color:var(--text);text-decoration:none;font-size:11px;background:#ffffff0a}.social-row a:hover{border-color:var(--accent);color:var(--accent)}.cta-final{text-align:center}.cta-final h2{font-size:19px;padding-right:0}.cta-final .bigbtn{display:inline-block;margin-top:16px;padding:12px 24px;background:#f59e0b24;border:1px solid rgba(245,158,11,.5);color:#fde68a;font-family:Orbitron,sans-serif;font-size:10px;letter-spacing:2px;border-radius:2px;cursor:pointer}@media (max-width: 768px){.hud-top{padding:0 16px}.brand{font-size:12px;letter-spacing:3px}.district-tag{padding:6px 10px;font-size:9px}.district-tag b{font-size:10px}.citymap{width:180px;right:14px;bottom:14px;padding:10px 10px 8px}.cm-map{height:110px}.bottom-left{display:none}}
