.navbar[data-astro-cid-5blmo7yk]{--navbar-width: 72rem;position:fixed;z-index:50;top:1rem;left:50%;width:min(var(--navbar-width),calc(100% - 1.5rem));transform:translate(-50%);transition:width .45s cubic-bezier(.22,1,.36,1);will-change:width}.navbar__island[data-astro-cid-5blmo7yk]{position:relative;display:flex;align-items:center;gap:clamp(1rem,2.5vw,2rem);min-height:3.5rem;padding:.55rem .75rem .55rem 1.25rem;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);border-radius:999px;background:color-mix(in srgb,var(--page-bg) 84%,transparent);box-shadow:0 .75rem 2.5rem #00000024;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:min-height .45s cubic-bezier(.22,1,.36,1),padding .45s cubic-bezier(.22,1,.36,1),gap .45s cubic-bezier(.22,1,.36,1),box-shadow .3s ease;backface-visibility:hidden;transform:translateZ(0)}.navbar--collapsed[data-astro-cid-5blmo7yk] .navbar__island[data-astro-cid-5blmo7yk]{gap:1rem;min-height:3rem;padding:.35rem .55rem .35rem 1rem;box-shadow:0 .5rem 1.75rem #0000002e}.navbar--no-transition[data-astro-cid-5blmo7yk],.navbar--no-transition[data-astro-cid-5blmo7yk] .navbar__island[data-astro-cid-5blmo7yk]{transition:none}.navbar__brand[data-astro-cid-5blmo7yk]{flex:0 0 auto;color:var(--accent);font-family:var(--font-sans);font-size:1.15rem;font-weight:800;letter-spacing:.08em;text-decoration:none}.navbar__links[data-astro-cid-5blmo7yk]{display:flex;align-items:center;justify-content:center;gap:clamp(.85rem,2vw,1.75rem);margin:0 auto;padding:0;list-style:none}.navbar__links[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk],.navbar__mobile[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk]{color:var(--page-muted);font-family:var(--font-mono);font-size:.7rem;font-weight:700;letter-spacing:.12em;text-decoration:none;text-transform:uppercase}.navbar__links[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk]:hover,.navbar__links[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk]:focus-visible,.navbar__mobile[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk]:hover,.navbar__mobile[data-astro-cid-5blmo7yk] a[data-astro-cid-5blmo7yk]:focus-visible{color:var(--accent)}.navbar__controls[data-astro-cid-5blmo7yk]{display:flex;gap:.4rem}.navbar__control[data-astro-cid-5blmo7yk]{display:grid;width:2.35rem;height:2.35rem;place-items:center;padding:0;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:50%;background:transparent;color:var(--accent);font-family:var(--font-mono);font-size:.65rem;font-weight:800;cursor:pointer}.navbar__control[data-astro-cid-5blmo7yk]:hover,.navbar__control[data-astro-cid-5blmo7yk]:focus-visible{transform:scale(1.08)}.navbar__theme[data-astro-cid-5blmo7yk]{position:relative}.navbar__theme[data-astro-cid-5blmo7yk] svg[data-astro-cid-5blmo7yk]{position:absolute;width:1rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s ease,opacity .25s ease}.navbar__sun[data-astro-cid-5blmo7yk]{opacity:0;transform:rotate(-35deg) scale(.6)}.navbar__moon[data-astro-cid-5blmo7yk],.theme-light .navbar__sun[data-astro-cid-5blmo7yk]{opacity:1;transform:rotate(0) scale(1)}.theme-light .navbar__moon[data-astro-cid-5blmo7yk]{opacity:0;transform:rotate(35deg) scale(.6)}.navbar__mobile[data-astro-cid-5blmo7yk]{display:none}@media (max-width: 820px){.navbar[data-astro-cid-5blmo7yk]{width:calc(100% - 1.5rem)}.navbar__island[data-astro-cid-5blmo7yk]{gap:.75rem}.navbar__links[data-astro-cid-5blmo7yk]{display:none}.navbar__controls[data-astro-cid-5blmo7yk]{margin-left:auto}.navbar__mobile[data-astro-cid-5blmo7yk]{display:block}.navbar__mobile[data-astro-cid-5blmo7yk] summary[data-astro-cid-5blmo7yk]{display:grid;width:2.35rem;height:2.35rem;place-content:center;gap:.25rem;border-radius:50%;cursor:pointer;list-style:none}.navbar__mobile[data-astro-cid-5blmo7yk] summary[data-astro-cid-5blmo7yk]::-webkit-details-marker{display:none}.navbar__mobile[data-astro-cid-5blmo7yk] summary[data-astro-cid-5blmo7yk] span[data-astro-cid-5blmo7yk]{width:1.15rem;height:2px;background:var(--accent);transition:transform .22s ease,opacity .22s ease}.navbar__mobile[data-astro-cid-5blmo7yk][open] summary[data-astro-cid-5blmo7yk] span[data-astro-cid-5blmo7yk]:first-child{transform:translateY(6px) rotate(45deg)}.navbar__mobile[data-astro-cid-5blmo7yk][open] summary[data-astro-cid-5blmo7yk] span[data-astro-cid-5blmo7yk]:nth-child(2){opacity:0}.navbar__mobile[data-astro-cid-5blmo7yk][open] summary[data-astro-cid-5blmo7yk] span[data-astro-cid-5blmo7yk]:last-child{transform:translateY(-6px) rotate(-45deg)}.navbar__mobile[data-astro-cid-5blmo7yk] ul[data-astro-cid-5blmo7yk]{position:absolute;top:calc(100% + .65rem);right:0;display:grid;gap:1rem;width:min(19rem,calc(100vw - 1.5rem));margin:0;padding:1.4rem;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);border-radius:1.5rem;background:var(--page-bg);box-shadow:0 1rem 3rem #0000002e;list-style:none;transform-origin:top right;animation:menu-in .18s ease-out both}}@keyframes menu-in{0%{opacity:0;transform:translateY(-.5rem) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.navbar[data-astro-cid-5blmo7yk],.navbar__island[data-astro-cid-5blmo7yk],.navbar__theme[data-astro-cid-5blmo7yk] svg[data-astro-cid-5blmo7yk],.navbar__mobile[data-astro-cid-5blmo7yk] summary[data-astro-cid-5blmo7yk] span[data-astro-cid-5blmo7yk],.navbar__mobile[data-astro-cid-5blmo7yk] ul[data-astro-cid-5blmo7yk]{transition:none;animation:none}.navbar__island[data-astro-cid-5blmo7yk]{-webkit-backdrop-filter:none;backdrop-filter:none}}body.is-loading{overflow:hidden}.galaxy-loader{position:fixed;z-index:99999;inset:0;isolation:isolate;display:grid;overflow:hidden;place-items:center;background:radial-gradient(circle at 50% 50%,rgb(13 18 30 / 62%),transparent 43%),#020304;opacity:1;visibility:visible;transition:opacity .68s cubic-bezier(.22,.61,.36,1),visibility .68s step-end}.galaxy-loader:before{position:absolute;z-index:0;inset:-18%;background:radial-gradient(circle at 50% 50%,rgb(137 161 255 / 11%) 0 11%,rgb(83 108 194 / 6.5%) 20%,transparent 49%);content:"";filter:blur(22px);pointer-events:none;transform:scale(1.05)}.galaxy-loader:after{position:absolute;z-index:3;inset:0;background:radial-gradient(ellipse at center,transparent 35%,rgb(0 0 0 / 14%) 62%,rgb(0 0 0 / 72%) 100%);content:"";pointer-events:none}.galaxy-loader__canvas{position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%;filter:saturate(1.08) contrast(1.02);opacity:1;transform:scale(1);transition:opacity .68s ease,transform .72s cubic-bezier(.22,.61,.36,1)}.galaxy-loader__core{position:absolute;z-index:2;top:50%;left:50%;width:min(18vw,170px);aspect-ratio:1.55;border-radius:50%;animation:galaxy-loader-core 2.3s ease-in-out infinite alternate;background:radial-gradient(ellipse at center,rgb(255 250 220 / 94%) 0%,rgb(255 226 151 / 62%) 21%,rgb(255 201 94 / 22%) 43%,rgb(113 139 231 / 10%) 62%,transparent 78%);filter:blur(7px);mix-blend-mode:screen;opacity:.9;pointer-events:none;transform:translate(-50%,-50%) rotate(-34deg)}.galaxy-loader__progress{position:absolute;z-index:4;top:calc(50% + min(18vh,10rem));left:50%;min-width:4ch;border:0;background:transparent;color:#f4f7fff5;font-family:var(--font-sans);font-size:clamp(1.35rem,3vw,2.35rem);font-weight:300;letter-spacing:.04em;line-height:1;text-align:center;text-shadow:0 0 12px rgb(176 194 255 / 58%),0 0 32px rgb(132 156 240 / 22%);transform:translate(-50%)}.galaxy-loader__progress:after{position:absolute;top:calc(100% + .75rem);left:50%;width:.2rem;aspect-ratio:1;border-radius:50%;background:#d5deffd1;box-shadow:0 0 10px #d5deffbf;content:"";transform:translate(-50%)}.galaxy-loader.is-leaving{opacity:0;visibility:hidden}.galaxy-loader.is-leaving .galaxy-loader__canvas{opacity:0;transform:scale(1.085)}.galaxy-loader.is-leaving .galaxy-loader__core{opacity:0;transform:translate(-50%,-50%) rotate(-34deg) scale(1.14);transition:opacity .5s ease,transform .65s ease}.galaxy-loader.is-leaving .galaxy-loader__progress{opacity:0;transition:opacity .32s ease}@keyframes galaxy-loader-core{0%{opacity:.78;transform:translate(-50%,-50%) rotate(-34deg) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) rotate(-34deg) scale(1.05)}}@media (max-width: 700px){.galaxy-loader__core{width:min(28vw,130px)}.galaxy-loader__progress{top:calc(50% + min(19vh,7.5rem))}}@media (prefers-reduced-motion: reduce){.galaxy-loader,.galaxy-loader__canvas,.galaxy-loader__core,.galaxy-loader__progress{animation:none!important;transition-duration:.18s!important}}.hero{position:relative;isolation:isolate;min-height:100svh;overflow:hidden;background:var(--page-bg);color:var(--page-text)}.hero__canvas-wrapper{position:absolute;z-index:0;inset:0;pointer-events:none}.hero__canvas{display:block;width:100%;height:100%}.hero__content{position:absolute;z-index:1;bottom:clamp(2.5rem,6vh,5rem);left:clamp(2rem,6vw,7rem);display:grid;justify-items:start;width:min(36rem,38vw);text-align:left;pointer-events:none}.hero__content>*{pointer-events:auto}[data-hero-animation-state=pending] .hero__eyebrow,[data-hero-animation-state=pending] .hero__greeting,[data-hero-animation-state=pending] .hero__name,[data-hero-animation-state=pending] .hero__subtitle>[aria-hidden=true],[data-hero-animation-state=pending] .hero__actions{visibility:hidden}.hero__sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.hero__eyebrow{max-width:100%;margin-bottom:1.25rem;font-size:clamp(.62rem,.8vw,.78rem);letter-spacing:.14em}.hero__title{margin:0;letter-spacing:-.06em;line-height:.82}.hero__greeting{display:block;font-size:clamp(2.8rem,5vw,5.4rem);font-weight:800;line-height:.95}.hero__name{display:block;margin-top:.08em;color:var(--accent);font-size:clamp(4.5rem,8vw,8.5rem);font-weight:850;line-height:.82}.hero__subtitle{max-width:42rem;margin:1.75rem 0 0;color:var(--page-muted);font-size:clamp(.95rem,1.35vw,1.15rem);line-height:1.65}.hero__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.8rem;margin-top:2rem}.typing-cursor{display:none;width:2px;height:.86em;margin-left:.08em;background:currentColor;vertical-align:-.04em}.hero__button{padding:.82rem 1.55rem;border:1px solid transparent;border-radius:999px;font-weight:750;text-decoration:none}.hero__button:hover,.hero__button:focus-visible{transform:translateY(-.2rem)}.hero__button--primary{background:var(--accent);color:var(--accent-contrast)}.hero__button--secondary{border-color:var(--accent);background:color-mix(in srgb,var(--page-bg) 70%,transparent);color:var(--page-text)}@media (max-width: 1439px){.hero__content{bottom:clamp(2rem,5vh,3.5rem);left:clamp(2rem,4vw,4rem);width:min(34rem,44vw)}}@media (max-width: 1023px){.hero__content{right:2rem;bottom:2rem;left:2rem;width:auto;max-width:38rem}.hero__greeting{font-size:clamp(2.7rem,7vw,4.4rem)}.hero__name{font-size:clamp(4.6rem,12vw,7rem)}.hero__subtitle{max-width:35rem}}@media (max-width: 639px){.hero.snap-section{min-height:100svh}.hero__content{inset:50% auto auto 50%;width:calc(100% - 2.5rem);max-width:22rem;justify-items:center;text-align:center;transform:translate(-50%,-50%)}.hero__eyebrow{margin-bottom:.9rem;font-size:.6rem;letter-spacing:.1em}.hero__greeting{font-size:clamp(2.35rem,12vw,3.2rem)}.hero__name{font-size:clamp(4.25rem,23vw,6rem)}.hero__subtitle{max-width:21rem;margin-top:1.35rem;font-size:.94rem;line-height:1.55}.hero__actions{width:100%;gap:.6rem;margin-top:1.5rem}.hero__button{flex:1 1 auto;padding-inline:1rem;text-align:center}}@media (max-width: 359px){.hero__content{width:calc(100% - 2rem)}.hero__eyebrow{margin-bottom:.65rem;font-size:.52rem}.hero__greeting{font-size:clamp(2rem,11vw,2.35rem)}.hero__name{font-size:clamp(3.7rem,20vw,4.25rem)}.hero__subtitle{margin-top:.9rem;font-size:.84rem;line-height:1.4}.hero__actions{flex-wrap:nowrap;gap:.4rem;margin-top:.9rem}.hero__button{flex:1 1 0;padding:.7rem .35rem;font-size:.78rem;white-space:nowrap}}@media (prefers-reduced-motion: reduce){.typing-cursor{display:none!important}}:root{color-scheme:dark;--page-bg: #050509;--page-surface: #0d0d14;--page-text: #f8fafc;--page-muted: #aeb5c2;--border: rgb(255 255 255 / 12%);--accent: #e8c766;--accent-contrast: #171204;--section-max: 72rem;--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}html.theme-light{color-scheme:light;--page-bg: #f7f9fe;--page-surface: #ffffff;--page-text: #141a24;--page-muted: #566172;--border: rgb(3 79 189 / 15%);--accent: #075dcc;--accent-contrast: #ffffff}*,*:before,*:after{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth;scroll-padding-top:0;scroll-snap-type:none}body{min-width:0;min-height:100%;margin:0;overflow-x:hidden;background:var(--page-bg);color:var(--page-text);font-family:var(--font-sans);line-height:1.6;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button,a{transition:transform .18s ease,opacity .18s ease}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.skip-link{position:fixed;z-index:100;top:.5rem;left:.5rem;padding:.65rem 1rem;border-radius:.75rem;background:var(--accent);color:var(--accent-contrast);text-decoration:none;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.snap-section{min-height:100svh;scroll-snap-align:start;scroll-snap-stop:normal}.portfolio-section{display:grid;align-items:center;padding:clamp(6.5rem,10vw,9rem) clamp(1.25rem,5vw,4rem) clamp(3rem,7vw,6rem);content-visibility:auto;contain-intrinsic-block-size:100svh;border-top:1px solid var(--border)}.section-shell{width:min(100%,var(--section-max));margin-inline:auto}.section-heading{--section-heading-gutter: clamp(1.25rem, 4vw, 4rem);--section-heading-width: min(calc(100vw - var(--section-heading-gutter) - var(--section-heading-gutter)), 96rem);display:grid;max-width:48rem;gap:1rem;align-self:start;padding-block:clamp(.5rem,2svh,1.25rem) 1rem;margin-bottom:clamp(2rem,5vw,4rem)}.portfolio-section .section-heading,.contact-section .section-heading{width:var(--section-heading-width);max-width:none;margin-left:calc(50% - 50vw + var(--section-heading-gutter))}.section-eyebrow,.hero__eyebrow{margin:0;color:var(--accent);font-family:var(--font-mono);font-size:.72rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.section-heading h2,.site-footer h2{max-width:14ch;margin:0;font-weight:750;letter-spacing:-.055em;line-height:.98}.section-heading h2{font-size:clamp(3.2rem,min(5.3vw,10svh),6.4rem)}.site-footer h2{font-size:clamp(2.35rem,7vw,5.75rem)}.section-heading>p:last-child,.site-footer__content>p{max-width:42rem;margin:0;color:var(--page-muted);font-size:clamp(1rem,2vw,1.2rem)}.surface-card{border:1px solid var(--border);border-radius:1.5rem;background:var(--page-surface);box-shadow:0 1rem 4rem #00000014}.surface-card h3{margin:0;font-size:clamp(1.15rem,2vw,1.45rem)}.surface-card p{margin:.65rem 0 0;color:var(--page-muted)}.projects-grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:clamp(1rem,1.8vw,1.5rem)}.project-card{position:relative;display:grid;align-content:start;gap:clamp(.9rem,1.5vw,1.25rem);overflow:hidden;padding:clamp(1rem,1.6vw,1.35rem);transition:border-color .18s ease,box-shadow .18s ease}.project-card__open{position:absolute;z-index:10;inset:0;width:100%;border:0;border-radius:inherit;background:transparent;cursor:pointer}.project-card__open:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.project-card__content{display:grid;gap:.65rem;max-width:none}.project-card .project-card__title{margin:0;font-size:clamp(1.35rem,2vw,1.8rem);line-height:1.08;letter-spacing:-.045em;transition:color .18s ease,transform .18s ease}.project-card__description{display:-webkit-box;max-width:none;overflow:hidden;font-size:clamp(.88rem,1.15vw,1rem);-webkit-box-orient:vertical;-webkit-line-clamp:3}.project-mockups{position:relative;isolation:isolate;display:grid;place-items:center;perspective:1100px}.project-mockups--card{min-height:0;aspect-ratio:16 / 10}.project-mockups--dialog{min-height:clamp(16rem,43vw,31rem)}.project-mockups__desktop{position:relative;width:min(92%,58rem);aspect-ratio:16 / 9;padding:clamp(.3rem,.6vw,.5rem);border:2px solid color-mix(in srgb,var(--accent) 28%,var(--border));border-radius:clamp(.7rem,1.3vw,1rem);background:color-mix(in srgb,var(--page-surface) 82%,#000);box-shadow:0 1.5rem 4rem #00000047;transform:translateY(0) rotate(-1.5deg) scale(1);transform-origin:50% 60%;transition:transform .4s cubic-bezier(.22,.61,.36,1);will-change:transform}.project-mockups__screen{position:relative;overflow:hidden;width:100%;height:100%;border-radius:clamp(.4rem,.8vw,.65rem);background:radial-gradient(circle at 30% 20%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 42%),color-mix(in srgb,var(--page-surface) 72%,var(--page-bg))}.project-mockups__desktop-media{overflow:hidden;width:100%;height:100%}.project-mockups__desktop-media img,.project-mockups__desktop-media video,.project-mockups__phone img{display:block;width:100%;height:100%;object-fit:cover}.project-mockups__fallback{display:grid;width:100%;height:100%;place-items:center;padding:1rem;color:var(--page-muted);font-family:var(--font-mono);font-size:clamp(.65rem,1vw,.8rem);text-align:center}.project-mockups__phone{position:absolute;z-index:3;right:3%;bottom:0;overflow:hidden;width:clamp(6.25rem,19%,12.5rem);aspect-ratio:.49;padding:clamp(.22rem,.45vw,.4rem);border:2px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:clamp(.8rem,1.6vw,1.25rem);background:color-mix(in srgb,var(--page-surface) 82%,#000);box-shadow:0 1.3rem 3rem #00000061;transform:translateY(0) rotate(6deg) scale(1);transform-origin:55% 70%;transition:transform .4s cubic-bezier(.22,.61,.36,1);will-change:transform}.project-mockups__phone-screen{overflow:hidden;width:100%;height:100%;border-radius:clamp(.55rem,1.1vw,.9rem);background:var(--page-bg)}.project-card .tag-list{position:relative;z-index:11;pointer-events:none}.project-card .technology-logo-list{pointer-events:auto}.projects-empty{margin:0;padding:clamp(2rem,6vw,4rem);border:1px dashed var(--border);border-radius:1.5rem;color:var(--page-muted);text-align:center}@media (hover: hover) and (pointer: fine){.project-card:hover{border-color:color-mix(in srgb,var(--accent) 46%,var(--border));box-shadow:0 1.5rem 5rem #0000002e}.project-card:hover .project-mockups__desktop{transform:translateY(-9px) rotate(-3deg) scale(1.033)}.project-card:hover .project-mockups__phone{transform:translateY(-9px) rotate(8.25deg) scale(1.085)}.project-card:hover .project-card__title{color:var(--accent);transform:translate(2px)}}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}.tag-list li{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .7rem;border:1px solid var(--border);border-radius:999px;color:var(--page-muted);font-family:var(--font-mono);font-size:.74rem}.technology-logo-list{gap:.2rem;margin:0}.tag-list .technology-logo-list__item{position:relative;display:grid;width:2.2rem;height:2.2rem;margin:0;padding:0;place-items:center;border:0;border-radius:.55rem;background:transparent}.tag-list .technology-logo-list__item--light{background:#fff}.technology-logo-list__item:after{position:absolute;z-index:20;bottom:calc(100% + .4rem);left:50%;max-width:13rem;padding:.35rem .55rem;border:1px solid var(--border);border-radius:.45rem;background:var(--page-surface);color:var(--page-text);content:attr(data-technology-name);font-family:var(--font-mono);font-size:.66rem;line-height:1.2;opacity:0;pointer-events:none;transform:translate(-50%,.25rem);transition:opacity .14s ease,transform .14s ease;white-space:nowrap}.technology-logo-list__item:hover:after,.technology-logo-list__item:focus-visible:after{opacity:1;transform:translate(-50%)}.technology-logo-list__icon{display:block;width:1.8rem;height:1.8rem;object-fit:contain}.technology-logo-list__fallback{color:var(--page-text);font-family:var(--font-mono);font-size:.72rem;font-weight:800;line-height:1}.skills-section{--skills-top-space: clamp(5.5rem, 12svh, 7rem);--skills-star: rgb(255 255 255 / 82%);--skills-star-soft: rgb(232 199 102 / 48%);--skills-line: color-mix(in srgb, var(--accent) 34%, rgb(255 255 255 / 18%));--skills-glow: color-mix(in srgb, var(--accent) 28%, transparent);--skills-sun-center: #fff6ae;--skills-sun-mid: #f4bd3f;--skills-sun-edge: #d77a09;--skills-sun-ray: rgb(244 189 63 / 58%);position:relative;isolation:isolate;display:grid;height:100svh;min-height:0;grid-template-rows:minmax(0,1fr);align-items:center;overflow:clip;padding:var(--skills-top-space) clamp(1.25rem,4vw,4rem) 0;content-visibility:auto;contain-intrinsic-block-size:100svh;border-top:1px solid var(--border);background:radial-gradient(circle at 68% 100%,var(--skills-glow),transparent 28%),radial-gradient(circle at 68% 22%,color-mix(in srgb,var(--accent) 7%,transparent),transparent 34%),var(--page-bg)}html.theme-light .skills-section{--skills-star: rgb(7 93 204 / 78%);--skills-star-soft: rgb(7 93 204 / 40%);--skills-line: rgb(7 93 204 / 25%);--skills-glow: rgb(7 93 204 / 20%);--skills-sun-center: #dff3ff;--skills-sun-mid: #56a8f5;--skills-sun-edge: #075dcc;--skills-sun-ray: rgb(7 93 204 / 46%)}.skills-section__anchor{position:absolute;top:0;left:0}.skills-section__shell{position:relative;z-index:1;display:grid;grid-template-columns:minmax(15rem,.7fr) minmax(38rem,2.3fr);gap:clamp(1.5rem,3vw,3.5rem);width:min(100%,96rem);min-height:0;margin-inline:auto;align-items:stretch;align-self:stretch}.skills-section__intro{position:relative;z-index:4;display:grid;gap:1rem;align-self:start;padding-block:clamp(.5rem,2svh,1.25rem) 1rem}.skills-section__intro h2{max-width:7ch;margin:0;font-size:clamp(3.2rem,min(5.3vw,10svh),6.4rem);font-weight:760;letter-spacing:-.065em;line-height:.9}.skills-section__intro>p:last-of-type{max-width:27rem;margin:.8rem 0 0;color:var(--page-muted);font-size:clamp(.96rem,1.25vw,1.12rem)}.skills-map{--orbit-play-state: paused;--ring-0-x: 0px;--ring-0-y: 0px;--ring-1-x: 0px;--ring-1-y: 0px;--ring-2-x: 0px;--ring-2-y: 0px;--ring-3-x: 0px;--ring-3-y: 0px;--ring-4-x: 0px;--ring-4-y: 0px;position:relative;z-index:2;width:100%;min-width:0;min-height:0;touch-action:pan-y}.skills-map__halo{position:absolute;left:50%;top:100%;width:clamp(15rem,40%,28rem);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--skills-sun-ray),transparent 70%);filter:blur(18px);opacity:.72;transform:translate(-50%,-50%);animation:skills-sun-halo 3.4s ease-in-out infinite alternate}.skills-map__core{position:absolute;z-index:4;left:50%;top:100%;width:clamp(6rem,min(14vw,26svh),12rem);aspect-ratio:1;border:1px solid color-mix(in srgb,var(--skills-sun-center) 78%,transparent);border-radius:50%;background:radial-gradient(circle at 36% 30%,var(--skills-sun-center) 0 12%,var(--skills-sun-mid) 42%,var(--skills-sun-edge) 100%);box-shadow:0 0 1.1rem .3rem var(--skills-sun-ray),0 0 3.6rem 1rem var(--skills-glow),inset -.8rem -.9rem 1.6rem #0000002e;transform:translate(-50%,-50%);animation:skills-sun-blink 3.2s ease-in-out infinite}.skills-map__core:after{content:"";position:absolute;inset:12%;border-radius:50%;background:radial-gradient(circle at 32% 26%,rgb(255 255 255 / 62%),transparent 42%);mix-blend-mode:screen;animation:skills-sun-light 3.2s ease-in-out infinite}.skills-map[data-orbit-animating=true]{--orbit-play-state: running}.skills-map__halo,.skills-map__core{pointer-events:none}.skills-map .skills-map__halo,.skills-map .skills-map__core,.skills-map .skills-map__core:after,.skills-map .skills-orbit__track,.skills-map .skills-orbit__marker{animation-play-state:var(--orbit-play-state)}.skills-orbit,.skills-orbit__layer,.skills-orbit__layer ol{position:absolute;inset:0;pointer-events:none}.skills-orbit{z-index:3}.skills-orbit__layer{pointer-events:none}.skills-orbit__layer[data-orbit-paused=true]{--orbit-play-state: paused;z-index:5}.skills-orbit__layer--1{transform:translate3d(var(--ring-0-x),var(--ring-0-y),0)}.skills-orbit__layer--2{transform:translate3d(var(--ring-1-x),var(--ring-1-y),0)}.skills-orbit__layer--3{transform:translate3d(var(--ring-2-x),var(--ring-2-y),0)}.skills-orbit__layer--4{transform:translate3d(var(--ring-3-x),var(--ring-3-y),0)}.skills-orbit__layer--5{transform:translate3d(var(--ring-4-x),var(--ring-4-y),0)}.skills-orbit__track{pointer-events:none;position:absolute;left:50%;top:100%;width:var(--track-width);height:var(--track-height);border:1px solid var(--skills-line);border-radius:50%;opacity:.72;transform:translate(-50%,-50%);animation:skills-track-pulse 7s ease-in-out infinite alternate}.skills-orbit__layer:nth-child(2n) .skills-orbit__track{animation-delay:-3.5s}.skills-orbit__layer ol{margin:0;padding:0;list-style:none}.skills-orbit__node{position:absolute;z-index:2;left:var(--orbit-x, var(--node-x));top:var(--orbit-y, var(--node-y));opacity:var(--orbit-opacity, 1);transform:translate(-50%,-50%)}.skills-orbit__node:focus-within{opacity:1}.skills-orbit__node:hover{opacity:1;z-index:4}.skills-map[data-orbit-ready=true] .skills-orbit__node{left:0;top:0}.skills-map[data-orbit-animating=true] .skills-orbit__node:not([hidden]){will-change:transform,opacity}.skills-orbit__node[hidden],.skills-controls[hidden]{display:none!important}.skills-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;font:.72rem var(--font-mono);color:var(--page-muted)}.skills-controls button{padding:.6rem .85rem;min-height:2.75rem;border:1px solid var(--border);border-radius:999px;background:var(--page-surface);color:var(--page-text);font:inherit;cursor:pointer}.skills-controls button:hover{border-color:var(--accent)}.skills-orbit__marker{position:relative;display:grid;place-items:center;border-radius:50%;cursor:default;pointer-events:auto;animation:skills-node-float 5.4s ease-in-out var(--float-delay) infinite}.skills-orbit__marker:before{content:"";position:absolute;inset:-12px;border-radius:50%}.skills-orbit__node[data-orbit-interactive=false] .skills-orbit__marker{pointer-events:none}.skills-orbit__node:focus-within{z-index:5}.skills-orbit__marker:focus-visible{outline-offset:.38rem}.skills-orbit__icon{position:relative;display:grid;width:clamp(2.35rem,min(4vw,7svh),3.7rem);aspect-ratio:1;place-items:center;overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 56%,var(--border));border-radius:50%;background:color-mix(in srgb,var(--page-surface) 82%,transparent);box-shadow:0 .7rem 2rem #0000002e,0 0 1.2rem var(--skills-glow);transition:border-color .22s ease,box-shadow .22s ease}.skills-orbit__icon img{position:absolute;z-index:2;width:64%;height:64%;object-fit:contain;filter:drop-shadow(0 0 .35rem rgb(0 0 0 / 24%))}.skills-orbit__icon--white{border-color:#ffffffe0;background:#fff;box-shadow:0 .7rem 2rem #0000002e,0 0 1.2rem var(--skills-glow)}.skills-orbit__icon--white img{width:76%;height:76%;filter:none}.skills-orbit__initials{position:relative;z-index:1;color:var(--accent);font-family:var(--font-mono);font-size:clamp(.62rem,1vw,.78rem);font-weight:800;letter-spacing:-.04em}.skills-orbit__label{position:absolute;z-index:6;bottom:calc(100% + .55rem);left:50%;max-width:10rem;padding:.32rem .58rem;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--page-bg) 92%,transparent);box-shadow:0 .5rem 1.5rem #00000029;color:var(--page-text);font-family:var(--font-mono);font-size:.66rem;line-height:1.15;opacity:0;pointer-events:none;text-align:center;transform:translate(-50%,.4rem) scale(.94);transition:opacity .18s ease,transform .18s ease;white-space:nowrap}.skills-orbit__marker:hover .skills-orbit__icon,.skills-orbit__marker:focus .skills-orbit__icon{border-color:var(--accent);box-shadow:0 .9rem 2.5rem #00000038,0 0 1.8rem var(--skills-glow)}.skills-orbit__marker:hover .skills-orbit__label,.skills-orbit__marker:focus .skills-orbit__label{opacity:1;transform:translate(-50%) scale(1)}.skills-orbit[aria-busy=true] .skills-orbit__marker{opacity:.72}@keyframes skills-track-pulse{0%{opacity:.42}to{opacity:.82}}@keyframes skills-node-float{0%,to{transform:translateZ(0)}50%{transform:translate3d(0,-2px,0)}}@keyframes skills-sun-blink{0%,to{transform:translate(-50%,-50%) scale(.97)}38%{transform:translate(-50%,-50%) scale(1.035)}52%{transform:translate(-50%,-50%) scale(1)}68%{transform:translate(-50%,-50%) scale(1.02)}}@keyframes skills-sun-light{0%,to{opacity:.45}38%,68%{opacity:1}52%{opacity:.65}}@keyframes skills-sun-halo{0%{opacity:.42;transform:translate(-50%,-50%) scale(.88)}to{opacity:.82;transform:translate(-50%,-50%) scale(1.08)}}.site-footer{padding:0 clamp(1.25rem,5vw,4rem) 2rem;border-top:1px solid var(--border)}.site-footer__content{width:min(100%,var(--section-max));margin-inline:auto}.site-footer__bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-top:1.5rem;color:var(--page-muted);font-size:.8rem}.site-footer__bottom a{color:inherit}@supports (animation-timeline: view()){.section-reveal{animation:section-reveal linear both;animation-timeline:view();animation-range:entry 10% entry 38%}}@keyframes section-reveal{0%{opacity:0;transform:translateY(2rem)}to{opacity:1;transform:translateY(0)}}@media (min-width: 641px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 1025px){.projects-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 768px) and (min-height: 600px) and (prefers-reduced-motion: no-preference){html{scroll-snap-type:y mandatory}.snap-section{scroll-snap-stop:always}}@media (max-width: 800px){.section-heading{--section-heading-gutter: clamp(1rem, 5vw, 2rem);padding-block:0}.portfolio-section .section-heading,.contact-section .section-heading{width:auto;max-width:48rem;margin-left:0}.section-heading h2{font-size:clamp(3.2rem,14vw,5.5rem)}.project-mockups__desktop{width:94%}.project-mockups__phone{right:1%;width:clamp(5.5rem,24%,9.5rem)}}@media (max-width: 1180px){.skills-section__shell{grid-template-columns:minmax(14rem,.68fr) minmax(0,1.5fr);align-items:stretch}}@media (max-width: 800px){.skills-section{--skills-top-space: 4.75rem;height:auto;min-height:100svh;padding-inline:clamp(1rem,5vw,2rem)}.skills-section__shell{grid-template-columns:minmax(0,1fr);gap:2rem}.skills-section__intro{max-width:38rem;padding-block:0}.skills-section__intro h2{max-width:9ch;font-size:clamp(3.2rem,14vw,5.5rem)}.skills-map{justify-self:center;width:min(100%,42rem);height:clamp(29rem,108vw,38rem);min-height:0}.skills-orbit__icon{width:clamp(2.65rem,9vw,3.35rem)}}@media (max-width: 520px){.contact-section .section-heading{margin-left:calc(var(--section-heading-gutter) - 1rem)}.project-card{padding:1rem;border-radius:1.15rem}.project-mockups__desktop{width:96%;padding:.25rem}.project-mockups__phone{right:0;bottom:.25rem;width:27%;padding:.2rem}.skills-section{min-height:0;padding-inline:0}.skills-section__shell{gap:0;width:100%}.skills-section__intro{padding-inline:clamp(1rem,5vw,2rem);padding-bottom:0}.skills-map{width:100%;height:clamp(19rem,92vw,23rem);overflow:clip}.skills-orbit__node{left:var(--orbit-x, var(--mobile-x));top:var(--orbit-y, var(--mobile-y))}.skills-orbit__icon{width:clamp(1.625rem,9vw,2.5rem)}.skills-orbit__label{max-width:7rem;font-size:.6rem;white-space:normal}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.skills-orbit__layer{transform:none!important}.skills-orbit__node{opacity:1}}
