.modal-backdrop.svelte-und0iy{position:fixed;inset:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000}.modal-card.svelte-und0iy{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(92vw,720px);max-height:85vh;overflow-y:auto;z-index:1001;padding:1.5rem}.modal-close.svelte-und0iy{position:absolute;top:.75rem;right:.75rem;background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--text)}.modal-links.svelte-und0iy{display:flex;gap:1rem;margin-top:.5rem}.modal-links.svelte-und0iy a:where(.svelte-und0iy){display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;color:var(--accent);text-decoration:none}.modal-links.svelte-und0iy a:where(.svelte-und0iy):hover{opacity:.7}.project-media.svelte-9v0tju{width:100%;height:200px;overflow:hidden;border-radius:10px;margin-bottom:.75rem;border:1px solid rgba(255,255,255,.12);background:#ffffff05}.project-media.svelte-9v0tju img:where(.svelte-9v0tju){width:100%;height:100%;object-fit:cover;display:block}.project-card.svelte-9v0tju:hover .project-media:where(.svelte-9v0tju){border-color:var(--accent)}:root{--header-h: 56px;--footer-h: 40px;--content-max: 1200px;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;--ease: cubic-bezier(.4, 0, .2, 1);--dur-fast: .12s;--dur: .22s;--dur-slow: .36s;--r-xs: 4px;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--z-nav: 10;--z-assistant: 20}:root{--bg: #0a0f14;--bg-elev-1: #121925;--bg-elev-2: #182233;--fg: #e9edf5;--fg-muted: #a7b0c2;--accent: #72e0c7;--accent-soft: rgba(114, 224, 199, .28);--border: rgba(255, 255, 255, .14);--shadow-sm: 0 4px 14px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .04);--shadow-md: 0 18px 46px rgba(0, 0, 0, .7), inset 0 1px 0 rgba(255, 255, 255, .05);color-scheme:dark}[data-theme=light]{--bg: #dcefe6;--bg-elev-1: #ffffff;--bg-elev-2: #edf7f2;--fg: #1f2d2a;--fg-muted: #647d75;--accent: #63bfa6;--accent-soft: rgba(99, 191, 166, .3);--border: rgba(31, 45, 42, .14);--shadow-sm: 0 4px 14px rgba(31, 45, 42, .1);--shadow-md: 0 16px 34px rgba(31, 45, 42, .16);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow-x:hidden}body{background:radial-gradient(1200px 600px at 50% -240px,rgba(114,224,199,.08),transparent 60%),radial-gradient(800px 400px at 80% 120%,rgba(114,224,199,.04),transparent 60%),var(--bg);color:var(--fg);font-family:var(--font-sans);line-height:1.5}#app{min-height:100vh;display:flex;flex-direction:column}nav{height:var(--header-h);display:flex;align-items:center;padding:0 max(1rem,calc((100% - var(--content-max)) / 2));background:linear-gradient(180deg,#ffffff0d,#fff0),var(--bg-elev-1);border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(120%) blur(2px);backdrop-filter:saturate(120%) blur(2px);z-index:var(--z-nav)}.nav-links button{position:relative;padding:.4rem .75rem;border-radius:var(--r-sm);background:none;border:none;cursor:pointer;font:inherit;color:var(--fg-muted);transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease)}.nav-links button:hover,.nav-links button[data-active=true]{color:var(--fg);background:var(--bg-elev-2)}.nav-links button:after{content:"";position:absolute;left:8px;right:8px;bottom:-6px;height:2px;background:var(--accent);border-radius:2px;transform:scaleX(0);opacity:0;transition:transform var(--dur) var(--ease),opacity var(--dur-fast) var(--ease)}.nav-links button[data-active=true]:after{transform:scaleX(1);opacity:1}.nav-logo{display:flex;align-items:center;justify-content:center;padding:.35rem;margin-right:.5rem;background:none;border:none;cursor:pointer}.nav-logo img{height:60px;width:auto;display:block}.nav-logo:after{display:none}.nav-links{display:flex;align-items:center;gap:.25rem}.nav-right{margin-left:auto;display:flex;align-items:center;gap:.75rem}.nav-right a,.nav-icon{color:var(--fg-muted);background:none;border:none;cursor:pointer;font:inherit;font-size:.9rem;padding:.35rem;display:inline-flex;align-items:center;justify-content:center}.nav-right a:hover,.nav-icon:hover{color:var(--fg)}nav{padding:0 .5rem}.nav-logo{margin-right:.25rem;padding-left:0}.nav-right{gap:.5rem}.nav-burger{display:none;position:relative;width:22px;height:18px;background:none;border:none;cursor:pointer}.nav-burger span{position:absolute;left:0;right:0;height:2px;background:var(--fg);transition:transform var(--dur) var(--ease),opacity var(--dur) var(--ease)}.nav-burger span:nth-child(1){top:4px}.nav-burger span:nth-child(2){bottom:4px}.nav-burger[data-open=true] span:nth-child(1){transform:translateY(5px) rotate(45deg)}.nav-burger[data-open=true] span:nth-child(2){transform:translateY(-5px) rotate(-45deg)}@media(max-width:768px){.nav-links{position:absolute;top:var(--header-h);left:0;right:0;background:var(--bg-elev-1);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;padding:.75rem 1rem;transform:scaleY(0);transform-origin:top;transition:transform var(--dur) var(--ease)}.nav-links[data-open=true]{transform:scaleY(1)}.nav-burger{display:block}}.snap-container{height:calc(100vh - var(--header-h) - var(--footer-h));overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth}.snap-section{min-height:100%;scroll-snap-align:start;display:flex;justify-content:center;padding:1.5rem 1rem}.snap-section>*{width:100%;max-width:var(--content-max)}.main-content{width:100%;max-width:var(--content-max);display:flex;flex-direction:column;gap:1.5rem}footer{height:var(--footer-h);position:relative;display:flex;align-items:center;justify-content:center;font-size:.8rem;color:var(--fg-muted);background:var(--bg-elev-1);border-top:1px solid var(--border)}.footer-inner{position:relative;width:100%;height:100%}.footer-social{position:absolute;left:max(1rem,calc((100% - var(--content-max)) / 2));top:50%;transform:translateY(-50%);display:flex;gap:1rem}.footer-social a{color:var(--fg-muted);font-size:1rem;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:color var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}.footer-social a:hover{color:var(--fg);transform:translateY(-1px)}.footer-social a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.footer-inner>span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}@media(max-width:600px){.footer-social{left:1rem}}.card{background:var(--bg-elev-1);border:1px solid var(--border);border-radius:var(--r-md);padding:1.25rem;box-shadow:var(--shadow-sm)}.card--raised{background:var(--bg-elev-2);box-shadow:var(--shadow-md)}.card.project-card{cursor:pointer}h1,h2,h3{margin:0;font-weight:600}p{margin:0;color:var(--fg-muted)}.assistant{position:fixed;right:1rem;bottom:calc(var(--footer-h) + 1rem);z-index:var(--z-assistant);pointer-events:none}.assistant-shell{pointer-events:auto;width:260px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--r-lg);padding:.75rem 1rem;box-shadow:var(--shadow-md)}.assistant-dock{pointer-events:auto;display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--border);box-shadow:var(--shadow-sm);color:var(--fg);cursor:pointer}.assistant-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.assistant-label{font-size:.85rem}.assistant-panel{pointer-events:auto;width:320px;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;overflow:hidden}.assistant-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--border)}.assistant-title{font-size:.85rem;font-weight:600}.assistant-close{background:none;border:none;color:var(--fg-muted);cursor:pointer;font-size:1.1rem}.assistant-body{padding:.75rem;font-size:.85rem;color:var(--fg-muted)}.assistant-input{padding:.5rem;border-top:1px solid var(--border)}.assistant-input input{width:100%;padding:.45rem .6rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);color:var(--fg);font:inherit}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--accent-soft)}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}.highlight{animation:pulse .6s var(--ease)}.field{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem}label{font-size:.85rem;color:var(--fg-muted)}input,textarea{min-height:36px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:.5rem .6rem;color:var(--fg);font:inherit}input:focus,textarea:focus{outline:none;border-color:var(--accent)}.error{font-size:.75rem;color:#ff6b6b}.actions{margin-top:1rem}.actions button{padding:.45rem .9rem;border-radius:var(--r-sm);background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 85%,black));color:#00130d;font-weight:600;border:none;box-shadow:0 6px 16px #00000059,inset 0 1px #ffffff40}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.stack{display:flex;flex-direction:column;gap:1.5rem}@media(max-width:800px){.grid-2,.grid-3{grid-template-columns:1fr}}@media(max-width:600px){main{padding:1rem .75rem}h1{font-size:1.4rem}.assistant{left:.75rem;right:.75rem;bottom:calc(var(--footer-h) + .75rem)}.assistant-shell{width:100%}}.skills-wall{--mask-inner: 260px;--mask-outer: 420px;position:relative;width:100%;height:clamp(380px,58vh,760px);padding:24px 18px;overflow:hidden;border-radius:var(--r-md);display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));grid-auto-rows:68px;gap:18px;mask-image:radial-gradient(circle at center,black var(--mask-inner),transparent var(--mask-outer));-webkit-mask-image:radial-gradient(circle at center,black var(--mask-inner),transparent var(--mask-outer))}.skills-wall:before,.skills-wall:after{content:"";position:absolute;left:0;right:0;height:120px;pointer-events:none;z-index:3}.skills-wall:before{top:0;background:linear-gradient(to bottom,var(--bg),transparent)}.skills-wall:after{bottom:0;background:linear-gradient(to top,var(--bg),transparent)}.slot{background:none;border:none}.slot.empty{pointer-events:none}.slot.empty:before{content:"";display:block;width:56px;height:56px;margin:auto;border-radius:14px;background:linear-gradient(#ffffff0a,#ffffff04);box-shadow:inset 0 0 0 1px var(--border)}.orbit-layer{position:absolute;inset:0;z-index:5;pointer-events:none}.orbit-layer button{pointer-events:auto}.orbit-node{position:absolute;width:56px;height:56px;border:none;background:none;padding:0;cursor:pointer;will-change:transform}.orbit-badge{width:56px;height:56px;border-radius:14px;display:grid;place-items:center;background:var(--bg-elev-1);box-shadow:0 0 0 1px var(--border),var(--shadow-sm);transition:all .18s ease}.orbit-badge img{width:32px;height:32px}.sun{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:84px;height:84px;border:none;background:none;z-index:10;cursor:pointer}.sun-badge{width:84px;height:84px;border-radius:18px;display:grid;place-items:center;background:var(--bg-elev-1);box-shadow:0 0 0 1px var(--border),var(--shadow-md)}.sun-badge img{width:42px;height:42px}.orbit-badge:after,.sun-badge:after{content:"";position:absolute;inset:-22px;background:radial-gradient(rgba(var(--glow-r, var(--accent-r)),var(--glow-g, var(--accent-g)),var(--glow-b, var(--accent-b)),.45),transparent 65%);filter:blur(16px);z-index:-1}:root{--accent-r: 108;--accent-g: 242;--accent-b: 194}[data-theme=light]{--accent-r: 79;--accent-g: 163;--accent-b: 209}:root{--grid-size: 80px;--accent-r: 114;--accent-g: 224;--accent-b: 199;--cursor-x: .5;--cursor-y: .5;--energy-primary: .28;--energy-secondary: .18;--energy-tertiary: .12;--grid-opacity: .08}[data-theme=light]{--accent-r: 72;--accent-g: 168;--accent-b: 142;--energy-primary: .9;--energy-secondary: .28;--energy-tertiary: .2;--grid-opacity: .08}body{position:relative;overflow-x:hidden;background:var(--bg)}body:before{content:"";position:fixed;inset:0;z-index:-3;pointer-events:none;background-image:linear-gradient(rgba(var(--accent-r),var(--accent-g),var(--accent-b),var(--grid-opacity)) 1px,transparent 1px),linear-gradient(90deg,rgba(var(--accent-r),var(--accent-g),var(--accent-b),var(--grid-opacity)) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size)}body:after{content:"";position:fixed;inset:-40%;z-index:-2;pointer-events:none;background:radial-gradient(700px 700px at calc(var(--cursor-x) * 100%) calc(var(--cursor-y) * 100%),rgba(var(--accent-r),var(--accent-g),var(--accent-b),var(--energy-primary)),transparent 70%),radial-gradient(900px 900px at calc((1 - var(--cursor-x)) * 100%) calc((1 - var(--cursor-y)) * 100%),rgba(var(--accent-r),var(--accent-g),var(--accent-b),var(--energy-secondary)),transparent 75%),radial-gradient(1000px 1000px at 50% 120%,rgba(var(--accent-r),var(--accent-g),var(--accent-b),var(--energy-tertiary)),transparent 80%);filter:blur(18px);animation:energyDrift 42s linear infinite,energyPulse 10s ease-in-out infinite alternate}body:after{mask-image:linear-gradient(black 1px,transparent 1px),linear-gradient(90deg,black 1px,transparent 1px);mask-size:var(--grid-size) var(--grid-size);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-image:linear-gradient(black 1px,transparent 1px),linear-gradient(90deg,black 1px,transparent 1px);-webkit-mask-size:var(--grid-size) var(--grid-size)}html:before{content:"";position:fixed;inset:-50%;z-index:-1;pointer-events:none;background:linear-gradient(115deg,transparent 40%,rgba(var(--accent-r),var(--accent-g),var(--accent-b),.22),transparent 60%);filter:blur(14px);animation:energySweep 16s linear infinite}html:after{content:"";position:fixed;inset:-30%;z-index:-1;pointer-events:none;background:radial-gradient(circle,rgba(var(--accent-r),var(--accent-g),var(--accent-b),.45),transparent 70%);background-size:calc(var(--grid-size) * 6) calc(var(--grid-size) * 6);filter:blur(2px);animation:sparkShift 26s linear infinite,sparkPulse 7s ease-in-out infinite alternate;-webkit-mask-image:radial-gradient(circle,black 2px,transparent 4px);mask-image:radial-gradient(circle,black 2px,transparent 4px);-webkit-mask-size:var(--grid-size) var(--grid-size);mask-size:var(--grid-size) var(--grid-size)}@keyframes energyDrift{0%{transform:translate(-15%,-10%)}50%{transform:translate(15%,10%)}to{transform:translate(-15%,-10%)}}@keyframes energyPulse{0%{opacity:.45}50%{opacity:1}to{opacity:.55}}@keyframes energySweep{0%{transform:translate(-60%)}to{transform:translate(60%)}}@keyframes sparkShift{0%{transform:translate(0)}50%{transform:translate(80px,40px)}to{transform:translate(0)}}@keyframes sparkPulse{0%{opacity:.2}50%{opacity:.55}to{opacity:.25}}
