@font-face{font-family:Fraunces;src:url('assets/fraunces.ttf') format('truetype');font-weight:800;font-display:swap}@font-face{font-family:DM;src:url('assets/dm.ttf') format('truetype');font-weight:400 600;font-display:swap}
:root{--ivory:#f7f5ec;--ink:#171815;--red:#e52d1a;--line:#d6d4cc;--ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{margin:0;background:var(--ivory);color:var(--ink);font-family:DM,Arial,sans-serif;font-size:17px;line-height:1.55}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid var(--red);outline-offset:6px}.wrap{width:min(1440px,calc(100% - 96px));margin:auto}.header{display:flex;justify-content:space-between;align-items:center;min-height:118px;gap:35px}.brand{display:block;flex-shrink:0}.brand img{display:block;width:270px;height:auto}nav{display:flex;gap:36px;align-items:center}nav>a:not(.button){position:relative}nav>a:not(.button):after{content:'';height:1px;background:currentColor;position:absolute;left:0;bottom:-5px;width:100%;transform:scaleX(0);transform-origin:left;transition:transform .3s}nav>a:hover:after{transform:scaleX(1)}.button{display:inline-flex;align-items:center;justify-content:center;gap:28px;padding:16px 25px;font-weight:500;transition:background .3s,color .3s}.button span,.text-link span{display:inline-block;transition:transform .4s var(--ease)}.button:hover span,.text-link:hover span{transform:translate(4px,-4px)}.red{background:var(--red);color:white}.red:hover{background:var(--ink)}.black{background:var(--ink);color:var(--ivory)}.black:hover{background:#383a33}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:1fr 1.12fr;align-items:center;gap:38px;padding-top:22px;padding-bottom:92px;min-height:690px}.eyebrow{font-size:12px;letter-spacing:.17em;font-weight:500;line-height:1.6}.intro{margin-bottom:30px}h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:800;line-height:1.05;letter-spacing:-.055em;margin:0}h1{font-size:clamp(50px,5.1vw,82px)}h1 em{font-style:normal;color:var(--red)}.lead{font-size:clamp(18px,1.5vw,23px);line-height:1.5;margin:34px 0 42px}.text-link{display:inline-flex;align-items:center;gap:22px;border-bottom:1px solid;padding-bottom:5px;font-weight:500}.hero-art{position:relative;display:flex;gap:18px;height:560px;perspective:1000px}.image-window{width:50%;overflow:hidden;will-change:transform;transform:translate3d(var(--x,0px),var(--y,0px),0) rotate(var(--r,0deg));transition:transform .7s var(--ease);animation:unveil 1.4s var(--ease) both}.image-window.first{border-radius:42% 28% 38% 6% / 21% 18% 21% 4%}.image-window.second{border-radius:30% 26% 42% 8% / 16% 19% 24% 6%;animation-delay:.15s}.image-window img{width:100%;height:100%;object-fit:cover;transform:scale(1.045)}.hero-stamp{position:absolute;right:-9px;bottom:-25px;width:80px;height:60px;object-fit:contain;background:transparent;padding:8px}.hero-copy{animation:enter 1s var(--ease) both}h2{font-size:clamp(38px,4.2vw,64px)}h3{font-size:29px;letter-spacing:-.04em}.dark{background:var(--ink);color:var(--ivory)}.work{padding:75px 0 52px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:40px}.section-heading h2{font-size:clamp(35px,3.7vw,58px)}.section-heading .eyebrow{max-width:155px;margin:0 0 5px}.projects{display:grid;grid-template-columns:1fr 1fr;gap:28px}.project{border:0;padding:0;background:none;text-align:left;color:inherit;min-width:0}.project-photo{position:relative;aspect-ratio:1.34;overflow:hidden}.project-photo img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .85s var(--ease),filter .85s}.project:hover img,.project:focus-visible img{transform:scale(1.045);filter:brightness(.88)}.project-hover{position:absolute;bottom:25px;right:25px;background:var(--red);padding:13px 20px;opacity:0;transform:translateY(12px);transition:opacity .3s,transform .4s var(--ease);font-size:15px}.project:hover .project-hover,.project:focus-visible .project-hover{opacity:1;transform:none}.project-caption{display:flex;justify-content:space-between;gap:18px;margin-top:19px;align-items:center}.project-caption small{font-size:11px;letter-spacing:.09em;color:#cfcec7}.work-note{font-size:14px;color:#b4b5ab;margin:35px 0 0}.services{padding-top:100px;padding-bottom:80px}.services h2{margin-top:18px}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);margin-top:60px}.service{padding:0 42px;border-right:1px solid var(--line)}.service:first-child{padding-left:0}.service:last-child{padding-right:0;border:none}.number{display:block;color:var(--red);margin-bottom:12px;font-size:15px}.service svg{display:block;fill:none;stroke:var(--red);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;width:46px;height:46px;margin:27px 0}.service p{max-width:320px;margin:0;line-height:1.65}.other{text-align:center;margin:58px 0 0}.other .text-link{color:var(--red);margin-left:6px}.about{border-top:1px solid var(--line);padding:82px 0}.about-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:65px;align-items:center}.about-mark{border-right:1px solid var(--line);padding:40px 60px 40px 0}.about-mark img{width:100%;height:auto}.about h2{font-size:clamp(35px,3.4vw,52px);margin:20px 0 24px}.about p:not(.eyebrow){max-width:620px}.contact{text-align:center;background:var(--red);color:var(--ivory);padding:75px 0 80px}.contact h2{font-size:clamp(58px,7.4vw,110px);margin:24px 0 38px}.contact .eyebrow{color:var(--ink)}.contact .button{padding:20px 30px}.footer{padding-top:44px;padding-bottom:38px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:28px}.footer .brand img{width:220px}.footer small{flex-basis:100%;font-size:12px;color:#62645c}.mobile-break{display:none}.skip{position:fixed;top:-100px;left:20px;background:var(--ink);color:white;padding:15px;z-index:100}.skip:focus{top:10px}.js .reveal{opacity:0;transform:translateY(28px);transition:opacity .85s var(--ease),transform .85s var(--ease)}.js .reveal.visible{opacity:1;transform:none}.service:nth-child(2){transition-delay:90ms}.service:nth-child(3){transition-delay:180ms}dialog{border:0;padding:0;background:var(--ivory);color:var(--ink);max-width:850px;width:calc(100% - 36px);max-height:85vh;overflow:auto}dialog::backdrop{background:rgba(15,16,14,.78);backdrop-filter:blur(8px)}.close{position:absolute;right:12px;top:12px;width:44px;height:44px;background:var(--ivory);border:1px solid var(--line);font-size:30px;z-index:2}#detail-image{width:100%;max-height:46vh;object-fit:cover;display:block}.detail-copy{padding:40px}.detail-copy h2{font-size:42px}.detail-copy>p{margin-bottom:28px}.email-note{font-size:14px}@keyframes unveil{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0)}}@keyframes enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.hero{min-height:760px}.hero-art{height:620px}}@media(max-width:1050px){.wrap{width:calc(100% - 56px)}.brand img{width:225px}nav{gap:23px}.hero{gap:25px;min-height:580px;padding-bottom:65px}.hero-art{height:440px}.intro{font-size:10px}.service{padding:0 25px}.project-caption{display:block}.project-caption small{display:block;margin-top:7px}.section-heading .eyebrow{display:none}.about-grid{gap:40px}.about-mark{padding-right:35px}}
@media(max-width:720px){body{font-size:16px}.wrap{width:calc(100% - 40px)}.header{min-height:90px;position:relative;gap:20px}.brand img{width:205px}.menu-toggle{display:flex;gap:12px;align-items:center;background:none;border:0;padding:10px 0;font-size:16px}.header nav{display:none;position:absolute;top:80px;left:-20px;right:-20px;background:var(--ivory);padding:24px 20px 30px;z-index:10;border-bottom:1px solid var(--line);box-shadow:0 18px 20px #1718150d}.header nav.open{display:flex;align-items:stretch;flex-direction:column;gap:22px}.header nav a{padding:4px}.header nav .button{padding:14px}.hero{display:flex;flex-direction:column;align-items:stretch;gap:32px;padding-top:20px;padding-bottom:45px;min-height:0}.intro{display:block;font-size:10px;line-height:1.6;max-width:280px}h1{font-size:clamp(44px,9.5vw,67px);line-height:1.03}.lead{font-size:18px;margin:24px 0 25px}.hero-art{height:360px;gap:12px}.hero-stamp{width:65px;bottom:-17px;right:-4px}.work{padding:44px 0 34px}.section-heading{margin-bottom:28px}.section-heading h2{font-size:39px}.mobile-break{display:block}.projects{grid-template-columns:1fr;gap:35px}.project-caption{display:flex;align-items:start}.project-caption>span{max-width:55%}.project-caption small{font-size:10px;max-width:40%;text-align:right}.project-hover{display:none}.work-note{font-size:13px}.services{padding-top:60px;padding-bottom:48px}.services .eyebrow{max-width:280px}h2{font-size:41px}.service-grid{display:block;margin-top:38px}.service,.service:first-child,.service:last-child{position:relative;border-right:0;border-bottom:1px solid var(--line);padding:25px 0 27px 43px}.service:last-child{border-bottom:0}.service .number{position:absolute;left:0;top:25px}.service h3{font-size:26px}.service svg{display:none}.service p{margin-top:14px;max-width:none}.other{text-align:left;margin-top:24px}.other .text-link{margin-left:0}.about{padding:45px 0}.about-grid{display:block}.about-mark{border-right:0;padding:0 0 22px}.about-mark img{width:145px}.about h2{font-size:37px}.contact{padding:42px 0 50px}.contact .eyebrow{font-size:10px}.contact h2{font-size:58px;margin:24px 0 30px}.footer{padding-top:32px;padding-bottom:24px}.footer nav{gap:23px;font-size:14px}.footer .brand img{width:185px}.footer small{margin-top:0}.detail-copy{padding:32px 24px}.detail-copy h2{font-size:34px}}@media(max-width:380px){.brand img{width:175px}.hero-art{height:295px}.project-caption{display:block}.project-caption>span,.project-caption small{max-width:none;text-align:left}.contact h2{font-size:50px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js .reveal{opacity:1;transform:none}.image-window{transform:none!important}} 
/* Selected projects and case studies */
.real-projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.real-projects .project-photo{aspect-ratio:1.2}.real-projects .project-caption{display:block}.real-projects .project-caption>span{font-family:Fraunces,Georgia,serif;font-size:27px;letter-spacing:-.035em}.real-projects .project-caption small{display:block;font-size:14px;letter-spacing:0;margin-top:8px;line-height:1.6}.real-projects .project-hover{right:18px;bottom:18px}.work:has(.real-projects){padding-bottom:76px}.case-header{padding-top:28px;padding-bottom:54px}.case-back{display:inline-block;margin-bottom:42px;font-size:15px;border-bottom:1px solid var(--line)}.case-header>.eyebrow{color:var(--red);font-size:14px;margin-bottom:18px}.case-header h1{font-size:clamp(44px,6.4vw,94px);max-width:1100px}.case-intro{font-size:clamp(20px,2vw,28px);max-width:800px;margin:30px 0 42px}.case-meta{display:flex;justify-content:space-between;align-items:end;gap:30px;border-top:1px solid var(--line);padding-top:24px}.case-meta p{margin:0;max-width:750px}.case-meta .eyebrow{display:block;font-size:12px;margin-bottom:8px}.case-meta .text-link{flex-shrink:0}.case-hero{margin-top:0;margin-bottom:0;overflow:hidden}.case-hero img{display:block;width:100%;height:auto;max-height:740px;object-fit:cover}.case-story{display:grid;grid-template-columns:.85fr 1.15fr;gap:8%;align-items:center;padding-top:85px;padding-bottom:85px}.case-story h2{font-size:clamp(34px,3.4vw,50px);margin:16px 0 26px}.case-story p{max-width:650px}.case-logo{display:flex;align-items:center;justify-content:center;aspect-ratio:1.12;padding:40px;background:#ece9df}.case-logo.show{background:#171815}.case-logo.edu{background:#e2eadd}.case-logo img{width:100%;height:100%;object-fit:contain;max-height:330px}.case-gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding-bottom:85px}.case-gallery figure{margin:0}.case-gallery img{display:block;width:100%;height:100%;aspect-ratio:1.2;object-fit:cover}.next-project{padding:65px 0 70px}.next-project h2{margin:15px 0 40px}.next-project h2 span{color:var(--red);display:inline-block;transition:transform .3s}.next-project a:hover h2 span{transform:translate(5px,-5px)}.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}
@media(max-width:1050px){.real-projects{gap:22px}.real-projects .project-caption>span{font-size:24px}.case-story{gap:5%}.case-logo{padding:25px}}
@media(max-width:720px){.real-projects{grid-template-columns:1fr;gap:38px}.real-projects .project-caption>span,.real-projects .project-caption small{max-width:none;text-align:left}.real-projects .project-caption>span{font-size:28px}.real-projects .project-photo{aspect-ratio:1.35}.case-header{padding-top:15px;padding-bottom:32px}.case-back{margin-bottom:32px}.case-header h1{font-size:clamp(40px,10vw,64px)}.case-intro{margin:24px 0 30px}.case-meta{display:block}.case-meta .text-link{margin-top:25px}.case-story{grid-template-columns:1fr;gap:30px;padding-top:40px;padding-bottom:35px}.case-logo{aspect-ratio:1.5;padding:30px}.case-logo img{max-height:220px}.case-gallery{gap:18px;padding-bottom:40px;grid-template-columns:1fr}.case-hero img{min-height:260px}.next-project{padding:40px 0 45px}.next-project h2{font-size:38px}.work:has(.real-projects){padding-bottom:44px}}
/* Unframed website screenshots retain their full composition. */
.real-projects .screenshot-preview{aspect-ratio:16/9;background:transparent}
.real-projects .screenshot-preview img{width:100%;height:100%;object-fit:contain;transform:none;filter:none}
.project:hover .screenshot-preview img,.project:focus-visible .screenshot-preview img{transform:none;filter:none}
.screenshot-stage>img,.site-detail>img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain}
.site-detail{padding-bottom:85px}.site-detail h2{font-size:clamp(34px,3.4vw,50px)}.site-detail .section-heading .eyebrow{max-width:none}
@media(max-width:720px){.site-detail{padding-bottom:45px}.site-detail .section-heading{display:block}.site-detail .section-heading .eyebrow{display:block;margin-top:15px}}
/* An editorial project overlay, with the gallery held in place underneath. */
#work-preview{position:fixed;inset:24px 0 0;margin:0 auto;width:calc(100% - 48px);max-width:1500px;height:calc(100dvh - 24px);max-height:none;border-radius:18px 18px 0 0;overscroll-behavior:contain;scroll-behavior:smooth;padding-bottom:110px;scrollbar-gutter:stable;background:var(--ivory)}
#work-preview[open]{animation:preview-enter .55s var(--ease)}#work-preview::backdrop{background:#171815a8;backdrop-filter:blur(5px)}.preview-top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 32px;background:var(--ivory);border-bottom:1px solid var(--line);font-size:15px}.preview-close{border:1px solid var(--line);background:transparent;color:var(--ink);padding:10px 17px;min-height:44px}.preview-close:hover{background:var(--ink);color:var(--ivory)}.preview-content{padding:0 5%}.preview-heading{text-align:center;max-width:900px;margin:64px auto 42px}.preview-heading h2{font-size:clamp(44px,7.3vw,106px);line-height:1.05;margin:22px 0;overflow-wrap:anywhere}.preview-heading>p:last-child{max-width:660px;margin:0 auto;font-size:20px}.preview-main{margin:0;border-radius:10px;overflow:hidden;background:var(--ink)}.preview-main img,.preview-details img{display:block;width:100%;height:auto}.preview-services{padding:32px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr 2fr;gap:20px}.preview-services p{margin:0}.preview-story{display:grid;grid-template-columns:.75fr 1.25fr;gap:7%;align-items:center;padding:60px 0}.preview-story h2{font-size:clamp(30px,3.5vw,48px);margin:16px 0 25px}.preview-story .case-logo{aspect-ratio:1.15}.preview-details{padding:0 0 35px}.preview-details>.eyebrow{margin-bottom:24px}.preview-details img{border:1px solid var(--line);border-radius:8px}.preview-dock{position:fixed;z-index:10;bottom:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;padding:9px;border-radius:10px;background:var(--ink);color:var(--ivory);box-shadow:0 10px 35px #0004}.preview-dock button{width:48px;min-height:48px;color:inherit;background:transparent;border:1px solid #ffffff38;border-radius:5px}.preview-dock button:hover{background:#ffffff20}.preview-count{white-space:nowrap;font-size:14px;font-variant-numeric:tabular-nums}.preview-dock .button{white-space:nowrap;border-radius:5px;padding:13px 20px;font-size:15px}.preview-dock .red:hover{background:#bc2111}.preview-dock a:focus-visible,.preview-dock button:focus-visible{outline-color:var(--ivory);outline-offset:2px}@keyframes preview-enter{from{opacity:0;transform:translateY(65px)}to{opacity:1;transform:none}}
@media(max-width:720px){#work-preview{inset:10px 0 0;width:calc(100% - 16px);height:calc(100dvh - 10px);border-radius:12px 12px 0 0;padding-bottom:100px}.preview-top{padding:12px 17px}.preview-heading{margin:38px auto 30px}.preview-heading h2{font-size:clamp(39px,10vw,65px)}.preview-heading>p:last-child{font-size:17px}.preview-content{padding:0 20px}.preview-services,.preview-story{grid-template-columns:1fr;gap:16px}.preview-story{padding:32px 0}.preview-story .case-logo{aspect-ratio:1.8}.preview-dock{bottom:14px;gap:8px;padding:7px;max-width:calc(100% - 32px)}.preview-dock button{width:40px;min-height:44px;flex-shrink:0}.preview-dock .button{padding:12px;font-size:14px}.preview-count{font-size:12px}}
