:root{color-scheme:light dark;--bg:#ffffff;--text:#1d1d1f;--text-muted:#6e6e73;--border:rgba(0,0,0,0.08);--nav-bg:rgba(255,255,255,0.72)}@media (prefers-color-scheme:dark){:root{--bg:#000000;--text:#f5f5f7;--text-muted:#98989d;--border:rgba(255,255,255,0.08);--nav-bg:rgba(0,0,0,0.72)}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.site-main{padding-top:0}.page-transition{animation:pageEnter .36s cubic-bezier(.25,.46,.45,.94);will-change:opacity,transform}@keyframes pageEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.page-transition{animation:none}}.site-footer{border-top:1px solid var(--border);color:var(--text-muted);text-align:center;font-size:12px;letter-spacing:.04em;padding:26px 20px 30px}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:1100;display:flex;align-items:center;justify-content:space-between;height:52px;padding:0 20px;background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.nav-logo{font-size:1.15rem;letter-spacing:.01em}.nav-links{display:flex;align-items:center;gap:18px}.nav-link{opacity:.45;font-size:1rem;letter-spacing:.02em;transition:opacity .2s cubic-bezier(.25,.46,.45,.94)}.nav-link.active,.nav-link:hover{opacity:1}@media (max-width:600px){.nav{justify-content:center}.nav-logo{display:none}.nav-links{width:100%;justify-content:center}}.home-grid{display:grid;grid-gap:3px;gap:3px}.home-banner{display:grid;grid-template-columns:1fr;grid-gap:3px;gap:3px}.home-tiles{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:3px;gap:3px}.photo-cell{position:relative;overflow:hidden;cursor:pointer;background:#111;border:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.home-banner .photo-cell,.home-tiles .photo-cell{aspect-ratio:3/2}.photo-image{transition:transform .5s cubic-bezier(.25,.46,.45,.94)}.photo-cell:hover .photo-image{transform:scale(1.03)}@media (max-width:1024px){.home-tiles{grid-template-columns:repeat(2,1fr)}}.lightbox-overlay{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;background:rgba(0,0,0,.3);overflow:hidden;isolation:isolate;animation:fadeIn .28s ease-out}.lightbox-overlay:before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.45);-webkit-backdrop-filter:blur(30px);backdrop-filter:blur(30px);z-index:1;pointer-events:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes photoIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.lightbox-image-wrap{position:relative;width:min(92vw,1600px);height:min(88vh,1060px);z-index:4}.lightbox-main-image{width:100%;height:100%;display:block;object-fit:contain;filter:none;-webkit-backdrop-filter:none;backdrop-filter:none;animation:photoIn .32s cubic-bezier(.25,.46,.45,.94)}.lightbox-close{position:absolute;border:0;background:transparent;color:#fff;font-size:2rem;width:48px;height:48px;cursor:pointer;opacity:.5;transition:opacity .25s cubic-bezier(.25,.46,.45,.94);z-index:5}.lightbox-close:hover{opacity:1}.lightbox-close{top:12px;right:12px;font-size:2.2rem;line-height:1}.lightbox-hit{position:absolute;top:0;bottom:0;z-index:3;border:0;background:transparent;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.lightbox-hit.left{left:0;width:33.333%}.lightbox-hit.center{left:33.333%;width:33.333%}.lightbox-hit.right{right:0;width:33.333%}.lightbox-counter{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);color:rgba(255,255,255,.68);font-size:12px;letter-spacing:.04em;z-index:5}.masonry{column-count:4;column-gap:3px}.masonry-item{page-break-inside:avoid;break-inside:avoid;margin-bottom:3px;overflow:hidden;cursor:pointer}.masonry-item img{transition:opacity .25s cubic-bezier(.25,.46,.45,.94)}.masonry-item:hover img{opacity:.85}@media (max-width:1024px) and (min-width:768px){.masonry{column-count:3}}@media (max-width:767px){.masonry{column-count:2}}.contact-page{max-width:560px;margin:0 auto;padding:80px 24px}.contact-page h1{margin:0;font-size:clamp(2rem,5vw,2.5rem);font-weight:200;letter-spacing:.01em}.contact-page p{margin:20px 0 44px;color:var(--text-muted);font-size:15px;line-height:1.75}.contact-list{margin:0;padding:0;border-top:1px solid var(--border)}.contact-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--border)}.contact-row dt{margin:0;text-transform:uppercase;font-size:11px;letter-spacing:.1em;color:var(--text-muted)}.contact-row dd{margin:0;text-align:right}.contact-row a{opacity:.88;transition:opacity .2s cubic-bezier(.25,.46,.45,.94)}.contact-row a:hover{opacity:1}.socials-dropdown{position:relative;display:inline-block;z-index:8}.socials-trigger{border:0;background:transparent;color:var(--text);font:inherit;cursor:pointer;padding:0;opacity:.88;transition:opacity .2s cubic-bezier(.25,.46,.45,.94)}.socials-trigger:hover{opacity:1}.socials-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:140px;border:1px solid var(--border);border-radius:10px;background:var(--nav-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);padding:6px;display:grid;grid-gap:2px;gap:2px;z-index:5;opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .2s cubic-bezier(.25,.46,.45,.94),transform .2s cubic-bezier(.25,.46,.45,.94)}.socials-dropdown.open .socials-menu{opacity:1;transform:translateY(0);pointer-events:auto}.socials-menu a{display:block;border-radius:6px;padding:7px 10px;text-align:left}.socials-menu a:hover{background:rgba(127,127,127,.12)}.socials-backdrop{position:fixed;inset:0;border:0;background:transparent;opacity:0;pointer-events:none;transition:opacity .2s cubic-bezier(.25,.46,.45,.94)}.socials-backdrop.open{opacity:1;pointer-events:auto;z-index:4}.resume-link{display:inline-block;margin-top:34px;border:1px solid var(--border);border-radius:999px;padding:8px 14px;font-size:13px;color:var(--text-muted);transition:color .25s cubic-bezier(.25,.46,.45,.94),border-color .25s cubic-bezier(.25,.46,.45,.94),opacity .25s cubic-bezier(.25,.46,.45,.94)}.resume-link:hover{color:var(--text);opacity:1}.resume-page{max-width:980px;margin:0 auto;padding:72px 24px 96px}.resume-header{padding-bottom:28px;border-bottom:1px solid var(--border)}.resume-kicker{margin:0 0 10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.14em;font-size:11px}.resume-header h1{margin:0;font-size:clamp(2.2rem,5vw,3rem);font-weight:300;letter-spacing:.01em}.resume-meta{margin:12px 0 0;color:var(--text-muted);font-size:14px}.resume-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);grid-gap:28px;gap:28px;margin-top:28px}.resume-section{border:1px solid var(--border);border-radius:16px;padding:22px}.resume-section h2{margin:0 0 18px;text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--text-muted)}.resume-timeline{margin:0;padding:0;list-style:none}.resume-timeline li{padding:0 0 16px;margin-bottom:16px;border-bottom:1px solid var(--border)}.resume-timeline li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}.resume-timeline-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.resume-timeline-head h3{margin:0;font-size:1rem;font-weight:500}.resume-timeline-head span{color:var(--text-muted);font-size:12px;letter-spacing:.03em;text-align:right}.resume-timeline p{margin:8px 0 0;color:var(--text-muted);font-size:14px}.resume-company{margin:8px 0 0;color:var(--text);font-size:14px;font-weight:500}.resume-description{margin:8px 0 0;color:var(--text-muted);font-size:14px;line-height:1.55}.resume-skills{margin:0;padding:0;list-style:none;display:grid;grid-gap:8px;gap:8px}.resume-skills li{padding:8px 10px;border:1px solid var(--border);border-radius:999px;width:-moz-fit-content;width:fit-content;font-size:13px}.resume-award{margin:0;line-height:1.6;color:var(--text-muted)}.resume-actions{display:flex;align-items:center}@media (max-width:900px){.resume-grid{grid-template-columns:1fr}}@media (max-width:640px){.resume-page{padding:56px 18px 72px}.resume-section{padding:18px}.resume-timeline-head{flex-direction:column;align-items:flex-start;gap:6px}.resume-timeline-head span{text-align:left}}