*,:after,:before{--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:#3b82f680;--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:#3b82f680;--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: }/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.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}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-6{bottom:1.5rem}.left-0{left:0}.left-\[6px\]{left:6px}.right-6{right:1.5rem}.top-3{top:.75rem}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.w-0\.5{width:.125rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1}.flex-shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.resize-none{resize:none}.resize{resize:both}.scroll-mt-24{scroll-margin-top:6rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-8{gap:2rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity:1;border-color:#e5e7eb;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-200\/50{border-color:#e5e7eb80}.border-gray-300{--tw-border-opacity:1;border-color:#d1d5db;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:#fecaca;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-sky-200\/80{border-color:#bae6fdcc}.border-transparent{border-color:#0000}.border-white\/30{border-color:#ffffff4d}.border-white\/60{border-color:#fff9}.border-t-white{--tw-border-opacity:1;border-top-color:#fff;border-top-color:rgb(255 255 255/var(--tw-border-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:#fef3c7;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:#d1fae5;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-500{--tw-bg-opacity:1;background-color:#10b981;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:#f3f4f6;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:#e5e7eb;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:#f9fafb;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:#ffedd5;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-orange-400{--tw-bg-opacity:1;background-color:#fb923c;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.bg-orange-500{--tw-bg-opacity:1;background-color:#f97316;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:#fef2f2;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-sky-100{--tw-bg-opacity:1;background-color:#e0f2fe;background-color:rgb(224 242 254/var(--tw-bg-opacity,1))}.bg-sky-500{--tw-bg-opacity:1;background-color:#0ea5e9;background-color:rgb(14 165 233/var(--tw-bg-opacity,1))}.bg-sky-600{--tw-bg-opacity:1;background-color:#0284c7;background-color:rgb(2 132 199/var(--tw-bg-opacity,1))}.bg-sky-700{--tw-bg-opacity:1;background-color:#0369a1;background-color:rgb(3 105 161/var(--tw-bg-opacity,1))}.bg-violet-100{--tw-bg-opacity:1;background-color:#ede9fe;background-color:rgb(237 233 254/var(--tw-bg-opacity,1))}.bg-violet-500{--tw-bg-opacity:1;background-color:#8b5cf6;background-color:rgb(139 92 246/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/70{background-color:#ffffffb3}.bg-white\/75{background-color:#ffffffbf}.bg-white\/80{background-color:#fffc}.p-1\.5{padding:.375rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pl-8{padding-left:2rem}.pr-4{padding-right:1rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity:1;color:#d97706;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-emerald-500{--tw-text-opacity:1;color:#10b981;color:rgb(16 185 129/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:#059669;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:#047857;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:#9ca3af;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:#4b5563;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:#374151;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:#1f2937;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:#111827;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:#f97316;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:#ea580c;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-orange-700{--tw-text-opacity:1;color:#c2410c;color:rgb(194 65 12/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:#ef4444;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:#dc2626;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-sky-600{--tw-text-opacity:1;color:#0284c7;color:rgb(2 132 199/var(--tw-text-opacity,1))}.text-sky-700{--tw-text-opacity:1;color:#0369a1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.text-violet-700{--tw-text-opacity:1;color:#6d28d9;color:rgb(109 40 217/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--tw-text-opacity,1))}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-sky-100\/70{--tw-ring-color:#e0f2feb3}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity,1))}.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)}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px)}.backdrop-blur-lg,.backdrop-blur-xl{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,fill,stroke,-webkit-text-decoration-color;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,-webkit-text-decoration-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}:root{--page:#f7f8fa;--surface-alt:#eef2f7;--ink:#142033;--muted:#526075;--subtle:#606e80;--line:#dde3ec;--accent:#245cdb;--accent-soft:#eaf0ff;--positive:#17654d;--positive-soft:#edf8f2;--shadow:0 12px 40px -28px #13233f59;color-scheme:light}.dark{--page:#0b111c;--surface:#111b2a;--surface-alt:#192537;--ink:#edf2fb;--muted:#b0bed1;--subtle:#a3b2c7;--line:#2b3b51;--accent:#91b5ff;--accent-soft:#192e52;--positive:#93ddbc;--positive-soft:#142d27;--shadow:0 12px 40px -28px #000000b3;color-scheme:dark}html{scroll-behavior:smooth;scroll-padding-top:104px}body{-webkit-font-smoothing:antialiased;background:#f7f8fa;background:var(--page);color:#142033;color:var(--ink);font-family:Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif;margin:0}*{box-sizing:border-box}::selection{background:#245cdb;background:var(--accent);color:#f7f8fa;color:var(--page)}a,button,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}a,button{touch-action:manipulation}:where(a,button,summary,input,textarea):focus-visible{border-radius:4px;outline:3px solid #245cdb;outline:3px solid var(--accent);outline-offset:5px}a,button,summary{transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease}button{font:inherit}button:disabled{cursor:wait}.portfolio{background:#f7f8fa;background:var(--page);min-height:100vh}.page-container{margin:0 auto;max-width:1200px;padding:0 32px}.skip-link{background:#142033;background:var(--ink);border-radius:8px;color:#f7f8fa;color:var(--page);left:20px;padding:12px 20px;position:fixed;top:-100px;z-index:100}.skip-link:focus{top:16px}.site-nav-wrap{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb,#f7f8fa 94%,#0000);background:color-mix(in srgb,var(--page) 94%,#0000);border-bottom:1px solid #dde3ec;border-bottom:1px solid var(--line);inset:0 0 auto;position:fixed;z-index:60}.site-nav{align-items:center;display:flex;gap:24px;height:84px;justify-content:space-between;margin:auto;max-width:1264px;padding:0 32px;position:relative}.wordmark{align-items:center;color:#142033;color:var(--ink);display:inline-flex;flex-shrink:0;gap:14px}.wordmark>span:first-child{font-size:36px;font-weight:800;letter-spacing:-3px;line-height:1}.brand-dot{color:#245cdb;color:var(--accent)}.wordmark-caption{font-size:10px;font-weight:700;letter-spacing:1.8px;line-height:1.5;max-width:90px}.desktop-links{display:flex;gap:26px}.desktop-links a{border-bottom:2px solid #0000;color:#526075;color:var(--muted);font-size:14px;font-weight:600;padding:13px 0}.desktop-links a:hover,.desktop-links a[aria-current]{border-color:#245cdb;border-color:var(--accent);color:#245cdb;color:var(--accent)}.nav-actions{align-items:center;display:flex;gap:14px}.nav-availability{align-items:center;color:#526075;color:var(--muted);display:inline-flex;font-size:12px;font-weight:600;gap:8px;min-height:44px}.status-dot{background:#249267;border-radius:50%;box-shadow:0 0 0 4px #2492671a;flex-shrink:0;height:7px;width:7px}.icon-button{align-items:center;background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:50%;color:#142033;color:var(--ink);display:inline-flex;height:44px;justify-content:center;width:44px}.icon-button:hover{background:#eaf0ff;background:var(--accent-soft);border-color:#245cdb;border-color:var(--accent)}.menu-button,.mobile-links{display:none}.hero{grid-column-gap:72px;align-items:center;column-gap:72px;display:grid;grid-template-columns:1.35fr 1fr;padding:160px 0 0}.hero>*{min-width:0}.availability{align-items:center;background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:6px;color:#17654d;color:var(--positive);display:inline-flex;font-size:12px;font-weight:600;gap:10px;min-height:36px;padding:8px 12px}.availability:hover{border-color:#17654d;border-color:var(--positive)}.hero-intro{color:#526075;color:var(--muted);font-size:18px;letter-spacing:-.3px;margin:26px 0 12px}.hero h1{font-size:clamp(42px,4.6vw,64px);font-weight:750;letter-spacing:-3px;line-height:1.08;margin:0 0 24px}.hero h1 span{color:#245cdb;color:var(--accent)}.hero-description{color:#526075;color:var(--muted);font-size:17px;line-height:1.8;max-width:510px}.hero-description strong{color:#142033;color:var(--ink);font-weight:600}.hero-buttons{display:flex;flex-wrap:wrap;gap:12px;margin:30px 0 20px}.button{align-items:center;border:1px solid #0000;border-radius:7px;display:inline-flex;font-size:14px;font-weight:650;gap:12px;justify-content:center;min-height:48px;padding:13px 21px}.button-primary{background:#245cdb;box-shadow:0 5px 15px #245cdb26;color:#fff}.button-primary:hover{background:#1947b4}.button-secondary{background:#fff;background:var(--surface);border-color:#dde3ec;border-color:var(--line);color:#142033;color:var(--ink)}.button-secondary:hover{border-color:#245cdb;border-color:var(--accent);color:#245cdb;color:var(--accent)}.hero-socials{align-items:center;color:#526075;color:var(--muted);display:flex;flex-wrap:wrap;font-size:12px;gap:20px}.hero-socials a,.hero-socials>span{align-items:center;display:inline-flex;gap:6px;min-height:44px}.hero-socials a:hover{color:#245cdb;color:var(--accent)}.hero-socials .social-divider{border-left:1px solid #dde3ec;border-left:1px solid var(--line);height:16px;min-height:0}.hero-visual{justify-self:end;max-width:420px;padding:0 10px 0 20px;position:relative;width:100%}.hero-visual:before{background-image:radial-gradient(#606e80 .65px,#0000 0);background-image:radial-gradient(var(--subtle) .65px,#0000 .65px);background-size:12px 12px;content:"";inset:-22px -16px 70px 50px;opacity:.25;position:absolute}.portrait-frame{background:#eef2f7;background:var(--surface-alt);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:12px;overflow:hidden;position:relative}.portrait-topline{align-items:center;border-bottom:1px solid #dde3ec;border-bottom:1px solid var(--line);color:#526075;color:var(--muted);display:flex;font-family:Consolas,monospace;font-size:9px;gap:12px;justify-content:space-between;letter-spacing:1.4px;padding:12px 15px}.portrait-corner{font-size:18px;line-height:1}.portrait-frame img{height:345px;object-fit:cover;object-position:center 30%;width:100%}.proof-strip{border-bottom:1px solid #dde3ec;border-bottom:1px solid var(--line);border-top:1px solid #dde3ec;border-top:1px solid var(--line);display:grid;grid-column:1/-1;grid-template-columns:repeat(2,1fr);margin-top:72px;padding:28px 0}.proof-strip>div{border-left:1px solid #dde3ec;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:8px;padding-left:36px}.proof-strip>div:first-child{border:0;padding-left:0}.proof-strip strong{font-size:26px;font-weight:700;letter-spacing:-1px}.proof-strip strong span{font-size:14px;font-weight:500;letter-spacing:0;margin-left:5px}.proof-strip a,.proof-strip>div>span{color:#526075;color:var(--muted);font-size:12px}.proof-strip a{align-items:center;display:inline-flex;gap:6px;width:-webkit-fit-content;width:fit-content}.proof-strip a:hover{color:#245cdb;color:var(--accent)}.portfolio-section{padding:88px 0;scroll-margin-top:88px}.section-title{margin-bottom:36px}.eyebrow{align-items:center;color:#245cdb;color:var(--accent);display:flex;font-size:11px;font-weight:700;gap:12px;letter-spacing:1.8px;text-transform:uppercase}.eyebrow>span{color:#606e80;color:var(--subtle);font-family:Consolas,monospace;letter-spacing:0}.section-title h2{font-size:clamp(30px,3.1vw,42px);font-weight:700;letter-spacing:-1.4px;line-height:1.2;margin:13px 0 12px}.section-title>p{color:#526075;color:var(--muted);font-size:16px;line-height:1.75;max-width:620px}.selected-projects{grid-gap:28px;align-items:start;display:grid;gap:28px;grid-template-columns:1fr 1fr}.selected-project{background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px -28px #13233f59;box-shadow:var(--shadow);overflow:hidden}.flagship-project{display:grid;grid-column:1/-1;grid-template-columns:1.05fr 1fr}.project-visual{min-width:0;position:relative}.project-image,.project-visual{background:#eef2f7;background:var(--surface-alt)}.project-image{align-items:center;display:flex;height:260px;justify-content:center;overflow:hidden}.project-image img{height:100%;object-fit:cover;object-position:top;width:100%}.flagship-project .project-visual{align-items:center;background:#e9eff9;background-image:linear-gradient(#dde3ec 1px,#0000 0),linear-gradient(90deg,#dde3ec 1px,#0000 0);background-image:linear-gradient(var(--line) 1px,#0000 1px),linear-gradient(90deg,var(--line) 1px,#0000 1px);background-size:32px 32px;display:flex;padding:48px 28px 30px}.dark .flagship-project .project-visual{background-color:#13213a}.flagship-project .project-image{aspect-ratio:16/11;border:1px solid #dde3ec;border:1px solid var(--line);border-radius:7px;box-shadow:0 12px 30px #1420331f;height:auto;width:100%}.project-index{background:#f7f9ff;border:1px solid #dce3ef;border-radius:4px;color:#34445b;font-family:Consolas,monospace;font-size:9px;font-weight:600;left:18px;letter-spacing:1.5px;padding:5px 8px;position:absolute;top:16px}.project-content{min-width:0;padding:28px}.project-meta{color:#526075;color:var(--muted);display:flex;font-size:11px;gap:12px;justify-content:space-between;line-height:1.5}.project-meta>span:first-child{color:#245cdb;color:var(--accent);font-weight:600}.project-meta>span:last-child{flex-shrink:0;text-align:right}.project-content h3{font-size:29px;font-weight:700;letter-spacing:-.8px;line-height:1.2;margin:12px 0 14px}.project-content h3>span{color:#526075;color:var(--muted);display:block;font-size:14px;font-weight:500;letter-spacing:0;line-height:1.5;margin-top:5px}.project-summary{color:#142033;color:var(--ink);font-size:16px;line-height:1.7;margin-bottom:20px}.contribution{border-left:2px solid #dde3ec;border-left:2px solid var(--line);margin:18px 0;padding-left:14px}.contribution>span{color:#606e80;color:var(--subtle);display:block;font-size:10px;font-weight:700;letter-spacing:1.1px;margin-bottom:5px;text-transform:uppercase}.contribution p{color:#526075;color:var(--muted);font-size:14px;line-height:1.7}.project-result{align-items:flex-start;background:#edf8f2;background:var(--positive-soft);border-radius:5px;color:#17654d;color:var(--positive);display:flex;font-size:12px;gap:8px;line-height:1.6;margin:18px 0;padding:12px}.project-result svg{flex-shrink:0;margin-top:2px}.tech-list{display:flex;flex-wrap:wrap;gap:6px}.tech-list>span{background:#eef2f7;background:var(--surface-alt);border-radius:4px;color:#526075;color:var(--muted);font-family:Consolas,monospace;font-size:11px;line-height:1.5;overflow-wrap:anywhere;padding:5px 8px}.project-links{display:flex;flex-wrap:wrap;gap:16px;margin-top:18px}.project-links a,.text-link{align-items:center;color:#245cdb;color:var(--accent);display:inline-flex;font-size:12px;font-weight:650;gap:6px;min-height:44px}.project-links a:hover,.text-link:hover{text-decoration:underline;text-underline-offset:4px}.case-study{border-top:1px solid #dde3ec;border-top:1px solid var(--line);margin-top:8px}.selected-project>.case-study{margin:0 28px}.flagship-project>.case-study{grid-column:1/-1}.flagship-project .case-study-body{gap:26px 36px;grid-template-columns:1fr 1fr}summary{list-style:none}summary::-webkit-details-marker{display:none}.case-study>summary{align-items:center;color:#142033;color:var(--ink);display:flex;font-size:12px;font-weight:650;gap:15px;justify-content:space-between;min-height:52px}details>summary svg{flex-shrink:0;transition:transform .18s ease}details[open]>summary .expand-label>svg,details[open]>summary>svg{transform:rotate(180deg)}.case-study-body{grid-gap:20px;border-top:1px solid #dde3ec;border-top:1px solid var(--line);display:grid;gap:20px;padding:22px 0 4px}.case-study-body h4{font-size:13px;font-weight:700;margin-bottom:7px}.case-study-body li,.case-study-body p{color:#526075;color:var(--muted);font-size:14px;line-height:1.8}.case-study-body ul{list-style:disc;padding-left:18px}.case-study-body li+li{margin-top:10px}.architecture{background:#f7f8fa;background:var(--page);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:6px;padding:16px}.architecture figcaption{align-items:center;color:#245cdb;color:var(--accent);display:flex;font-size:12px;font-weight:600;gap:7px;margin-bottom:14px}.architecture ol{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr}.architecture li{background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:4px;font-size:11px;padding:10px}.architecture li>span{color:#245cdb;color:var(--accent);display:block;font-family:Consolas,monospace;margin-bottom:3px}.architecture li+li{margin-top:0}.evidence-note{border-left:2px solid #245cdb;border-left:2px solid var(--accent);padding-left:14px}.more-projects{background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:9px;margin-top:30px;padding:0 24px}.more-projects>summary{align-items:center;display:flex;font-size:17px;font-weight:650;gap:14px;justify-content:space-between;min-height:78px}.more-projects>summary>span{align-items:center;display:inline-flex;gap:10px}.count-badge{background:#eef2f7;background:var(--surface-alt);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:4px;color:#526075;color:var(--muted);font-family:Consolas,monospace;font-size:11px;padding:2px 7px}.more-projects .expand-label{color:#526075;color:var(--muted);font-size:12px;font-weight:500}.project-filters{border-top:1px solid #dde3ec;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:7px;padding-top:20px}.project-filters button{background:#f7f8fa;background:var(--page);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:5px;color:#526075;color:var(--muted);font-size:12px;min-height:44px;padding:10px 14px}.project-filters button:hover,.project-filters button[aria-pressed=true]{border-color:#245cdb;border-color:var(--accent)}.project-filters button[aria-pressed=true]{background:#245cdb;background:var(--accent);color:#fff;color:var(--surface)}.filter-result{color:#526075;color:var(--muted);font-size:12px;margin:16px 0}.more-project-grid{grid-gap:24px;align-items:start;display:grid;gap:24px;grid-template-columns:repeat(2,1fr);padding-bottom:24px}.small-project{border:1px solid #dde3ec;border:1px solid var(--line);border-radius:9px;overflow:hidden}.small-project .project-image{height:210px}.small-project-content{padding:24px}.small-project h3{font-size:20px;font-weight:650;letter-spacing:-.5px;line-height:1.4;margin:12px 0}.small-project p{color:#526075;color:var(--muted);font-size:14px;line-height:1.8}.small-project .small-project-status{color:#17654d;color:var(--positive);font-size:12px;font-weight:600;margin:16px 0}.project-image-fallback{align-items:center;color:#245cdb;color:var(--accent);display:flex;flex-direction:column;font-weight:650;gap:12px;padding:30px;text-align:center}.empty-projects{color:#526075;color:var(--muted);font-size:14px;padding:20px 0 28px}.about-section{border-top:1px solid #dde3ec;border-top:1px solid var(--line)}.about-intro{grid-gap:48px;display:grid;gap:48px;grid-template-columns:1fr 1fr;margin-bottom:34px}.about-intro p{color:#526075;color:var(--muted);font-size:17px;line-height:1.9}.about-intro strong{color:#142033;color:var(--ink);font-weight:600}.skill-focus-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(3,1fr)}.skill-focus{background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:8px;padding:26px}.skill-number{color:#245cdb;color:var(--accent);font-family:Consolas,monospace;font-size:12px}.skill-focus h3{font-size:19px;font-weight:650;letter-spacing:-.4px;margin:20px 0 10px}.skill-focus p{color:#526075;color:var(--muted);font-size:14px;line-height:1.7;margin-bottom:20px}.skills-details{border-top:1px solid #dde3ec;border-top:1px solid var(--line);margin-top:24px}.skills-details>summary{align-items:center;color:#526075;color:var(--muted);display:flex;font-size:13px;font-weight:600;gap:12px;min-height:64px}.skills-details>summary>svg{margin-left:auto}.full-skills{grid-gap:26px;display:grid;gap:26px;grid-template-columns:1fr 1fr;padding:18px 0 28px}.full-skills h3{font-size:14px;font-weight:650;margin-bottom:8px}.full-skills p{color:#526075;color:var(--muted);font-size:14px;line-height:1.9}.certificate-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(3,1fr)}.certificate-card{align-items:flex-start;background:#fff;background:var(--surface);border:1px solid #dde3ec;border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;padding:24px}.certificate-icon{background:#eaf0ff;background:var(--accent-soft);border-radius:5px;color:#245cdb;color:var(--accent);margin-bottom:20px;padding:10px}.certificate-card .certificate-date{color:#606e80;color:var(--subtle);font-family:Consolas,monospace;font-size:11px}.certificate-card h3{font-size:16px;font-weight:650;line-height:1.55;margin:8px 0}.certificate-card>p{color:#526075;color:var(--muted);font-size:13px}.certificate-links{column-gap:18px;display:flex;flex-wrap:wrap;margin-top:auto;padding-top:16px}.certificate-links a{align-items:center;color:#245cdb;color:var(--accent);display:inline-flex;font-size:12px;font-weight:600;gap:5px;min-height:44px}.certificate-links a:hover{text-decoration:underline}.additional-certificates{padding:20px 0}.portfolio #achievements,.portfolio #contact,.portfolio #experience{border-top:1px solid #dde3ec;border-top:1px solid var(--line);padding:88px 0;scroll-margin-top:88px}.portfolio #publications{scroll-margin-top:110px}.portfolio :is(#experience,#achievements,#contact) .max-w-3xl,.portfolio :is(#experience,#achievements,#contact) .max-w-4xl{max-width:none}.portfolio :is(#experience,#achievements,#contact) .rounded-2xl,.portfolio :is(#experience,#achievements,#contact) .rounded-3xl{border-radius:9px}.portfolio :is(#experience,#achievements,#contact) [class*="bg-white/"]{background:#fff;background:var(--surface);border-color:#dde3ec;border-color:var(--line);box-shadow:0 12px 40px -28px #13233f59;box-shadow:var(--shadow)}.portfolio :is(#experience,#achievements,#contact) .text-xs{font-size:13px;line-height:1.7}.portfolio :is(#experience,#achievements,#contact) .text-gray-400{color:#606e80;color:var(--subtle)}.portfolio :is(#experience,#achievements,#contact) :is(.text-gray-500,.text-gray-600){color:#526075;color:var(--muted)}.portfolio :is(#experience,#achievements,#contact) :is(.text-gray-800,.text-gray-900){color:#142033;color:var(--ink)}.portfolio #experience>div:last-child{margin-left:0;max-width:900px}.portfolio #contact>div:last-child{margin:0}.portfolio #contact form :is(input,textarea){background:#f7f8fa;background:var(--page);border-color:#dde3ec;border-color:var(--line);border-radius:6px;color:#142033;color:var(--ink);font-size:15px}.portfolio #contact form button[type=submit]{background:#245cdb;border-radius:6px;color:#fff;min-height:48px}.portfolio #contact form button[type=submit]:hover{background:#1947b4}.portfolio footer{border-color:#dde3ec;border-color:var(--line);margin-top:0;padding:30px 0}.portfolio footer a{align-items:center;display:inline-flex;justify-content:center;min-height:44px;min-width:44px}.portfolio footer p{color:#526075;color:var(--muted)}@media (max-width:1100px){.hero{column-gap:35px}.hero h1{font-size:51px}.nav-availability{display:none}.hero-visual{padding-left:10px}}@media (max-width:767px){html{scroll-padding-top:86px}.page-container,.site-nav{padding:0 22px}.site-nav{height:72px}.desktop-links{display:none}.menu-button{display:inline-flex}.mobile-links{background:#fff;background:var(--surface);border-bottom:1px solid #dde3ec;border-bottom:1px solid var(--line);box-shadow:0 12px 40px -28px #13233f59;box-shadow:var(--shadow);display:flex;flex-direction:column;left:0;padding:12px 22px 18px;position:absolute;right:0;top:71px}.mobile-links a{border-radius:5px;color:#526075;color:var(--muted);font-size:15px;padding:14px 10px}.mobile-links a:hover,.mobile-links a[aria-current]{background:#eaf0ff;background:var(--accent-soft);color:#245cdb;color:var(--accent)}.hero{gap:40px;grid-template-columns:minmax(0,1fr);padding-top:116px}.hero h1{font-size:clamp(40px,7.8vw,58px);letter-spacing:-2px}.hero-description{font-size:16px;max-width:580px}.hero-visual{justify-self:center;max-width:380px;padding-left:0}.portrait-frame img{height:310px}.proof-strip{margin-top:8px;padding:24px 0}.proof-strip>div{gap:6px;padding-left:18px}.proof-strip strong{display:flex;flex-direction:column;font-size:25px;gap:5px}.proof-strip strong span{font-size:11px;line-height:1.5;margin-left:0}.proof-strip a,.proof-strip>div>span{font-size:10px;line-height:1.6}.portfolio #achievements,.portfolio #contact,.portfolio #experience,.portfolio-section{padding:60px 0;scroll-margin-top:72px}.selected-projects{gap:24px;grid-template-columns:1fr}.flagship-project{display:block}.flagship-project .project-visual{padding:46px 24px 24px}.flagship-project .project-image{aspect-ratio:16/10}.project-image{height:230px}.project-content{padding:24px}.selected-project>.case-study{margin:0 24px}.flagship-project .case-study-body,.more-project-grid{grid-template-columns:1fr}.more-projects{padding:0 18px}.about-intro{gap:18px;grid-template-columns:1fr}.about-intro p{font-size:16px}.certificate-grid,.skill-focus-grid{gap:16px;grid-template-columns:1fr}.skill-focus{padding:24px}.skill-focus h3{margin-top:12px}.full-skills{grid-template-columns:1fr}.section-title h2{font-size:32px}.section-title>p{font-size:15px}}@media (max-width:399px){.page-container,.site-nav{padding-left:18px;padding-right:18px}.availability{font-size:10px;gap:8px;padding-left:10px;padding-right:10px}.hero h1{font-size:39px}.hero-buttons .button{font-size:13px;padding:13px 16px}.hero-socials{gap:14px}.project-content{padding:20px}.selected-project>.case-study{margin:0 20px}.more-projects .expand-label{font-size:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;scroll-behavior:auto!important;transition:none!important}.portfolio .opacity-0{opacity:1!important}.portfolio .translate-y-8{transform:none!important}}.hover\:border-orange-300\/60:hover{border-color:#fdba7499}.hover\:bg-sky-700:hover{--tw-bg-opacity:1;background-color:#0369a1;background-color:rgb(3 105 161/var(--tw-bg-opacity,1))}.hover\:bg-sky-800:hover{--tw-bg-opacity:1;background-color:#075985;background-color:rgb(7 89 133/var(--tw-bg-opacity,1))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:#059669;color:rgb(5 150 105/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:#111827;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-orange-500:hover{--tw-text-opacity:1;color:#f97316;color:rgb(249 115 22/var(--tw-text-opacity,1))}.hover\:text-sky-600:hover{--tw-text-opacity:1;color:#0284c7;color:rgb(2 132 199/var(--tw-text-opacity,1))}.hover\:underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.hover\:shadow-lg:hover,.hover\:shadow-md:hover{box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:0 0 #0000,0 0 #0000,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-sky-500:focus{--tw-border-opacity:1;border-color:#0ea5e9;border-color:rgb(14 165 233/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus,.focus\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 #0000;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-sky-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(125 211 252/var(--tw-ring-opacity,1))}.focus\:ring-sky-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(14 165 233/var(--tw-ring-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:text-orange-500{--tw-text-opacity:1;color:#f97316;color:rgb(249 115 22/var(--tw-text-opacity,1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:#4b5563;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700\/50:is(.dark *){border-color:#37415180}.dark\:border-gray-800:is(.dark *){--tw-border-opacity:1;border-color:#1f2937;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.dark\:border-red-800:is(.dark *){--tw-border-opacity:1;border-color:#991b1b;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\:border-sky-700\/50:is(.dark *){border-color:#0369a180}.dark\:bg-amber-900\/40:is(.dark *){background-color:#78350f66}.dark\:bg-emerald-900\/50:is(.dark *){background-color:#064e3b80}.dark\:bg-emerald-950\/60:is(.dark *){background-color:#022c2299}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:#374151;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-700\/40:is(.dark *){background-color:#37415166}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:#1f2937;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-800\/55:is(.dark *){background-color:#1f29378c}.dark\:bg-gray-800\/60:is(.dark *){background-color:#1f293799}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-orange-900\/50:is(.dark *){background-color:#7c2d1280}.dark\:bg-red-950\/40:is(.dark *){background-color:#450a0a66}.dark\:bg-sky-900\/50:is(.dark *){background-color:#0c4a6e80}.dark\:bg-violet-900\/50:is(.dark *){background-color:#4c1d9580}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:#fbbf24;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity:1;color:#6ee7b7;color:rgb(110 231 183/var(--tw-text-opacity,1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity:1;color:#34d399;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:#f3f4f6;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:#e5e7eb;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:#d1d5db;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:#9ca3af;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity:1;color:#fdba74;color:rgb(253 186 116/var(--tw-text-opacity,1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity:1;color:#fb923c;color:rgb(251 146 60/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:#f87171;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity:1;color:#7dd3fc;color:rgb(125 211 252/var(--tw-text-opacity,1))}.dark\:text-sky-400:is(.dark *){--tw-text-opacity:1;color:#38bdf8;color:rgb(56 189 248/var(--tw-text-opacity,1))}.dark\:text-violet-300:is(.dark *){--tw-text-opacity:1;color:#c4b5fd;color:rgb(196 181 253/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:ring-gray-950:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(3 7 18/var(--tw-ring-opacity,1))}.dark\:ring-sky-900\/40:is(.dark *){--tw-ring-color:#0c4a6e66}.dark\:hover\:border-orange-700\/50:hover:is(.dark *){border-color:#c2410c80}.dark\:hover\:text-emerald-400:hover:is(.dark *){--tw-text-opacity:1;color:#34d399;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:hover\:text-orange-400:hover:is(.dark *){--tw-text-opacity:1;color:#fb923c;color:rgb(251 146 60/var(--tw-text-opacity,1))}.dark\:hover\:text-sky-400:hover:is(.dark *){--tw-text-opacity:1;color:#38bdf8;color:rgb(56 189 248/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:mt-0{margin-top:0}.sm\:inline{display:inline}.sm\:items-center{align-items:center}.sm\:pl-10{padding-left:2.5rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:p-10{padding:2.5rem}.md\:py-20{padding-bottom:5rem;padding-top:5rem}}:root{--page:#f5f9ff;--surface:#fff;--surface-alt:#edf4ff;--ink:#14233c;--muted:#4e607a;--subtle:#586c86;--line:#d9e6f6;--accent:#076ea6;--accent-soft:#e2f3ff;--shadow:0 14px 40px -24px #27609b4d}.dark{--page:#080f20;--surface:#101d33;--surface-alt:#172943;--ink:#eef5ff;--muted:#b5c6de;--subtle:#adc1dc;--line:#2a4160;--accent:#79d0ff;--accent-soft:#153953;--shadow:0 14px 40px -20px #00000080}.portfolio{background:#0000;isolation:isolate;position:relative}.portfolio:before{background:radial-gradient(ellipse at 15% 15%,#7dd3fc33,#0000 45%),radial-gradient(ellipse at 88% 45%,#a5b4fc26,#0000 48%),#f5f9ff;background:radial-gradient(ellipse at 15% 15%,#7dd3fc33,#0000 45%),radial-gradient(ellipse at 88% 45%,#a5b4fc26,#0000 48%),var(--page);content:"";inset:0;pointer-events:none;position:fixed;z-index:-2}.dark .portfolio:before{background:radial-gradient(ellipse at 15% 15%,#0ea5e91a,#0000 48%),radial-gradient(ellipse at 88% 45%,#6366f117,#0000 48%),#f5f9ff;background:radial-gradient(ellipse at 15% 15%,#0ea5e91a,#0000 48%),radial-gradient(ellipse at 88% 45%,#6366f117,#0000 48%),var(--page)}.ambient-background{height:100%;inset:0;pointer-events:none;position:fixed;width:100%;z-index:-1}.page-container{position:relative}.site-nav-wrap{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #fffc;border-radius:999px;box-shadow:0 10px 35px -15px #235b9440;left:24px;margin:auto;max-width:1160px;right:24px;top:20px}.dark .site-nav-wrap{background:#101d33cc;border-color:#7197c63d}.site-nav{height:68px;padding:0 24px}.wordmark>span:first-child{color:#076ea6;color:var(--accent)}.desktop-links{gap:10px}.desktop-links a{border:0;border-radius:999px;padding:10px 15px}.desktop-links a:hover,.desktop-links a[aria-current]{background:#087bb8;color:#fff}.icon-button{background:#0000}.proof-strip{background:#ffffffbf;border:1px solid #ffffffd9;border-radius:24px;box-shadow:0 14px 40px -24px #27609b4d;box-shadow:var(--shadow);margin-top:60px;padding:26px 30px}.dark .proof-strip{background:#101d338c;border-color:#d9e6f6;border-color:var(--line)}.proof-strip strong{color:#076ea6;color:var(--accent)}.proof-strip strong span{color:#14233c;color:var(--ink)}.eyebrow{letter-spacing:1.5px}.section-title h2{letter-spacing:-1px}.selected-project{background:#ffffffd9;border-color:#ffffffe6;border-radius:26px;box-shadow:0 14px 40px -25px #2b599659;transition:transform .2s ease}.dark .selected-project{background:#101d33b3;border-color:#d9e6f6;border-color:var(--line)}.selected-project:hover{box-shadow:0 20px 48px -25px #1867b566;transform:translateY(-3px)}.flagship-project{border:1px solid #0ea5e94d}.flagship-project .project-visual{background-color:#e5f2ff;background-image:radial-gradient(ellipse at center,#7dd3fc3d,#0000 80%);background-repeat:no-repeat;background-size:auto}.dark .flagship-project .project-visual{background-color:#132842}.flagship-project .project-image{border-radius:14px}.project-index{background:#ffffffe0;border-color:#ffffffe6;border-radius:999px;color:#175581}.tech-list>span{background:#e2f3ff;background:var(--accent-soft);border:1px solid color-mix(in srgb,#076ea6 15%,#0000);border:1px solid color-mix(in srgb,var(--accent) 15%,#0000);border-radius:999px;color:#076ea6;color:var(--accent);padding:5px 10px}.project-result{border-radius:12px}.architecture,.architecture li,.evidence-note{border-radius:9px}.certificate-card,.more-projects,.skill-focus{background:#fffc;border-color:#ffffffd9;border-radius:22px;box-shadow:0 14px 40px -24px #27609b4d;box-shadow:var(--shadow)}.dark :is(.more-projects,.skill-focus,.certificate-card){background:#101d33a6;border-color:#d9e6f6;border-color:var(--line)}.small-project{border-radius:19px}.certificate-icon,.count-badge,.skill-number{border-radius:10px}.skill-number{align-items:center;background:#e2f3ff;background:var(--accent-soft);display:inline-flex;height:32px;justify-content:center;width:32px}.project-filters button{border-radius:999px}.portfolio :is(#experience,#achievements,#contact) .rounded-2xl,.portfolio :is(#experience,#achievements,#contact) .rounded-3xl{border-radius:22px}.portfolio :is(#experience,#achievements,#contact) [class*="bg-white/"]{-webkit-backdrop-filter:none;backdrop-filter:none;background:#ffffffd9;border-color:#ffffffe6}.dark .portfolio :is(#experience,#achievements,#contact) [class*="bg-white/"]{background:#101d33a6;border-color:#d9e6f6;border-color:var(--line)}.portfolio #contact form :is(input,textarea){border-radius:13px}.portfolio #contact form button[type=submit]{background:linear-gradient(110deg,#087bb8,#3266db);border-radius:999px}.portfolio :is(#experience,#achievements,#contact) .text-sky-600{color:#076ea6;color:var(--accent)}.portfolio #achievements .text-amber-600{color:#92400e}.dark .portfolio #achievements .text-amber-600{color:#fcd58b}.portfolio #achievements .text-orange-500{color:#b54708}.dark .portfolio #achievements .text-orange-500{color:#fdba74}.portfolio footer a{color:#4e607a;color:var(--muted)}.selected-project{--project-rgb:14 165 233;--project-ink:#075d8c;--project-soft:#e0f2fe;border-color:rgb(var(--project-rgb)/24%)}.selected-project[data-project="8"]{--project-rgb:139 92 246;--project-ink:#6941c6;--project-soft:#f0e9ff}.selected-project[data-project="4"]{--project-rgb:16 185 129;--project-ink:#086848;--project-soft:#dcf8ed}.dark .selected-project{--project-ink:#8bd6ff;--project-soft:#143a54}.dark .selected-project[data-project="8"]{--project-ink:#d0b8ff;--project-soft:#30234d}.dark .selected-project[data-project="4"]{--project-ink:#8ce8c6;--project-soft:#123c31}.selected-project .project-visual{align-items:center;background:radial-gradient(ellipse at 20% 15%,rgb(var(--project-rgb)/32%),#0000 70%),linear-gradient(135deg,rgb(var(--project-rgb)/10%),#edf4ff);background:radial-gradient(ellipse at 20% 15%,rgb(var(--project-rgb)/32%),#0000 70%),linear-gradient(135deg,rgb(var(--project-rgb)/10%),var(--surface-alt));display:flex;isolation:isolate;min-height:300px;overflow:hidden;padding:60px 30px 36px;position:relative}.dark .selected-project .project-visual{background:radial-gradient(ellipse at 20% 15%,rgb(var(--project-rgb)/25%),#0000 75%),#101b30}.project-preview-frame{border:1px solid #ffffffa6;border-radius:12px;box-shadow:0 24px 45px -20px rgb(var(--project-rgb)/50%),0 6px 16px #1420331f;min-width:0;overflow:hidden;transform:rotate(-2deg);transition:transform .3s ease;width:100%;z-index:1}.selected-project[data-project="8"] .project-preview-frame{transform:rotate(2deg)}.selected-project[data-project="4"] .project-preview-frame{transform:rotate(-1.5deg)}.project-preview-toolbar{align-items:center;background:#ffffffeb;color:#526075;display:flex;font-family:Consolas,monospace;font-size:10px;gap:14px;justify-content:space-between;padding:9px 12px}.dark .project-preview-toolbar{background:#1c2a40;color:#b5c6de}.preview-dots{display:flex;gap:4px}.preview-dots i{background:#94a3b8;border-radius:50%;height:5px;width:5px}.preview-dots i:first-child{background:#f49a9e}.preview-dots i:nth-child(2){background:#efc873}.preview-dots i:last-child{background:#72c7a7}.preview-mark{font-size:13px;line-height:1}.selected-project .project-preview-frame .project-image{aspect-ratio:16/10;border:0;border-radius:0;box-shadow:none;height:auto;width:100%}.project-orbit{border:1px solid rgb(var(--project-rgb)/30%);border-radius:50%;box-shadow:0 0 0 32px rgb(var(--project-rgb)/7%),0 0 0 64px rgb(var(--project-rgb)/4%);height:310px;pointer-events:none;position:absolute;right:-90px;top:-95px;width:310px;z-index:-1}.selected-project .project-index{background:var(--project-soft);border:1px solid rgb(var(--project-rgb)/20%);color:var(--project-ink);z-index:2}.selected-project .project-links a,.selected-project .project-meta>span:first-child{color:var(--project-ink)}.selected-project .tech-list>span{background:var(--project-soft);border-color:rgb(var(--project-rgb)/20%);color:var(--project-ink)}.selected-project .contribution{border-color:rgb(var(--project-rgb)/45%)}.selected-project>.case-study{border-top-color:rgb(var(--project-rgb)/25%)}.selected-project:hover{border-color:rgb(var(--project-rgb)/50%);box-shadow:0 22px 50px -28px rgb(var(--project-rgb)/60%)}.about-section{background:radial-gradient(ellipse at 100% 0,#8b5cf61a,#0000 60%),radial-gradient(ellipse at 0 100%,#0ea5e91a,#0000 55%),#f7fbff;border:1px solid #d9e6f6;border:1px solid var(--line);border-radius:30px;box-shadow:0 14px 40px -24px #27609b4d;box-shadow:var(--shadow);color:#14233c;color:var(--ink);margin-bottom:72px;overflow:hidden;padding:64px 44px;position:relative}.dark .about-section{--surface:#132443;--surface-alt:#182e4c;--ink:#f0f6ff;--muted:#bdcce2;--subtle:#acc2df;--line:#314b6a;--accent:#8cdaff;--accent-soft:#193b57;background:radial-gradient(ellipse at 100% 0,#6366f13b,#0000 60%),radial-gradient(ellipse at 0 100%,#0ea5e929,#0000 55%),#101d35;border-color:#2b4669;box-shadow:0 25px 70px -40px #122d528c}.about-section .section-title{max-width:670px}.about-section .section-title h2{font-size:clamp(32px,3.5vw,44px)}.about-section .eyebrow:after{background:linear-gradient(90deg,#076ea6,#0000);background:linear-gradient(90deg,var(--accent),#0000);content:"";height:1px;width:64px}.about-section .skill-focus{background:#ffffffbf;border-color:#d5e2f1;box-shadow:none}.about-section .skill-focus:nth-child(2) .skill-number{background:#eee9ff;color:#6241ab}.about-section .skill-focus:nth-child(3) .skill-number{background:#dcf5ea;color:#116347}.about-section .skill-focus:hover{background:#fffffff2;border-color:#79b6d9}.about-section .tech-list>span{background:#e2f3ff;background:var(--accent-soft);border-color:#d9e6f6;border-color:var(--line);color:#076ea6;color:var(--accent)}.dark .about-section .skill-focus{background:#ffffff0a;border-color:#a5c7f033}.dark .about-section .skill-focus:nth-child(2) .skill-number{background:#2e3159;color:#cbc4ff}.dark .about-section .skill-focus:nth-child(3) .skill-number{background:#173d3e;color:#98e8d1}.dark .about-section .skill-focus:hover{background:#ffffff12;border-color:#8cdaff8c}.about-section .full-skills{padding-bottom:0}.projects-section>.section-title h2:after{background:linear-gradient(90deg,#0ea5e9,#8b5cf6,#10b981);border-radius:999px;content:"";display:block;height:5px;margin-top:18px;width:76px}.button-primary{background:linear-gradient(115deg,#176ebd,#465bd7);box-shadow:0 8px 24px -12px #2563ebb3}.button-primary:hover{background:linear-gradient(115deg,#145eaa,#3d4dbe);box-shadow:0 12px 30px -12px #2563eba6}@media (hover:hover) and (prefers-reduced-motion:no-preference){.selected-project:hover .project-preview-frame{transform:rotate(0) translateY(-3px)}}@media (max-width:1100px){.wordmark-caption{display:none}}@media (max-width:767px){.site-nav-wrap{left:14px;right:14px;top:14px}.site-nav{height:62px;padding:0 18px}.wordmark-caption{display:block}.mobile-links{background:#fff;background:var(--surface);border:1px solid #d9e6f6;border:1px solid var(--line);border-radius:22px;padding:10px;top:72px}.mobile-links a{border-radius:14px}.proof-strip{border-radius:20px;grid-row:3;margin-top:15px;padding:22px 16px}.proof-strip>div{padding-left:12px}.proof-strip>div:first-child{padding-left:0}.proof-strip strong span{font-size:10px}.more-projects,.selected-project{border-radius:22px}.section-title{text-align:center}.section-title>.eyebrow{justify-content:center}.section-title h2{font-size:30px}.selected-project .project-visual{min-height:245px;padding:56px 24px 30px}.about-section{border-radius:24px;margin:0 -4px 48px;padding:42px 24px}.about-section .section-title h2{font-size:30px}.about-section .eyebrow:after{display:none}.projects-section>.section-title h2:after{margin-left:auto;margin-right:auto}}@media (prefers-reduced-motion:reduce){.selected-project:hover{transform:none}.project-preview-frame,.selected-project[data-project] .project-preview-frame{transform:none;transition:none}}.desktop-links{align-items:center;position:relative}.desktop-links a{position:relative;text-align:center;width:92px;z-index:1}.nav-active-pill{background:#087bb8;border-radius:999px;bottom:0;left:0;pointer-events:none;position:absolute;top:0;transition:transform .24s ease,opacity .18s ease;width:92px}.desktop-links a[aria-current]{background:#0000;color:#fff}.desktop-links a:hover{background:#e2f3ff;background:var(--accent-soft);color:#076ea6;color:var(--accent)}.desktop-links a[aria-current]:hover{background:#0000;color:#fff}.timeline-item>div:first-child{transition:background-color .2s ease}.portfolio #experience .timeline-featured .timeline-card{background:linear-gradient(120deg,#e2f3ff,#fff);background:linear-gradient(120deg,var(--accent-soft),var(--surface));border-color:#076ea6;border-color:var(--accent);border-left-width:3px}.current-role-badge{align-items:center;background:#e2f3ff;background:var(--accent-soft);border-radius:999px;color:#076ea6;color:var(--accent);display:inline-flex;font-size:11px;font-weight:650;gap:6px;padding:3px 8px}.current-role-badge:before{background:currentColor;border-radius:50%;content:"";height:5px;width:5px}.architecture .architecture-hint{font-size:12px;margin:-4px 0 12px}.architecture-progress{background:#d9e6f6;background:var(--line);border-radius:999px;height:3px;margin-bottom:14px;overflow:hidden}.architecture-progress>span{background:#076ea6;background:var(--project-ink,var(--accent));display:block;height:100%;transform-origin:left;transition:transform .3s ease}.architecture ol{list-style:none;padding:0}.architecture ol li{overflow:visible;padding:0;transition:border-color .18s ease}.architecture li[data-complete=true]{border-color:#076ea6;border-color:var(--project-ink,var(--accent))}.architecture li button{background:#0000;border:0;border-radius:4px;color:#14233c;color:var(--ink);display:block;font-size:12px;height:100%;line-height:1.5;min-height:84px;padding:12px;text-align:left;width:100%}.architecture li button:hover{background:#edf4ff;background:var(--surface-alt)}.architecture li button[aria-pressed=true]{background:#e2f3ff;background:var(--project-soft,var(--accent-soft));color:#076ea6;color:var(--project-ink,var(--accent))}.architecture-step-number{align-items:center;color:#076ea6;color:var(--project-ink,var(--accent));display:flex;font-family:Consolas,monospace;font-size:11px;justify-content:space-between;margin-bottom:6px}.architecture .architecture-detail{background:#fff;background:var(--surface);border-left:2px solid #076ea6;border-left:2px solid var(--project-ink,var(--accent));border-radius:0 8px 8px 0;font-size:13px;margin-top:14px;min-height:120px;padding:14px}.architecture-detail strong{color:#14233c;color:var(--ink);display:block;font-size:12px;margin-bottom:5px}@keyframes portfolio-enter{0%{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}@keyframes ambient-drift{0%{transform:translateZ(0)}to{transform:translate3d(0,-16px,0)}}@media (prefers-reduced-motion:no-preference){[data-reveal-pending]{opacity:0}.hero-copy,.hero-visual,.proof-strip{animation:portfolio-enter .42s ease both}.hero-visual{animation-delay:70ms}.proof-strip{animation-delay:.1s}.mobile-links{animation:portfolio-enter .22s ease-out both}.button{transition:translate .18s ease,background-color .18s ease}.button:hover{translate:0 -2px}.button:hover svg{translate:0 2px}.button svg{transition:translate .18s ease}.hero-copy:focus-within{animation:none}}@media (min-width:768px) and (prefers-reduced-motion:no-preference){.ambient-background{animation:ambient-drift 24s linear infinite alternate}}@media (prefers-reduced-motion:reduce){.architecture-progress>span,.nav-active-pill{transition:none}}
/*# sourceMappingURL=main.9da39b2d.css.map*/