@font-face{font-family:Outfit;src:url("assets/fonts/Outfit-VariableFont_wght.ttf") format("truetype");font-display:swap}
:root{--paper:#e3dedc;--ink:#282625;--red:#ec0606;--line:#c8c1bf}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Outfit,Arial,sans-serif;font-size:18px}.site-header{height:76px;position:sticky;top:0;z-index:10;background:rgba(227,222,220,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--red);display:flex;align-items:center;justify-content:center;padding:0 4vw}.site-header nav{display:flex;align-items:center;gap:22px}.site-header nav a{color:var(--red);text-decoration:none;font-size:1.08rem;font-weight:750;transition:color .18s}.site-header nav a.active{color:var(--ink)}.site-header nav span{width:7px;height:7px;background:var(--red);display:inline-block}.linkedin{position:absolute;right:4vw;width:34px;height:34px;display:grid;place-items:center;border:1.5px solid var(--red);border-radius:8px;color:var(--red);font-size:1.3rem;font-weight:850;line-height:1;text-decoration:none}.section{min-height:calc(100vh - 76px);padding:clamp(54px,8vw,120px) max(5vw,48px);scroll-margin-top:76px}.hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(370px,.92fr);align-items:center;gap:4vw;overflow:hidden;border-bottom:clamp(18px,3vw,40px) solid var(--red)}.hero-copy{max-width:760px}.hero h1{font-size:clamp(5.3rem,10vw,11rem);line-height:.78;letter-spacing:-.08em;margin:0 0 1.2rem;font-weight:850}.hero-copy p{max-width:675px;font-size:clamp(1rem,1.3vw,1.25rem);line-height:1.38;font-weight:510}.portrait-wrap{height:min(76vh,810px);min-height:515px;position:relative;align-self:end}.portrait-wrap img{position:absolute;width:100%;height:100%;bottom:0;right:0;z-index:2;object-fit:contain;object-position:center bottom;mix-blend-mode:multiply}.portrait-shape{position:absolute;width:49%;height:52%;top:21%;left:8%;background:var(--red)}.works-section,.about-section{border-bottom:clamp(18px,3vw,40px) solid var(--red)}.section-heading{display:flex;align-items:flex-end;gap:22px;margin:0 auto 48px;max-width:1400px}.quote-mark{font-family:Georgia,serif;font-size:11rem;line-height:.47;color:var(--red);font-weight:bold}.eyebrow{font-size:.83rem;letter-spacing:.15em;text-transform:uppercase;font-weight:750;color:var(--red);margin:0 0 .9rem}.section-heading h2{font-size:clamp(2.2rem,5vw,5rem);line-height:.9;letter-spacing:-.07em;margin:0}.works-grid{display:grid;grid-template-columns:repeat(3,300px);justify-content:center;gap:clamp(13px,2vw,28px);margin:auto}.work-card{border:0;padding:0;cursor:zoom-in;background:var(--ink);width:300px;height:300px;overflow:hidden;border-radius:18px;position:relative}.work-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.work-card::after{content:"↗";position:absolute;right:16px;bottom:16px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--red);color:#fff;font:500 1.7rem Outfit;opacity:0;transform:translateY(7px);transition:opacity .2s,transform .2s}.work-card:hover img{transform:scale(1.045)}.work-card:hover::after{opacity:1;transform:none}.photography-section{padding-bottom:120px}.photo-heading{margin-bottom:20px}.filters{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:-20px 0 36px}.filter{border:0;background:transparent;color:var(--red);font:750 1.1rem Outfit;cursor:pointer;padding:8px 15px;border-radius:999px}.filter.active,.filter:hover{background:var(--red);color:white}.photo-grid{column-count:5;column-gap:8px;max-width:1500px;margin:auto}.photo-card{break-inside:avoid;margin:0 0 8px;border:0;display:block;width:100%;padding:0;background:var(--ink);cursor:zoom-in;overflow:hidden}.photo-card img{width:100%;display:block;transition:transform .35s ease}.photo-card:hover img{transform:scale(1.035)}.cv-layout{max-width:1400px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:clamp(38px,7vw,105px)}.cv-column{min-width:0}.cv-experience{border-left:1px solid var(--line);padding-left:clamp(30px,5vw,72px)}.cv-column h2{margin:0 0 3rem;color:var(--red);font-size:clamp(2rem,3.1vw,3.25rem);line-height:1.05;letter-spacing:-.055em}.cv-subheading{font-size:clamp(1.55rem,2.35vw,2.25rem);font-weight:800;letter-spacing:-.055em;display:flex;align-items:center;gap:16px;margin:0 0 24px}.cv-subheading::after,.job h3::after{content:"";height:1px;background:var(--line);flex:1;min-width:20px}.software-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:28px 14px;margin:0 0 42px}.software-grid>div,.platform-grid>div{display:grid;justify-items:center;gap:8px;text-align:center}.software-grid b{display:grid;place-items:center;width:86px;max-width:100%;aspect-ratio:1;border:4px solid var(--ink);border-radius:16px;font-size:clamp(1.7rem,3vw,3.15rem);line-height:1}.software-grid small,.platform-grid small{font-size:.82rem;font-weight:750}.express-mark{font-size:2.6rem!important}.platform-grid{display:grid;grid-template-columns:repeat(2,136px);gap:8px;margin:0 0 42px}.platform-grid b{display:grid;place-items:center;width:88px;aspect-ratio:1;border:4px solid var(--ink);border-radius:50%;font-family:Georgia,serif;font-size:3.3rem;line-height:1}.platform-grid .contentful-mark{font-family:Outfit,sans-serif;font-size:3.8rem;border:0}.system-list{list-style:none;margin:0;padding:0;display:grid;gap:17px;font-size:1rem;line-height:1.28}.system-list li{position:relative;padding-left:16px}.system-list li::before{content:"";position:absolute;left:0;top:.47em;width:6px;height:6px;background:var(--red)}.job{margin:0 0 36px}.job h3{font-size:clamp(1.65rem,2.6vw,2.55rem);letter-spacing:-.055em;line-height:1.05;margin:0 0 7px;display:flex;gap:16px;align-items:center}.job h4{margin:0 0 20px;font-size:1.05rem;line-height:1.25}.job ul{margin:0 0 20px;padding:0;list-style:none;font-size:1rem;line-height:1.28}.job li{position:relative;padding-left:14px}.job li::before{content:"•";position:absolute;left:0}footer{background:var(--red);color:#fff;padding:30px 5vw;font-weight:750;display:flex;gap:13px;justify-content:center;align-items:center}footer i{width:7px;height:7px;background:#fff;display:inline-block}footer a{color:#fff;text-decoration:none}dialog{width:min(92vw,1350px);max-height:90vh;padding:25px 58px 40px;border:1px solid var(--red);border-radius:18px;background:var(--paper);color:var(--ink);overflow:visible}dialog::backdrop{background:rgba(20,18,18,.82)}dialog img{display:block;max-width:100%;max-height:72vh;margin:auto;object-fit:contain}.close,.previous,.next{position:absolute;border:0;background:var(--red);color:#fff;border-radius:50%;width:38px;height:38px;font:700 1.6rem Outfit;cursor:pointer}.close{right:-18px;top:-18px}.previous{left:8px;top:50%}.next{right:8px;top:50%}#lightbox-caption{text-align:center;margin:15px 0 0;font-weight:650;min-height:1.3em}@media(max-width:1040px){.works-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.work-card{width:100%;height:auto;aspect-ratio:1}}@media(max-width:760px){body{font-size:16px}.site-header{height:60px;justify-content:flex-start;padding-left:16px}.site-header nav{gap:12px}.site-header nav span{display:none}.site-header nav a{font-size:.72rem}.linkedin{right:16px;width:29px;height:29px;font-size:1rem}.section{padding:62px 20px;scroll-margin-top:60px}.hero{min-height:calc(100vh - 60px);grid-template-columns:1fr;padding-bottom:0;gap:0}.hero h1{font-size:5.3rem}.portrait-wrap{height:420px;min-height:0;margin-top:20px}.portrait-shape{left:10%;top:16%;width:65%;height:59%}.portrait-wrap img{right:0}.section-heading{margin-bottom:34px;gap:12px}.quote-mark{font-size:7rem}.works-grid{gap:10px}.work-card{border-radius:10px}.work-card::after{display:none}.photo-grid{column-count:2;column-gap:5px}.photo-card{margin-bottom:5px}.cv-layout{grid-template-columns:1fr;gap:48px}.cv-experience{border-left:0;border-top:1px solid var(--line);padding:48px 0 0}.cv-column h2{margin-bottom:2.2rem}.software-grid{gap:20px 10px}.software-grid b{border-width:3px;border-radius:12px}.platform-grid{grid-template-columns:repeat(2,1fr)}.job h3{gap:9px}.system-list,.job ul{font-size:.93rem}footer{flex-wrap:wrap;font-size:.85rem;gap:8px 10px;padding:22px 15px}dialog{padding:18px 36px 28px}.previous{left:-8px}.next{right:-8px}}
