@import"https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Open+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";:root{--font-heading: "Bebas Neue", "Impact", sans-serif;--font-body: "Open Sans", -apple-system, sans-serif;--font-mono: "JetBrains Mono", monospace;--color-bg: #4A4A42;--color-stamp: #E8DCC8;--color-stamp-alt: #D4C9A8;--color-teal: #2C4A52;--color-teal-light: #5B8A8A;--color-red: #C45C48;--color-red-soft: rgba(196, 92, 72, .15);--color-sage: #7A8C6E;--color-text: #2A2A25;--color-text-light: #E8DCC8;--color-text-secondary: #6B6558;--color-text-faded: #8A8272;--color-border: #C4B99A;--color-border-light: #D8CCAF;--color-card-shadow: rgba(0, 0, 0, .35);--max-width: 72rem;--perf-r: 7px;--perf-d: 16px;--airmail: repeating-linear-gradient( -45deg, var(--color-red), var(--color-red) 8px, var(--color-stamp) 8px, var(--color-stamp) 16px, var(--color-teal) 16px, var(--color-teal) 24px, var(--color-stamp) 24px, var(--color-stamp) 32px )}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body{width:100%;margin:0;padding:0}body{color:var(--color-text-light);font-family:var(--font-body);font-size:16px;line-height:1.75;background-color:var(--color-bg);-webkit-font-smoothing:antialiased;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");perspective:1200px}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.1;font-weight:400;margin:0;text-transform:uppercase;letter-spacing:.06em}h1{font-size:3rem}h2{font-size:2rem;margin-top:0;margin-bottom:1.25rem}h3{font-size:1.4rem}p{margin:0 0 1em}a{color:var(--color-teal-light);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-red)}.stamp a{color:var(--color-teal)}.stamp a:hover{color:var(--color-red)}hr{border:none;height:1px;background:var(--color-border);margin:1.5rem 0}img,picture{margin:0;max-width:100%}blockquote{padding:1rem 1.25rem;margin:1.5rem 0;color:var(--color-text-secondary);border-left:3px solid var(--color-red);background:#c45c480f;font-style:italic}blockquote p{margin:0}code{font-family:var(--font-mono);font-size:.88em;padding:2px 6px;background:#2c4a5214;border-radius:2px}pre{font-family:var(--font-mono);font-size:.88em;padding:1.25rem;overflow:auto;max-height:40em;border:1px solid var(--color-border);background:var(--color-stamp);color:var(--color-text)}pre code{padding:0;background:none}strong{font-weight:700}em{font-style:italic}ul,ol{margin:0 0 1rem;padding-left:1.5em;list-style-type:disc}li{margin-bottom:.3em}.container{max-width:var(--max-width);margin:0 auto;padding:4rem 2rem 6rem}.site-header{position:sticky;top:0;z-index:100;background:var(--color-teal);box-shadow:0 2px 12px #0000004d}.airmail-stripe{height:8px;background:var(--airmail)}.navbar{min-height:48px}.nav-container{display:flex;align-items:center;justify-content:space-between;max-width:var(--max-width);margin:0 auto;padding:.6rem 2rem}.nav-brand{text-decoration:none;color:var(--color-stamp);display:flex;align-items:baseline;gap:.75rem}.nav-brand h1{font-family:var(--font-heading);font-size:1.4rem;font-weight:400;margin:0;letter-spacing:.1em;text-transform:uppercase;color:var(--color-stamp)}.nav-postal-label{font-family:var(--font-mono);font-size:.55rem;color:var(--color-teal-light);letter-spacing:.15em;text-transform:uppercase;opacity:.7}.nav-links{display:flex;gap:.15rem}.nav-link{color:var(--color-stamp-alt);padding:.35rem .9rem;font-family:var(--font-heading);font-size:1rem;letter-spacing:.08em;text-transform:uppercase;transition:all .2s ease}.nav-link:hover{color:var(--color-stamp);background:#e8dcc81a}.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:.5em;flex-direction:column;gap:5px}.toggle-bar{display:block;width:20px;height:2px;background-color:var(--color-stamp);border-radius:1px}@media(max-width:640px){.nav-toggle{display:flex}.nav-links{display:none;flex-direction:column;position:absolute;top:56px;right:1rem;background:var(--color-teal);border:1px solid rgba(232,220,200,.15);padding:.5rem;box-shadow:0 4px 20px #0006;z-index:50}.nav-links.open{display:flex}}.stamp{color:var(--color-text);padding:2.5rem 3rem;margin-bottom:2.5rem;position:relative;box-shadow:0 4px 20px var(--color-card-shadow);background-color:var(--color-stamp);background-image:radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0);background-size:var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d);background-position:calc(var(--perf-d) / 2) calc(var(--perf-r) * -1),calc(var(--perf-d) / 2) calc(100% + var(--perf-r)),calc(var(--perf-r) * -1) calc(var(--perf-d) / 2),calc(100% + var(--perf-r)) calc(var(--perf-d) / 2);background-repeat:repeat-x,repeat-x,repeat-y,repeat-y}.stamp-inner{border:2px solid var(--color-border);padding:1.75rem 2.5rem;position:relative;max-width:100%;margin:0 auto}.postal-label{font-family:var(--font-mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--color-text-faded);position:absolute;top:-.4rem;left:1.5rem;background:var(--color-stamp);padding:0 .5rem}.stamp-value{position:absolute;top:.75rem;right:1rem;font-family:var(--font-heading);font-size:1.6rem;color:var(--color-red);letter-spacing:.02em;line-height:1}.stamp-value small{font-size:.5em;vertical-align:super}@keyframes stamp-enter{0%{opacity:.2;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@supports (animation-timeline: view()){.stamp{animation:stamp-enter linear forwards;animation-timeline:view();animation-range:entry 0% entry 35%}.stamp:nth-child(2n){animation-range:entry 5% entry 40%}}@supports not (animation-timeline: view()){.stamp{opacity:.2;transform:translateY(40px);transition:opacity .7s ease,transform .7s cubic-bezier(.25,.46,.45,.94)}.stamp.stamp--visible{opacity:1;transform:translateY(0)}}@media(max-width:640px){.stamp{padding:1.5rem 1.25rem}.stamp-inner{padding:1.25rem 1rem}}.section-heading{font-family:var(--font-heading);font-size:2rem;letter-spacing:.1em;text-transform:uppercase;color:var(--color-teal);margin-bottom:1.5rem;display:flex;align-items:baseline;gap:.75rem}.section-heading:after{content:"";flex:1;height:1px;background:var(--color-border)}.postcard-hero{color:var(--color-text);position:relative;box-shadow:0 6px 32px var(--color-card-shadow);background-color:var(--color-stamp);min-height:100svh;display:flex;flex-direction:column;background-image:radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0),radial-gradient(circle,var(--color-bg) var(--perf-r),transparent 0);background-size:var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d),var(--perf-d) var(--perf-d);background-position:calc(var(--perf-d) / 2) calc(var(--perf-r) * -1),calc(var(--perf-d) / 2) calc(100% + var(--perf-r)),calc(var(--perf-r) * -1) calc(var(--perf-d) / 2),calc(100% + var(--perf-r)) calc(var(--perf-d) / 2);background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;animation:stamp-enter .8s cubic-bezier(.25,.46,.45,.94) both}.postcard-hero:before,.postcard-hero:after{content:"";position:absolute;top:0;bottom:0;width:10px;z-index:2;background:var(--airmail)}.postcard-hero:before{left:0}.postcard-hero:after{right:0}.postcard-airmail-edge{height:10px;background:var(--airmail)}.postcard-grid{display:grid;grid-template-columns:3fr auto 2fr;flex:1;padding:2.5rem 3rem;max-width:80rem;margin:0 auto;width:100%}.postcard-message{padding:1.5rem 2.5rem 1.5rem 1rem;display:flex;flex-direction:column;justify-content:center;background-image:repeating-linear-gradient(to bottom,transparent,transparent calc(2rem - 1px),rgba(196,92,72,.12) calc(2rem - 1px),rgba(196,92,72,.12) 2rem);background-size:100% 2rem;background-position:0 1.5rem}.postcard-greeting{font-family:var(--font-mono);font-size:.85rem;color:var(--color-text-faded);letter-spacing:.05em;font-style:italic;margin-bottom:.75rem}.postcard-name{font-family:var(--font-heading);font-size:3.5rem;letter-spacing:.08em;color:var(--color-teal);line-height:1;margin-bottom:.15rem}.postcard-country{font-family:var(--font-heading);font-size:1.3rem;letter-spacing:.15em;color:var(--color-red);margin-bottom:.75rem}.postcard-title{font-family:var(--font-mono);font-size:.8rem;color:var(--color-teal-light);font-weight:600;margin-bottom:.75rem;letter-spacing:.03em;text-transform:none}.postcard-bio{color:var(--color-text-secondary);font-size:.92rem;line-height:1.75;max-width:36rem}.postcard-bio strong{color:var(--color-text)}.postcard-socials{display:flex;gap:1rem;margin-top:1.25rem}.postcard-socials a{color:var(--color-teal);transition:color .2s ease,transform .2s ease;display:flex}.postcard-socials a:hover{color:var(--color-red);transform:translateY(-2px)}.postcard-divider{width:2px;background:var(--color-red);opacity:.5;margin:1rem 0}.postcard-address-side{padding:1.5rem 1rem 1.5rem 2.5rem;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start}.postcard-address-side .stamp-avatar-frame{align-self:flex-end}.postcard-address{display:flex;flex-direction:column;gap:.25rem;margin-top:1.5rem}.postcard-address-label{font-family:var(--font-heading);font-size:1rem;letter-spacing:.15em;color:var(--color-text-faded);text-transform:uppercase}.postcard-address-line{font-family:var(--font-mono);font-size:.95rem;color:var(--color-text);letter-spacing:.03em}.postcard-airmail-label{margin-top:auto;border:2px solid var(--color-red);padding:.4rem 1.25rem;text-align:center;align-self:flex-end}.postcard-airmail-label span{display:block;font-family:var(--font-heading);font-size:1.1rem;letter-spacing:.2em;color:var(--color-red);text-transform:uppercase}.postcard-airmail-sub{font-size:.65rem!important;letter-spacing:.15em!important;color:var(--color-text-faded)!important;margin-top:.1rem}.stamp-avatar-frame{--s-perf-r: 5px;--s-perf-d: 12px;flex-shrink:0;position:relative;padding:14px;background-color:var(--color-stamp-alt);transform:rotate(3deg);box-shadow:2px 3px 12px #00000040;background-image:radial-gradient(circle,var(--color-stamp) var(--s-perf-r),transparent 0),radial-gradient(circle,var(--color-stamp) var(--s-perf-r),transparent 0),radial-gradient(circle,var(--color-stamp) var(--s-perf-r),transparent 0),radial-gradient(circle,var(--color-stamp) var(--s-perf-r),transparent 0);background-size:var(--s-perf-d) var(--s-perf-d),var(--s-perf-d) var(--s-perf-d),var(--s-perf-d) var(--s-perf-d),var(--s-perf-d) var(--s-perf-d);background-position:calc(var(--s-perf-d) / 2) calc(var(--s-perf-r) * -1),calc(var(--s-perf-d) / 2) calc(100% + var(--s-perf-r)),calc(var(--s-perf-r) * -1) calc(var(--s-perf-d) / 2),calc(100% + var(--s-perf-r)) calc(var(--s-perf-d) / 2);background-repeat:repeat-x,repeat-x,repeat-y,repeat-y}.hero-avatar{width:160px;height:180px;object-fit:cover;border:2px solid var(--color-teal);display:block}.postmark{position:absolute;top:-16px;right:-20px;width:80px;height:80px;border:2.5px solid rgba(196,92,72,.5);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;transform:rotate(-18deg);pointer-events:none;z-index:2}.postmark:before{content:"";position:absolute;inset:5px;border:1.5px solid rgba(196,92,72,.3);border-radius:50%}.postmark:after{content:"";position:absolute;right:-35px;top:50%;width:40px;height:24px;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(196,92,72,.3) 3px,rgba(196,92,72,.3) 5px);transform:translateY(-50%)}.postmark-text{font-family:var(--font-heading);font-size:.65rem;letter-spacing:.15em;color:#c45c4899;text-transform:uppercase}.postmark-year{font-family:var(--font-heading);font-size:.85rem;color:#c45c4899}@media(max-width:1024px)and (min-width:641px){.postcard-hero{min-height:calc(100svh - 56px)}.postcard-grid{grid-template-columns:1fr auto 1fr;padding:2rem}.postcard-name{font-size:2.8rem}}@media(max-width:640px){.postcard-hero{min-height:auto}.postcard-grid{grid-template-columns:1fr;padding:1.5rem 1.25rem}.postcard-message{padding:1rem 0;text-align:center;background-image:none}.postcard-name{font-size:2.5rem}.postcard-bio{max-width:100%}.postcard-socials{justify-content:center}.postcard-divider{width:100%;height:2px;margin:.5rem 0}.postcard-address-side{padding:1rem 0;align-items:center}.postcard-address-side .stamp-avatar-frame{align-self:center}.postcard-address{align-items:center}.postcard-airmail-label{align-self:center}.hero-avatar{width:130px;height:150px}}.timeline{display:flex;flex-direction:column;gap:1.25rem}.exp-flip{perspective:1000px;height:auto}.exp-flip-inner{position:relative;transition:transform .6s cubic-bezier(.25,.46,.45,.94);transform-style:preserve-3d}.exp-flip:hover .exp-flip-inner{transform:rotateY(180deg)}.exp-front,.exp-back{backface-visibility:hidden}.exp-back{position:absolute;inset:0;transform:rotateY(180deg);background:var(--color-stamp-alt);border:2px solid var(--color-border);padding:1.5rem;display:flex;flex-direction:column;justify-content:center;background-image:linear-gradient(var(--color-border) 1px,transparent 1px),linear-gradient(90deg,transparent 49.8%,var(--color-red) 49.8%,var(--color-red) 50.2%,transparent 50.2%);background-size:100% 2rem,100% 100%;background-position:0 3rem,0 0}.exp-back-content{background:var(--color-stamp-alt);padding:.75rem;text-align:center}.exp-back-company{font-family:var(--font-heading);font-size:1.8rem;color:var(--color-teal);letter-spacing:.1em}.exp-back-role{font-family:var(--font-mono);font-size:.7rem;color:var(--color-text-faded);letter-spacing:.1em;text-transform:uppercase}.exp-back-hint{font-family:var(--font-mono);font-size:.6rem;color:var(--color-text-faded);position:absolute;bottom:.75rem;right:1rem;letter-spacing:.05em}.exp-card{background:var(--color-stamp);border:2px solid var(--color-border);padding:1.25rem 1.5rem;position:relative;transition:box-shadow .3s ease}.exp-card:hover{box-shadow:0 4px 16px #00000026}.exp-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--color-teal)}.exp-card:first-child:before{background:var(--color-red)}.exp-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.25rem;flex-wrap:wrap;gap:.5rem}.exp-company{font-family:var(--font-heading);font-size:1.3rem;letter-spacing:.08em;color:var(--color-teal);text-transform:uppercase}.exp-role{color:var(--color-text-secondary);font-size:.85rem}.exp-date{font-family:var(--font-heading);font-size:1rem;color:var(--color-red);white-space:nowrap;letter-spacing:.05em}.exp-details{margin-top:.75rem;padding-left:1.25em;color:var(--color-text-secondary);font-size:.88rem;line-height:1.75}.exp-details li{margin-bottom:.35em}.exp-details strong{color:var(--color-text)}.exp-flip-hint{font-family:var(--font-mono);font-size:.55rem;color:var(--color-text-faded);letter-spacing:.1em;text-transform:uppercase;position:absolute;bottom:.5rem;right:.75rem;opacity:0;transition:opacity .3s ease}.exp-flip:hover .exp-flip-hint{opacity:1}.skills-section{margin-top:0}.skill-category{margin-bottom:1.25rem}.skill-label{font-family:var(--font-heading);font-size:1rem;letter-spacing:.12em;color:var(--color-teal);text-transform:uppercase;margin-bottom:.5rem}.skill-tags{display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag{font-family:var(--font-body);font-size:.78rem;font-weight:600;padding:.3rem .75rem;border:2px solid;position:relative;transition:transform .2s ease,box-shadow .2s ease;cursor:default}.skill-tag:hover{transform:rotate(-3deg) scale(1.08);box-shadow:0 2px 8px #0000001a}.skill-category:nth-child(odd) .skill-tag{transform:rotate(-.8deg)}.skill-category:nth-child(2n) .skill-tag{transform:rotate(.6deg)}.skill-category:nth-child(5n+1) .skill-tag{background:var(--color-teal);color:var(--color-stamp);border-color:var(--color-teal)}.skill-category:nth-child(5n+2) .skill-tag{background:transparent;color:var(--color-red);border-color:var(--color-red)}.skill-category:nth-child(5n+3) .skill-tag{background:var(--color-sage);color:#fff;border-color:var(--color-sage)}.skill-category:nth-child(5n+4) .skill-tag{background:transparent;color:var(--color-teal);border-color:var(--color-teal)}.skill-category:nth-child(5n+5) .skill-tag{background:var(--color-red);color:var(--color-stamp);border-color:var(--color-red)}.paper-item{border:1px solid var(--color-border);padding:1.25rem 1.5rem;margin-bottom:.75rem;font-size:.9rem;line-height:1.75;background:var(--color-stamp)}.paper-venue{display:inline-block;font-family:var(--font-heading);font-size:.85rem;color:var(--color-stamp);background:var(--color-red);padding:.1rem .75rem;letter-spacing:.08em;margin-top:.25rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.project-card{background:var(--color-stamp);border:2px solid var(--color-teal);padding:1.5rem;transition:transform .3s ease,box-shadow .3s ease}.project-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #00000026}.project-card h3{font-family:var(--font-heading);margin-bottom:.5rem;font-size:1.3rem;letter-spacing:.08em}.project-card h3 a{color:var(--color-teal)}.project-card h3 a:hover{color:var(--color-red)}.project-card p{color:var(--color-text-secondary);font-size:.88rem;margin:0;line-height:1.65}.awards-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.75rem;list-style:none;padding:0}.award-item{background:var(--color-stamp);border:2px solid var(--color-border);padding:.85rem 1rem;font-size:.88rem;transition:transform .2s ease}.award-item:hover{transform:translateY(-2px)}.award-item strong{font-family:var(--font-heading);font-size:1rem;color:var(--color-red);letter-spacing:.05em;display:block;text-transform:uppercase}.post-list{display:flex;flex-direction:column;gap:0}.post-item{display:flex;align-items:baseline;gap:1.5rem;padding:.65rem .75rem;border-bottom:1px solid rgba(232,220,200,.15);transition:all .2s ease;color:var(--color-text-light)}.stamp .post-item{color:var(--color-text);border-bottom-color:var(--color-border-light)}.post-item:hover{background:#c45c480f;padding-left:1.25rem}.post-item .date-label{font-family:var(--font-mono);font-size:.72rem;color:var(--color-text-faded);white-space:nowrap;min-width:6rem}.post-item .article-title a{color:var(--color-text);font-weight:500}.post-item .article-title a:hover{color:var(--color-red)}.post-meta{font-family:var(--font-mono);color:var(--color-text-faded);font-size:.82rem;margin-bottom:.5rem}.post-title{font-family:var(--font-heading);font-size:2.5rem;color:var(--color-teal);margin-bottom:2rem;letter-spacing:.06em}.post-content{font-size:1.05rem;line-height:1.9;color:var(--color-text)}.post-content a{color:var(--color-teal);font-weight:600;text-decoration:underline;text-decoration-color:#2c4a524d;text-underline-offset:3px}.post-content a:hover{color:var(--color-red);text-decoration-color:var(--color-red)}.page-title{font-family:var(--font-heading);font-size:3rem;color:var(--color-stamp);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.15rem}.page-subtitle{font-family:var(--font-mono);font-size:.6rem;color:var(--color-teal-light);letter-spacing:.25em;text-transform:uppercase;display:block;margin-bottom:1.75rem;opacity:.6}.about-content{font-size:1rem;line-height:1.85}.about-content a{font-weight:600}.skills-table{width:100%;border-collapse:collapse;margin:1rem 0 1.5rem}.skills-table td{padding:.6rem 1rem;border-bottom:1px solid var(--color-border-light);vertical-align:top;font-size:.9rem}.skills-table td:first-child{font-family:var(--font-heading);font-size:1rem;color:var(--color-teal);width:150px;white-space:nowrap;letter-spacing:.08em;text-transform:uppercase}.resume-link{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.resume-link a{display:inline-flex;align-items:center;gap:.5rem;padding:.6rem 1.75rem;background:var(--color-red);color:var(--color-stamp);font-family:var(--font-heading);font-size:1.1rem;letter-spacing:.1em;text-transform:uppercase;transition:all .2s ease}.resume-link a:hover{background:#b04e3c;color:var(--color-stamp);transform:translateY(-2px);box-shadow:0 4px 12px #c45c484d}.footer{background:var(--color-teal);padding:0;position:relative}.footer-airmail{height:8px;background:var(--airmail)}.footer-container{display:flex;align-items:center;justify-content:center;padding:1.5rem 2rem;flex-direction:column;gap:.5rem}.footer-label{font-family:var(--font-mono);font-size:.55rem;color:var(--color-teal-light);letter-spacing:.2em;text-transform:uppercase;opacity:.5}.site-footer{list-style:none;margin:0;padding:0;display:flex;gap:1.25rem;align-items:center}.site-footer li{display:inline}.site-footer a{color:var(--color-stamp-alt);transition:all .2s ease;display:flex}.site-footer a:hover{color:var(--color-stamp);transform:translateY(-2px)}.photo-gallery{padding-bottom:2rem}.photo-gallery .row{display:flex;flex-wrap:wrap;padding:0 4px}.photo-gallery .column{flex:25%;max-width:25%;padding:0 4px}.photo-gallery .column img{margin-top:8px;vertical-align:middle;width:100%;cursor:pointer;transition:all .4s cubic-bezier(.25,.46,.45,.94);border:3px solid transparent}.photo-gallery .column img:hover{border-color:var(--color-red);box-shadow:0 4px 16px #c45c4840;transform:scale(1.02)}.photo-gallery .pano{margin-top:10px;margin-left:4px;margin-right:4px;width:calc(100% - 8px);cursor:pointer;transition:all .4s ease;border:3px solid transparent}.photo-gallery .pano:hover{border-color:var(--color-red);box-shadow:0 4px 16px #c45c4840}@media screen and (max-width:800px){.photo-gallery .column{flex:50%;max-width:50%}}@media screen and (max-width:600px){.photo-gallery .column{flex:100%;max-width:100%}}.lightbox{display:none;position:fixed;inset:0;background:#2a2a25f5;z-index:1000;align-items:center;justify-content:center;cursor:pointer;padding:2rem;backdrop-filter:blur(8px)}.lightbox.active{display:flex}.lightbox img{max-width:90vw;max-height:90vh;object-fit:contain;border:4px solid var(--color-stamp);box-shadow:0 8px 40px #00000080}.astro-code{padding:1.25rem;margin:1.5rem 0;max-height:40em;overflow:auto;border:1px solid var(--color-border)}.edu-item{background:var(--color-stamp);border:2px solid var(--color-border);padding:1.25rem 1.5rem}.edu-item .exp-header{margin-bottom:0}.perf-separator{height:var(--perf-d);margin:1rem 0;background-image:radial-gradient(circle,var(--color-bg) calc(var(--perf-r) - .5px),var(--color-border) calc(var(--perf-r) - .5px),var(--color-border) calc(var(--perf-r) + .5px),transparent calc(var(--perf-r) + .5px));background-size:var(--perf-d) var(--perf-d)}.postcard-nav{display:flex;border-top:1px solid var(--color-border);background:var(--color-stamp-alt)}.postcard-nav-link{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem .75rem;text-decoration:none;transition:all .2s ease;position:relative}.postcard-nav-link+.postcard-nav-link{border-left:1px solid var(--color-border)}.postcard-nav-link:hover{background:var(--color-stamp)}.postcard-nav-label{font-family:var(--font-heading);font-size:1.15rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-teal);line-height:1}.postcard-nav-sub{font-family:var(--font-mono);font-size:.58rem;color:var(--color-text-faded);letter-spacing:.08em;margin-top:.3rem}@media(max-width:640px){.postcard-nav{flex-wrap:wrap}.postcard-nav-link{flex:1 1 50%;padding:.75rem .5rem}.postcard-nav-link:nth-child(3){border-left:none}.postcard-nav-link:nth-child(n+3){border-top:1px solid var(--color-border)}}.resume-download{text-align:center;padding:2rem 0}.resume-download-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;background:var(--color-red);color:var(--color-stamp);font-family:var(--font-heading);font-size:1.15rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;transition:all .2s ease}.resume-download-btn:hover{background:#b04e3c;color:var(--color-stamp);transform:translateY(-2px);box-shadow:0 4px 12px #c45c484d}@media(prefers-reduced-motion:reduce){.stamp,.postcard-hero{animation:none;opacity:1;transform:none}.exp-flip:hover .exp-flip-inner{transform:none}}
