:root{--bg:#f7f4ef;--tint:#eee9e2;--ink:#28231f;--muted:#746b63;--line:#d3cbc1;--accent:#9b654b;--serif:'Sorts Mill Goudy',Georgia,serif;--sans:Lato,'Trebuchet MS',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:65px}body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.85 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none;transition:color .2s}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:7px}img{max-width:100%;height:auto;display:block}p{margin:0 0 25px}h1,h2,h3,h4{font-weight:400;margin:0}h1,h2,h3{font-family:var(--serif);line-height:1.08}h1 em{font-weight:400}h2{font-size:clamp(55px,6.5vw,86px);margin-bottom:65px;letter-spacing:-2px}h3{font-size:35px;margin-bottom:21px}h4{font:400 23px/1.35 var(--serif);margin-bottom:12px}strong{font-weight:700}.wrap{width:min(1120px,calc(100% - 100px));margin-inline:auto}
.header{padding:30px 42px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:20}.logo{font-family:var(--serif);font-size:32px;line-height:1;letter-spacing:-2px}.logo span{color:var(--accent)}.header-actions{display:flex;align-items:center;gap:38px}.header-contact{font-size:15px}.navigation summary{width:30px;height:30px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;gap:7px;position:relative;z-index:22;list-style:none}.navigation summary::-webkit-details-marker{display:none}.navigation summary span{display:block;width:25px;height:1px;background:var(--ink);transition:transform .2s}.navigation[open] summary span:first-child{transform:translateY(4px) rotate(45deg)}.navigation[open] summary span:last-child{transform:translateY(-4px) rotate(-45deg)}.navigation nav{position:absolute;right:28px;top:82px;width:min(420px,calc(100vw - 40px));background:var(--bg);padding:35px 42px;border:1px solid var(--line);box-shadow:0 16px 45px #28231f0d;display:flex;flex-direction:column;gap:14px}.navigation nav>a{font:34px/1.25 var(--serif)}.navigation nav>a.quiet{font:15px var(--sans);margin-top:15px}.skip{position:absolute;top:-80px;left:20px;padding:12px;background:var(--ink);color:white;z-index:50}.skip:focus{top:12px}
.hero{padding:45px 0 0;overflow:hidden}.hero-inner{display:grid;grid-template-columns:1fr .93fr;gap:0 65px;align-items:center;position:relative}.hero-copy{padding-top:10px}.hero h1{font-size:clamp(98px,10.5vw,140px);line-height:.97;letter-spacing:-4px;margin-bottom:32px}.hero h1 em{color:var(--accent)}.hero-description{max-width:380px;margin:35px 0 0 5px}.hero-description>p:first-child{font:400 25px/1.45 var(--serif)}.hero-description .subtle{font-size:16px;line-height:1.8;margin-bottom:32px}.portrait{position:relative;margin:0 0 0;overflow:hidden;border-radius:48% 48% 3px 3px / 25% 25% 3px 3px;background:#40352f;box-shadow:18px 20px 0 -1px var(--bg),18px 20px 0 0 var(--line)}.portrait img{width:100%;height:610px;object-fit:cover;object-position:center 30%;transform:scale(1.1);transform-origin:50% 55%}.hero-location{grid-column:1/-1;border-top:1px solid var(--line);padding:28px 0 30px;margin:65px 0 0;font-size:15px;color:var(--muted)}.text-link{display:inline-flex;gap:30px;align-items:center;font-size:15px;border-bottom:1px solid var(--ink);padding-bottom:8px}.text-link span{font-size:22px}.text-link:hover{border-color:var(--accent)}
.section{padding:110px 0}.section-tint{background:var(--tint)}.editorial{display:grid;grid-template-columns:25% 75%;gap:0}.editorial aside{padding-right:40px}.prose{padding-left:40px;border-left:1px solid var(--line)}.offset{margin-left:25%}.lead{font:400 30px/1.5 var(--serif);letter-spacing:-.2px}.subtle{color:var(--muted);font-size:15px}.numbers{display:flex;flex-direction:column;gap:44px;padding-top:8px}.numbers strong{display:block;font:400 65px/1 var(--serif);color:var(--accent)}.numbers span{display:block;margin-top:12px;color:var(--muted);font-size:15px;line-height:1.55}blockquote{font:italic 28px/1.55 var(--serif);margin:40px 0;padding-left:25px;border-left:2px solid var(--accent)}.button{display:inline-flex;gap:38px;align-items:center;padding:13px 24px;border:1px solid var(--ink);font-size:15px;margin-top:20px;transition:background .2s,color .2s}.button span{font-size:23px}.button:hover{background:var(--ink);color:var(--bg)}.cap-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin:48px 0 70px}.cap{border-top:1px solid var(--line);padding-top:28px}.cap h3{font-size:31px;line-height:1.2}.cap p{font-size:16px;margin:0;color:var(--muted)}.skill-heading{margin-top:35px}.skill-group{padding:25px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:32% 68%;gap:20px}.skill-group h4{font-size:24px;padding-right:10px}.skills-text{font-size:16px;line-height:1.9;color:var(--muted);margin:0}.skill-group+.skill-group{margin-top:0}#next .skills-text{margin-bottom:25px}
.job{border-top:1px solid var(--line);padding:38px 0 28px}.job:first-of-type{margin-top:45px}.job h3{font-size:34px;margin-bottom:12px}.job-date{font-size:15px;color:var(--muted);margin-bottom:15px}.company{font-size:16px;color:var(--accent)}.list{list-style:none;padding:0;margin:24px 0}.list li{padding-left:20px;position:relative;margin-bottom:13px;font-size:16px}.list li:before{content:'—';position:absolute;left:0;color:var(--accent)}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:40px}.education{border-top:1px solid var(--line);padding-top:40px;margin-top:10px}.education h3{font-size:31px}.education p{font-size:16px}.section-intro{max-width:650px;font-size:18px;color:var(--muted);margin-bottom:65px}
.project-row{display:grid;grid-template-columns:58% 42%;align-items:center;margin-bottom:85px}.project-image{display:block;background:#e5e3df;padding:18px;overflow:hidden;border-radius:5px}.project-image img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain;object-position:center;box-shadow:0 8px 26px #28231f18;transition:transform .4s}.project-image:hover img{transform:none}.project-copy{padding-left:45px}.project-copy h3{font-size:55px;letter-spacing:-1px;margin:0 0 23px}.project-copy p{font-size:18px;color:var(--muted);line-height:1.75}.project-row:nth-of-type(even){grid-template-columns:42% 58%}.project-row:nth-of-type(even) .project-image{order:2}.project-row:nth-of-type(even) .project-copy{padding:0 45px 0 0}.project-links{display:flex;flex-direction:column;align-items:flex-start;gap:16px;margin-top:30px}.demo-link{font-size:15px;color:var(--muted)}.demo-link:hover{color:var(--accent)}.project-note{font-size:15px;color:var(--muted);border-top:1px solid var(--line);padding-top:25px}
.disclosure{border-top:1px solid var(--line)}.disclosure:last-of-type{border-bottom:1px solid var(--line)}.disclosure summary{display:flex;justify-content:space-between;align-items:center;gap:20px;list-style:none;cursor:pointer;padding:23px 0;font-size:17px}.disclosure summary::-webkit-details-marker{display:none}.disclosure summary span{font-size:24px;flex:none}.disclosure[open] summary span{transform:rotate(45deg)}.disclosure>div{padding:0 15px 15px 0}.disclosure p{font-size:16px}.contact-email{font:400 32px/1.4 var(--serif);display:block;overflow-wrap:anywhere;margin:25px 0 18px}.contact-phone{font-size:20px;display:block;margin-bottom:27px}.contact aside{font-size:16px}.footer{padding-block:35px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-top:1px solid var(--line);font-size:14px}.footer p{margin:0}.quiet{color:var(--muted)}
.case-hero{padding-top:40px}.back{font-size:16px;display:inline-block;margin-bottom:60px;color:var(--muted)}.case-hero h1{font-size:clamp(70px,8vw,110px);letter-spacing:-3px;margin-bottom:27px}.case-hero .lead{max-width:780px;font-size:33px}.case-meta{display:flex;justify-content:space-between;align-items:center;gap:25px;margin:35px 0 30px;padding-top:25px;border-top:1px solid var(--line)}.case-meta p{margin:0;color:var(--muted);font-size:16px}.case-meta a{font-size:16px;border-bottom:1px solid currentColor;padding-bottom:5px}.case-screen{background:#e5e3df;padding:20px;width:100%;border-radius:5px}.case-body h3{margin-top:45px}.case-body aside h3{margin-top:0;font-size:32px;line-height:1.35}.small-title{font-size:47px;margin-bottom:32px}.feature{border-top:1px solid var(--line);padding-top:24px;margin-top:28px}.feature h4{font-size:25px}.feature p{font-size:16px}.project-stage{margin:40px 0;border-left:2px solid var(--accent);padding:4px 0 4px 26px}.project-stage p{font-size:16px;margin:0}.screen-figure{margin:45px 0}.screen-figure img{width:100%;height:auto;object-fit:contain;object-position:center;background:var(--bg);border-radius:4px}.screen-figure figcaption{font:italic 21px/1.5 var(--serif);color:var(--muted);padding:17px 0}.security-hero{padding-bottom:55px}.security-hero .section-intro{font-size:17px;max-width:760px}.principle-line{font:italic 24px/1.5 var(--serif);border-block:1px solid var(--line);padding:22px 0;margin:35px 0}.note{font-size:15px;color:var(--muted);margin:40px 0}.source-links{font-size:15px}.source-links li{margin-bottom:13px}.source-links a{text-decoration:underline}.scenarios{margin-top:30px}
@media(min-width:1600px){.wrap{width:1200px}.hero{padding-top:60px}.hero h1{font-size:155px}.portrait img{height:680px}.hero-inner{column-gap:100px}}
@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.hero-inner{column-gap:40px}.hero h1{font-size:105px}.portrait img{height:560px}.hero-description>p:first-child{font-size:24px}.prose{padding-left:30px}.project-copy{padding-left:30px}.project-copy h3{font-size:43px}.project-row:nth-of-type(even) .project-copy{padding-right:30px}.project-copy p{font-size:17px}.skill-group{grid-template-columns:1fr;gap:5px}.section{padding:90px 0}.contact-email{font-size:27px}.footer{font-size:12px}}
@media(max-width:700px){html{scroll-padding-top:30px}.wrap{width:calc(100% - 44px)}.header{padding:27px 23px}.header-actions{gap:25px}.header-contact{font-size:14px}.hero{padding-top:25px}.hero-inner{display:flex;flex-direction:column;align-items:stretch}.hero-copy{padding-top:0}.hero h1{font-size:104px;letter-spacing:-3px;margin-bottom:25px}.hero-description{margin:25px 0 0;max-width:330px}.hero-description>p:first-child{font-size:25px}.hero-description .subtle{font-size:16px}.portrait{margin:45px 10px 0 0;box-shadow:12px 13px 0 -1px var(--bg),12px 13px 0 0 var(--line)}.portrait img{height:460px;max-height:none;aspect-ratio:auto;transform:scale(1.08)}.hero-location{font-size:15px;margin:48px 0 0;padding:25px 0 30px;line-height:1.7}h2{font-size:56px;letter-spacing:-1.5px;margin-bottom:40px}.section{padding:70px 0}.editorial{display:block}.editorial aside{padding:0 0 30px}.prose{border-left:0;padding-left:0}.offset{margin-left:0}.numbers{display:flex;flex-direction:row;gap:20px;justify-content:space-between;padding-bottom:32px!important;border-bottom:1px solid var(--line);margin-bottom:32px}.numbers strong{font-size:47px}.numbers span{font-size:12px;line-height:1.5}.lead{font-size:27px}body{font-size:17px}blockquote{font-size:26px}.cap-grid{grid-template-columns:1fr;gap:30px;margin-top:35px}.cap h3{font-size:32px}.cap p{font-size:16px}.skill-group{padding:23px 0}.skill-group h4{font-size:27px}.skills-text{font-size:16px}.two-column{grid-template-columns:1fr;gap:30px}.job h3{font-size:33px}.project-row,.project-row:nth-of-type(even){display:flex;flex-direction:column;align-items:stretch;margin-bottom:65px}.project-row:nth-of-type(even) .project-image{order:0}.project-copy,.project-row:nth-of-type(even) .project-copy{padding:28px 0 0}.project-copy h3{font-size:49px;margin-bottom:18px}.project-copy p{font-size:17px}.project-image{padding:12px}.project-links{margin-top:20px}.section-intro{font-size:17px;margin-bottom:40px}.contact-email{font-size:26px}.contact-phone{font-size:19px}.footer{flex-wrap:wrap;justify-content:flex-start;gap:18px 26px;font-size:13px}.footer .logo{width:100%}.footer p{width:100%}.case-hero{padding-top:25px}.back{margin-bottom:40px}.case-hero h1{font-size:67px;letter-spacing:-2px;overflow-wrap:break-word}.case-hero .lead{font-size:28px}.case-meta{flex-direction:column;align-items:flex-start;gap:18px;margin-top:30px}.case-meta p{font-size:16px}.case-screen{padding:10px}.case-body .editorial aside{margin-bottom:25px;border-bottom:1px solid var(--line)}.small-title{font-size:44px}.feature p{font-size:16px}.disclosure summary{font-size:17px}.disclosure p{font-size:16px}.security-hero{padding-bottom:10px}.navigation nav{right:12px;padding:28px}.navigation nav>a{font-size:32px}.screen-figure figcaption{font-size:20px}.principle-line{font-size:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Preserve every pixel of application screenshots. */
.project-row,.project-row:nth-of-type(even){display:block;margin-bottom:85px}
.project-image{padding:16px;overflow:visible}
.project-image img{display:block;width:100%;height:auto;max-height:none;aspect-ratio:auto;object-fit:contain;transform:none}
.project-copy,.project-row:nth-of-type(even) .project-copy{display:grid;grid-template-columns:1fr 1fr;gap:0 45px;padding:30px 0 0}
.project-copy h3{grid-column:1;grid-row:1/3}.project-copy>p{grid-column:2;margin-bottom:15px}.project-links{grid-column:2;margin-top:0}
.case-screen{height:auto;max-height:none;aspect-ratio:auto;object-fit:contain}
.screen-figure img{height:auto;max-height:none;aspect-ratio:auto;object-fit:contain}
.screen-open{display:inline-block;font-size:15px;text-decoration:underline;text-underline-offset:5px;margin:14px 0 0;color:var(--muted)}
.demo-access{padding:30px 0;margin:40px 0;border-block:1px solid var(--line)}.demo-access p{font-size:16px}.demo-access h3{margin-top:0}.demo-access .button{margin-top:0}
@media(max-width:700px){.project-copy,.project-row:nth-of-type(even) .project-copy{display:block;padding:25px 0 0}.project-image{padding:7px}.project-links{margin-top:20px}.project-copy h3{font-size:45px}.screen-open{font-size:14px}}
