:root{--lg-bg-color: rgba(255, 255, 255, .25);--lg-highlight: rgba(255, 255, 255, .75);--lg-text: #ffffff;--lg-red: #fb4268;--lg-grey: #444739}.container{display:flex;flex-direction:column;gap:1rem;flex-wrap:wrap;justify-content:center}.container--mobile{min-width:32rem}.container--small{max-width:10rem}.container--small svg{fill:#fff}.container--inline{display:flex;flex-direction:row;gap:1rem}.glass-container{position:relative;display:flex;align-items:center;background:transparent;border-radius:2rem;overflow:hidden;flex:1 1 auto;box-shadow:0 6px 6px #0003,0 0 20px #0000001a;color:var(--lg-text);transition:all .4s cubic-bezier(.175,.885,.32,2.2)}.glass-container--rounded{border-radius:999px}.glass-container--large,.glass-container--medium{flex:1 1 auto}.glass-container--small{flex:0 1 auto}.glass-filter,.glass-overlay,.glass-specular{position:absolute;inset:0;border-radius:inherit}.glass-filter{z-index:0;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);filter:url(#lensFilter) saturate(120%) brightness(1.15)}.glass-overlay{z-index:1;background:var(--lg-bg-color)}.glass-specular{z-index:2;box-shadow:inset 1px 1px 0 var(--lg-highlight),inset 0 0 5px var(--lg-highlight)}.glass-content{position:relative;z-index:3;display:flex;flex:1 1 auto;flex-direction:column-reverse;align-items:center;justify-content:space-around;padding:12px;gap:1rem;flex-wrap:wrap}.glass-content--alone{justify-content:center;padding:8px}@layer properties;.rounded-full{border-radius:calc(infinity * 1px)}.bg-transparent{background-color:transparent}@property --tw-translate-x{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-y{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-translate-z{syntax: "*"; inherits: false; initial-value: 0;}@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-border-style{syntax: "*"; inherits: false; initial-value: solid;}@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-duration{syntax: "*"; inherits: false;}@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,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-border-style: solid;--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-duration: initial}}}@layer properties;.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.absolute{position:absolute}.static{position:static}.top-1\/2{top:50%}.left-1\/2{left:50%}.z-10{z-index:10}.flex{display:flex}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, )}.cursor-pointer{cursor:pointer}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.rounded-full{border-radius:calc(infinity*1px)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-transparent{background-color:#0000}.object-cover{-o-object-fit:cover;object-fit:cover}.underline{text-decoration-line:underline}.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,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.duration-200{--tw-duration: .2s;transition-duration:.2s}.duration-300{--tw-duration: .3s;transition-duration:.3s}:root{color-scheme:light;--page-bg: #f8f9fb;--page-bg-alt: linear-gradient(160deg, #f8f9fb 0%, #e1ecf7 100%);--card-bg: rgba(255, 255, 255, .75);--card-border: #e1ecf7;--card-border-strong: #aecbeb;--accent: #83b0e1;--accent-strong: #71a5de;--accent-glow: rgba(131, 176, 225, .3);--text-high: #34495e;--text-mid: rgba(52, 73, 94, .75);--text-muted: rgba(52, 73, 94, .6);--surface: rgba(113, 165, 222, .1);--glass: rgba(225, 236, 247, .5);--radius-lg: 32px;--radius-md: 18px;--radius-sm: 10px;--max-width: min(1080px, calc(100% - 4rem) );font-family:Manrope,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size-adjust:.53;background:var(--page-bg-alt);color:var(--text-mid);line-height:1.6}html{scroll-behavior:smooth}*{margin:0;padding:0;box-sizing:border-box}a{color:inherit;text-decoration:none}a:hover,a:focus-visible{color:var(--text-high)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body{min-height:100vh;display:grid;place-items:stretch;background:var(--page-bg-alt);overflow-x:hidden}.page-shell{width:100%;display:grid;gap:8rem;padding-top:0;padding-bottom:6rem;padding-left:0;padding-right:0}.content-section{width:var(--max-width);margin:0 auto}.content-section{display:grid;gap:4rem}.content-section .section-header{display:grid;gap:1rem}.content-section .section-header .eyebrow{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600;padding-top:3rem}.content-section .section-header h2{font-size:clamp(2rem,3.6vw,2.8rem);line-height:1.2;color:var(--text-high)}.content-section .section-header .section-lede{max-width:52ch;color:var(--text-muted)}.content-section .card-grid{display:grid;gap:1.8rem;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.content-section .card-grid .project-card{display:grid;gap:1.1rem;padding:2rem;border-radius:var(--radius-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--shadow-card);transition:transform .2s ease,border .2s ease}.content-section .card-grid .project-card:hover,.content-section .card-grid .project-card:focus-within{transform:translateY(-6px);border-color:var(--card-border-strong)}.content-section .card-grid .project-card header{display:grid;gap:.25rem}.content-section .card-grid .project-card header .project-type{font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}.content-section .card-grid .project-card header h3{font-size:1.35rem;color:var(--text-high)}.content-section .card-grid .project-card .project-media{position:relative;border-radius:var(--radius-sm);overflow:hidden;background:#ffffff0a;border:1px solid hsla(0,0%,100%,.08);aspect-ratio:16/9;box-shadow:inset 0 0 0 1px #080c1c66}.content-section .card-grid .project-card .project-media img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block;filter:saturate(.85) contrast(1.05)}.content-section .card-grid .project-card .project-media:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(5,8,22,.35));pointer-events:none}.content-section .card-grid .project-card p{color:var(--text-mid);font-size:.98rem}.content-section .card-grid .project-card footer{margin-top:auto}.skill-card{position:relative;display:grid;gap:1.6rem;padding:2.4rem;border-radius:var(--radius-md);background:var(--card-bg);border:1px solid var(--card-border);overflow:hidden;transition:transform .22s ease,border .22s ease,box-shadow .22s ease}.skill-card:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(131,176,225,.08),transparent);opacity:0;transition:opacity .22s ease;pointer-events:none}.skill-card:hover,.skill-card:focus-within{transform:translateY(-6px);border-color:var(--card-border-strong)}.skill-card:hover:after,.skill-card:focus-within:after{opacity:1}.skill-card__header{display:flex;align-items:center;gap:1.2rem}.skill-card__heading{display:grid;gap:.35rem}.skill-card__icon{display:grid;place-items:center;width:3.1rem;height:3.1rem;border-radius:16px;background:linear-gradient(135deg,rgba(131,176,225,.25),transparent);border:1px solid rgba(131,176,225,.35);color:var(--accent);font-size:1.25rem}.skill-card__eyebrow{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600}.skill-card__title{font-size:clamp(1.6rem,2.8vw,2.1rem);color:var(--text-high);font-weight:700}.skill-card__lede{color:var(--text-mid)}.skill-card__list{list-style:none;display:grid;gap:1rem;margin:0;padding:0}.skill-card__item{display:flex;align-items:center;padding:.75rem 0}.skill-card__label{display:inline-flex;align-items:center;gap:.6rem;font-weight:600;color:var(--text-high)}.skill-card__label i{font-size:1.1rem;color:var(--accent)}.primary,.secondary,.button,.ghost{display:inline-flex;align-items:center;justify-content:center;padding:.87rem 1.9rem;border-radius:999px;font-weight:600;font-size:.95rem;transition:transform .15s ease,box-shadow .15s ease}.primary:hover,.primary:focus-visible,.secondary:hover,.secondary:focus-visible,.ghost:hover,.ghost:focus-visible{transform:translateY(-2px)}.primary{background:linear-gradient(120deg,var(--accent),var(--accent-strong));color:#fff;box-shadow:0 12px 24px #83b0e133}.primary:hover,.primary:focus-visible{box-shadow:0 16px 32px #83b0e147}.button{background:linear-gradient(120deg,var(--accent),var(--accent-strong));color:#fff;box-shadow:0 12px 24px #83b0e133}.button:hover,.button:focus-visible{box-shadow:0 16px 32px #83b0e147}.secondary{border:1px solid var(--accent);color:var(--text-high);background:#0000}.ghost{border:1px solid var(--accent-strong);font-size:.85rem;padding:.65rem 1.4rem;color:var(--text-high)}.ghost:hover,.ghost:focus-visible{border-color:var(--accent);color:var(--accent)}.icon-link{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:999px;border:1px solid #aecbeb;background:#fff;color:var(--text-high);transition:transform .15s ease,border .15s ease,color .15s ease,box-shadow .15s ease;min-width:44px;min-height:44px}.icon-link svg{width:1.35rem;height:1.35rem;fill:currentColor;display:block}.icon-link:hover,.icon-link:focus-visible{transform:translateY(-2px);border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 8px #83b0e114}.project-media img[data-modal]{cursor:pointer;transition:transform .2s ease,filter .2s ease}.project-media img[data-modal]:hover{transform:scale(1.02);filter:saturate(1) contrast(1.1)}@media (max-width: 768px){:root{--max-width: calc(100% - 2rem) }html{font-size:16px}body{font-size:1rem;-webkit-overflow-scrolling:touch;overflow-x:hidden}.page-shell{gap:6rem;padding-top:0;padding-left:0;padding-right:0}.content-section{width:100%;max-width:none;margin:0 auto;padding-left:1rem;padding-right:1rem}}@media (max-width: 768px){body,p,h1,h2,h3,h4,h5,h6,.hero-lede,.project-card p,.skill-card__lede,.site-footer,.section-header{text-align:center}.section-header .eyebrow,.section-header h2,.section-header .section-lede{margin-left:auto;margin-right:auto}.project-card header,.skill-card__header,.skill-card__heading{text-align:center;justify-content:center}.skill-card__header{flex-direction:column}.section-header .section-lede{font-size:.95rem;padding-bottom:2rem}.skills-grid{gap:1.5rem}.skill-card{padding:2rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}.about-content{display:grid;gap:1.5rem;max-width:65ch;margin-left:auto;margin-right:auto}.about-content p{color:var(--text-mid);font-size:1.05rem;line-height:1.7}.section-lede{max-width:65ch;margin-left:auto;margin-right:auto}.about-separator{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:2rem;margin-bottom:2rem}.about-separator:before,.about-separator:after{content:"";width:6px;height:6px;background-color:var(--text-mid);border-radius:50%;display:block}.about-separator{width:6px;height:6px;background-color:var(--text-mid);border-radius:50%;flex-shrink:0}@media (max-width: 768px){.about-content{padding-left:1rem;padding-right:1rem}.about-content p{font-size:.95rem}.section-lede{padding-left:1rem;padding-right:1rem}.section-lede{font-size:.95rem}.section-lede-left-aligned{text-align:left!important;margin-left:0!important;margin-right:auto!important}}.project-card footer a.hidden{display:none!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@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-duration{syntax:"*";inherits:false}@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,::backdrop{--tw-translate-x: 0;--tw-translate-y: 0;--tw-translate-z: 0;--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-border-style: solid;--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-duration: initial}}}
