@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/b886574ba42c3409-s.p.0n0by9e-ig5xq.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/c41ca59f1c34ba31-s.p.0xxb547n1hn74.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sora Fallback;src:local(Arial);ascent-override:85.29%;descent-override:25.5%;line-gap-override:0.0%;size-adjust:113.73%}.sora_fe310c4f-module__7A-jya__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_fe310c4f-module__7A-jya__variable{--font-sans:"Sora", "Sora Fallback"}
@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1e219c03c996efbd-s.0vlx5hthn2t7i.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.p.0fu677rwbv-.g.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/03bda585a99c6450-s.p.0zzh68k1~whtc.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_2c7a63df-module__83-5dq__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_2c7a63df-module__83-5dq__variable{--font-display:"Fraunces", "Fraunces Fallback"}
:root{--background:#f5f4ef;--surface:#fff;--surface-muted:#ebe9e1;--text-primary:#151515;--text-secondary:#686863;--border:#d9d8d1;--accent:#345c4a;--accent-soft:#dce6df;--selection:#345c4a;--selection-text:#fff;--header-bg:#f5f4efd6;--chip-bg:#ffffff6b;--tile-bg:#ffffff42;--shadow:#15151524;--max-width:1240px}@media (prefers-color-scheme:dark){:root{--background:#11110f;--surface:#191917;--surface-muted:#20201d;--text-primary:#f2f0ea;--text-secondary:#aaa69d;--border:#37352f;--accent:#8fb79f;--accent-soft:#d7e6da;--selection:#8fb79f;--selection-text:#10110f;--header-bg:#11110fd1;--chip-bg:#ffffff0f;--tile-bg:#ffffff09;--shadow:#00000061}}*{box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{background:var(--background);color:var(--text-primary);font-family:var(--font-sans), -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.5;overflow-x:clip}body,button{font:inherit}a{color:inherit;text-decoration:none}button{color:inherit}::selection{background:var(--selection);color:var(--selection-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.container{width:min(calc(100% - 40px), var(--max-width));margin:0 auto}.hero-copy,.hero-facts,.section-heading,.featured-project,.project-content,.work-tile,.timeline-item,.about-grid,.contact-grid,.contact-links,.footer-content{min-width:0}.site-header{z-index:20;padding:18px max(20px, calc((100% - var(--max-width)) / 2));background:var(--header-bg);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:24px;display:flex;position:sticky;top:0}.site-header.is-scrolled{border-color:var(--border)}.brand{letter-spacing:0;white-space:nowrap;min-width:0;font-size:15px;font-weight:650}.desktop-nav{color:var(--text-secondary);align-items:center;gap:24px;min-width:0;font-size:14px;display:flex}.desktop-nav a{padding-bottom:3px;transition:color .16s;position:relative}.desktop-nav a:after{content:"";background:var(--accent);height:1px;transition:right .22s cubic-bezier(.16,1,.3,1);position:absolute;bottom:0;left:0;right:100%}.desktop-nav a:hover,.desktop-nav a:focus-visible,.language-switch:hover,.language-switch:focus-visible{color:var(--text-primary)}.desktop-nav a:hover:after,.desktop-nav a:focus-visible:after{right:0}.language-switch{border:1px solid var(--border);background:var(--surface);min-width:40px;color:var(--text-secondary);letter-spacing:.06em;cursor:pointer;padding:7px 9px;font-size:12px;font-weight:700;transition:color .16s,border-color .16s}.language-switch:hover,.language-switch:focus-visible{border-color:var(--accent)}.nav-action{border:1px solid var(--border);color:var(--text-primary);background:var(--surface);padding:9px 14px}.mobile-header-actions,.mobile-nav{display:none}.hero{border-bottom:1px solid var(--border);background:linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--border) calc(100% - 1px)), linear-gradient(var(--border) 1px, transparent 1px);background-size:100% 100%,100% 128px;align-items:center;min-height:calc(100vh - 70px);padding:clamp(58px,7vw,82px) 0 clamp(48px,6vw,68px);display:flex;position:relative;overflow:hidden}.hero:before{content:"";z-index:0;aspect-ratio:1;background:radial-gradient(circle, color-mix(in srgb, var(--accent) 22%, transparent), transparent 72%);filter:blur(64px);pointer-events:none;width:min(560px,55%);position:absolute;top:-18%;right:-8%}.hero-grid{z-index:1;grid-template-columns:minmax(0,1fr) minmax(250px,.58fr);align-items:end;gap:clamp(36px,5vw,78px);display:grid;position:relative}.hero-copy{animation:.76s cubic-bezier(.16,1,.3,1) both rise-in}.hero-facts{animation:.76s cubic-bezier(.16,1,.3,1) .11s both rise-in}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.hero-copy h1{max-width:980px;font-family:var(--font-display), Georgia, serif;letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:clamp(46px,5.6vw,84px);font-weight:520;line-height:.98}.hero-copy p{max-width:660px;color:var(--text-secondary);margin:30px 0 0;font-size:clamp(18px,2vw,22px);line-height:1.45}.hero-actions{flex-wrap:wrap;gap:12px;margin-top:38px;display:flex}.button{border:1px solid var(--border);background:0 0;justify-content:center;align-items:center;min-height:46px;padding:11px 18px;font-size:14px;font-weight:560;transition:background .16s,border-color .16s,color .16s,transform .16s,box-shadow .16s;display:inline-flex}.button:hover,.button:focus-visible{border-color:var(--accent);color:var(--accent);box-shadow:0 14px 28px color-mix(in srgb, var(--shadow) 60%, transparent);transform:translateY(-2px)}.button:active{box-shadow:none;transform:translateY(0)}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}.button-primary:hover,.button-primary:focus-visible{color:var(--surface);background:#254637}.hero-facts{border-top:1px solid var(--border);gap:0;margin:0;padding:0;list-style:none;display:grid}.hero-facts li{border-bottom:1px solid var(--border);color:var(--text-secondary);padding:18px 0;font-size:15px}.section{border-bottom:1px solid var(--border);padding:clamp(72px,10vw,126px) 0}.section-compact{padding-top:clamp(56px,8vw,96px)}.section-heading{grid-template-columns:220px minmax(0,1fr);gap:40px;margin-bottom:44px;display:grid}.section-heading span,.contact-label{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:650}.section-heading h2{max-width:770px;font-family:var(--font-display), Georgia, serif;margin:0;font-size:clamp(28px,4vw,48px);font-weight:480;line-height:1.08}.featured-list{gap:34px;display:grid}.featured-project{border-top:1px solid var(--border);grid-template-columns:minmax(280px,.92fr) minmax(0,1.08fr);gap:clamp(28px,5vw,68px);padding:clamp(24px,4vw,46px) 0;display:grid}.featured-project:last-child{border-bottom:1px solid var(--border)}.project-media{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 12%, transparent), transparent 46%), var(--surface-muted);border:1px solid var(--border);flex-direction:column;justify-content:space-between;width:100%;min-height:410px;padding:24px;transition:border-color .22s;display:flex;position:relative;overflow:hidden}.featured-project:hover .project-media{border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.project-media:not(.project-media-image):not(.project-media-screens){border-style:dashed}.project-media-image img,.phone-frame img{transition:transform .6s cubic-bezier(.16,1,.3,1)}.featured-project:hover .project-media-image img{transform:scale(1.035)}.featured-project:hover .phone-frame img{transform:scale(1.06)}.project-media-image{aspect-ratio:1672/941;background:var(--surface);width:100%;min-height:0;margin:0;padding:0}.project-media-image img{object-fit:cover;object-position:center}.project-media-screens{background:linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 48%), var(--surface-muted);grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:14px;width:100%;min-height:520px;margin:0;padding:22px;display:grid}.phone-frame{aspect-ratio:1080/2340;border:3px solid color-mix(in srgb, var(--text-primary) 28%, transparent);background:var(--surface);box-shadow:0 14px 32px color-mix(in srgb, var(--shadow) 72%, transparent);border-radius:22px;display:block;position:relative;overflow:hidden}.phone-frame:first-child{transform:translateY(24px)rotate(-3deg)}.phone-frame:nth-child(2){transform:translateY(-8px)}.phone-frame:nth-child(3){transform:translateY(20px)rotate(3deg)}.phone-frame img{object-fit:cover}.project-media span{color:var(--accent);font-size:14px;font-weight:650}.project-media strong{max-width:340px;font-family:var(--font-display), Georgia, serif;font-size:clamp(32px,5vw,62px);font-weight:500;line-height:1}.project-media small{max-width:340px;color:var(--text-secondary);font-size:13px}.project-kicker{color:var(--text-secondary);flex-wrap:wrap;gap:12px;margin-bottom:16px;font-size:13px;display:flex}.project-content h3{font-family:var(--font-display), Georgia, serif;letter-spacing:0;overflow-wrap:anywhere;margin:0;font-size:clamp(32px,4.8vw,62px);font-weight:500;line-height:1}.project-description{max-width:700px;color:var(--text-secondary);margin:20px 0 28px;font-size:18px}.project-details{border-top:1px solid var(--border);border-bottom:1px solid var(--border);gap:18px;margin:0;padding:28px 0;display:grid}.project-details div{grid-template-columns:120px minmax(0,1fr);gap:20px;display:grid}.project-details dt{color:var(--accent);font-size:13px;font-weight:650}.project-details dd{color:var(--text-secondary);overflow-wrap:anywhere;margin:0}.tag-list{flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--border);background:var(--chip-bg);color:var(--text-secondary);padding:5px 9px;font-size:12px}.tag-list-small{margin-top:18px}.project-links{color:var(--text-secondary);flex-wrap:wrap;gap:14px;margin-top:24px;font-size:14px;display:flex}.project-links a{color:var(--accent);overflow-wrap:anywhere;font-weight:650}.work-grid{border-top:1px solid var(--border);border-left:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.work-tile{border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--tile-bg);min-height:300px;padding:24px;transition:transform .22s,box-shadow .22s,background .22s;position:relative}.work-tile:hover{z-index:1;background:var(--surface);box-shadow:0 22px 44px color-mix(in srgb, var(--shadow) 70%, transparent);transform:translateY(-4px)}.work-tile h3{overflow-wrap:anywhere;margin:0;font-size:22px;line-height:1.1}.work-tile p{color:var(--text-secondary);margin:16px 0 0;font-size:15px}.two-column,.about-grid,.contact-grid{grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr);gap:clamp(36px,7vw,94px);display:grid}.two-column .section-heading,.about-grid .section-heading{margin-bottom:0;display:block}.two-column .section-heading h2,.about-grid .section-heading h2{margin-top:16px}.timeline{border-top:1px solid var(--border)}.timeline-item{border-bottom:1px solid var(--border);grid-template-columns:minmax(190px,.7fr) minmax(0,1fr);gap:28px;padding:24px 0;transition:background .2s;display:grid}.timeline-item:hover{background:var(--tile-bg)}.timeline-item span{color:var(--accent);margin-bottom:10px;font-size:13px;font-weight:650;display:block}.timeline-item h3{margin:0 0 4px;font-size:20px;line-height:1.16}.timeline-item strong{color:var(--text-secondary);font-size:14px;font-weight:520}.timeline-item p{color:var(--text-secondary);margin:0}.about-text{max-width:540px;color:var(--text-secondary);margin:24px 0 0;font-size:18px}.skills-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 48px;display:grid}.skill-group{border-top:1px solid var(--border);padding-top:18px}.skill-group h3{margin:0 0 14px;font-size:17px}.skill-group ul{color:var(--text-secondary);gap:7px;margin:0;padding:0;font-size:15px;list-style:none;display:grid}.contact-section{background:var(--text-primary);color:var(--background);padding:clamp(70px,10vw,124px) 0}.contact-label{color:color-mix(in srgb, var(--background) 78%, transparent);margin-bottom:18px;display:block}.contact-grid h2{max-width:780px;font-family:var(--font-display), Georgia, serif;margin:0;font-size:clamp(32px,5vw,64px);font-weight:500;line-height:1.04}.contact-grid p{max-width:620px;color:color-mix(in srgb, var(--background) 76%, transparent);margin:24px 0 0;font-size:18px}.contact-links{align-content:end;gap:14px;font-size:clamp(18px,2.4vw,26px);display:grid}.contact-links a{border-bottom:1px solid color-mix(in srgb, var(--background) 34%, transparent);overflow-wrap:anywhere;padding-bottom:10px}.footer{color:var(--text-secondary);padding:28px 0;font-size:14px}.footer-content{justify-content:space-between;gap:20px;display:flex}.footer a{color:var(--accent)}@media (max-width:1120px){.hero-grid,.featured-project,.two-column,.about-grid,.contact-grid{grid-template-columns:1fr}.hero{min-height:auto}.hero-facts{max-width:560px}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-media-image{aspect-ratio:16/10}}@media (max-width:860px){.container{width:min(calc(100% - 28px), var(--max-width))}.site-header{padding:14px}.desktop-nav{display:none}.mobile-header-actions{align-items:center;gap:8px;display:flex}.menu-button{border:1px solid var(--border);background:var(--surface);justify-content:center;align-items:center;width:38px;min-height:38px;padding:0;transition:border-color .16s;display:inline-flex}.menu-button:hover,.menu-button:focus-visible{border-color:var(--accent)}.menu-icon{width:16px;height:12px;position:relative}.menu-icon span{background:var(--text-primary);width:100%;height:1.5px;transition:transform .22s cubic-bezier(.16,1,.3,1),opacity .22s,top .22s cubic-bezier(.16,1,.3,1);position:absolute;left:0}.menu-icon span:first-child{top:0}.menu-icon span:nth-child(2){top:5px}.menu-icon span:nth-child(3){top:10px}.menu-button.is-open .menu-icon span:first-child{top:5px;transform:rotate(45deg)}.menu-button.is-open .menu-icon span:nth-child(2){opacity:0}.menu-button.is-open .menu-icon span:nth-child(3){top:5px;transform:rotate(-45deg)}.mobile-nav{z-index:30;border:1px solid var(--border);background:var(--surface);box-shadow:0 24px 70px var(--shadow);opacity:0;visibility:hidden;pointer-events:none;gap:12px;padding:16px;transition:opacity .2s,transform .2s cubic-bezier(.16,1,.3,1),visibility .2s;display:grid;position:fixed;inset:66px 14px auto;transform:translateY(-10px)}.mobile-nav.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:none}.mobile-nav a{border-bottom:1px solid var(--border);padding:12px 0;transition:color .16s}.mobile-nav a:hover,.mobile-nav a:focus-visible{color:var(--accent)}.mobile-header-actions .language-switch{min-height:38px;color:var(--text-primary)}.hero{padding:64px 0 52px}.hero-copy h1{font-size:clamp(40px,12vw,68px);line-height:.98}.section-heading{grid-template-columns:1fr;gap:14px;margin-bottom:32px}.project-media{min-height:300px}.project-media-image{aspect-ratio:4/3}.project-media-screens{overscroll-behavior-inline:contain;scroll-snap-type:inline mandatory;gap:12px;min-height:0;padding:16px;scroll-padding-inline:16px;display:flex;overflow-x:auto}.phone-frame{scroll-snap-align:center;border-width:2px;border-radius:16px;flex:0 0 min(68%,230px);transform:none!important}.project-media-screens::-webkit-scrollbar{height:0}.project-details div,.timeline-item{grid-template-columns:1fr;gap:8px}.work-grid,.skills-columns{grid-template-columns:1fr}.work-tile{min-height:auto}.footer-content{flex-direction:column}}@media (max-width:520px){.container{width:min(calc(100% - 24px), var(--max-width))}.site-header{gap:12px;padding:12px}.hero{padding:48px 0 42px}.hero-grid{gap:32px}.hero-copy h1{font-size:clamp(36px,11vw,52px)}.hero-copy p,.project-description,.about-text,.contact-grid p{font-size:16px}.button{width:100%}.section{padding:58px 0}.featured-list{gap:18px}.project-media{min-height:240px;padding:18px}.project-media-image{aspect-ratio:1}.project-media-screens{padding:14px 12px;scroll-padding-inline:12px}.phone-frame{flex-basis:min(78%,220px)}.project-details{padding:22px 0}.work-tile{padding:20px}.contact-links{font-size:18px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
