/*! tailwindcss v4.3.4 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--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}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:ui-monospace, "SFMono-Regular", Consolas, monospace;--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)}}@layer base{*,:after,:before,::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]){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;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}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.static{position:static}.sticky{position:sticky}.block{display:block}.contents{display:contents}.inline{display:inline}.table{display:table}.resize{resize:both}.filter{filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.transition{transition-property:color,background-color,border-color,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))}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2")}:root{color-scheme:dark;--background:#0f172a;--surface:#172236;--text:#e2e8f0;--muted:#b1bed0;--subtle:#94a3b8;--accent:#fbbf24;--border:#334155;font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility;scroll-behavior:smooth;scroll-padding-top:7rem}*{box-sizing:border-box}body{background:radial-gradient(ellipse at 0 0, #1b2940 0, transparent 55%), var(--background);min-width:0;color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.75}::selection{color:#fff;background:#fbbf2433}h1,h2,h3,p,ul,ol,dl,dd{margin:0}h1,h2,h3{text-wrap:balance;color:var(--text);line-height:1.2}h1{letter-spacing:-.045em}h2,h3{letter-spacing:-.025em}a{color:inherit;text-decoration:none;transition:color .16s}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible,[tabindex="0"]:focus-visible{outline:2px solid var(--accent);outline-offset:5px;border-radius:2px}main:focus{outline:none}button,summary,a{-webkit-tap-highlight-color:transparent}img{max-width:100%;height:auto}svg{flex-shrink:0}ul,ol{padding:0}p,li{overflow-wrap:break-word}section[id],.case-prose :is(h2,h3){scroll-margin-top:1rem}.page-shell{width:min(100% - 3rem,1200px);margin-inline:auto}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--subtle);font-size:.7rem;font-weight:500}.text-link{align-items:center;gap:.5rem;min-height:44px;font-size:.875rem;font-weight:500;display:inline-flex}.text-link>[aria-hidden]{color:var(--accent)}.skip-link{z-index:100;background:var(--accent);color:var(--background);padding:.75rem 1.25rem;font-weight:600;position:fixed;top:1rem;left:1rem;transform:translateY(-200%)}.skip-link:focus{color:var(--background);outline-offset:3px;outline:2px solid #fff;transform:translateY(0)}.status-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:6px;height:6px;margin-right:.65rem;display:inline-block}.status-dot.completed{background:oklch(79.2% .209 151.711)}.button-link{border:1px solid var(--accent);min-height:48px;color:var(--accent);border-radius:4px;justify-content:center;align-items:center;gap:1.75rem;padding:.6rem 1.15rem;font-size:.875rem;font-weight:600;display:inline-flex}.button-link:hover{background:#fbbf2410}.profile-header{padding-block:3rem 0}.profile-eyebrow{color:var(--accent);margin-bottom:1.5rem}.profile-name{max-width:11ch;font-size:clamp(2.5rem,8vw,3.25rem);font-weight:650;line-height:1.13}.profile-role{margin-top:1rem;font-size:1.25rem;font-weight:500}.profile-intro{max-width:32ch;color:var(--muted);margin-top:1.25rem;line-height:1.7}.profile-current{color:var(--subtle);margin-top:1.5rem;font-size:.8125rem}.profile-current a{color:var(--text);text-underline-offset:3px;text-decoration:underline}.profile-actions{margin-top:1.5rem}.social-links{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.social-links>a:not(.cv-link){min-width:44px;min-height:44px;color:var(--subtle);justify-content:center;align-items:center;display:inline-flex}.social-links>a:hover{color:var(--accent)}.social-links svg{fill:currentColor}.cv-link{margin-left:.5rem}.profile-handle{color:var(--subtle);font-family:var(--font-mono);margin-top:.5rem;font-size:.7rem}.home-content{min-width:0;padding-top:4rem}.home-section+.home-section{margin-top:4.5rem}.section-heading{letter-spacing:0;align-items:baseline;gap:.85rem;margin-bottom:1.75rem;font-size:1rem;font-weight:600;display:flex}.section-heading>span{color:var(--accent);font-family:var(--font-mono);letter-spacing:.05em;white-space:nowrap;font-size:.7rem}.about-copy p{color:var(--muted)}.about-copy p+p{margin-top:1.25rem}.about-copy p:first-child{color:var(--text)}.section-nav ul{list-style:none}.section-nav a{min-height:44px;color:var(--subtle);align-items:center;font-size:.75rem;font-weight:500;display:flex}.section-nav a:hover,.section-nav a[aria-current]{color:var(--accent)}.section-nav--desktop{display:none}.section-nav--mobile{z-index:30;background:var(--background);border-bottom:1px solid var(--border);position:sticky;top:0}.section-nav--mobile ul{flex-wrap:wrap;justify-content:space-between;width:min(100% - 2rem,1200px);margin-inline:auto;padding-block:.4rem;display:flex}.section-nav--mobile a{padding-inline:.35rem}.project-list{gap:1.25rem;display:grid}.project-card{border:1px solid var(--border);background:linear-gradient(120deg,#1e293b66,#0f172a22);border-radius:6px;min-width:0;transition:border-color .16s,background-color .16s}.project-card:hover,.project-card:focus-within{background-color:#1e293b66;border-color:#6d6a55}.project-card-link{border-radius:6px;padding:1.5rem;display:block}.project-card-link:focus-visible{outline-offset:3px}.project-card-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.project-status{font-size:.6875rem;font-family:var(--font-mono);color:#fcd34d}.project-card h3{font-size:1.35rem;font-weight:600;line-height:1.35}.project-card a:hover h3{color:var(--accent)}.project-card p{color:var(--muted);margin-top:.85rem;font-size:.875rem;line-height:1.75}.project-card .technology-list{margin-top:1.25rem}.project-card-action{color:var(--accent);align-items:center;gap:.75rem;margin-top:1.5rem;font-size:.8125rem;font-weight:500;display:inline-flex}.project-cover{border-radius:3px;width:100%;margin-bottom:1.5rem}.project-links{flex-wrap:wrap;gap:.25rem 1.5rem;list-style:none;display:flex}.project-card>.project-links{padding:0 1.5rem 1.5rem}.technology-list{flex-wrap:wrap;gap:.5rem;list-style:none;display:flex}.technology-list>li{max-width:100%;display:flex}.technology-badge{color:#cbd5e1;background:#26334980;border:1px solid #33415588;border-radius:3px;align-items:center;gap:.5rem;padding:.25rem .65rem;font-size:.6875rem;line-height:1.6;display:inline-flex}.technology-badge>span{overflow-wrap:anywhere;min-width:0}.technology-icon{color:#cbd5e1;width:15px;height:15px}.experience-list{list-style:none}.experience-list>li+li{border-top:1px solid var(--border);margin-top:2rem;padding-top:2rem}.experience-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.25rem;display:flex}.experience-heading h3{font-size:1rem;font-weight:600}.company-link{color:var(--accent)}.experience-period{font-family:var(--font-mono);color:var(--subtle);font-size:.6875rem}.contributions{color:var(--muted);margin-block:.5rem 1.25rem;padding-left:1rem;font-size:.875rem;list-style-type:disc}.contributions li+li{margin-top:.5rem}.contributions li::marker{color:var(--subtle)}.capabilities{gap:1.75rem;display:grid}.capability{border-left:1px solid #475569;padding-left:1.25rem}.capability h3{font-size:1rem;font-weight:550}.capability p{color:var(--muted);margin-block:.65rem 1rem;font-size:.875rem}.languages{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem 2rem;display:grid}.languages>div{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem .5rem;padding-bottom:.7rem;display:flex}.languages dt{font-size:.875rem}.languages dd{font-size:.75rem;font-family:var(--font-mono);color:var(--subtle)}.contact-heading{letter-spacing:-.035em;margin-bottom:1rem;font-size:1.75rem;font-weight:550;line-height:1.3}.contact-section>p:not(.contact-heading){color:var(--muted);font-size:.875rem}.contact-actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:1.5rem;display:flex}.site-footer{border-top:1px solid var(--border);color:var(--subtle);margin-top:4rem;padding-block:1.5rem 2.5rem;font-size:.6875rem}.site-footer p+p{margin-top:.5rem}.site-footer a{text-underline-offset:3px;text-decoration:underline}.site-header{z-index:30;border-bottom:1px solid var(--border);background:var(--background);position:sticky;top:0}.site-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1.5rem;padding-block:.75rem;display:flex}.brand{align-items:center;gap:.75rem;min-height:44px;display:inline-flex}.brand-mark{border:1px solid #64748b;border-radius:4px;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.25rem;font-weight:650;display:inline-flex}.brand-mark>span{color:var(--accent)}.brand-name{font-size:.75rem;font-weight:550;line-height:1.5}.brand-name>span{color:var(--subtle);font-size:.6875rem;font-weight:400;display:block}.header-actions{flex-wrap:wrap;align-items:center;gap:.5rem 1.5rem;display:flex}.header-actions .text-link{font-size:.75rem}.case-hero{border-bottom:1px solid var(--border);padding-block:2rem 2.5rem}.back-link{color:var(--subtle)}.case-eyebrow{color:var(--accent);margin-block:2rem 1rem}.case-hero h1{max-width:24ch;font-size:clamp(2.25rem,5.2vw,4.25rem);font-weight:600}.case-summary{max-width:65ch;color:var(--muted);margin-top:1.5rem;font-size:clamp(1rem,1.8vw,1.125rem);line-height:1.8}.case-facts{flex-wrap:wrap;gap:1.5rem 3rem;margin-block:2rem 1.5rem;display:flex}.case-facts dt{font-family:var(--font-mono);letter-spacing:.04em;color:var(--subtle);font-size:.6875rem}.case-facts dd{margin-top:.25rem;font-size:.875rem}.case-technologies{max-width:850px}.case-hero .project-links{margin-top:1rem}.case-cover{border-radius:6px;width:100%;margin-top:2.5rem;display:block}.case-reading{gap:2rem;padding-block:2.5rem 1rem;display:grid}.case-prose{min-width:0}.case-prose>:not(pre,table,figure,p:has(img)){max-width:70ch}.case-prose h2{margin-block:2.75rem 1rem;font-size:clamp(1.5rem,2vw,1.75rem);font-weight:600}.case-prose h2:first-child{margin-top:0}.case-prose h3{margin-block:1.75rem .75rem;font-size:1.125rem;font-weight:550}.case-prose p{color:var(--muted);margin-block:1rem}.case-prose :is(ul,ol){color:var(--muted);margin-block:1rem;padding-left:1.25rem}.case-prose ul{list-style:outside}.case-prose ol{list-style:decimal}.case-prose li+li{margin-top:.4rem}.case-prose a{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.case-prose strong{color:var(--text);font-weight:600}.case-prose :is(figure,p:has(img)){margin-block:2rem}.case-prose img{border-radius:4px;display:block}.case-prose figcaption{color:var(--subtle);margin-top:.75rem;font-size:.8125rem}.case-prose pre{border:1px solid var(--border);border-radius:4px;padding:1.5rem;font-size:.8125rem;overflow:auto}.case-prose code{font-family:var(--font-mono)}.case-prose table{border-collapse:collapse;font-size:.875rem;display:block;overflow-x:auto}.case-prose :is(th,td){border:1px solid var(--border);text-align:left;padding:.75rem}.case-prose blockquote{border-left:2px solid var(--accent);margin:1.5rem 0;padding-left:1.5rem}.case-toc{border:1px solid var(--border);border-radius:4px;padding:.5rem 1rem}.case-toc--desktop{display:none}.case-toc summary{cursor:pointer;min-height:44px;font-family:var(--font-mono);color:var(--subtle);justify-content:space-between;align-items:center;font-size:.6875rem;list-style:none;display:flex}.case-toc summary::-webkit-details-marker{display:none}.case-toc summary span{font-size:1rem}.case-toc[open] summary span{transform:rotate(180deg)}.case-toc ol{padding-block:.5rem;list-style:none}.case-toc a{color:var(--muted);padding-block:.6rem;padding-left:.75rem;font-size:.75rem;line-height:1.6;display:block;position:relative}.case-toc a:hover,.case-toc a[aria-current=location]{color:var(--accent)}.case-toc a[aria-current=location]{font-weight:600}.case-toc a[aria-current=location]:before{content:"";background:var(--accent);width:1px;position:absolute;top:.7rem;bottom:.7rem;left:0}.case-next{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:2rem;padding-top:2rem;display:flex}.next-project{flex-direction:column;gap:.5rem;min-height:44px;display:flex}.next-project>span:last-child{font-size:1rem}.next-project [aria-hidden]{color:var(--accent);margin-left:.75rem}.not-found{min-height:65vh;padding-block:5rem}.not-found h1{margin-block:1rem;font-size:clamp(2rem,6vw,3.5rem)}.not-found>p:not(.eyebrow){color:var(--muted);margin-bottom:2rem}@media (width>=640px){.page-shell{width:min(100% - 5rem,1200px)}.project-card-link{padding:1.75rem}.case-hero{padding-block:2.5rem 3.5rem}.case-reading{padding-top:3.5rem}.brand-name{font-size:.8125rem}}@media (width>=1024px){.page-shell{width:min(100% - 7rem,1200px)}.home-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);align-items:start;gap:4rem;display:grid}.profile-header{flex-direction:column;justify-content:space-between;min-height:min(100svh,900px);padding-block:5rem;display:flex;position:sticky;top:0}.profile-name{max-width:12ch;font-size:clamp(2.5rem,3.6vw,3.25rem)}.profile-intro{font-size:.9375rem}.home-content{padding-top:5rem}.home-section+.home-section{margin-top:5rem}.section-nav--mobile{display:none}.section-nav--desktop{margin-top:2rem;display:block}.section-nav--desktop a{gap:1rem;width:fit-content}.section-nav--desktop a:before{content:"";background:#64748b;width:24px;height:1px;transition:width .16s,background .16s}.section-nav--desktop a[aria-current]:before,.section-nav--desktop a:hover:before{background:var(--accent);width:48px}.profile-actions{margin-top:2rem}.case-reading--with-toc{grid-template-columns:200px minmax(0,1fr);gap:3.5rem}.case-sidebar{align-self:start;position:sticky;top:7rem}.case-toc{border:none;border-left:1px solid var(--border);border-radius:0;padding-inline:1.25rem 0}.case-toc--compact{display:none}.case-toc--desktop{display:block}.case-next{margin-top:3rem}}@media (height<=650px){.profile-header{min-height:auto;position:static}.section-nav--mobile,.site-header,.case-sidebar{position:static}}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@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}
