/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-emerald-300:#5ee9b5;--color-white:#fff;--spacing:.25rem;--font-weight-medium:500;--font-weight-semibold:600;--leading-relaxed:1.625;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-apple-link-dark:#7dd3fc;--color-portfolio-ink:#111827;--color-portfolio-muted:#667085;--color-portfolio-line:#e3e8ef;--color-portfolio-cyan:#087f9c;--color-portfolio-emerald:#07835f;--color-portfolio-amber:#b36b08;--color-surface-dark-1:#0e1117;--color-surface-dark-2:#151922;--color-surface-dark-3:#1d2330;--font-display:-apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;--shadow-card:0 16px 46px #0f172a12;--shadow-card-hover:0 22px 60px #0f172a1f;--radius-card:8px;--radius-pill:999px;--ease-smooth:cubic-bezier(.25, .1, .25, 1);--duration-fast:.18s;--duration-normal:.32s}@supports (color:lab(0% 0 0)){:root,:host{--color-emerald-300:lab(83.9203% -48.7124 13.8849)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}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;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.relative{position:relative}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-5{margin-top:calc(var(--spacing) * 5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.ml-12{margin-left:calc(var(--spacing) * 12)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.\!h-9{height:calc(var(--spacing) * 9)!important}.min-h-screen{min-height:100vh}.\!w-9{width:calc(var(--spacing) * 9)!important}.min-w-0{min-width:0}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-10{gap:calc(var(--spacing) * 10)}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.overflow-clip{overflow:clip}.border{border-style:var(--tw-border-style);border-width:1px}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.py-12{padding-block:calc(var(--spacing) * 12)}.text-center{text-align:center}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-portfolio-cyan{color:var(--color-portfolio-cyan)}.text-portfolio-emerald{color:var(--color-portfolio-emerald)}.text-portfolio-muted{color:var(--color-portfolio-muted)}.not-italic{font-style:normal}.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-filter{-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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:p-6{padding:calc(var(--spacing) * 6)}}@media (min-width:64rem){.lg\:ml-0{margin-left:0}.lg\:block{display:block}.lg\:w-\[calc\(50\%-24px\)\]{width:calc(50% - 24px)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[1fr_340px\]{grid-template-columns:1fr 340px}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:items-start{align-items:flex-start}.lg\:gap-5{gap:calc(var(--spacing) * 5)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}.lg\:p-7{padding:calc(var(--spacing) * 7)}.lg\:py-16{padding-block:calc(var(--spacing) * 16)}.lg\:pt-2{padding-top:calc(var(--spacing) * 2)}}.dark\:text-apple-link-dark:where(.dark,.dark *){color:var(--color-apple-link-dark)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-white\/55:where(.dark,.dark *){color:#ffffff8c}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/55:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 55%, transparent)}}.dark\:text-white\/65:where(.dark,.dark *){color:#ffffffa6}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/65:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 65%, transparent)}}.dark\:text-white\/70:where(.dark,.dark *){color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.dark\:text-white\/70:where(.dark,.dark *){color:color-mix(in oklab, var(--color-white) 70%, transparent)}}}:root{font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility}html{scroll-behavior:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:74px}*{box-sizing:border-box}body{min-width:320px;color:var(--color-portfolio-ink);background:#fff;margin:0;transition:background-color .2s,color .2s;overflow-x:clip}.dark body{color:#fff;background:#090b0f}button,input,textarea,select{font:inherit}button{background:0 0;border:0;padding:0}ul,ol{margin:0;padding:0;list-style:none}img,svg,canvas{display:block}a,button,[role=button],summary{cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}::selection{background:var(--color-portfolio-cyan);color:#fff}:focus-visible{outline-offset:3px;outline:3px solid #0ea5e961}section[id]{scroll-margin-top:72px}#about,#experience,#projects,#tech,#contact{content-visibility:auto;contain-intrinsic-size:auto 900px}.skip-link{z-index:200;color:var(--color-portfolio-ink);background:#fff;border-radius:6px;padding:.65rem .9rem;font-size:.82rem;font-weight:750;text-decoration:none;transition:transform .16s;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.section-container{width:min(1080px,100% - 48px);margin:0 auto}.section-space{padding:6rem 0}.section-header{text-align:center;max-width:680px;margin:0 auto 3.5rem}.section-header .section-kicker{margin-bottom:.75rem}.section-header .text-section-heading{margin-bottom:1rem}.section-subtitle{color:var(--color-portfolio-muted);font-size:1rem;line-height:1.6}.dark .section-subtitle{color:#ffffff8c}.text-section-heading{font-family:var(--font-display);letter-spacing:0;font-size:clamp(2.1rem,4.2vw,3.45rem);font-weight:750;line-height:1.04}.text-card-title{font-family:var(--font-display);letter-spacing:0;font-size:1.24rem;font-weight:740;line-height:1.22}.text-body{font-family:var(--font-body);letter-spacing:0;font-size:1.02rem;font-weight:400;line-height:1.58}.text-caption{font-family:var(--font-body);letter-spacing:0;font-size:.875rem;font-weight:400;line-height:1.45}.section-kicker{color:var(--color-portfolio-cyan);letter-spacing:0;text-transform:uppercase;font-size:.75rem;font-weight:800}.dark .section-kicker{color:#7dd3fc}.btn-primary,.btn-outline{border-radius:var(--radius-pill);min-height:42px;transition:background-color var(--duration-fast) var(--ease-smooth), border-color var(--duration-fast) var(--ease-smooth), color var(--duration-fast) var(--ease-smooth), transform var(--duration-fast) var(--ease-smooth), box-shadow var(--duration-fast) var(--ease-smooth);border:1px solid #0000;justify-content:center;align-items:center;gap:.45rem;padding:.65rem 1.15rem;font-size:.86rem;font-weight:750;line-height:1;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-portfolio-cyan);color:#fff;box-shadow:0 10px 26px #087f9c38}.btn-primary:hover{background:#0e7490;transform:translateY(-1px);box-shadow:0 13px 30px #087f9c47}.btn-outline{color:var(--color-portfolio-cyan);background:0 0;border-color:#087f9c85}.dark .btn-outline{color:#7dd3fc;border-color:#7dd3fc94}.btn-outline:hover{border-color:var(--color-portfolio-cyan);background:#087f9c1a;transform:translateY(-1px)}.btn-primary:active,.btn-outline:active{transform:translateY(0)}.section-dark{color:var(--color-portfolio-ink);background:#fff;transition:background-color .2s,color .2s}.dark .section-dark{color:#fff;background:#090b0f}.section-light{color:var(--color-portfolio-ink);background:#f4f7f9;transition:background-color .2s,color .2s}.dark .section-light{background:var(--color-surface-dark-1);color:#fff}.surface-card{border-radius:var(--radius-card);box-shadow:var(--shadow-card);background:#ffffffdb;border:1px solid #11182714}.dark .surface-card{background:#1d2330c2;border-color:#ffffff14}.card-hover{transition:border-color var(--duration-normal) var(--ease-smooth), box-shadow var(--duration-normal) var(--ease-smooth), transform var(--duration-normal) var(--ease-smooth)}@media (hover:hover){.card-hover:hover{box-shadow:var(--shadow-card-hover);border-color:#087f9c47;transform:translateY(-3px)}}.icon-chip{width:2.5rem;height:2.5rem;color:var(--color-portfolio-cyan);background:#087f9c1a;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.dark .icon-chip{color:#7dd3fc;background:#7dd3fc1f}[data-reveal]{opacity:1;transition:opacity .62s var(--ease-smooth), transform .62s var(--ease-smooth);transform:none}[data-reveal].reveal-pending{opacity:0;transform:translateY(20px)}[data-reveal=left].reveal-pending{transform:translate(-24px)}[data-reveal=right].reveal-pending{transform:translate(24px)}[data-reveal=scale].reveal-pending{transform:scale(.975)}[data-reveal].reveal-pending.revealed{opacity:1;transform:none}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#6670855c;border-radius:4px}@media (max-width:639px){.section-container{width:min(100% - 32px,1080px)}.section-space{padding:4.5rem 0}.section-header{margin-bottom:2.5rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-reveal]{opacity:1;transform:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.lazy-section[data-v-58dc6381]{scroll-margin-top:72px}.site-nav[data-v-dde2a466]{z-index:50;color:#fff;-webkit-backdrop-filter:saturate(150%)blur(16px);backdrop-filter:saturate(150%)blur(16px);background:#090b0f94;border:1px solid #ffffff1a;border-radius:8px;justify-content:space-between;align-items:center;height:54px;padding:0 1rem;transition:background-color .18s,border-color .18s,box-shadow .18s;display:flex;position:fixed;top:12px;left:12px;right:12px}.site-nav.is-scrolled[data-v-dde2a466]{background:#090b0fe6;border-color:#ffffff24;box-shadow:0 12px 34px #0307122e}.site-nav.is-light[data-v-dde2a466]{color:var(--color-portfolio-ink);background:#ffffffb8;border-color:#0f172a1a}.site-nav.is-light.is-scrolled[data-v-dde2a466]{background:#ffffffeb}.brand-link[data-v-dde2a466]{color:currentColor;align-items:center;gap:.65rem;min-width:0;text-decoration:none;display:inline-flex}.brand-mark[data-v-dde2a466]{color:#fff;background:#0284c7;border-radius:7px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:.9rem;font-weight:850;display:inline-flex;box-shadow:0 8px 22px #0284c742}.brand-copy[data-v-dde2a466]{flex-direction:column;min-width:0;line-height:1.05;display:flex}.brand-name[data-v-dde2a466]{text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:800;overflow:hidden}.brand-role[data-v-dde2a466]{color:currentColor;opacity:.55;white-space:nowrap;margin-top:.18rem;font-size:.61rem;font-weight:600}.desktop-links[data-v-dde2a466]{align-items:center;gap:clamp(1rem,2vw,1.75rem);display:flex}.desktop-links a[data-v-dde2a466]{color:currentColor;opacity:.68;font-size:.75rem;font-weight:650;text-decoration:none;transition:opacity .16s}.desktop-links a[data-v-dde2a466]:hover,.desktop-links a[data-v-dde2a466]:focus-visible{opacity:1}.nav-controls[data-v-dde2a466]{align-items:center;gap:.45rem;display:flex}.icon-button[data-v-dde2a466],.language-button[data-v-dde2a466]{color:currentColor;opacity:.78;border:1px solid #0000;justify-content:center;align-items:center;height:34px;transition:opacity .16s,background-color .16s,border-color .16s;display:inline-flex}.icon-button[data-v-dde2a466]{border-radius:50%;width:34px}.language-button[data-v-dde2a466]{border-color:currentColor;border-radius:17px;min-width:42px;padding:0 .6rem;font-size:.7rem;font-weight:800;text-decoration:none}.icon-button[data-v-dde2a466]:hover,.language-button[data-v-dde2a466]:hover{opacity:1;background:#7dd3fc1f}.menu-button[data-v-dde2a466]{display:none}.mobile-links[data-v-dde2a466]{background:#090b0ff7;border:1px solid #ffffff1f;border-radius:8px;flex-direction:column;padding:.75rem;display:none;position:absolute;top:calc(100% + 8px);left:0;right:0;box-shadow:0 18px 44px #03071238}.is-light .mobile-links[data-v-dde2a466]{background:#fffffffa;border-color:#0f172a1a}.mobile-links a[data-v-dde2a466]{color:currentColor;text-align:center;border-radius:6px;padding:.85rem 1rem;font-size:.92rem;font-weight:700;text-decoration:none}.mobile-links a[data-v-dde2a466]:hover,.mobile-links a[data-v-dde2a466]:focus-visible{background:#0ea5e91a}.mobile-menu-enter-active[data-v-dde2a466],.mobile-menu-leave-active[data-v-dde2a466]{transition:opacity .18s,transform .18s}.mobile-menu-enter-from[data-v-dde2a466],.mobile-menu-leave-to[data-v-dde2a466]{opacity:0;transform:translateY(-6px)}@media (max-width:767px){.desktop-links[data-v-dde2a466]{display:none}.menu-button[data-v-dde2a466],.mobile-links[data-v-dde2a466]{display:flex}}@media (max-width:420px){.site-nav[data-v-dde2a466]{padding:0 .7rem;left:8px;right:8px}.brand-mark[data-v-dde2a466]{width:32px;height:32px}.brand-role[data-v-dde2a466]{display:none}.nav-controls[data-v-dde2a466]{gap:.25rem}.language-button[data-v-dde2a466]{min-width:38px}}.hero-layers[data-v-a3627087]{perspective:1100px;pointer-events:none}.hero-layers-group[data-v-a3627087]{transform-style:preserve-3d;transition:transform .42s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.hero-layer[data-v-a3627087]{aspect-ratio:1.2/.72;transform-style:preserve-3d;position:absolute;transform:translate(-50%,-50%)}.hero-layer-plate[data-v-a3627087]{border:1px solid color-mix(in srgb, var(--layer-accent) 55%, transparent);background:linear-gradient(135deg, color-mix(in srgb, var(--layer-color) 34%, transparent), color-mix(in srgb, var(--layer-color) 12%, transparent));box-shadow:0 0 28px color-mix(in srgb, var(--layer-color) 22%, transparent);border-radius:4px;position:absolute;inset:0;transform:rotateX(72deg)}.hero-layer-gem[data-v-a3627087]{aspect-ratio:1;background:linear-gradient(135deg, var(--layer-accent), var(--layer-color));width:14%;box-shadow:0 0 16px color-mix(in srgb, var(--layer-color) 60%, transparent);position:absolute;top:50%;left:50%;transform:translate(-50%,-110%)rotate(45deg)}@media (prefers-reduced-motion:reduce){.hero-layers-group[data-v-a3627087]{transition:none}}.hero-section[data-v-ee13ff18]{border-bottom:1px solid var(--color-portfolio-line);background-color:#f8fafc;background-image:linear-gradient(90deg,#0ea5e90f 1px,#0000 1px),linear-gradient(#0ea5e90f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:64px 64px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;min-height:clamp(560px,100svh,1000px);position:relative;overflow:hidden}.dark .hero-section[data-v-ee13ff18]{background-color:#090b0f;background-image:linear-gradient(90deg,#7dd3fc0e 1px,#0000 1px),linear-gradient(#7dd3fc0e 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:64px 64px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border-bottom-color:#ffffff14}.hero-grid[data-v-ee13ff18]{z-index:1;grid-template-columns:minmax(0,1fr) minmax(460px,.96fr);align-items:center;width:min(1300px,100% - 48px);min-height:clamp(560px,100svh,1000px);margin:0 auto;padding:104px 0 70px;display:grid;position:relative}.hero-grid[data-v-ee13ff18]:after{z-index:0;content:"";background:linear-gradient(90deg,#0000,#0ea5e940 32%,#10b98133,#0000);height:1px;position:absolute;top:51%;left:40%;right:7%}.hero-copy[data-v-ee13ff18]{z-index:2;max-width:700px;padding-right:clamp(0rem,2.2vw,2rem);position:relative}.hero-identity[data-v-ee13ff18]{align-items:center;gap:.875rem;margin-bottom:1.75rem;display:flex}.hero-avatar[data-v-ee13ff18]{object-fit:cover;background:#fff;border:1px solid #0ea5e96b;border-radius:8px;width:64px;height:64px;box-shadow:0 12px 32px #0ea5e924}.hero-location[data-v-ee13ff18]{color:var(--color-portfolio-muted);margin-top:.35rem;font-size:.75rem;font-weight:600}.dark .hero-location[data-v-ee13ff18]{color:#ffffffbf}.hero-title[data-v-ee13ff18]{max-width:760px;font-family:var(--font-display);letter-spacing:0;font-size:clamp(3.4rem,7.5vw,7rem);font-weight:760;line-height:.94}.hero-role[data-v-ee13ff18]{color:var(--color-portfolio-cyan);font-family:var(--font-display);margin-top:1.25rem;font-size:clamp(1.45rem,3vw,2.4rem);font-weight:700;line-height:1.08}.dark .hero-role[data-v-ee13ff18]{color:#7dd3fc}.hero-description[data-v-ee13ff18]{max-width:650px;color:var(--color-portfolio-muted);margin-top:1.5rem;font-size:clamp(1rem,1.5vw,1.12rem);line-height:1.65}.dark .hero-description[data-v-ee13ff18]{color:#ffffffbf}.hero-actions[data-v-ee13ff18]{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.hero-disciplines[data-v-ee13ff18]{color:var(--color-portfolio-muted);flex-wrap:wrap;gap:.625rem 1.5rem;margin-top:2rem;font-size:.76rem;font-weight:700;display:flex}.hero-disciplines li[data-v-ee13ff18]{padding-left:.9rem;position:relative}.hero-disciplines li[data-v-ee13ff18]:before{background:var(--color-portfolio-emerald);content:"";border-radius:50%;width:5px;height:5px;position:absolute;top:.45em;left:0}.dark .hero-disciplines[data-v-ee13ff18]{color:#ffffffbf}.hero-visual[data-v-ee13ff18]{z-index:1;aspect-ratio:680/580;contain:layout paint;justify-self:end;width:min(57vw,700px);margin-left:-108px;position:relative;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 13% 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 13% 100%)}.hero-canvas[data-v-ee13ff18]{z-index:1;opacity:.7;position:absolute;inset:3% 1%}.journey-route[data-v-ee13ff18]{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.journey-route-base[data-v-ee13ff18],.journey-route-signal[data-v-ee13ff18]{fill:none;vector-effect:non-scaling-stroke}.journey-route-base[data-v-ee13ff18]{stroke:#64748b40;stroke-dasharray:.008 .014;stroke-linecap:round;stroke-width:1.5px}.journey-route-signal[data-v-ee13ff18]{stroke:url(#journey-gradient);stroke-linecap:round;stroke-width:1.75px}.journey-marker[data-v-ee13ff18]{color:#0284c7;fill:currentColor;filter:drop-shadow(0 0 6px #0ea5e980)}.dark .journey-route-base[data-v-ee13ff18]{stroke:#94a3b84d}.journey-stages[data-v-ee13ff18]{z-index:3;pointer-events:none;position:absolute;inset:0}.journey-stage[data-v-ee13ff18]{grid-template-columns:auto 1fr;grid-template-areas:"index icons""index copy";align-items:center;gap:.35rem .55rem;width:max-content;max-width:190px;display:grid;position:absolute}.journey-stage--explore[data-v-ee13ff18]{top:9%;left:4%}.journey-stage--build[data-v-ee13ff18]{top:30%;right:2%}.journey-stage--connect[data-v-ee13ff18]{top:55%;left:9%}.journey-stage--ship[data-v-ee13ff18]{bottom:5%;right:1%}.journey-stage-index[data-v-ee13ff18]{color:#0284c7;font-family:var(--font-display);border-right:1px solid;grid-area:index;align-self:stretch;padding:.25rem .5rem 0 0;font-size:.6rem;font-weight:850}.journey-stage--connect .journey-stage-index[data-v-ee13ff18]{color:#059669}.journey-stage--ship .journey-stage-index[data-v-ee13ff18]{color:#d97706}.journey-icons[data-v-ee13ff18]{grid-area:icons;gap:.3rem;display:flex}.journey-icon[data-v-ee13ff18]{color:#0284c7;background:#f8fafce0;border:1px solid #0ea5e94d;border-radius:6px;width:30px;height:30px;padding:6px;box-shadow:0 5px 16px #0f172a0f}.journey-stage--connect .journey-icon[data-v-ee13ff18]{color:#059669;border-color:#10b98152}.journey-stage--ship .journey-icon[data-v-ee13ff18]{color:#d97706;border-color:#f59e0b5c}.dark .journey-icon[data-v-ee13ff18]{background:#090b0fe6;box-shadow:0 5px 18px #0000003d}.journey-stage-copy[data-v-ee13ff18]{grid-area:copy;gap:.12rem;display:grid}.journey-stage-copy strong[data-v-ee13ff18]{color:var(--color-portfolio-ink);font-family:var(--font-display);text-transform:uppercase;font-size:.72rem;font-weight:850}.journey-stage-copy small[data-v-ee13ff18]{color:var(--color-portfolio-muted);font-size:.62rem;font-weight:650}.dark .journey-stage-copy strong[data-v-ee13ff18]{color:#ffffffdb}.dark .journey-stage-copy small[data-v-ee13ff18]{color:#ffffff73}.journey-status[data-v-ee13ff18]{z-index:3;color:var(--color-portfolio-muted);text-transform:uppercase;font-size:.62rem;font-weight:800;position:absolute;bottom:1%;left:35%}.dark .journey-status[data-v-ee13ff18]{color:#ffffff7a}.hero-scroll-cue[data-v-ee13ff18]{z-index:3;border:1px solid #6e737b8c;border-radius:11px;justify-content:center;width:22px;height:34px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.hero-scroll-cue span[data-v-ee13ff18]{background:var(--color-portfolio-muted);border-radius:2px;width:3px;height:7px;margin-top:6px;animation:1.8s ease-in-out infinite scroll-cue-ee13ff18}@keyframes scroll-cue-ee13ff18{0%,to{opacity:.35;transform:translateY(0)}50%{opacity:1;transform:translateY(10px)}}@media (max-width:959px){.hero-grid[data-v-ee13ff18]{grid-template-columns:1fr;width:min(720px,100% - 40px)}.hero-copy[data-v-ee13ff18]{text-align:center;max-width:680px;padding-right:0}.hero-identity[data-v-ee13ff18],.hero-actions[data-v-ee13ff18],.hero-disciplines[data-v-ee13ff18]{justify-content:center}.hero-description[data-v-ee13ff18]{margin-left:auto;margin-right:auto}.hero-visual[data-v-ee13ff18]{aspect-ratio:680/580;opacity:.75;pointer-events:none;justify-self:auto;width:clamp(640px,92vw,720px);height:auto;margin:0;position:absolute;top:52%;left:56%;transform:translate(-50%,-50%);-webkit-mask-image:linear-gradient(#0000 0%,#000 6% 94%,#0000 100%);mask-image:linear-gradient(#0000 0%,#000 6% 94%,#0000 100%)}.hero-canvas[data-v-ee13ff18],.journey-status[data-v-ee13ff18]{display:none}.journey-route[data-v-ee13ff18]{opacity:.32;display:block}.journey-stages[data-v-ee13ff18]{opacity:.42}}@media (max-width:639px){.hero-section[data-v-ee13ff18],.hero-grid[data-v-ee13ff18]{min-height:clamp(520px,100svh,900px)}.hero-grid[data-v-ee13ff18]{width:min(100% - 32px,520px);padding:88px 0 46px}.hero-identity[data-v-ee13ff18]{margin-bottom:1.25rem}.hero-avatar[data-v-ee13ff18]{width:52px;height:52px}.hero-title[data-v-ee13ff18]{font-size:clamp(2.85rem,15vw,4.25rem)}.hero-role[data-v-ee13ff18]{margin-top:.8rem;font-size:1.4rem}.hero-description[data-v-ee13ff18]{margin-top:1.1rem;font-size:.96rem;line-height:1.55}.hero-actions[data-v-ee13ff18]{margin-top:1.5rem}.hero-disciplines[data-v-ee13ff18]{gap:.5rem .85rem;margin-top:1.4rem;font-size:.67rem}.hero-visual[data-v-ee13ff18]{opacity:.75;width:clamp(560px,150vw,660px);height:auto;margin:0;top:51%;left:50%}.journey-route[data-v-ee13ff18]{opacity:.26}.journey-stages[data-v-ee13ff18]{opacity:.52}.journey-stage-index[data-v-ee13ff18],.journey-stage-copy[data-v-ee13ff18]{display:none}.journey-stage--explore[data-v-ee13ff18],.journey-stage--connect[data-v-ee13ff18]{left:18%}.journey-stage--explore[data-v-ee13ff18]{top:4%}.journey-stage--build[data-v-ee13ff18]{top:24%;right:16%}.journey-stage--ship[data-v-ee13ff18]{bottom:2%;right:15%}.hero-scroll-cue[data-v-ee13ff18]{display:none}}@media (prefers-reduced-motion:reduce){.hero-canvas[data-v-ee13ff18]{display:none}.hero-scroll-cue span[data-v-ee13ff18]{animation:none}}.scroll-top-button[data-v-1254fb45]{z-index:40;background:var(--color-portfolio-cyan);color:#fff;border:1px solid #ffffff38;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:background-color .18s,transform .18s;display:flex;position:fixed;bottom:1.25rem;right:1.25rem;box-shadow:0 12px 30px #0891b240}.scroll-top-button[data-v-1254fb45]:hover{background:#0e7490;transform:translateY(-2px)}.scroll-top-enter-active[data-v-1254fb45],.scroll-top-leave-active[data-v-1254fb45]{transition:opacity .18s,transform .18s}.scroll-top-enter-from[data-v-1254fb45],.scroll-top-leave-to[data-v-1254fb45]{opacity:0;transform:translateY(10px)}.stat-value[data-v-bac5bf6e]{color:var(--color-portfolio-cyan);font-family:var(--font-display);margin-bottom:.25rem;font-size:clamp(2rem,4vw,2.5rem);font-weight:720;line-height:1.1}.dark .stat-value[data-v-bac5bf6e]{color:#7dd3fc}.timeline-line[data-v-7ca6259f]{background:#0891b23d;width:1px;position:absolute;top:0;bottom:0;left:1rem}.timeline-item[data-v-7ca6259f]{margin-bottom:4rem;position:relative}.timeline-item[data-v-7ca6259f]:last-child{margin-bottom:0}.timeline-dot[data-v-7ca6259f]{z-index:1;background:var(--color-portfolio-cyan);border:3px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;top:1.5rem;left:1rem;transform:translate(-50%)}.dark .timeline-dot[data-v-7ca6259f]{border-color:#090b0f}.timeline-bullet[data-v-7ca6259f]{background:var(--color-portfolio-amber);border-radius:50%;flex:none;width:6px;height:6px;margin-top:.42rem}.period-label[data-v-7ca6259f]{color:var(--color-portfolio-emerald);background:#05966914;border:1px solid #05966933;border-radius:6px;padding:.32rem .7rem;font-size:.72rem;font-weight:750;display:inline-flex}.dark .period-label[data-v-7ca6259f]{color:#6ee7b7}@media (min-width:1024px){.timeline-line[data-v-7ca6259f],.timeline-dot[data-v-7ca6259f]{left:50%}}.project-view-switcher[data-v-dfe2da07]{background:#ffffffb8;border:1px solid #0f172a1a;border-radius:7px;width:-moz-fit-content;width:fit-content;margin:-2rem 0 1.5rem auto;padding:3px;display:flex}.dark .project-view-switcher[data-v-dfe2da07]{background:#1d2330b8;border-color:#ffffff1a}.project-view-button[data-v-dfe2da07]{width:38px;height:36px;color:var(--color-portfolio-muted);border-radius:5px;justify-content:center;align-items:center;transition:color .16s,background-color .16s,box-shadow .16s;display:inline-flex}.project-view-button[data-v-dfe2da07]:hover{color:var(--color-portfolio-cyan)}.project-view-button.active[data-v-dfe2da07]{background:var(--color-portfolio-cyan);color:#fff;box-shadow:0 4px 12px #087f9c33}.project-grid[data-v-dfe2da07]{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.project-card[data-v-dfe2da07]{flex-direction:column;min-width:0;min-height:340px;padding:1.5rem;display:flex;position:relative;overflow:hidden}.project-topline[data-v-dfe2da07]{align-items:center;gap:.7rem;min-width:0;margin-bottom:1.25rem;display:flex}.project-icon[data-v-dfe2da07]{width:38px;height:38px;color:var(--color-portfolio-emerald);background:#0596691a;border-radius:7px;flex:none;justify-content:center;align-items:center;display:inline-flex}.project-category[data-v-dfe2da07]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.project-actions[data-v-dfe2da07]{flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:1rem;display:flex}.project-info[data-v-dfe2da07]{border-radius:var(--radius-pill);min-width:0;max-width:100%;height:34px;color:var(--color-portfolio-cyan);white-space:nowrap;background:#0891b212;border:1px solid #0891b238;flex:none;justify-content:center;align-items:center;gap:.42rem;padding:0 .72rem;font-size:.72rem;font-weight:750;line-height:1;transition:color .16s,border-color .16s,background-color .16s,box-shadow .16s,transform .16s;display:inline-flex;position:relative;overflow:hidden}.project-info[data-v-dfe2da07]:before{content:"";background:linear-gradient(110deg,#0000 0%,#ffffff57 45%,#0000 68%);transition:transform .52s;position:absolute;inset:0;transform:translate(-115%)}.project-info svg[data-v-dfe2da07],.project-info-label[data-v-dfe2da07]{z-index:1;position:relative}.project-info svg[data-v-dfe2da07]{flex:none;transition:transform .18s}.project-info-label[data-v-dfe2da07]{text-overflow:ellipsis;transition:transform .18s;overflow:hidden}.project-info[data-v-dfe2da07]:hover,.project-info[data-v-dfe2da07]:focus-visible{border-color:var(--color-portfolio-cyan);background:var(--color-portfolio-cyan);color:#fff;transform:translateY(-1px);box-shadow:0 10px 24px #087f9c33}.project-info[data-v-dfe2da07]:hover:before,.project-info[data-v-dfe2da07]:focus-visible:before{transform:translate(115%)}.project-info:hover svg[data-v-dfe2da07],.project-info:focus-visible svg[data-v-dfe2da07]{transform:rotate(-8deg)scale(1.06)}.project-info:hover .project-info-label[data-v-dfe2da07],.project-info:focus-visible .project-info-label[data-v-dfe2da07]{transform:translate(2px)}.project-info[data-v-dfe2da07]:active{transform:translateY(0)}.project-title[data-v-dfe2da07]{width:-moz-fit-content;width:fit-content;max-width:100%;color:inherit;font-family:var(--font-display);text-align:left;overflow-wrap:anywhere;margin-bottom:.85rem;font-size:1.32rem;font-weight:750;line-height:1.2}.project-title[data-v-dfe2da07]:hover{color:var(--color-portfolio-cyan)}.project-description[data-v-dfe2da07]{color:var(--color-portfolio-muted);-webkit-line-clamp:5;-webkit-box-orient:vertical;flex:1;margin-bottom:1.1rem;font-size:.88rem;line-height:1.58;display:-webkit-box;overflow:hidden}.dark .project-description[data-v-dfe2da07]{color:#ffffff9e}.project-website[data-v-dfe2da07]{border-radius:var(--radius-pill);width:-moz-fit-content;width:fit-content;min-height:34px;color:var(--color-portfolio-emerald);background:#05966914;border:1px solid #05966938;justify-content:center;align-items:center;gap:.4rem;padding:0 .72rem;font-size:.78rem;font-weight:750;text-decoration:none;transition:color .16s,border-color .16s,background-color .16s,box-shadow .16s,transform .16s;display:inline-flex}.project-website svg[data-v-dfe2da07]{flex:none;transition:transform .18s}.project-website[data-v-dfe2da07]:hover,.project-website[data-v-dfe2da07]:focus-visible{border-color:var(--color-portfolio-emerald);background:var(--color-portfolio-emerald);color:#fff;transform:translateY(-1px);box-shadow:0 10px 24px #05966933}.project-website:hover svg[data-v-dfe2da07],.project-website:focus-visible svg[data-v-dfe2da07]{transform:translate(2px,-2px)}.project-website[data-v-dfe2da07]:active{transform:translateY(0)}.project-tech[data-v-dfe2da07]{flex-wrap:wrap;gap:.4rem;display:flex}.project-tech li[data-v-dfe2da07]{color:var(--color-portfolio-cyan);background:#0891b212;border:1px solid #0891b224;border-radius:5px;padding:.3rem .55rem;font-size:.65rem;font-weight:700}.dark .project-tech li[data-v-dfe2da07]{color:#7dd3fc}.project-toggle-wrap[data-v-dfe2da07]{justify-content:center;margin-top:2rem;display:flex}.project-toggle[data-v-dfe2da07]{gap:.5rem}.project-list[data-v-dfe2da07]{gap:1.25rem;display:grid}.project-list-item[data-v-dfe2da07]{min-width:0;padding:1.75rem}.project-list-header[data-v-dfe2da07]{justify-content:space-between;align-items:flex-start;gap:1.5rem;display:flex}.project-list-identity[data-v-dfe2da07]{min-width:0}.project-list-topline[data-v-dfe2da07]{margin-bottom:.75rem}.project-list-title[data-v-dfe2da07]{overflow-wrap:anywhere;font-family:var(--font-display);font-size:1.5rem;font-weight:750;line-height:1.2}.project-list-website[data-v-dfe2da07]{flex:none}.project-list-description[data-v-dfe2da07]{max-width:920px;color:var(--color-portfolio-muted);margin-top:1rem;font-size:.92rem;line-height:1.65}.dark .project-list-description[data-v-dfe2da07]{color:#ffffff9e}.project-list-meta[data-v-dfe2da07]{border-top:1px solid #0f172a14;border-bottom:1px solid #0f172a14;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem 1.25rem;margin-top:1.5rem;padding:1rem 0;display:grid}.dark .project-list-meta[data-v-dfe2da07]{border-color:#ffffff14}.project-list-meta>div[data-v-dfe2da07]{grid-template-columns:18px minmax(0,1fr);column-gap:.5rem;min-width:0;display:grid}.project-list-meta svg[data-v-dfe2da07]{color:var(--color-portfolio-cyan);grid-row:1/span 2;margin-top:.1rem}.project-list-meta dt[data-v-dfe2da07]{color:var(--color-portfolio-muted);text-transform:uppercase;font-size:.64rem;font-weight:750}.project-list-meta dd[data-v-dfe2da07]{overflow-wrap:anywhere;color:var(--color-portfolio-ink);font-size:.82rem;font-weight:700;line-height:1.45}.dark .project-list-meta dd[data-v-dfe2da07]{color:#ffffffe0}.project-list-content[data-v-dfe2da07]{margin-top:1.5rem;display:grid}.project-list-content.has-details[data-v-dfe2da07]{align-items:start;gap:2rem}.project-list-section h4[data-v-dfe2da07]{align-items:center;gap:.55rem;margin-bottom:.9rem;font-size:.88rem;font-weight:780;display:flex}.project-detail-list[data-v-dfe2da07]{gap:.72rem;display:grid}.project-detail-list li[data-v-dfe2da07]{color:var(--color-portfolio-muted);align-items:flex-start;gap:.65rem;font-size:.88rem;line-height:1.55;display:flex}.project-detail-list svg[data-v-dfe2da07]{color:var(--color-portfolio-emerald);flex:none;margin-top:.2rem}.dark .project-detail-list li[data-v-dfe2da07]{color:#ffffffa6}.project-list-tech-section[data-v-dfe2da07]{min-width:0}@media (max-width:1023px){.project-grid[data-v-dfe2da07],.project-list-meta[data-v-dfe2da07]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:639px){.project-view-switcher[data-v-dfe2da07]{margin-top:-2.25rem}.project-grid[data-v-dfe2da07]{grid-template-columns:1fr}.project-card[data-v-dfe2da07]{min-height:0}.project-list-item[data-v-dfe2da07]{padding:1.25rem}.project-list-header[data-v-dfe2da07]{flex-direction:column;gap:1rem}.project-list-meta[data-v-dfe2da07]{grid-template-columns:1fr}.project-list-content.has-details[data-v-dfe2da07]{grid-template-columns:1fr;gap:1.5rem}.project-list-tech-section[data-v-dfe2da07]{order:-1}}.tech-item[data-v-231baf10]{background:#ffffffb8;border:1px solid #12131614;border-radius:8px;align-items:center;gap:.8rem;min-height:70px;padding:.9rem 1rem;display:flex}.dark .tech-item[data-v-231baf10]{background:#20242b9e;border-color:#ffffff14}.tech-tone[data-v-231baf10]{background:#0ea5e9;border-radius:4px;flex:none;width:9px;height:34px}.tech-tone[data-tone=emerald][data-v-231baf10]{background:#10b981}.tech-tone[data-tone=amber][data-v-231baf10]{background:#f59e0b}.tech-tone[data-tone=rose][data-v-231baf10]{background:#f43f5e}.tech-tone[data-tone=violet][data-v-231baf10]{background:#8b5cf6}.tech-tone[data-tone=cyan][data-v-231baf10]{background:#06b6d4}.tech-years[data-v-231baf10]{color:var(--color-portfolio-muted);text-transform:uppercase;flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem}.dark .tech-years[data-v-231baf10]{color:#ffffff73}.tech-progress[data-v-231baf10]{--tech-accent-rgb:14, 165, 233;background:linear-gradient(90deg, rgba(var(--tech-accent-rgb), .16), rgba(var(--tech-accent-rgb), .05)), #6e737b21;height:7px;box-shadow:inset 0 0 0 1px rgba(var(--tech-accent-rgb), .13);border-radius:999px;margin-top:.75rem;display:block;position:relative;overflow:hidden}.tech-progress span[data-v-231baf10]{border-radius:inherit;background:linear-gradient(90deg, rgba(var(--tech-accent-rgb), .82), rgb(var(--tech-accent-rgb)));height:100%;box-shadow:0 0 12px rgba(var(--tech-accent-rgb), .42), 0 0 2px rgba(var(--tech-accent-rgb), .72);transform-origin:0;transition:transform .9s var(--ease-smooth);display:block;position:relative;overflow:hidden;transform:scaleX(1)}.tech-progress span[data-v-231baf10]:after{content:"";background:linear-gradient(110deg,#0000 0% 34%,#ffffff7a 48%,#0000 62% 100%);animation:2.6s ease-in-out infinite tech-progress-shine-231baf10;position:absolute;inset:0;transform:translate(-120%)}[data-reveal].reveal-pending .tech-progress span[data-v-231baf10]{transform:scaleX(0)}[data-reveal].reveal-pending.revealed .tech-progress span[data-v-231baf10]{transform:scaleX(1)}.tech-progress[data-tone=emerald][data-v-231baf10]{--tech-accent-rgb:16, 185, 129}.tech-progress[data-tone=amber][data-v-231baf10]{--tech-accent-rgb:245, 158, 11}.tech-progress[data-tone=rose][data-v-231baf10]{--tech-accent-rgb:244, 63, 94}.tech-progress[data-tone=violet][data-v-231baf10]{--tech-accent-rgb:139, 92, 246}.tech-progress[data-tone=cyan][data-v-231baf10]{--tech-accent-rgb:6, 182, 212}@keyframes tech-progress-shine-231baf10{0%,38%{transform:translate(-120%)}78%,to{transform:translate(120%)}}@media (prefers-reduced-motion:reduce){.tech-progress span[data-v-231baf10]{transform:scaleX(1)}.tech-progress span[data-v-231baf10]:after{animation:none}}.contact-link[data-v-95efdc1d]{min-width:0;color:inherit;align-items:center;gap:1rem;padding:1.25rem;text-decoration:none;display:flex}.contact-icon[data-v-95efdc1d]{flex:none;width:48px;height:48px;transition:color .18s,background-color .18s}.contact-link:hover .contact-icon[data-v-95efdc1d]{background:var(--color-portfolio-cyan);color:#fff}.contact-label[data-v-95efdc1d],.contact-value[data-v-95efdc1d]{display:block}.contact-label[data-v-95efdc1d]{color:var(--color-portfolio-muted);text-transform:uppercase;margin-bottom:.3rem;font-size:.67rem;font-weight:750}.contact-value[data-v-95efdc1d]{overflow-wrap:anywhere;color:var(--color-portfolio-cyan);font-size:.86rem;font-weight:700}.site-footer[data-v-637b3d3c]{border-top:1px solid var(--color-portfolio-line);color:var(--color-portfolio-muted);background:#f8fafc;padding:1.75rem 0;font-size:.72rem}.dark .site-footer[data-v-637b3d3c]{color:#ffffffbf;background:#090b0f;border-color:#ffffff12}.dialog-layer[data-v-d391de46]{z-index:100;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog-backdrop[data-v-d391de46]{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#030712b8;border-radius:0;width:100%;height:100%;position:absolute;inset:0}.project-dialog[data-v-d391de46]{z-index:1;width:min(820px,100%);max-height:min(88svh,820px);color:var(--color-portfolio-ink);background:#fff;border:1px solid #0f172a1a;border-radius:8px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 28px 90px #03071252}.dark .project-dialog[data-v-d391de46]{background:var(--color-surface-dark-2);color:#fff;border-color:#ffffff1a}.dialog-header[data-v-d391de46]{border-bottom:1px solid #0f172a14;justify-content:space-between;align-items:flex-start;gap:1.5rem;padding:1.25rem 1.4rem;display:flex}.dark .dialog-header[data-v-d391de46]{border-color:#ffffff14}.dialog-title[data-v-d391de46]{overflow-wrap:anywhere;font-family:var(--font-display);font-size:1.5rem;font-weight:760;line-height:1.15}.dialog-close[data-v-d391de46]{width:38px;height:38px;color:var(--color-portfolio-muted);background:#6e737b1a;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.dialog-close[data-v-d391de46]:hover{color:var(--color-portfolio-cyan);background:#0891b224}.dialog-body[data-v-d391de46]{overscroll-behavior:contain;padding:1.4rem;overflow-y:auto}.meta-grid[data-v-d391de46]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-bottom:1.75rem;display:grid}.meta-item[data-v-d391de46]{min-width:0;color:var(--color-portfolio-cyan);background:#f8fafc;border:1px solid #0f172a14;border-radius:7px;gap:.7rem;padding:.85rem;display:flex}.dark .meta-item[data-v-d391de46]{background:var(--color-surface-dark-3);border-color:#ffffff12}.meta-item dt[data-v-d391de46]{color:var(--color-portfolio-muted);text-transform:uppercase;margin-bottom:.18rem;font-size:.64rem;font-weight:750}.meta-item dd[data-v-d391de46]{overflow-wrap:anywhere;color:var(--color-portfolio-ink);font-size:.84rem;font-weight:700}.dark .meta-item dd[data-v-d391de46]{color:#ffffffe0}.dialog-section h4[data-v-d391de46]{align-items:center;gap:.55rem;margin-bottom:.9rem;font-size:.88rem;font-weight:780;display:flex}.detail-list[data-v-d391de46]{gap:.72rem;display:grid}.detail-list li[data-v-d391de46]{color:var(--color-portfolio-muted);align-items:flex-start;gap:.65rem;font-size:.88rem;line-height:1.55;display:flex}.detail-list[data-v-d391de46] svg{color:var(--color-portfolio-emerald);flex:none;margin-top:.2rem}.dark .detail-list li[data-v-d391de46],.dark .project-summary[data-v-d391de46]{color:#ffffffa6}.project-summary[data-v-d391de46]{color:var(--color-portfolio-muted);line-height:1.65}.dialog-website[data-v-d391de46]{gap:.5rem;margin-top:1.5rem}.tech-section[data-v-d391de46]{border-top:1px solid #0f172a14;margin-top:1.75rem;padding-top:1.25rem}.dark .tech-section[data-v-d391de46]{border-color:#ffffff14}.dialog-tech[data-v-d391de46]{flex-wrap:wrap;gap:.45rem;display:flex}.dialog-tech li[data-v-d391de46]{color:var(--color-portfolio-cyan);background:#0891b212;border:1px solid #0891b226;border-radius:5px;padding:.35rem .6rem;font-size:.68rem;font-weight:700}.dialog-enter-active[data-v-d391de46],.dialog-leave-active[data-v-d391de46]{transition:opacity .18s}.dialog-enter-active .project-dialog[data-v-d391de46],.dialog-leave-active .project-dialog[data-v-d391de46]{transition:transform .22s}.dialog-enter-from[data-v-d391de46],.dialog-leave-to[data-v-d391de46]{opacity:0}.dialog-enter-from .project-dialog[data-v-d391de46],.dialog-leave-to .project-dialog[data-v-d391de46]{transform:translateY(10px)scale(.98)}@media (max-width:520px){.dialog-layer[data-v-d391de46]{align-items:end;padding:0}.project-dialog[data-v-d391de46]{border-radius:8px 8px 0 0;width:100%;max-height:92svh}.meta-grid[data-v-d391de46]{grid-template-columns:1fr}}
/*$vite$:1*/