.svelte-12o4jo5:focus-visible{outline:2px solid #ffd700;outline-offset:2px}.canvas-container.svelte-12o4jo5{width:100%;height:100%;touch-action:none}.canvas-container.svelte-12o4jo5:focus-visible{outline:3px solid #ffd700;outline-offset:-3px}.tooltip.svelte-12o4jo5{position:fixed;background:linear-gradient(145deg,#1a1a2e,#12121a);border:1px solid var(--node-color);border-radius:8px;padding:.75rem 1rem;max-width:280px;pointer-events:none;z-index:500;box-shadow:0 0 20px color-mix(in srgb,var(--node-color) 25%,transparent),0 4px 12px #00000080;animation:svelte-12o4jo5-tooltipFadeIn .15s ease-out}@keyframes svelte-12o4jo5-tooltipFadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.tooltip.svelte-12o4jo5 h3:where(.svelte-12o4jo5){color:var(--node-color);margin:0 0 .35rem;font-size:.95rem;text-shadow:0 0 10px var(--node-color)}.tooltip.svelte-12o4jo5 p:where(.svelte-12o4jo5){color:#a8a8b8;margin:0 0 .5rem;font-size:.8rem;line-height:1.5}.tooltip.svelte-12o4jo5 .hint:where(.svelte-12o4jo5){color:#666;font-size:.7rem;font-style:italic}.tooltip-icon.svelte-12o4jo5{width:1.2em;height:1.2em;vertical-align:middle;margin-right:.4rem;filter:drop-shadow(0 0 4px var(--node-color))}.modal-backdrop.svelte-12o4jo5{position:fixed;top:0;left:0;width:100%;height:100%;background:#0000;display:flex;align-items:center;justify-content:center;z-index:1000;transition:background .2s ease;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);padding:1rem;box-sizing:border-box}.modal-backdrop.visible.svelte-12o4jo5{background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal.svelte-12o4jo5{background:linear-gradient(145deg,#1a1a2e,#0f0f1a);border:1px solid var(--node-color);border-radius:12px;padding:1.5rem;max-width:420px;width:100%;max-height:80vh;overflow-y:auto;position:relative;box-shadow:0 0 40px color-mix(in srgb,var(--node-color) 30%,transparent),0 0 80px color-mix(in srgb,var(--node-color) 15%,transparent),inset 0 1px #ffffff0d;opacity:0;transform:scale(.9) translateY(20px);transition:all .25s cubic-bezier(.175,.885,.32,1.275)}.modal.visible.svelte-12o4jo5{opacity:1;transform:scale(1) translateY(0)}.modal.svelte-12o4jo5 h2:where(.svelte-12o4jo5){color:var(--node-color);margin:0 0 .5rem;font-size:1.3rem;text-shadow:0 0 20px var(--node-color);padding-right:2rem}.modal-icon.svelte-12o4jo5{width:1.4em;height:1.4em;vertical-align:middle;margin-right:.5rem;filter:drop-shadow(0 0 8px var(--node-color))}.category-badge.svelte-12o4jo5{display:inline-block;background:linear-gradient(135deg,var(--node-color),color-mix(in srgb,var(--node-color) 70%,black));color:#0a0a0f;padding:.25rem .75rem;border-radius:4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-bottom:1rem}.modal.svelte-12o4jo5 p:where(.svelte-12o4jo5){color:#a8a8b8;line-height:1.7;margin:0;font-size:.9rem}.close-btn.svelte-12o4jo5{position:absolute;top:.75rem;right:.75rem;background:none;border:none;color:#666;font-size:1.5rem;cursor:pointer;padding:.5rem;transition:all .15s;border-radius:4px;line-height:1}.close-btn.svelte-12o4jo5:hover{color:#fff;background:#ffffff1a}.origin-title.svelte-12o4jo5{color:var(--node-color);font-size:1rem;font-weight:600;margin-bottom:.25rem;text-shadow:0 0 10px var(--node-color)}.origin-location.svelte-12o4jo5{color:#888;font-size:.85rem;margin-bottom:1rem}.about-me.svelte-12o4jo5{color:#a8a8b8;line-height:1.7;margin:0 0 1rem;font-size:.9rem}.social-links.svelte-12o4jo5{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.social-links.svelte-12o4jo5 a:where(.svelte-12o4jo5){color:#ccc;text-decoration:none;font-size:.8rem;padding:.4rem .6rem;background:#ffffff0d;border-radius:6px;border:1px solid rgba(255,255,255,.1);transition:all .15s ease}.social-links.svelte-12o4jo5 a:where(.svelte-12o4jo5):hover{color:var(--node-color);background:#ffffff1a;border-color:var(--node-color)}.meta-info.svelte-12o4jo5{margin-bottom:.75rem}.meta-info.svelte-12o4jo5 .company:where(.svelte-12o4jo5){display:block;color:var(--node-color);font-weight:600;font-size:.9rem}.meta-info.svelte-12o4jo5 .dates:where(.svelte-12o4jo5){display:block;color:#888;font-size:.8rem;margin-top:.2rem}.proficiency-badge.svelte-12o4jo5{display:inline-block;padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:700;text-transform:uppercase;margin-right:.5rem}.proficiency-badge.beginner.svelte-12o4jo5{background:#4a5568;color:#e2e8f0}.proficiency-badge.intermediate.svelte-12o4jo5{background:#2b6cb0;color:#bee3f8}.proficiency-badge.advanced.svelte-12o4jo5{background:#2f855a;color:#c6f6d5}.proficiency-badge.expert.svelte-12o4jo5{background:#b7791f;color:#fefcbf}.highlights.svelte-12o4jo5{margin:.75rem 0 0;padding-left:1.2rem;color:#a8a8b8;font-size:.8rem}.highlights.svelte-12o4jo5 li:where(.svelte-12o4jo5){margin-bottom:.4rem;line-height:1.4}.tech-stack.svelte-12o4jo5{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.75rem}.tech-tag.svelte-12o4jo5{background:#ffffff1a;color:#ccc;padding:.25rem .5rem;border-radius:4px;font-size:.7rem;border:1px solid rgba(255,255,255,.15)}.links.svelte-12o4jo5{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.links.svelte-12o4jo5 a:where(.svelte-12o4jo5){color:var(--node-color);text-decoration:none;font-size:.8rem;transition:opacity .15s}.links.svelte-12o4jo5 a:where(.svelte-12o4jo5):hover{opacity:.8;text-decoration:underline}@media(max-width:767px){.modal.svelte-12o4jo5{padding:1.25rem;max-height:85vh;border-radius:16px 16px 0 0;margin-top:auto}.modal-backdrop.svelte-12o4jo5{align-items:flex-end;padding:0}.modal.svelte-12o4jo5 h2:where(.svelte-12o4jo5){font-size:1.2rem}.social-links.svelte-12o4jo5{gap:.4rem}.social-links.svelte-12o4jo5 a:where(.svelte-12o4jo5){font-size:.75rem;padding:.35rem .5rem}.close-btn.svelte-12o4jo5{top:.5rem;right:.5rem;font-size:1.75rem;padding:.75rem}}.resume-button.svelte-12o4jo5{display:block;width:100%;margin-top:1rem;padding:.75rem 1rem;background:linear-gradient(135deg,var(--node-color),color-mix(in srgb,var(--node-color) 70%,black));color:#0a0a0f;text-align:center;text-decoration:none;font-weight:600;font-size:.9rem;border-radius:8px;transition:all .2s ease;box-shadow:0 0 20px color-mix(in srgb,var(--node-color) 30%,transparent)}.resume-button.svelte-12o4jo5:hover{transform:translateY(-2px);box-shadow:0 0 30px color-mix(in srgb,var(--node-color) 50%,transparent)}.resume-button.svelte-12o4jo5:active{transform:translateY(0)}.project-status.svelte-12o4jo5{margin:.75rem 0}.status-badge.svelte-12o4jo5{display:inline-block;padding:.25rem .6rem;border-radius:4px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.status-badge.active.svelte-12o4jo5{background:#2f855a;color:#c6f6d5}.status-badge.maintained.svelte-12o4jo5{background:#2b6cb0;color:#bee3f8}.status-badge.completed.svelte-12o4jo5{background:#6b5b95;color:#e2d8f0}.status-badge.archived.svelte-12o4jo5{background:#4a5568;color:#e2e8f0}.welcome-title.svelte-12o4jo5{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;z-index:100;pointer-events:none;animation:svelte-12o4jo5-titleFadeInOut 2.5s ease-in-out forwards}@media(max-width:767px){.welcome-title.svelte-12o4jo5{animation:svelte-12o4jo5-titleFadeInOutMobile 1.5s ease-in-out forwards}.welcome-title.svelte-12o4jo5 h1:where(.svelte-12o4jo5){font-size:1.8rem}.welcome-title.svelte-12o4jo5 p:where(.svelte-12o4jo5){font-size:.8rem}}@keyframes svelte-12o4jo5-titleFadeInOutMobile{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.05)}}.welcome-title.svelte-12o4jo5 h1:where(.svelte-12o4jo5){font-size:2.5rem;color:gold;margin:0;text-shadow:0 0 20px rgba(255,215,0,.8),0 0 40px rgba(255,215,0,.5),0 0 60px rgba(255,215,0,.3);letter-spacing:.1em}.welcome-title.svelte-12o4jo5 p:where(.svelte-12o4jo5){font-size:1rem;color:#a8a8b8;margin:.5rem 0 0;text-transform:uppercase;letter-spacing:.3em}@keyframes svelte-12o4jo5-titleFadeInOut{0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}20%{opacity:1;transform:translate(-50%,-50%) scale(1)}85%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.05)}}@media(max-width:767px){.welcome-title.svelte-12o4jo5 h1:where(.svelte-12o4jo5){font-size:1.8rem}.welcome-title.svelte-12o4jo5 p:where(.svelte-12o4jo5){font-size:.8rem}}.stats-panel-toggle.svelte-12o4jo5{position:fixed;top:20px;left:20px;width:48px;height:48px;background:linear-gradient(145deg,#1a1a2e,#0f0f1a);border:2px solid #ffd700;border-radius:12px;cursor:pointer;z-index:950;display:flex;align-items:center;justify-content:center;font-size:24px;color:gold;box-shadow:0 0 20px #ffd7004d,0 4px 12px #00000080;transition:all .3s cubic-bezier(.4,0,.2,1);opacity:0}.stats-panel-toggle.svelte-12o4jo5:hover:not(.open){transform:scale(1.05);box-shadow:0 0 30px #ffd70080,0 4px 16px #0009}.stats-panel-toggle.open.svelte-12o4jo5:hover{box-shadow:0 0 30px #ffd70080,0 4px 16px #0009}.stats-panel-toggle.open.svelte-12o4jo5{transform:translate(380px) rotate(180deg)}.stats-panel.svelte-12o4jo5{position:fixed;top:0;left:0;width:380px;height:100vh;background:linear-gradient(145deg,#1a1a2e,#0f0f1a);border-right:2px solid #ffd700;box-shadow:4px 0 40px #ffd7004d,8px 0 80px #ffd70026;z-index:900;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.stats-panel.svelte-12o4jo5::-webkit-scrollbar{width:10px}.stats-panel.svelte-12o4jo5::-webkit-scrollbar-track{background:#0000004d;border-left:1px solid rgba(255,215,0,.1)}.stats-panel.svelte-12o4jo5::-webkit-scrollbar-thumb{background:linear-gradient(180deg,gold,#b7941f);border-radius:5px;border:2px solid rgba(0,0,0,.3)}.stats-panel.svelte-12o4jo5::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#ffed4e,#d4af37)}.stats-panel.visible.svelte-12o4jo5{transform:translate(0)}.stats-panel-backdrop.svelte-12o4jo5{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;z-index:899;transition:opacity .2s ease}.character-card.svelte-12o4jo5{padding:2rem 1.5rem;border-bottom:2px solid rgba(255,215,0,.2);text-align:center}.character-portrait.svelte-12o4jo5{width:120px;height:120px;border-radius:50%;border:3px solid #ffd700;box-shadow:0 0 30px #ffd70080;margin:0 auto 1rem;object-fit:cover}.character-stats-bar.svelte-12o4jo5{display:flex;justify-content:center;gap:2rem;margin-bottom:1rem;font-size:.9rem;color:#a8a8b8}.stat-item.svelte-12o4jo5{display:flex;align-items:center;gap:.25rem}.stat-label.svelte-12o4jo5{font-weight:700;color:gold;text-shadow:0 0 10px rgba(255,215,0,.5)}.character-name.svelte-12o4jo5{font-size:1.4rem;font-weight:700;color:gold;text-shadow:0 0 20px rgba(255,215,0,.5);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.1em}.character-title.svelte-12o4jo5{font-size:.85rem;color:#a8a8b8;font-style:italic}.skills-section.svelte-12o4jo5{padding:1.5rem}.proficiency-summary.svelte-12o4jo5{background:#ffffff08;border:1px solid rgba(255,215,0,.2);border-radius:8px;padding:1rem;margin-bottom:1.5rem}.proficiency-summary.svelte-12o4jo5 h3:where(.svelte-12o4jo5){color:gold;font-size:.9rem;margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.05em}.proficiency-row.svelte-12o4jo5{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;font-size:.85rem}.proficiency-label.svelte-12o4jo5{color:#e0e0e0}.proficiency-count.svelte-12o4jo5{color:gold;font-weight:700}.skill-branch.svelte-12o4jo5{margin-bottom:1.5rem}.branch-header.svelte-12o4jo5{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:8px;cursor:pointer;transition:all .2s ease}.branch-header.svelte-12o4jo5:hover{background:#ffffff14;border-color:#ffd7004d}.branch-icon.svelte-12o4jo5{width:32px;height:32px;filter:drop-shadow(0 0 8px rgba(249,168,37,.5))}.branch-title.svelte-12o4jo5{flex:1;font-size:1rem;font-weight:700;color:#f9a825;text-shadow:0 0 10px rgba(249,168,37,.3)}.branch-count.svelte-12o4jo5{font-size:.8rem;color:#888}.expand-icon.svelte-12o4jo5{font-size:.8rem;color:#666;transition:transform .2s ease}.expand-icon.expanded.svelte-12o4jo5{transform:rotate(180deg)}.skill-list.svelte-12o4jo5{margin-top:.5rem;padding-left:1rem;overflow:hidden}.skill-item.svelte-12o4jo5{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;margin-bottom:.25rem;background:#0003;border-radius:6px;border-left:3px solid transparent;transition:all .15s ease}.skill-item.svelte-12o4jo5:hover{background:#ffffff0d;border-left-color:#f9a825}.skill-item-icon.svelte-12o4jo5{width:20px;height:20px;opacity:.8}.skill-name.svelte-12o4jo5{flex:1;font-size:.85rem;color:#e0e0e0}.skill-proficiency.svelte-12o4jo5{font-size:.7rem;color:#a8a8b8;display:flex;align-items:center;gap:.25rem}.proficiency-stars.svelte-12o4jo5{color:gold;font-size:.75rem}.skill-years.svelte-12o4jo5{font-size:.7rem;color:#666;margin-left:.5rem}@media(max-width:767px){.stats-panel-toggle.svelte-12o4jo5{bottom:20px;left:20px;top:auto;width:44px;height:44px;font-size:22px}.stats-panel-toggle.open.svelte-12o4jo5{transform:translateY(-85dvh) rotate(180deg)}.stats-panel.svelte-12o4jo5{width:100%;height:85dvh;border-left:none;border-right:none;border-top:2px solid #ffd700;border-radius:16px 16px 0 0;top:auto;bottom:0;transform:translateY(100%);box-shadow:0 -4px 40px #ffd7004d,0 -8px 80px #ffd70026}.stats-panel.visible.svelte-12o4jo5{transform:translateY(0)}.character-portrait.svelte-12o4jo5{width:100px;height:100px}.character-name.svelte-12o4jo5{font-size:1.2rem}.character-stats-bar.svelte-12o4jo5{gap:1rem;font-size:.8rem}}main.svelte-1uha8ag{width:100vw;height:100vh;overflow:hidden;margin:0;padding:0}
