:root{--paper:#f4efe5;--paper-deep:#ece5d6;--paper-deep-2:#e8dfcd;--paper-warm:#f0e9db;--ink:#1a1710;--muted:#56503f;--line:#cabfa9;--accent:#8b2f20;--focus:#1746a2;--paper-on-dark:#f4efe5;--muted-on-dark:#c9c0ad;--accent-on-dark:#f0c9b4;--font-display:Georgia, "Iowan Old Style", "Times New Roman", Times, serif;--font-sans:system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--page-max:1240px;--gutter:clamp(1.25rem, 4vw, 4rem)}*,:before,:after{box-sizing:border-box}html{scroll-padding-top:5rem}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background-color:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.55;overflow-x:clip}::selection{background-color:var(--ink);color:var(--paper)}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.contact :focus-visible,.footer :focus-visible{outline-color:var(--paper)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.arrow{font-family:var(--font-mono);margin-left:.3em;font-size:.9em}.wrap{width:100%;max-width:var(--page-max);padding-inline:var(--gutter);margin-inline:auto}.skip-link{z-index:100;background-color:var(--ink);color:var(--paper);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:.6rem .9rem;font-size:.72rem;text-decoration:none;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.masthead{z-index:30;background-color:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0}.masthead__inner{flex-wrap:wrap;align-items:baseline;gap:.5rem 2rem;padding-block:.8rem;display:flex}.wordmark{color:var(--ink);font-family:var(--font-display);letter-spacing:-.01em;font-size:1.1rem;font-weight:600;text-decoration:none}.wordmark__mark{color:var(--accent);margin-left:.1em}.masthead__nav{flex-wrap:wrap;gap:.3rem 1.4rem;margin-left:auto;display:flex}.masthead__nav a{color:var(--ink);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid #0000;padding-bottom:.15rem;font-size:.68rem;text-decoration:none}.masthead__nav a:hover,.masthead__nav a:focus-visible{border-bottom-color:var(--accent);color:var(--accent)}.masthead__status{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:.45rem;margin:0;font-size:.64rem;display:inline-flex}.status-dot{background-color:var(--accent);border-radius:50%;width:.5rem;height:.5rem}.hero{padding-block:clamp(1.1rem,2.4vw,1.8rem) clamp(1.8rem,3vw,2.6rem)}.hero__meta{border-bottom:1px solid var(--line);justify-content:space-between;gap:.5rem 1.5rem;padding-bottom:.7rem;display:flex}.kicker{color:var(--muted);font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.66rem}.hero__name{font-family:var(--font-display);letter-spacing:-.045em;margin:clamp(.8rem,1.8vw,1.3rem) 0 0;font-size:clamp(3.5rem,7vw,6.875rem);font-weight:500;line-height:.95}.hero__name em{font-style:italic}.hero__mark{color:var(--accent);vertical-align:1em;margin-left:.04em;font-size:.36em;font-style:normal}.hero__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;gap:clamp(1.6rem,4vw,4rem);margin-top:clamp(1rem,2vw,1.5rem);display:grid}.hero__role{color:var(--accent);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .55rem;font-size:.7rem}.hero__positioning{max-width:48ch;font-family:var(--font-display);margin:0;font-size:clamp(1.1rem,1.6vw,1.35rem);line-height:1.4}.hero__status{border-left:3px solid var(--accent);margin-top:clamp(.8rem,1.6vw,1.1rem);padding:.55rem 0 .55rem .9rem}.hero__status-label{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .25rem;font-size:.6rem}.hero__status-text{max-width:52ch;margin:0;font-size:.94rem;line-height:1.5}.hero__status-text strong{color:var(--accent);font-weight:600}.hero__availability{color:var(--muted);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:.35rem 0 0;font-size:.64rem}.hero__contact{flex-wrap:wrap;gap:.5rem 1.4rem;margin:clamp(.7rem,1.5vw,1rem) 0 0;padding:0;list-style:none;display:flex}.hero__contact a{border-bottom:1px solid var(--line);color:var(--ink);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;align-items:baseline;gap:.15rem;padding-bottom:.2rem;font-size:.68rem;text-decoration:none;display:inline-flex}.hero__contact a:hover,.hero__contact a:focus-visible{border-bottom-color:var(--accent);color:var(--accent)}.media{background-color:var(--paper-deep-2);border:1px solid var(--line);position:relative;overflow:hidden}.media picture{display:block}.media img{aspect-ratio:16/9;object-fit:cover;outline-offset:-1px;outline:1px solid #1a17100f;width:100%;height:auto;display:block}.media--hero{background-color:var(--paper-deep-2);box-shadow:10px 12px #1a171017}.hero-visual{margin:0}.hero-visual__caption{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:.2rem 1rem;margin:.5rem 0 0;font-size:.6rem;display:flex}.hero-visual__caption span:first-child{max-width:42ch}.hero-visual__caption a{color:var(--accent);white-space:nowrap;border-bottom:1px solid #0000;text-decoration:none}.hero-visual__caption a:hover,.hero-visual__caption a:focus-visible{border-bottom-color:currentColor}.hero__featured{border-top:1px solid var(--line);margin-top:clamp(1.1rem,2.2vw,1.6rem);padding-top:.8rem}.featured__head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.2rem 1rem;display:flex}.featured__title{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:.66rem;font-weight:400}.featured__all{border-bottom:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding-bottom:.15rem;font-size:.64rem;text-decoration:none}.featured__all:hover,.featured__all:focus-visible{border-bottom-color:var(--accent);color:var(--accent)}.featured__list{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:.55rem 0 0;padding:0;list-style:none;display:grid}.featured__list li+li{border-left:1px solid var(--line)}.featured__item{height:100%;color:var(--ink);grid-template-columns:auto minmax(0,1fr) auto;gap:.1rem .7rem;padding:.7rem 1rem .65rem;text-decoration:none;display:grid}.featured__list li:first-child .featured__item{padding-left:0}.featured__no{color:var(--accent);font-family:var(--font-mono);letter-spacing:.1em;grid-row:1;font-size:.62rem}.featured__name{font-family:var(--font-display);overflow-wrap:anywhere;grid-area:1/2;font-size:1.28rem;line-height:1.1}.featured__arrow{color:var(--muted);font-family:var(--font-mono);grid-area:1/3/span 2;align-self:center;font-size:.8rem}.featured__desc{color:var(--muted);grid-area:2/2/auto/span 2;font-size:.8rem;line-height:1.45}.featured__item:hover,.featured__item:focus-visible{background-color:var(--paper-deep);color:var(--ink)}.featured__item:hover .featured__name,.featured__item:focus-visible .featured__name{color:var(--accent)}.section{border-top:1px solid var(--line)}.section__inner{padding-block:clamp(2.4rem,4.5vw,4rem)}.section__head{grid-template-columns:auto minmax(0,1fr) minmax(0,19rem);align-items:end;gap:.6rem 2rem;display:grid}.section__index{color:var(--accent);font-family:var(--font-mono);letter-spacing:.14em;margin:0;font-size:.7rem}.section__title{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:clamp(1.9rem,4vw,3.2rem);font-weight:500;line-height:1}.section__note{color:var(--muted);text-align:right;margin:0;font-size:.85rem;line-height:1.5}.projects{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.4rem,2.6vw,2.2rem);margin-top:clamp(1.4rem,2.6vw,2rem);display:grid}.project{background-color:var(--paper-deep);border:1px solid var(--line);flex-direction:column;gap:.85rem;min-width:0;padding:clamp(.9rem,1.6vw,1.25rem);transition:transform .35s cubic-bezier(.2,.7,.2,1);display:flex;box-shadow:5px 5px #1a17100d}.project:hover,.project:focus-within{border-color:var(--ink);transform:translateY(-6px);box-shadow:10px 12px #1a171017}.project__media{margin:0}.project__media .media img{transition:transform .5s cubic-bezier(.2,.7,.2,1)}.project:hover .media img,.project:focus-within .media img{transform:scale(1.03)translateY(-2px)}.project__media figcaption{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-top:.45rem;font-size:.58rem}.project__meta{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:.2rem 1rem;margin:0;font-size:.6rem;display:flex}.project__title{font-family:var(--font-display);letter-spacing:-.02em;overflow-wrap:anywhere;margin:.1rem 0 0;font-size:clamp(1.5rem,2.3vw,2rem);font-weight:500;line-height:1.05}.project__desc{max-width:52ch;margin:0;font-size:.92rem;line-height:1.55}.project__links{border-top:1px solid var(--line);flex-wrap:wrap;gap:.5rem 1.4rem;margin:auto 0 0;padding:.8rem 0 0;list-style:none;display:flex}.project__links a{color:var(--accent);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-bottom:1px solid;padding-bottom:.18rem;font-size:.66rem;text-decoration:none;display:inline-block}.project__links a:hover,.project__links a:focus-visible{background-color:var(--ink);color:var(--paper)}.timeline{--rail-x:.35rem;--rail-pad:2rem;padding-left:var(--rail-pad);margin-top:clamp(1.3rem,2.5vw,1.8rem);position:relative}.timeline__rail{top:.3rem;bottom:.3rem;left:var(--rail-x);background-color:var(--line);width:1px;position:absolute}.timeline__fill{background-color:var(--accent);transform-origin:top;width:100%;height:100%;transition:transform .15s linear;display:block;transform:scaleY(1)}.timeline__list{margin:0;padding:0;list-style:none}.timeline__item{border-bottom:1px solid var(--line);padding:.65rem 0 .7rem;position:relative}.timeline__item:before{content:"";top:1rem;left:calc(var(--rail-x) - var(--rail-pad) - 5px);background-color:var(--paper);border:1.5px solid var(--accent);border-radius:50%;width:9px;height:9px;position:absolute}.timeline__item:last-child{border-bottom:0}.timeline__item--earlier:before{border-color:var(--muted)}.timeline__when{color:var(--muted);font-family:var(--font-mono);letter-spacing:.05em;margin:0 .9rem 0 0;font-size:.64rem;display:inline-block}.timeline__kind{color:var(--accent);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .1rem;font-size:.58rem;display:inline-block}.timeline__role{font-family:var(--font-display);margin:.12rem 0 0;font-size:1.05rem;font-weight:500;line-height:1.25}.timeline__role--sub{margin-top:.35rem;font-size:.98rem}.timeline__item .org{color:var(--muted);margin:.1rem 0 0;font-size:.82rem}.timeline__item--earlier .timeline__role{font-weight:400}.timeline__item--earlier .timeline__kind{color:var(--muted)}.timeline__note{border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);letter-spacing:.02em;margin:1.2rem 0 0;padding-top:.8rem;font-size:.64rem}.toolkit__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2.5vw,2rem) clamp(1.5rem,4vw,3.5rem);margin-top:clamp(1.2rem,2.4vw,1.8rem);display:grid}.toolkit__label{color:var(--muted);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .45rem;font-size:.62rem;font-weight:400}.toolkit__list{font-family:var(--font-display);margin:0;padding:0;font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.65;list-style:none}.toolkit__list li{display:inline}.toolkit__list li:not(:last-child):after{content:" · ";color:var(--muted)}.toolkit__note{border-left:3px solid var(--accent);grid-column:1/-1;margin:0;padding-left:.9rem;font-size:.9rem;line-height:1.55}.contact{background-color:var(--ink);color:var(--paper-on-dark);border-top:1px solid var(--ink);margin-top:clamp(1rem,2vw,1.5rem)}.contact__inner{padding-block:clamp(2.4rem,5vw,4rem) clamp(1.6rem,3vw,2.4rem)}.contact .section__index{color:var(--accent-on-dark)}.contact__title{font-family:var(--font-display);letter-spacing:-.04em;margin:.4rem 0 0;font-size:clamp(2.6rem,6.5vw,5.5rem);font-weight:500;line-height:.95}.contact__dot{color:var(--accent-on-dark)}.contact__status{max-width:68ch;color:var(--muted-on-dark);font-family:var(--font-mono);letter-spacing:.03em;margin:1rem 0 0;font-size:.72rem}.contact__address{margin-top:clamp(1.4rem,3vw,2.2rem);font-style:normal}.contact__links{border-top:1px solid #f4efe538;margin:0;padding:0;list-style:none}.contact__links li{border-bottom:1px solid #f4efe538}.contact__links a{color:var(--paper-on-dark);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.3rem 1.5rem;padding:clamp(.8rem,1.8vw,1.2rem) 0;text-decoration:none;transition:transform .3s;display:flex}.contact__label{font-family:var(--font-display);text-underline-offset:.16em;font-size:clamp(1.4rem,2.6vw,2rem);line-height:1.1;text-decoration:underline 1px #f4efe559}.contact__detail{color:var(--muted-on-dark);font-family:var(--font-mono);letter-spacing:.02em;overflow-wrap:anywhere;text-align:right;font-size:.74rem}.contact__links a:hover,.contact__links a:focus-visible{color:var(--accent-on-dark);transform:translate(5px)}.contact__links a:hover .contact__detail,.contact__links a:focus-visible .contact__detail,.contact__links a:hover .contact__label,.contact__links a:focus-visible .contact__label{color:var(--accent-on-dark)}.footer{background-color:var(--ink);color:var(--muted-on-dark);border-top:1px solid #f4efe538}.footer__inner{font-family:var(--font-mono);letter-spacing:.04em;flex-wrap:wrap;justify-content:space-between;gap:.4rem 1.5rem;padding-block:1.1rem 1.7rem;font-size:.64rem;display:flex}.footer p{margin:0}@media (prefers-reduced-motion:no-preference){.js .reveal{opacity:0;transition:opacity .65s,transform .65s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0) * 75ms);transform:translateY(20px)}.js .reveal.is-visible{opacity:1;transform:translateY(0)}.js .project.reveal.is-visible:hover,.js .project.reveal.is-visible:focus-within{transform:translateY(-6px)}.js .hero-visual img{transform:scale(1.12)}}@media (width<=980px){.hero__grid{grid-template-columns:1fr}.hero-visual{max-width:34rem}.featured__list{grid-template-columns:1fr}.featured__list li+li{border-left:0;border-top:1px solid var(--line)}.featured__list li:first-child .featured__item{padding-left:1rem}.projects{grid-template-columns:1fr}.section__head{grid-template-columns:auto minmax(0,1fr);align-items:start}.section__note{text-align:left;grid-column:2}.toolkit__grid{grid-template-columns:1fr}.toolkit__note{grid-column:1}}@media (width<=640px){html{scroll-padding-top:7rem}.masthead__inner{gap:.35rem 1rem;padding-block:.65rem}.masthead__nav{gap:.3rem 1.1rem;width:100%;margin-left:0}.masthead__status{width:100%}.hero__meta{flex-direction:column;gap:.25rem}.hero__name{font-size:clamp(3rem,14vw,4.4rem)}.hero__positioning{max-width:none}.hero-visual{max-width:100%}.section{padding-block:2rem}.section__title{font-size:clamp(1.7rem,7.5vw,2.3rem)}.project{padding:.75rem}.projects{gap:1rem}.toolkit__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.25rem}.toolkit__note{grid-column:1/-1;margin-top:.25rem}.contact__title{font-size:clamp(2.2rem,11vw,3.2rem)}.footer__inner{flex-direction:column;gap:.3rem;font-size:.62rem}.section__head{grid-template-columns:1fr}.section__note{grid-column:1}.timeline{--rail-pad:1.5rem}.contact__links a{flex-direction:column;gap:.15rem}.contact__detail{text-align:left}.contact__links a:hover,.contact__links a:focus-visible{transform:none}.footer__inner{flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.js .reveal,.js .reveal.is-visible{opacity:1;transform:none}.hero-visual img{transform:none!important}.project:hover,.project:focus-within,.project:hover .media img,.project:focus-within .media img,.contact__links a:hover,.contact__links a:focus-visible{transform:none}.timeline__fill{transition:none;transform:scaleY(1)!important}}
