@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;450;500;550;600;650;700&display=swap');
:root{font-family:'Manrope',Arial,sans-serif;color:#242424;background:#fcfcfa;font-synthesis:style;font-size:16px;--muted:#74746f;--line:#deded9}*{box-sizing:border-box}body{margin:0;padding:0 4%;}a{color:inherit;text-decoration:none}header{display:flex;align-items:center;justify-content:space-between;padding:48px 0 86px;gap:24px}.name{font-size:30px;font-weight:550;letter-spacing:-1.3px}.name-dot{font-size:12px;vertical-align:top;display:inline-block;margin:5px 0 0 5px;letter-spacing:0}nav{display:flex;gap:32px}nav a{padding:10px 0;font-size:16px}nav a:hover,nav a[aria-current]{text-decoration:underline;text-underline-offset:6px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.section-heading h1{font-size:16px;font-weight:500;margin:0}.section-heading>span{color:var(--muted);font-size:14px}.count{font-size:12px;color:var(--muted);margin-left:9px}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:24px;row-gap:49px}.thumbnail{aspect-ratio:1.25;overflow:hidden;position:relative;background:#e8e8e6}.thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.6,.3,1)}.art{width:100%;height:100%;padding:7%;display:flex;flex-direction:column;justify-content:space-between;transition:transform .6s cubic-bezier(.2,.6,.3,1);overflow:hidden}.art strong{white-space:pre-line;font-size:clamp(2.7rem,5.9vw,6.8rem);font-weight:500;line-height:.88;letter-spacing:-.065em}.art-top,.art-bottom{font-size:10px;letter-spacing:.025em}.art-top{font-size:9px;letter-spacing:.12em}.art-form{background:#ebede4;color:#333e26}.art-form strong{font-family:inherit;font-weight:400;font-size:clamp(2.7rem,5.5vw,6.4rem);letter-spacing:-.075em}.art-offgrid{background:#dbe953;color:#263225}.art-offgrid strong{font-weight:700;font-size:clamp(3.4rem,7.5vw,9rem)}.art-blue{background:#2449dc;color:#e9f1ff}.art-blue strong{font-weight:450}.art-mono{background:#252724;color:#f3f3ed}.art-mono strong{font-weight:550;letter-spacing:-.09em;font-size:clamp(3.4rem,6.9vw,8rem)}.art-index{background:#e9a081;color:#532c2a}.art-index strong{font-family:inherit;font-style:italic;letter-spacing:-.07em;font-size:clamp(2.8rem,5.7vw,6.5rem)}.art-common{background:#d6dce2;color:#2d3b48}.art-common strong{font-size:clamp(2.2rem,4.5vw,5rem);letter-spacing:-.065em;line-height:.95}.project-title{display:flex;justify-content:space-between;align-items:center;margin-top:17px;gap:12px}.project h2{font-weight:550;font-size:16px;letter-spacing:-.25px;margin:0}.project-number{font-size:12px;color:var(--muted)}.project p{font-size:14px;color:var(--muted);line-height:1.5;margin:6px 0 0}.open-project{position:absolute;right:15px;bottom:15px;width:38px;height:38px;display:grid;place-items:center;background:#fff;border-radius:50%;transform:translateY(65px);transition:transform .25s;font-size:22px}.project:hover .art,.project:hover img{transform:scale(1.035)}.project:hover .open-project,.project:focus-visible .open-project{transform:translateY(0)}a:focus-visible{outline:2px solid #315bcd;outline-offset:6px}main:focus{outline:none}.skip{position:fixed;top:-100px;background:white;padding:12px;z-index:10}.skip:focus{top:10px}footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:25px 0 32px;margin-top:95px;font-size:12px;color:var(--muted);gap:20px}footer a:hover{color:#222}.about{padding:15px 0 60px;max-width:1000px}.eyebrow{font-size:14px;color:var(--muted)}.about h1{font-size:clamp(44px,7vw,90px);font-weight:450;line-height:1.05;letter-spacing:-.065em;margin:30px 0 50px}.about-copy{max-width:520px;margin-left:auto}.about p{font-size:20px;line-height:1.5;letter-spacing:-.3px}.about .placeholder-note{font-size:14px;color:var(--muted)}.text-link{display:inline-block;font-size:14px;padding:10px 0;text-decoration:underline;text-underline-offset:5px}.experiment-surface{background:#e9ebdf;padding:7%;min-height:480px}.experiment-surface h2{font-size:clamp(40px,7vw,85px);line-height:1;letter-spacing:-.055em;font-weight:450}.experiment-surface h2 span{color:#657145;margin-left:30px}.experiment-surface p{font-size:16px;line-height:1.6}.detail-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:35px 0}.detail-heading h1{font-size:clamp(32px,5vw,64px);letter-spacing:-.06em;font-weight:450;margin:0}.detail-heading p{max-width:290px;line-height:1.6;color:var(--muted)}.project-detail>.thumbnail{max-width:950px;aspect-ratio:1.6;margin:auto}.project-detail .art strong{font-size:clamp(4rem,12vw,10rem)}.detail-copy{display:flex;justify-content:space-between;gap:30px;margin-top:35px;font-size:14px}.detail-copy p{margin:0;color:var(--muted)}
@media(min-width:1600px){body{max-width:1800px;margin:auto;padding:0 64px}}@media(max-width:1000px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.art strong{font-size:9vw}.art-offgrid strong{font-size:12vw}.art-common strong{font-size:7vw}header{padding-bottom:68px}}@media(max-width:600px){body{padding:0 22px}header{padding:30px 0 60px;gap:15px}.name{font-size:25px}nav{gap:20px}nav a{font-size:14px}.gallery{grid-template-columns:1fr;row-gap:35px}.section-heading{margin-bottom:20px}.section-heading>span{font-size:12px}.section-heading h1{font-size:14px}.count{margin-left:5px;font-size:11px}.art strong{font-size:19vw}.art-offgrid strong{font-size:25vw}.art-common strong{font-size:16vw}.thumbnail{aspect-ratio:1.2}.project-title{margin-top:15px}footer{margin-top:65px;flex-wrap:wrap;justify-content:space-between}footer>span:first-child{width:100%}.about h1{margin:30px 0}.about-copy{margin:0}.about p{font-size:18px}.detail-heading,.detail-copy{display:block}.detail-copy p{margin-top:20px}.experiment-surface{padding:30px 24px;min-height:420px}.experiment-surface h2 span{display:block;margin:20px 0}.project-detail>.thumbnail{aspect-ratio:1.2}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

.name,.count{white-space:nowrap}@media(max-width:380px){nav{gap:15px}.name{font-size:22px}.section-heading>span{display:none}}

/* Three-line introduction, with natural wrapping on smaller screens. */
header{align-items:flex-start;gap:48px}
header .name{display:block;max-width:1060px;min-width:0;font-size:clamp(1.125rem,1.55vw,1.5rem);font-weight:450;letter-spacing:-.035em;line-height:1.5;white-space:normal}
.name>span{display:block}
.name>span+span{margin-top:.25em}
header nav{flex-shrink:0;padding-top:0}
@media(max-width:800px){header{flex-direction:column;gap:24px;padding-bottom:56px}header nav{align-self:flex-end}header .name{font-size:1.25rem}}

.header-intro{min-width:0;max-width:1060px}.construction-note{margin:1rem 0 0;color:#f06a00;font-size:.875rem;font-weight:400;line-height:1.5;letter-spacing:0}

/* Non-interactive sketch overlay; the native cursor and links stay usable. */
.cursor-trail{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:100;mix-blend-mode:multiply}
@media(prefers-reduced-motion:reduce),(any-pointer:none){.cursor-trail{display:none}}

/* Interior navigation keeps a compact home link. */
header.compact-header{flex-direction:row;align-items:center;gap:24px}
header.compact-header .name{font-size:1.875rem;font-weight:550;letter-spacing:-.04em;white-space:nowrap}
header.compact-header nav{align-self:auto}
@media(max-width:600px){header.compact-header{gap:16px}header.compact-header .name{font-size:1.5rem}}

/* Project pages lead with the case study, retaining the global navigation. */
header.project-header{flex-direction:row;justify-content:flex-end;padding:32px 0 24px;gap:0}
header.project-header .header-intro{display:none}
header.project-header nav{align-self:auto}
@media(max-width:600px){header.project-header{padding:24px 0 20px}}



/* Give the shorter home introduction a compact, balanced rhythm. */
header:not(.compact-header):not(.project-header){padding-bottom:64px}
@media(max-width:800px){header:not(.compact-header):not(.project-header){padding-bottom:44px}}



header .name strong{font-weight:650}
header.compact-header .name{font-weight:650}

.social-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:24px}

.social-links .text-link{display:inline-flex;align-items:center;gap:8px}.social-links svg{width:16px;height:16px;flex-shrink:0}

/* Keep each social link together; wrap only between complete links. */
.social-links .text-link{white-space:nowrap;flex-wrap:nowrap;flex-shrink:0}
.social-links .text-link>span{display:inline;margin:0}

.email-link{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere;user-select:text}

.email-copy{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left;line-height:inherit}
.email-address{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere;user-select:text}
.copy-label{font-size:.75rem;color:var(--muted);margin-left:8px;white-space:nowrap;letter-spacing:0;font-weight:400;text-decoration:none}
.email-copy:focus-visible{outline:2px solid #315bcd;outline-offset:5px}

.email-copy .email-address{transition:color .18s ease}
.email-copy:hover .email-address,.email-copy:focus-visible .email-address{color:var(--muted)}

/* A loose pinboard for experiments. */
.sandbox-hint{font-size:.8125rem;color:var(--muted);margin:-6px 0 22px;line-height:1.6}
.sandbox-hint>span{margin-left:8px}
.sandbox{position:relative;isolation:isolate;height:680px;overflow:hidden;border:1px solid #e3e3df;background-color:#f1f1ed;background-image:radial-gradient(#b8b8b0 .8px,transparent .8px);background-size:20px 20px;border-radius:3px}
.sandbox::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23777777' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.sandbox-tile{position:absolute;display:block;width:clamp(180px,24vw,290px);padding:9px;background:#fff;box-shadow:0 4px 9px #2020200d,0 16px 35px #20202012;transform:rotate(var(--tilt));transform-origin:center;cursor:grab;touch-action:none;user-select:none;-webkit-user-drag:none;transition:box-shadow .2s ease,transform .2s ease}
.sandbox-tile:hover,.sandbox-tile:focus-visible{box-shadow:0 8px 18px #20202017,0 24px 45px #2020201c;transform:rotate(0deg)}
.sandbox-tile.is-dragging{cursor:grabbing;transform:rotate(0deg) scale(1.025);box-shadow:0 14px 40px #20202029}
.sandbox-image{aspect-ratio:1.18;overflow:hidden;pointer-events:none}
.sandbox-image img{width:100%;height:100%;object-fit:cover;display:block}
.sandbox-image .art{padding:8%}
.sandbox-image .art strong{font-size:clamp(2.5rem,4.8vw,4.4rem)}
.sandbox-image .art-top{font-size:8px}.sandbox-image .art-bottom{font-size:9px}
.sandbox-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 3px 4px;font-size:.8125rem;font-weight:500;pointer-events:none}
@media(max-width:600px){.sandbox{height:730px;background-size:18px 18px}.sandbox-tile{width:178px;padding:7px}.sandbox-image .art strong{font-size:2.65rem}.sandbox-hint>span{display:none}.sandbox-caption{font-size:.75rem;padding:10px 2px 4px}}

/* Case studies keep the gallery's type system and a calmer reading width. */
.case-study{max-width:950px;margin:0 auto;padding-top:8px}
.case-back{margin-bottom:30px}
.case-introduction h1{font-size:clamp(2.125rem,4.3vw,3.625rem);font-weight:550;letter-spacing:-.055em;line-height:1.1;margin:0 0 24px}
.case-introduction>p{font-size:1rem;line-height:1.65;color:var(--muted);max-width:850px;margin:0}
.project-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 48px;margin:42px 0 36px}
.project-facts dt{font-size:.9375rem;font-weight:650;margin-bottom:7px}
.project-facts dd{font-size:1rem;color:var(--muted);line-height:1.5;margin:0}
.art-threading{background:#9b1639;color:#ffe9d1}.art-threading strong{font-size:clamp(2rem,4.4vw,5rem);line-height:.98;font-weight:500}
.project-detail .art-threading strong{font-size:clamp(2.8rem,8vw,7rem)}
@media(max-width:600px){.case-study{padding-top:0}.case-back{margin-bottom:24px}.project-facts{gap:24px 20px;margin:32px 0}.case-introduction h1{margin-bottom:20px}.art-threading strong{font-size:12vw}}

/* Keep the case-study back link aligned with the original page edge. */
.case-study{max-width:none;margin:0;padding-top:0}
.case-study .case-introduction,.case-study .project-facts{max-width:950px;margin-left:auto;margin-right:auto}

/* Shared project navigation remains reachable while reading a case study. */
.project-nav-back[hidden]{display:none}
header.project-header{position:sticky;top:0;z-index:200;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px 0;background:#fcfcfaf5;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);margin-bottom:40px}
header.project-header .project-nav-back{margin:0;padding:10px 0;font-size:1rem;text-decoration:none;white-space:nowrap}
header.project-header .project-nav-back:hover{text-decoration:underline;text-underline-offset:6px}
header.project-header nav{align-items:center}
@media(max-width:600px){header.project-header{padding:12px 0;margin-bottom:30px;gap:16px}header.project-header .project-nav-back{font-size:.875rem}header.project-header nav{gap:18px}}

/* Project photography aligns with the centered case-study text column. */
.case-gallery{width:100%;max-width:950px;display:grid;gap:24px;margin:36px auto 0}
.case-gallery>img{display:block;width:100%;height:auto;max-width:none}
@media(max-width:600px){.case-gallery{gap:16px;margin-top:28px}}

.back-to-top{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}.back-to-top:hover{color:#222}.back-to-top:focus-visible{outline:2px solid #315bcd;outline-offset:5px}

.art-attention{background:#dbe953;color:#263225}.art-attention strong{font-size:clamp(2.2rem,4.7vw,5.5rem);font-weight:650;line-height:.95}
@media(max-width:600px){.art-attention strong{font-size:13vw}}

.case-gallery>video{display:block;width:100%;height:auto;max-width:100%;background:#111}

.case-introduction>.text-link{transition:color .18s ease}
.case-introduction>.text-link:hover,.case-introduction>.text-link:focus-visible{color:var(--muted)}

.art-contamination{background:#2449dc;color:#e9f1ff}.art-contamination strong{font-size:clamp(1.5rem,3.1vw,3.7rem);line-height:1.05;font-weight:500}
.project-detail .art-contamination strong{font-size:clamp(2rem,6vw,5.5rem)}
@media(max-width:600px){.art-contamination strong{font-size:8vw}}

.art-artbook{background:#252724;color:#f3f3ed}.art-artbook strong{font-size:clamp(2rem,4.5vw,5rem);line-height:1; font-weight:500}
@media(max-width:600px){.art-artbook strong{font-size:13vw}}

/* Cards hug the full image rather than a fixed thumbnail box. */
.sandbox{height:680px}
.sandbox-tile{width:min(clamp(125px,18vw,210px),calc(220px * var(--image-ratio) + 14px));padding:7px;background:#fff}
.sandbox-image{aspect-ratio:auto}
.sandbox-image img{display:block;width:100%;height:auto;max-height:none}
.sandbox-caption{display:block;text-align:left;font-size:.75rem;padding:9px 0 3px;line-height:1.3;overflow-wrap:anywhere}
.sandbox-tile:focus-visible{outline:2px solid var(--muted);outline-offset:5px}
@media(max-width:600px){.sandbox{height:730px}.sandbox-tile{width:min(40%,178px,calc(115px * var(--image-ratio) + 10px));padding:5px}.sandbox-caption{font-size:.625rem;padding:6px 0 2px}}

.sandbox-caption{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;text-align:left}
.sandbox-link-arrow{flex-shrink:0}

/* Keep ten cards comfortably spaced inside the existing board. */
.sandbox-tile{width:min(clamp(100px,15vw,190px),calc(220px * var(--image-ratio) + 14px))}
@media(max-width:600px){.sandbox-tile{width:min(40%,178px,calc(85px * var(--image-ratio) + 10px))}}

/* Info pairs the biography with a concise experience and education list. */
.about{max-width:none;padding:15px 0 40px}
.about h1.eyebrow{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0;margin:0 0 32px;color:var(--muted)}
.info-columns{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(48px,9vw,150px);align-items:start}
.about-copy{max-width:580px;margin:0;text-align:left}
.about-copy>p{margin:0 0 24px}
.info-resume{max-width:470px;text-align:left}
.info-resume section+section{margin-top:40px}
.info-resume h2{font-size:14px;font-weight:400;color:var(--muted);margin:0 0 23px}
.resume-entry{margin:0 0 24px}
.resume-entry h3{font-size:16px;font-weight:600;line-height:1.5;margin:0 0 3px}
.about .resume-entry p{font-size:14px;line-height:1.6;letter-spacing:0;margin:0 0 3px}
.resume-entry>span{display:block;color:var(--muted);font-size:13px;line-height:1.6}
@media(max-width:760px){.info-columns{grid-template-columns:1fr;gap:40px}.about h1.eyebrow{margin-bottom:24px}.info-resume{max-width:none}}

/* Reserve the third column for Airla's portrait. */
.info-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,4vw,64px)}
.info-bio,.info-resume{min-width:0;max-width:none}
.about h1.eyebrow,.info-resume h2{font-size:14px;font-weight:400;line-height:1.5;letter-spacing:0;margin:0 0 28px;color:var(--muted)}
.about-copy{max-width:none}
.about-copy>p{font-size:18px;line-height:1.6}
.info-photo{min-width:0}
.info-photo img{display:block;width:100%;height:auto}
@media(max-width:900px){.info-columns{grid-template-columns:repeat(2,minmax(0,1fr))}.info-photo{grid-column:1/-1;max-width:420px}}
@media(max-width:600px){.info-columns{grid-template-columns:1fr;gap:40px}.info-photo{grid-column:auto}.about h1.eyebrow,.info-resume h2{margin-bottom:24px}}

/* Give the text room while keeping the portrait a smaller third column. */
.info-columns{grid-template-columns:minmax(0,1.35fr) minmax(0,1.15fr) minmax(0,.65fr);column-gap:clamp(40px,5.5vw,88px)}
.info-photo{padding-top:49px;max-width:260px;width:100%;justify-self:end}
.portrait-card{margin:0;padding:7px;background:#fff;box-shadow:0 4px 9px #2020200d,0 16px 35px #20202012;transform:rotate(4deg);transition:box-shadow .2s ease,transform .2s ease}
.portrait-card:hover{transform:rotate(0deg);box-shadow:0 8px 18px #20202017,0 24px 45px #2020201c}
.portrait-card img{display:block;width:100%;height:auto;user-select:none;-webkit-user-drag:none}
@media(max-width:900px){.info-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px}.info-photo{padding-top:0;justify-self:start;max-width:240px}}
@media(max-width:600px){.info-columns{grid-template-columns:1fr}.info-photo{max-width:220px}}
@media(prefers-reduced-motion:reduce){.portrait-card{transition:none}}

.info-photo{justify-self:start}
@media(min-width:901px){.info-photo{transform:translateX(-28px)}}

/* More separation for the bio, with the portrait closer to the resume. */
@media(min-width:901px){
  .info-columns{column-gap:clamp(52px,7vw,112px)}
  .info-photo{transform:translateX(-84px)}
}

@media(max-width:600px){.info-photo{justify-self:center;transform:none}}

/* Put navigation before the introduction on the mobile home page. */
@media(max-width:800px){
  header:not(.compact-header):not(.project-header)>nav{order:-1;align-self:flex-end}
  header:not(.compact-header):not(.project-header){gap:28px}
}

/* Responsive dividers frame the home gallery introduction. */
header:not(.compact-header):not(.project-header){border-bottom:1px solid rgba(116,116,111,.2);padding-bottom:32px;margin-bottom:28px}
section:has(> .section-heading #work-heading)>.section-heading{margin-bottom:28px}
@media(max-width:800px){
  header:not(.compact-header):not(.project-header)>nav{align-self:flex-start}
  header:not(.compact-header):not(.project-header){padding-bottom:24px;margin-bottom:22px}
  section:has(> .section-heading #work-heading)>.section-heading{margin-bottom:22px;flex-wrap:wrap;gap:8px 20px}
}

.arrow-icon{display:inline-block;width:1em;height:1em;vertical-align:-.12em;flex-shrink:0}
