*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.absolute{position:absolute}.relative{position:relative}.mt-\[clamp\(1\.5rem\,4vw\,2\.25rem\)\]{margin-top:clamp(1.5rem,4vw,2.25rem)}.block{display:block}.inline{display:inline}.flex{display:flex}.grid{display:grid}.hidden{display:none}.w-full{width:100%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.gap-4{gap:1rem}.gap-\[clamp\(1\.5rem\,4vw\,2\.25rem\)\]{gap:clamp(1.5rem,4vw,2.25rem)}.border{border-width:1px}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{color-scheme:light;font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;line-height:1.6;--bg: #ffffff;--text: #0b0b0b;--muted: #6b7280;--card: #f7f7f8;--accent: #4f46e5;--ring: #a5b4fc;--surface: color-mix(in srgb, var(--card) 88%, transparent);--surface-strong: #ffffff;--border: color-mix(in srgb, var(--text) 8%, transparent);--shadow-soft: 0 20px 45px -25px rgba(15, 23, 42, .35);--shadow-strong: 0 32px 60px -30px rgba(17, 24, 39, .55);--layout-max: 1100px;--step-xs: clamp(.75rem, .68rem + .2vw, .85rem);--step-sm: clamp(.9rem, .85rem + .25vw, 1rem);--step-base: clamp(1rem, .95rem + .4vw, 1.125rem);--step-lg: clamp(1.25rem, 1.1rem + .8vw, 1.6rem);--step-xl: clamp(2rem, 1.8rem + 1.5vw, 2.8rem);--step-2xl: clamp(2.6rem, 2.2rem + 2.4vw, 3.8rem);--radius-lg: 24px;--radius-md: 18px;--radius-sm: 12px;--ease-spring: cubic-bezier(.22, 1, .36, 1);--ease-soft: cubic-bezier(.19, 1, .22, 1);--transition-base: .22s var(--ease-spring);--transition-fast: .16s ease-out}html[data-theme=dark]{color-scheme:dark;--bg: #0b0b0f;--text: #f5f7fb;--muted: #a3aab8;--card: #12121a;--accent: #7c7ef3;--ring: #6366f1;--surface: color-mix(in srgb, var(--card) 90%, transparent);--surface-strong: #151521;--border: color-mix(in srgb, var(--text) 14%, transparent);--shadow-soft: 0 30px 60px -35px rgba(3, 7, 18, .7);--shadow-strong: 0 40px 80px -35px rgba(2, 6, 23, .85)}*,*:before,*:after{box-sizing:border-box}body{min-height:100vh;margin:0;background:var(--bg);color:var(--text);font-size:var(--step-base);font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background var(--transition-base),color var(--transition-base)}body.is-ready{transition-duration:.36s}::-moz-selection{background:color-mix(in srgb,var(--accent) 18%,transparent)}::selection{background:color-mix(in srgb,var(--accent) 18%,transparent)}img,picture{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none}p{margin-block:0 1.1em;color:color-mix(in srgb,var(--text) 86%,var(--muted) 14%)}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.skip-link{position:fixed;inset-block-start:1rem;inset-inline-start:1rem;z-index:1000;transform:translateY(-140%);background:var(--accent);color:#fff;padding:.65rem 1rem;border-radius:999px;transition:transform var(--transition-fast)}.skip-link:focus{transform:translateY(0)}.container{width:min(var(--layout-max),calc(100% - clamp(1.5rem,6vw,3rem)));margin-inline:auto}.section-shell{width:min(var(--layout-max),calc(100% - clamp(1.5rem,8vw,4rem)));margin-inline:auto;padding-block:clamp(3.5rem,8vw,5.5rem)}section{scroll-margin-top:clamp(5rem,8vw,7rem)}section+section{border-top:1px solid color-mix(in srgb,var(--border) 55%,transparent)}.content{max-width:70ch;margin-inline:auto;padding-inline:clamp(1rem,4vw,2rem);text-wrap:pretty}.prose{max-width:65ch;color:color-mix(in srgb,var(--text) 90%,var(--muted) 10%)}h1,h2,h3,h4{font-weight:700;color:var(--text);letter-spacing:-.015em;margin-block:0 .6em;text-wrap:balance}h1{font-size:var(--step-2xl);line-height:1.1}h2{font-size:var(--step-xl);line-height:1.15}h3{font-size:var(--step-lg);line-height:1.2}small{color:color-mix(in srgb,var(--muted) 70%,var(--text) 30%)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.7rem 1.4rem;font-weight:600;border-radius:999px;border:1px solid transparent;background:var(--accent);color:#fff}.btn.ghost{background:transparent;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}.text-link{position:relative;display:inline-flex;align-items:center;gap:.35rem;color:var(--accent);font-weight:600;transition:color var(--transition-fast)}.text-link:after{content:"";position:absolute;inset-inline:0;inset-block-end:0;height:2px;border-radius:999px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--transition-fast)}.text-link:hover:after{transform:scaleX(1)}.site-header{position:sticky;inset-block-start:0;z-index:500;backdrop-filter:blur(18px);background:color-mix(in srgb,var(--surface) 88%,transparent);border-bottom:1px solid color-mix(in srgb,var(--border) 65%,transparent);transition:background var(--transition-base),border-color var(--transition-base)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:clamp(.75rem,2vw,1.5rem);padding-block:clamp(.9rem,2vw,1.2rem)}.brand{display:inline-flex;align-items:center;gap:.75rem;font-weight:600;letter-spacing:.01em}.brand-text{font-size:var(--step-sm)}.header-actions,.site-nav ul{display:flex;align-items:center;gap:clamp(.75rem,2vw,1.5rem)}.nav-link{font-weight:500;color:color-mix(in srgb,var(--muted) 60%,var(--text) 40%);position:relative;transition:color var(--transition-fast)}.nav-link:hover,.nav-link.is-active,.nav-link[aria-current=page]{color:var(--text)}.nav-toggle{display:none;width:2.5rem;height:2.5rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--border) 65%,transparent);background:color-mix(in srgb,var(--card) 80%,transparent);position:relative;cursor:pointer;transition:transform var(--transition-fast),background var(--transition-fast)}.nav-toggle:hover{transform:translateY(-1px)}.nav-toggle-bar{position:absolute;inset-inline:.75rem;height:2px;border-radius:999px;background:currentColor;transition:transform var(--transition-fast)}.nav-toggle-bar:nth-child(1){inset-block-start:.9rem}.nav-toggle-bar:nth-child(2){inset-block-start:1.2rem}.nav-toggle-bar:nth-child(3){inset-block-start:1.5rem}@media (max-width: 900px){.header-actions{gap:.75rem}.site-nav{position:fixed;inset:clamp(4.5rem,12vw,6rem) 1.25rem auto;padding:1.5rem;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface-strong) 95%,transparent);box-shadow:var(--shadow-soft);z-index:450;opacity:0;visibility:hidden;transform:translateY(-10px) scale(.98);pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast),visibility var(--transition-fast)}.site-nav ul{flex-direction:column;align-items:flex-start;gap:1rem}.site-nav.open{opacity:1;visibility:visible;transform:translateY(0) scale(1);pointer-events:auto}.nav-toggle{display:inline-flex}}.avatar{position:relative;aspect-ratio:1 / 1;border-radius:999px;overflow:hidden;display:grid;place-items:center;background:color-mix(in srgb,var(--card) 70%,transparent);isolation:isolate;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 45%,transparent)}.avatar picture,.avatar img,.avatar svg{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.avatar img{opacity:0;transition:opacity var(--transition-base)}.avatar img.is-loaded{opacity:1}.avatar:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 2px color-mix(in oklab,var(--accent) 38%,transparent);opacity:.5}.avatar--hero{width:clamp(160px,32vw,210px)}.avatar--nav{width:2.35rem;min-width:2.35rem}.avatar-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:700;letter-spacing:.18em;color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,transparent);opacity:0;transition:opacity var(--transition-base)}.avatar.is-fallback .avatar-fallback{opacity:1}.hero{position:relative;padding-block:clamp(4rem,12vw,7rem)}.hero-surface{display:grid;gap:clamp(2rem,5vw,3.5rem);align-items:center;width:min(var(--layout-max),calc(100% - clamp(1.5rem,8vw,4rem)));margin-inline:auto;grid-template-columns:minmax(0,1fr)}.hero-media{position:relative;display:grid;place-items:center;justify-items:center;padding:clamp(1rem,4vw,1.5rem);border-radius:50%;background:radial-gradient(circle at top,color-mix(in srgb,var(--accent) 22%,transparent),transparent 70%),color-mix(in srgb,var(--surface-strong) 94%,transparent);box-shadow:var(--shadow-soft);overflow:hidden}.hero-orb{position:absolute;inset:auto;width:clamp(220px,40vw,320px);aspect-ratio:1 / 1;border-radius:50%;background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--accent) 35%,transparent),transparent 60%);filter:blur(0px);opacity:.55;z-index:0}.hero-media .avatar{position:relative;z-index:1}.hero-copy{display:grid;gap:clamp(1rem,2.2vw,1.75rem);max-width:42rem}.hero-copy.content{margin-inline:0}.hero-kicker{font-size:var(--step-sm);font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0}.hero-tagline{font-size:clamp(1.05rem,1rem + .4vw,1.25rem);font-weight:400;line-height:1.6;margin:0;color:color-mix(in srgb,var(--text) 78%,var(--muted) 22%)}.section-header p{margin-block:0;color:color-mix(in srgb,var(--muted) 55%,var(--text) 45%)}.section-header{display:grid;gap:clamp(.75rem,2vw,1.1rem)}.section-body p:last-child{margin-bottom:0}.skills{position:relative}.skills .section-header{max-width:none;padding-inline:0}.skills-grid{display:flex;flex-wrap:nowrap;gap:.4rem;margin-top:clamp(2rem,5vw,3rem);align-items:center;justify-content:start;overflow:visible;padding-bottom:.5rem}.skill{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:0;padding:.4rem;width:80px;height:80px;flex-shrink:0;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--border) 65%,transparent);background:color-mix(in srgb,var(--card) 92%,transparent);box-shadow:0 1px color-mix(in srgb,var(--border) 50%,transparent);overflow:visible;transition:all 1s cubic-bezier(.34,1.56,.64,1);will-change:transform;cursor:pointer}.skill:after{content:"";position:absolute;inset:-16px;border-radius:calc(var(--radius-sm) + 16px);z-index:11}.skill:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,#ff00ff40,#00ffff40,#ffff0040,#00ffff40,#ff00ff40);background-size:200% 200%;opacity:0;pointer-events:none;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(-100%) rotate(0);mix-blend-mode:overlay;z-index:0}.skill:hover:before,.skill:focus-visible:before{opacity:.2;transform:translateY(0) rotate(2deg);animation:holographic-shift 4s ease-in-out infinite}.skill:hover,.skill:focus-visible{width:240px!important;height:auto!important;padding:.65rem 1.1rem!important;gap:.65rem!important;margin-inline:-80px!important;justify-content:center!important;transform:translateY(-8px) scale(1.05)!important;border-color:color-mix(in srgb,var(--skill-color, var(--accent)) 65%,transparent);box-shadow:0 0 30px color-mix(in srgb,var(--skill-color, var(--accent)) 45%,transparent),0 20px 40px -24px color-mix(in srgb,var(--skill-color, var(--accent)) 70%,transparent);z-index:10}.skills-grid:has(.skill:hover) .skill:not(:hover){transform:scale(.88);opacity:.4;transition:all 1s cubic-bezier(.34,1.56,.64,1)}.skill:has(+.skill:hover){transform:translate(-115px) scale(.88)!important;opacity:.8}.skill:hover+.skill{transform:translate(115px) scale(.88)!important;opacity:.8}.skill:has(+.skill+.skill:hover){transform:translate(-55px) scale(.92)!important;opacity:.85}.skill:hover+.skill+.skill{transform:translate(55px) scale(.92)!important;opacity:.85}.skill-icon{position:relative;width:100%;height:100%;max-width:3.8rem;max-height:3.8rem;flex-shrink:0;border-radius:10px;background:color-mix(in srgb,var(--skill-color, var(--accent)) 15%,transparent);padding:.65rem;z-index:1;transition:all .7s cubic-bezier(.34,1.56,.64,1)}.skill:hover .skill-icon,.skill:focus-visible .skill-icon{width:2.4rem;height:2.4rem;max-width:2.4rem;max-height:2.4rem}.skill-label{position:absolute;left:50%;z-index:1;white-space:nowrap;font-weight:500;font-size:var(--step-sm);opacity:0;transform:translate(-50%);pointer-events:none;transition:opacity .2s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.34,1.56,.64,1),left .7s cubic-bezier(.34,1.56,.64,1)}.skill:hover .skill-label,.skill:focus-visible .skill-label{transition-delay:.15s;opacity:1;left:auto;position:relative;transform:translate(0);pointer-events:auto}@media (max-width: 900px){.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,80px)}}@media (max-width: 600px){.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,80px)}}.projects .featured-heading{font-size:var(--step-lg);margin-bottom:1.25rem;padding-inline:clamp(1rem,4vw,2rem)}.projects .featured{margin-top:clamp(2rem,5vw,3rem)}.projects .section-shell>.carousel{margin-top:clamp(3.5rem,8vw,5.5rem)}.project-card{position:relative;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--card) 95%,transparent);border:1px solid color-mix(in srgb,var(--border) 65%,transparent);box-shadow:0 1px color-mix(in srgb,var(--border) 45%,transparent);overflow:hidden;transition:transform .6s cubic-bezier(.16,1,.3,1),box-shadow .6s cubic-bezier(.16,1,.3,1),border-color .6s cubic-bezier(.16,1,.3,1);transform-origin:center;isolation:isolate;will-change:transform}.project-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(135deg,#ff00ff4d,#00ffff4d,#ffff004d,#00ffff4d,#ff00ff4d);background-size:200% 200%;opacity:0;pointer-events:none;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transform:translateY(-100%) rotate(0);mix-blend-mode:overlay;z-index:1}.project-card:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;border:1px solid transparent;transition:border-color .6s cubic-bezier(.16,1,.3,1);z-index:2}.project-card:hover{transform:translateY(-8px) scale(1.05)!important;box-shadow:0 0 30px #4f46e580,0 20px 40px -20px #0000004d!important;border-color:color-mix(in oklab,var(--project-accent) 60%,transparent)!important}.project-card:hover:before{opacity:.15;transform:translateY(0) rotate(2deg);animation:holographic-shift 4s ease-in-out infinite}.project-card:hover:after{border-color:color-mix(in oklab,var(--project-accent) 70%,transparent)}@supports selector(.project-card:has(:focus-visible)){.project-card:has(:focus-visible){transform:translateY(-8px) scale(1.05)!important;box-shadow:0 0 30px #4f46e580,0 20px 40px -20px #0000004d!important;border-color:color-mix(in oklab,var(--project-accent) 60%,transparent)!important}.project-card:has(:focus-visible):before{opacity:.15;transform:translateY(0) rotate(2deg);animation:holographic-shift 4s ease-in-out infinite}.project-card:has(:focus-visible):after{border-color:color-mix(in oklab,var(--project-accent) 70%,transparent)}}@supports not selector(.project-card:has(:focus-visible)){.project-card:focus-within{transform:translateY(-8px) scale(1.05)!important;box-shadow:0 0 30px #4f46e580,0 20px 40px -20px #0000004d!important;border-color:color-mix(in oklab,var(--project-accent) 60%,transparent)!important}.project-card:focus-within:before{opacity:.15;transform:translateY(0) rotate(2deg);animation:holographic-shift 4s ease-in-out infinite}.project-card:focus-within:after{border-color:color-mix(in oklab,var(--project-accent) 70%,transparent)}}.project-inner{position:relative;display:grid;gap:clamp(.85rem,2vw,1.25rem);padding:clamp(1.25rem,3vw,1.75rem);z-index:3}.project-media{position:relative;border-radius:clamp(14px,3vw,20px);overflow:hidden;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 40%,transparent);aspect-ratio:16 / 9}.project-media>*{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.project-preview,.project-preview img,.project-preview picture{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.project-preview{border-radius:inherit;overflow:hidden}.project-fallback{position:relative;display:grid;place-items:center;width:100%;height:100%;padding:clamp(1.25rem,4vw,2rem)}.project-fallback-image{width:clamp(80px,16vw,120px);height:auto}.project-fallback .favicon-wrap{position:absolute;inset-block-end:clamp(1.25rem,4vw,1.75rem);inset-inline-start:clamp(1.25rem,4vw,1.75rem);padding:.5rem .75rem;border-radius:999px;font-weight:600;background:color-mix(in srgb,var(--project-accent) 85%,transparent);color:#fff;letter-spacing:.12em}.project-header{display:grid;gap:.35rem}.project-body{display:grid;gap:.65rem;align-content:start}.project-meta{margin:0;color:color-mix(in srgb,var(--muted) 65%,var(--text) 35%)}.project-description :where(p){margin-block:.7em}.project-tags{display:flex;flex-wrap:wrap;gap:.6rem;padding:0;margin:0}.project-tags li span{display:inline-flex;align-items:center;padding:.35rem .75rem;border-radius:999px;font-size:var(--step-sm);background:color-mix(in srgb,var(--accent) 12%,transparent);color:color-mix(in srgb,var(--accent) 70%,var(--text) 30%)}.project-details{border:none}.project-details[open] .project-read-more{color:color-mix(in srgb,var(--accent) 70%,var(--text) 30%)}.project-read-more{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;font-size:var(--step-sm);font-weight:600;color:var(--accent);list-style:none;padding:0;margin-bottom:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.project-read-more::-webkit-details-marker{display:none}.project-read-more:after{content:"";display:inline-block;width:.5em;height:.5em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .22s ease}.project-details[open] .project-read-more:after{transform:rotate(-135deg) translateY(-2px)}.project-description{margin-top:.75rem}.project-links{display:flex;flex-wrap:wrap;gap:.75rem}.project-links .text-link{font-weight:600}.featured-card{background:linear-gradient(160deg,color-mix(in srgb,var(--project-accent) 12%,transparent),transparent 60%),color-mix(in srgb,var(--card) 95%,transparent)}.projects-empty{margin-top:clamp(2rem,5vw,3rem);text-align:center;color:color-mix(in srgb,var(--muted) 65%,var(--text) 35%)}.carousel,.carousel-viewport{position:relative}.carousel-btn{display:none;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:999px;background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid color-mix(in srgb,var(--border) 55%,transparent);color:var(--text);cursor:pointer;transition:background .2s ease,border-color .2s ease,opacity .2s ease;flex-shrink:0}.carousel-btn:hover{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-color:color-mix(in srgb,var(--accent) 60%,transparent)}.carousel-btn:disabled{opacity:.2;pointer-events:none}.carousel-dots-bar{display:none;justify-content:center;margin-top:1rem}.carousel-dots{display:flex;align-items:center;gap:.45rem}.carousel-dot{width:.5rem;height:.5rem;padding:0;border-radius:999px;border:none;background:color-mix(in srgb,var(--border) 80%,transparent);cursor:pointer;transition:background .2s ease,width .2s ease;flex-shrink:0}.carousel-dot.is-active{background:var(--accent);width:1.25rem}.contact-links{display:flex;flex-wrap:wrap;gap:1.25rem;padding-top:clamp(1.5rem,4vw,2.25rem)}.contact-link{display:inline-flex;align-items:center;gap:.5rem}.contact-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.site-footer{padding-block:clamp(2.5rem,6vw,3.5rem);border-top:1px solid color-mix(in srgb,var(--border) 65%,transparent)}.footer-inner{text-align:center}body.is-ready [data-animate]:not(.hero-media),body.is-ready [data-animate-group]>*,body.is-ready [data-reveal-item]{opacity:0;transform:translateY(28px)}.hero-media[data-animate]{opacity:1;transform:none}body.is-ready [data-animate].is-revealed,body.is-ready [data-animate-group].is-revealed>*,body.is-ready [data-reveal-item].is-revealed{animation:reveal-fade-up .6s cubic-bezier(.19,1,.22,1) both}[data-animate-group].is-revealed [data-animate]:nth-child(1){animation-delay:0ms}[data-animate-group].is-revealed [data-animate]:nth-child(2){animation-delay:.1s}[data-animate-group].is-revealed [data-animate]:nth-child(3){animation-delay:.2s}[data-animate-group].is-revealed [data-animate]:nth-child(4){animation-delay:.3s}[data-animate-group].is-revealed [data-animate]:nth-child(5){animation-delay:.4s}.hero-media[data-parallax]{transform:translateY(0);will-change:transform;transition:transform .1s ease-out}.project-card[data-reveal-item]{animation-delay:calc(.1s * var(--stagger-index, 0))}.btn{transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s cubic-bezier(.22,1,.36,1),background .2s cubic-bezier(.22,1,.36,1);will-change:transform}.btn:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 14px 30px -18px color-mix(in srgb,var(--accent) 60%,transparent)}.btn:active{transform:translateY(0) scale(.98);transition-duration:.1s}.btn.ghost:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.skill{will-change:transform}@keyframes holographic-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes reveal-fade-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline: scroll()){.hero-media[data-parallax]{animation:float 1s ease-out both;animation-timeline:scroll();animation-range:0 40%}}@keyframes float{0%{transform:translateY(12px)}to{transform:translateY(-8px)}}@media (max-width: 768px){.hero-surface{grid-template-columns:minmax(0,1fr)}.hero-media{order:-1;justify-self:center;width:-moz-fit-content;width:fit-content}.skill,.skill:hover,.skill:focus-visible,.skill:active{width:80px!important;height:80px!important;padding:.4rem!important;gap:0!important;margin-inline:0!important;transform:none!important;box-shadow:none!important;border-color:color-mix(in srgb,var(--border) 65%,transparent)!important;transition:none!important}.skill:before,.skill:hover:before{display:none!important}.skill:hover .skill-icon,.skill:focus-visible .skill-icon{width:100%!important;height:100%!important;max-width:3.8rem!important;max-height:3.8rem!important}.skill:hover .skill-label,.skill:focus-visible .skill-label{opacity:0!important;pointer-events:none!important}.skills-grid:has(.skill:hover) .skill:not(:hover),.skill:has(+.skill:hover),.skill:hover+.skill,.skill:has(+.skill+.skill:hover),.skill:hover+.skill+.skill{transform:none!important;opacity:1!important}.carousel-track{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important;scroll-snap-type:x mandatory;scroll-behavior:smooth;gap:1rem!important;padding-inline:1.25rem!important;padding-bottom:.5rem;scrollbar-width:none;-ms-overflow-style:none;margin-top:0!important}.carousel-track::-webkit-scrollbar{display:none}.carousel-track .project-card{flex:0 0 calc(100% - 2.5rem);max-width:calc(100% - 2.5rem);scroll-snap-align:center;margin-inline:auto}.carousel-btn{display:flex;position:absolute;top:50%;transform:translateY(-50%);z-index:10}.carousel-prev{left:0}.carousel-next{right:0}.carousel-dots-bar{display:flex}.contact-links{flex-direction:column;align-items:flex-start}}@media (min-width: 960px){.hero-surface{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}.hero-media{justify-self:start}.hero-copy{justify-self:end}}@media (hover: none) and (pointer: coarse){.project-card:hover,.skill:hover{transform:none!important;box-shadow:none!important}.project-card:active{transform:translateY(-2px)}.skill:active{transform:none!important}.skills-grid{display:flex;flex-wrap:wrap;gap:.5rem}.skill{width:auto!important;height:auto!important;padding:.45rem .85rem!important;gap:.5rem!important;margin-inline:0!important;flex-direction:row!important;flex-shrink:1!important;transform:none!important;transition:none!important;cursor:default}.skill-icon{width:1.75rem!important;height:1.75rem!important;max-width:1.75rem!important;max-height:1.75rem!important;padding:.3rem}.skill-label{position:relative!important;left:auto!important;opacity:1!important;transform:none!important;pointer-events:auto!important;transition:none!important;white-space:nowrap;font-size:var(--step-xs)}.skills-grid:has(.skill:hover) .skill:not(:hover),.skill:has(+.skill:hover),.skill:hover+.skill,.skill:has(+.skill+.skill:hover),.skill:hover+.skill+.skill{transform:none!important;opacity:1!important}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}[data-animate],[data-animate-group]>*,[data-reveal-item]{opacity:1!important;transform:none!important}.site-nav,.project-card,.skill,.btn{transform:none!important}}@media (min-width: 768px){.md\:w-auto{width:auto}.md\:grid-cols-\[repeat\(auto-fit\,minmax\(280px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.md\:grid-cols-\[repeat\(auto-fit\,minmax\(320px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}}.theme-toggle[data-astro-cid-x3pjskd3]{display:inline-grid;place-items:center;border:1px solid color-mix(in oklab,var(--text) 16%,transparent);background:color-mix(in srgb,var(--card) 80%,transparent);color:var(--text);border-radius:999px;padding:.5rem;cursor:pointer;transition:transform .2s ease,background .2s ease,border-color .2s ease}.theme-toggle[data-astro-cid-x3pjskd3]:hover{transform:translateY(-1px) scale(1.02);background:color-mix(in srgb,var(--card) 92%,transparent)}.theme-toggle[data-astro-cid-x3pjskd3]:active{transform:translateY(0)}.theme-toggle[data-astro-cid-x3pjskd3]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}.icon-wrapper[data-astro-cid-x3pjskd3]{position:relative;display:grid;place-items:center;width:1.1rem;height:1.1rem}.theme-toggle[data-astro-cid-x3pjskd3] .icon[data-astro-cid-x3pjskd3]{width:1.1rem;height:1.1rem;position:absolute;transition:all .15s cubic-bezier(.4,0,.2,1)}.theme-toggle[data-astro-cid-x3pjskd3] .icon-sun[data-astro-cid-x3pjskd3]{opacity:0;transform:rotate(90deg) scale(0)}.theme-toggle[data-astro-cid-x3pjskd3] .icon-moon[data-astro-cid-x3pjskd3],.theme-toggle[data-astro-cid-x3pjskd3][data-theme=dark] .icon-sun[data-astro-cid-x3pjskd3]{opacity:1;transform:rotate(0) scale(1)}.theme-toggle[data-astro-cid-x3pjskd3][data-theme=dark] .icon-moon[data-astro-cid-x3pjskd3]{opacity:0;transform:rotate(-90deg) scale(0)}
