/* Source images are composed as close-ups. The original pixels are unchanged.
   Layers: collage pieces 1–2, skip link 3, native dialog in the top layer. */
.page{width:min(1280px,calc(100% - 112px))}.masthead{min-height:80px}
.portfolio-layout{display:grid;grid-template-columns:258px minmax(0,1fr);gap:72px;padding-top:54px}
.identity{position:sticky;top:44px;align-self:start;padding-bottom:40px}.identity .portrait{width:92px;height:92px;margin:0 0 28px;position:static}.identity h1{font-size:47px;letter-spacing:-.065em;line-height:1.1;margin:0 0 23px;white-space:nowrap;padding:0;min-height:0}.identity .role{font-size:17px;line-height:1.6;letter-spacing:-.025em;margin-bottom:22px}.identity .intro-note{font-size:14px;line-height:1.8;margin-bottom:29px}
.chapter-links{display:flex;flex-direction:column;gap:13px;font-size:12px;margin-bottom:34px}.chapter-links a{display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--muted)}.chapter-links a:hover,.chapter-links a[aria-current=true]{color:var(--ink)}.chapter-links span{color:var(--accent)}.identity-contact{font-size:13px;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:5px}.body-of-work{min-width:0}
.section-intro{margin-bottom:32px}.section-intro h2{font-size:30px;line-height:1.2;font-weight:500;letter-spacing:-.047em;margin:0 0 10px}.section-intro p{font-size:13px;color:var(--muted);margin:0}
.work-gallery{display:grid;grid-template-columns:1fr 1fr;gap:40px 22px}.work-item{min-width:0}.item-app{grid-column:1/-1}
.art{display:block;isolation:isolate;position:relative;aspect-ratio:1.18;overflow:hidden;border-radius:8px;cursor:zoom-in;background:var(--surface)}.art-composition{position:absolute;inset:0;display:block}.cut{position:absolute;display:block;overflow:hidden;border-radius:6px;box-shadow:0 14px 30px rgb(13 21 14 / .20);background:#f8f8fa;transform:var(--pose);transform-origin:center}.cut img{position:absolute;max-width:none;height:auto;display:block;pointer-events:none}
.art-app{aspect-ratio:1.8;background:#a5ad9a}.app-result{width:82%;left:29%;top:8%;--pose:rotate(-5deg);border:1px solid rgb(243 246 240 / .6)}.app-conversation{width:31%;left:6%;top:25%;--pose:rotate(3deg);z-index:2;box-shadow:0 18px 35px rgb(28 38 21 / .3)}
.art-presentation{background:#393545}.presentation-screen{width:113%;left:7%;top:16%;--pose:rotate(-7deg);border-radius:6px}.presentation-control{width:67%;left:12%;top:64%;--pose:rotate(1deg);border-radius:999px;background:#181728;box-shadow:0 12px 28px rgb(12 10 19 / .4)}
.art-email{background:#c0c7d0}.email-incoming{width:84%;left:3%;top:10%;--pose:rotate(-6deg);border:9px solid #f8f8fa}.email-reply{width:89%;left:15%;top:53%;--pose:rotate(4deg);z-index:2}
.art-forms{background:#aeaa92}.form-sheet{width:76%;left:17%;top:21%;--pose:rotate(-6deg);border-radius:7px}.form-request{width:93%;left:-2%;top:9%;--pose:rotate(2deg);border-radius:6px;box-shadow:0 8px 16px rgb(52 49 25 / .16)}
.art-push{background:#99a5b6}.push-phone{width:49%;left:47%;top:20%;--pose:rotate(8deg);border-radius:21px 21px 0 0}.push-permission{width:110%;left:-5%;top:55%;--pose:rotate(-5deg);z-index:2;border:9px solid #fff;box-shadow:0 16px 32px rgb(25 34 48 / .24)}
.art-agents{background:#beb8bd}.agent-conversation{width:93%;left:10%;top:13%;--pose:rotate(-4deg);border:13px solid #fff}
.work-caption{padding-top:16px}.work-family{font-size:11px;color:var(--muted);margin:0 0 5px}.work-caption h3{font-size:20px;line-height:1.25;letter-spacing:-.03em;font-weight:500;margin:0 0 10px}.work-caption h3 a{display:flex;align-items:center;justify-content:space-between;gap:12px}.work-caption h3 span{font-size:17px;color:var(--accent);font-weight:400}.work-caption h3 a:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}.work-description{font-size:13px;line-height:1.7;color:var(--muted);margin:0;max-width:48ch}
.item-app .work-caption{display:grid;grid-template-columns:1fr 1.1fr;gap:0 28px;align-items:start}.item-app .work-family{grid-column:1}.item-app h3{grid-column:1;font-size:24px}.item-app .work-description{grid-column:2;grid-row:1/3;padding-top:2px}.item-agents{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:center}.item-agents .art{aspect-ratio:1.35}.item-agents .work-caption{padding:8px 0 8px 12px}.item-agents .work-description{max-width:30ch}.long-tail{color:var(--muted);font-size:13px;line-height:1.8;margin:32px 0 0;max-width:63ch}
.university-work{margin-top:72px;padding-top:40px;border-top:1px solid var(--line)}.university-heading{position:relative;padding-right:170px;margin-bottom:40px}.university-heading h2{font-size:36px;letter-spacing:-.05em;line-height:1.15;font-weight:500;margin:0 0 20px}.university-heading p{font-size:14px;line-height:1.8;color:var(--muted);max-width:46ch;margin:0}.university-marks{position:absolute;right:0;top:3px;display:flex;gap:16px}.university-marks img{width:62px;height:62px;object-fit:contain}
.archive-group{display:grid;grid-template-columns:132px minmax(0,1fr);gap:28px;padding:27px 0;border-top:1px solid var(--line)}.archive-group h3{font-size:12px;color:var(--muted);font-weight:400;margin:3px 0 0}.archive-entries{display:grid;grid-template-columns:1fr 1fr;gap:30px 26px}.archive-entries h4{font-size:15px;font-weight:500;letter-spacing:-.025em;line-height:1.55;margin:0 0 7px}.archive-entries p{font-size:11px;color:var(--muted);margin:0}.archive-logo{height:40px;margin:0 0 12px;display:flex;align-items:center}.archive-logo img{max-width:135px;height:auto;max-height:32px;object-fit:contain}.archive-logo .logo-layers{width:135px}.archive-logo .logo-ink{height:auto}.university-more{font-size:12px;line-height:1.8;color:var(--muted);margin:19px 0 16px;max-width:60ch}.profile-link{font-size:12px;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--line)}.profile-link span{margin-left:10px;color:var(--accent)}
.practice{margin-top:58px;border-top:1px solid var(--line);padding-top:32px}.practice h2{font-size:23px;letter-spacing:-.04em;font-weight:500;margin:0 0 15px}.practice>p{color:var(--muted);font-size:14px;line-height:1.8;max-width:55ch;margin:0 0 28px}.practice .stack{gap:22px 32px}.folio-footer{margin-top:56px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;font-size:11px;color:var(--muted);padding:24px 0 32px}.skip-link{z-index:3}
:root[data-theme=dark] .archive-logo>img{filter:brightness(1.6)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .archive-logo>img{filter:brightness(1.6)}}
.project-dialog{width:min(1120px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:24px;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px}.project-dialog::backdrop{background:rgb(8 12 9 / .8)}.detail-header{display:flex;justify-content:space-between;gap:24px;margin-bottom:22px;align-items:center}.detail-header p{color:var(--muted);font-size:12px;margin:0 0 4px}.detail-header h2{font-size:25px;font-weight:500;letter-spacing:-.035em;line-height:1.2;margin:0}.detail-close{border:1px solid var(--line);border-radius:6px;padding:9px 13px;background:var(--surface);font-size:12px;display:flex;gap:15px;align-items:center}.detail-close span{font-size:20px;line-height:1}.detail-media{background:var(--surface);border-radius:6px;overflow:hidden;min-height:160px;display:grid;place-items:center}.detail-media img{width:100%;height:auto;max-height:65dvh;object-fit:contain}.detail-error{font-size:13px;padding:32px;text-align:center;color:var(--muted)}.detail-footer{display:flex;justify-content:space-between;align-items:start;gap:40px;padding-top:20px}.detail-footer p{font-size:13px;color:var(--muted);margin:0;max-width:65ch;line-height:1.7}.detail-footer a{font-size:12px;white-space:nowrap;text-decoration:underline;text-underline-offset:5px}
@media(prefers-reduced-motion:no-preference){.cut{transition:transform .55s cubic-bezier(.2,.7,.2,1)}.art:hover .cut,.art:focus-visible .cut{transform:rotate(0deg) translateY(-4px)}.art:active .cut{transform:rotate(0deg) scale(.99)}.project-dialog[open]{animation:detail-enter .2s ease-out}@keyframes detail-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}
@media(min-width:1440px){.portfolio-layout{grid-template-columns:280px minmax(0,1fr);gap:90px}.identity h1{font-size:51px}}
@media(max-width:1100px){.page{width:calc(100% - 72px)}.portfolio-layout{grid-template-columns:220px minmax(0,1fr);gap:40px}.identity h1{font-size:40px}.identity .role{font-size:16px}.university-heading{padding-right:125px}.university-marks{gap:9px}.university-marks img{width:49px;height:49px}.university-heading h2{font-size:31px}.archive-group{grid-template-columns:104px minmax(0,1fr);gap:18px}.archive-entries{gap:26px 18px}.archive-entries h4{font-size:14px}}
@media(max-width:899px){.portfolio-layout{grid-template-columns:190px minmax(0,1fr);gap:30px}.identity h1{font-size:36px}.identity .portrait{width:80px;height:80px}.identity .intro-note{font-size:13px}.chapter-links{font-size:11px}.section-intro h2{font-size:26px}.work-gallery{gap:34px 18px}.work-caption h3{font-size:18px}.work-description{font-size:12px}.item-app .work-caption{display:block}.item-app .work-description{max-width:44ch}.university-heading{padding:0}.university-marks{position:static;margin-bottom:22px}.archive-group{display:block}.archive-group h3{margin-bottom:20px}.university-heading h2{font-size:30px}}
@media(max-width:767px){.page{width:calc(100% - 40px)}.masthead{min-height:74px}.portfolio-layout{display:block;padding-top:23px}.identity{position:relative;top:0;padding-bottom:34px}.identity .portrait{position:absolute;right:0;top:0;width:65px;height:65px;margin:0}.identity h1{font-size:43px;min-height:65px;display:flex;align-items:center;padding-right:78px;margin-bottom:18px}.identity .role{font-size:18px;margin-bottom:18px}.identity .intro-note{font-size:14px;max-width:41ch;margin-bottom:24px}.chapter-links{flex-direction:row;gap:23px;font-size:11px;margin-bottom:22px}.chapter-links a{justify-content:flex-start;gap:6px}.identity-contact{font-size:12px}.section-intro{padding-top:26px;border-top:1px solid var(--line);margin-bottom:24px}.section-intro h2{font-size:27px}.section-intro p{font-size:12px;max-width:32ch}.work-gallery{display:block}.work-item{margin-bottom:32px}.art{aspect-ratio:1.24}.art-app{aspect-ratio:1.3}.app-result{width:114%;left:25%;top:12%;--pose:rotate(-6deg)}.app-conversation{width:45%;left:5%;top:35%;--pose:rotate(3deg)}.work-caption{padding-top:14px}.work-caption h3,.item-app h3{font-size:23px}.work-description{font-size:14px;line-height:1.7;max-width:43ch}.item-agents{display:block}.item-agents .art{aspect-ratio:1.3}.item-agents .work-caption{padding:14px 0 0}.item-agents .work-description{max-width:none}.long-tail{font-size:13px;margin-top:28px}.university-work{margin-top:45px;padding-top:30px}.university-heading{margin-bottom:28px}.university-marks{gap:17px}.university-marks img{width:57px;height:57px}.university-heading h2{font-size:34px}.university-heading p{font-size:14px}.archive-group{padding:23px 0}.archive-entries{gap:25px 18px}.archive-entries h4{font-size:14px}.archive-entries p{font-size:11px;line-height:1.6}.archive-group h3{font-size:12px;margin-bottom:19px}.university-more{font-size:12px}.practice{margin-top:40px;padding-top:28px}.practice .stack{grid-template-columns:1fr 1fr}.practice>p{font-size:14px}.folio-footer{margin-top:36px}.project-dialog{padding:16px}.detail-header{margin-bottom:18px}.detail-header h2{font-size:22px}.detail-footer{display:block}.detail-footer p{margin-bottom:17px}.detail-media img{max-height:58dvh}}
@media(max-width:360px){.page{width:calc(100% - 32px)}.identity h1{font-size:37px}.identity .portrait{width:58px;height:58px;top:4px}.chapter-links{gap:17px;font-size:10px}.archive-entries{grid-template-columns:1fr}.university-heading h2{font-size:30px}.practice .stack{grid-template-columns:1fr}}
/* Crop geometry uses the content box so borders cannot shift the image. */
.cut{box-sizing:content-box}.identity .portrait{justify-self:start}
.chapter-links{gap:12px;margin-bottom:27px}.chapter-links>a{padding:8px 0;min-height:40px}.chapter-links .logo-jotform{width:96px;height:auto}.chapter-links .logo-layers{width:96px}.chapter-university{display:flex;align-items:center;gap:11px;font-size:11px;line-height:1.55;color:var(--muted)!important}.chapter-university>span:last-child{color:var(--muted)}.chapter-marks{display:flex;gap:5px}.chapter-marks img{width:33px;height:33px;object-fit:contain}.chapter-links a[aria-current=true] .chapter-university>span:last-child{color:var(--ink)}
@media(max-width:767px){.chapter-links{gap:24px;margin-bottom:16px}.chapter-links>a{gap:12px}.chapter-links .logo-jotform,.chapter-links .logo-layers{width:86px}.chapter-university{gap:7px;font-size:10px}.chapter-marks{gap:4px}.chapter-marks img{width:25px;height:25px}}
@media(max-width:360px){.chapter-links{gap:20px}.chapter-links>a{gap:8px}.chapter-links .logo-jotform,.chapter-links .logo-layers{width:76px}.chapter-university{font-size:9px}.chapter-marks img{width:21px;height:21px}}
