:root{--max-width: 1000px;--max-wide: 960px;--label-size: .6875rem;--label-track: .14em;--site-header-height: 4.25rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;min-height:100%;background:linear-gradient(180deg,#faf8f3 0%,var(--paper) 24%,var(--paper) 100%);color:var(--ink);font-family:var(--font);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);transition:color .15s ease,border-color .15s ease}a:hover{color:var(--accent);border-bottom-color:var(--accent)}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.container{width:min(100% - 2.5rem,var(--max-width));margin-inline:auto}.container--wide{width:min(100% - 2.5rem,var(--max-wide));margin-inline:auto}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--paper) 86%,white 14%);backdrop-filter:blur(8px);border-bottom:2px solid var(--rule);transition:box-shadow .18s ease,background-color .18s ease,transform .18s ease}.site-header.is-scrolled{box-shadow:0 16px 26px -24px #0d0d0dd9}.site-nav{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding:1rem 0;flex-wrap:wrap}.brand{font-weight:700;font-size:1rem;letter-spacing:.08em;text-transform:uppercase;border-bottom:none;padding:.2rem .45rem;background:var(--ink);color:var(--paper)}.brand:hover{background:var(--accent);color:#fff}.nav-links{display:flex;flex-wrap:wrap;gap:1.25rem;list-style:none;margin:0;padding:0}.nav-link{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;border-bottom:none;color:var(--ink);position:relative;transition:color .14s ease,transform .14s ease}.nav-link:hover{color:var(--accent);transform:translateY(-1px)}.nav-link:after{content:"";position:absolute;left:0;right:0;bottom:-.4rem;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:center;transition:transform .16s ease}.nav-link:hover:after,.nav-link:focus-visible:after{transform:scaleX(1)}.nav-link[aria-current=true]{color:var(--accent)}.nav-link[aria-current=true]:after{transform:scaleX(1)}main{padding-block:0 4rem}.section{padding-block:3.5rem;border-bottom:1px solid color-mix(in srgb,var(--rule) 82%,white 18%);transition:opacity .32s ease,transform .32s ease;position:relative}.section:last-of-type{border-bottom:none}.section__label{display:block;font-size:.72rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;margin:0 0 1.25rem;color:var(--ink);padding-left:.6rem;border-left:3px solid var(--accent)}.intro{display:flex;flex-direction:column;min-height:calc(100dvh - var(--site-header-height));padding-block:0;border-bottom:2px solid var(--rule);transition:opacity .32s ease,transform .32s ease}.intro__content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-height:0}.reveal-item{opacity:1;transform:none}.has-motion .reveal-item{opacity:0;transform:translateY(10px)}.has-motion .reveal-item.is-visible{opacity:1;transform:none}.intro__kicker{font-size:var(--label-size);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 2rem;max-width:36ch}.intro h1{font-size:clamp(2rem,6vw,4rem);font-weight:700;line-height:1.04;letter-spacing:-.03em;margin:0 0 1.5rem;max-width:18ch;text-wrap:balance}.intro__lede{font-size:1.12rem;line-height:1.6;color:var(--ink-muted);margin:0;max-width:42ch}.intro__lede:empty{display:none}.intro__meta{margin-top:.75rem;padding:.75rem .95rem;border:1px solid var(--rule);display:inline-flex;align-items:center;background:var(--paper-alt);font-size:var(--label-size);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink)}.intro__links{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-shrink:0;padding-block:0 1.75rem}.intro__links a{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;border-bottom:none;transition:color .14s ease}.intro__links a:hover{color:var(--accent)}.work-list{display:flex;flex-direction:column;gap:0;margin:0;padding:0;list-style:none}.work-item{position:relative;z-index:0;display:grid;grid-template-columns:1fr;gap:.75rem;padding:1.35rem;border-top:1px solid var(--rule);border-left:2px solid transparent;background:#f3f0e8;cursor:pointer;transition:border-color .2s ease,transform .22s cubic-bezier(.22,1,.36,1),box-shadow .22s ease,background-color .2s ease}.work-item:first-child{border-top:1px solid var(--rule)}@media(min-width:640px){.work-item{grid-template-columns:140px 1fr;gap:1.5rem 2rem;align-items:start}}.work-item__type-icon{position:relative;z-index:0;width:100%;max-width:140px;height:auto;display:block;color:var(--ink);background:transparent;transition:transform .24s cubic-bezier(.22,1,.36,1),color .2s ease}.work-item__title{font-size:1.2rem;font-weight:700;margin:0;letter-spacing:-.016em}.work-item__title a{border-bottom:none;transition:color .18s ease}.work-item__stretched-link:after{content:"";position:absolute;inset:0;z-index:1}.work-item:hover .work-item__title a,.work-item:has(.work-item__stretched-link:focus-visible) .work-item__title a{color:var(--accent)}.work-item__year{font-size:var(--label-size);font-weight:600;letter-spacing:var(--label-track);text-transform:uppercase;color:var(--ink-muted);margin:.15rem 0 0}.work-item__summary{margin:.35rem 0 0;color:#2f2f2f;font-size:.97rem;max-width:50ch}.work-item__stack{margin:.65rem 0 0;font-size:var(--label-size);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}.work-item__links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.85rem}.work-item__links a{position:relative;z-index:2;font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase}.work-item:hover,.work-item:has(.work-item__stretched-link:focus-visible){z-index:2;border-color:var(--rule);border-left-color:var(--accent);background:color-mix(in srgb,#f3f0e8 86%,white 14%);transform:translateY(-4px);box-shadow:0 26px 42px -18px #0d0d0d61}.work-item:hover .work-item__type-icon,.work-item:has(.work-item__stretched-link:focus-visible) .work-item__type-icon{transform:translateY(-5px);color:var(--accent)}.work-item__meta-row{margin-top:.65rem;display:flex;flex-wrap:wrap;align-items:center;gap:.45rem}.work-item__badge{font-size:.625rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--accent);background:var(--accent-soft);padding:.15rem .45rem}.work-item__impact{font-size:var(--label-size);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}.work-item__tags{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.75rem}.work-item__tag{font-size:.625rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#fcfafa;border-bottom:none;padding:.08rem .3rem;background:var(--accent-dark);border:1px solid #d6d0c6}.work-item--featured .work-item__title a{color:var(--accent)}.prose p{margin:0 0 1rem;color:var(--ink-muted);font-size:1.01rem}.prose p:first-child{font-size:1rem;line-height:1.48;color:var(--ink)}.prose p:last-child{margin-bottom:0}#about .prose{width:100%;max-width:100%}#about .prose p{max-width:100%}.about-prose,.about-prose p{width:100%;max-width:100%}.contact-block{margin-top:1.5rem;padding:1.4rem;border:1px solid var(--rule);background:#fcfbf8}.contact-intro{margin:0 0 1.25rem;color:var(--ink-muted);max-width:50ch}.contact-line{display:flex;flex-wrap:wrap;gap:.35rem 1.25rem;align-items:baseline;margin:0 0 .65rem;font-size:.9375rem}.contact-line dt{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;color:var(--ink-muted);min-width:5rem;margin:0}.contact-line dd{margin:0}.contact-line a{font-weight:600}.contact-form{display:grid;gap:.9rem;max-width:36rem}.contact-field{display:grid;gap:.35rem}.contact-label{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;color:var(--ink-muted)}.contact-input,.contact-textarea{width:100%;padding:.65rem .72rem;font:inherit;font-size:.9375rem;color:var(--ink);background:#fff;border:1px solid color-mix(in srgb,var(--rule) 75%,white 25%);transition:border-color .14s ease,box-shadow .14s ease}.contact-textarea{min-height:8.5rem;resize:vertical}.contact-input:focus-visible,.contact-textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #c41e1e1f}.contact-input.is-invalid,.contact-textarea.is-invalid{border-color:var(--accent)}.contact-field-error{min-height:1rem;font-size:.75rem;color:var(--accent)}.contact-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.1rem;margin-top:.15rem}.contact-submit{font:inherit;font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;background:var(--accent);border:1px solid var(--accent);padding:.62rem 1rem;cursor:pointer;transition:background-color .14s ease,border-color .14s ease,transform .14s ease}.contact-submit:hover{background:#a91717;border-color:#a91717;transform:translateY(-2px)}.contact-submit:disabled{opacity:.7;cursor:wait;transform:none}.contact-status{min-height:1rem;font-size:.8125rem;color:var(--ink-muted)}.contact-status.is-success{color:var(--ink)}.contact-status.is-error{color:var(--accent)}.contact-links{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--rule)}@media(max-width:720px){:root{--site-header-height: 6.75rem}.site-nav{align-items:center}.brand{padding:.15rem .4rem}.intro h1{font-size:clamp(1.8rem,9vw,2.75rem)}.intro__links{padding-block:0 1.25rem}.work-item,.contact-block{padding:1rem}}.site-footer{border-top:2px solid var(--rule);padding:1.25rem 0 2rem;font-size:var(--label-size);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.article-hero{margin-bottom:1.5rem}.article-hero .project-thumb{width:100%;height:auto;border:1px solid var(--rule);transition:border-color .18s ease,box-shadow .18s ease}.article-hero .project-thumb--icon{max-width:12rem;color:var(--ink);background:transparent;border:none}.article-meta{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;color:var(--ink-muted);margin:0 0 .5rem}.article-title{font-size:clamp(1.5rem,3.5vw,2.25rem);font-weight:700;line-height:1.15;margin:0 0 1rem;letter-spacing:-.02em}.article-body{color:var(--ink-muted);max-width:none}.article-body p{margin:0 0 1rem}.article-body.prose p,.article-body.prose p:first-child{max-width:none}.links-block{margin-top:2rem;padding-top:1.25rem;border-top:1px solid var(--rule)}.links-block h2{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;color:var(--ink-muted);margin:0 0 1rem}.link-row{display:flex;flex-wrap:wrap;gap:1rem}.link-row a{font-size:var(--label-size);font-weight:700;letter-spacing:var(--label-track);text-transform:uppercase;transition:color .12s ease}.link-row a:hover{color:var(--accent)}.case-study-media{margin:1.75rem 0;border:1px solid var(--rule);background:#fcfbf8}.case-study-video video{display:block;width:100%;height:auto;vertical-align:middle}.case-study-model model-viewer,.case-study-model__viewer{display:block;width:100%;height:var(--model-height, 28rem);background:linear-gradient(180deg,#f8f6f0,#ece8df);--poster-color: transparent}.case-study-media figcaption{margin:0;padding:.65rem .85rem;border-top:1px solid color-mix(in srgb,var(--rule) 70%,white 30%);font-size:var(--label-size);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-muted)}@media(prefers-reduced-motion:reduce){*{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
