:root{color-scheme:light;--paper: #F5F6F8;--ink: #2d2d2d;--muted: #e5e0d8;--accent: #ff4d4d;--accent-2: #2d5da1;--postit: #fff9c4;--white: #ffffff;--shadow: 4px 4px 0 0 var(--ink);--shadow-lg: 8px 8px 0 0 var(--ink);--shadow-soft: 3px 3px 0 0 rgba(45, 45, 45, .12);--wobbly: 255px 15px 225px 15px / 15px 225px 15px 255px;--wobbly-md: 24px 42px 28px 36px / 34px 26px 42px 24px;--wobbly-sm: 18px 26px 16px 24px / 24px 18px 28px 16px;--page-x: clamp(48px, 7vw, 132px);font-family:Patrick Hand,Comic Sans MS,cursive}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper);overflow-x:hidden;scroll-snap-type:y proximity;scroll-padding-top:2px}body{margin:0;color:var(--ink);background:radial-gradient(var(--muted) 1px,transparent 1px) 0 0 / 24px 24px,linear-gradient(90deg,rgba(45,45,45,.035) 1px,transparent 1px) 0 0 / 96px 96px,var(--paper);font-size:18px;line-height:1.45;overflow-x:hidden;padding-top:64px}body.no-site-header{padding-top:0}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.36;background-image:linear-gradient(rgba(45,45,45,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(45,45,45,.035) 1px,transparent 1px);background-size:32px 32px}img{display:block;width:100%}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{font-family:Kalam,Patrick Hand,cursive;font-weight:700;letter-spacing:0}h1{max-width:760px;margin-bottom:24px;font-size:clamp(3.8rem,10vw,8rem);line-height:.92}h2{margin-bottom:0;font-size:clamp(2.25rem,4.5vw,4.4rem);line-height:1}h3{margin-bottom:10px;font-size:clamp(1.25rem,1.5vw,1.85rem);line-height:1}.site-header{position:fixed;top:0;left:0;z-index:20;width:100%;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:12px var(--page-x);border:0;border-bottom:2px solid var(--ink);border-radius:0;background:#ffffffeb;box-shadow:0 2px #2d2d2d14;transform:none;backdrop-filter:blur(14px)}.brand{color:var(--ink);font-size:1.25rem}nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 14px;font-size:1.1rem}nav a{position:relative;padding:4px 8px}nav a:after{content:"";position:absolute;left:8px;right:8px;bottom:2px;border-bottom:2px dashed var(--accent);transform:scaleX(0) rotate(-1deg);transform-origin:left;transition:transform .12s ease}nav a:hover:after{transform:scaleX(1) rotate(-1deg)}.section-shell{width:min(1160px,calc(100% - var(--page-x) - var(--page-x)));margin:0 auto}main>section{scroll-snap-align:start;scroll-margin-top:2px}.section-arrow{width:clamp(58px,7vw,96px);display:flex;justify-content:center;pointer-events:none}.section-arrow--hero{margin:clamp(-102px,-7vw,-58px) auto clamp(-42px,-3vw,-18px)}.section-arrow--about{margin:clamp(34px,6vw,96px) auto clamp(32px,8vw,132px)}.section-arrow img{width:100%;height:auto;object-fit:contain}.hero{min-height:calc(100svh - 82px);display:grid;grid-template-columns:minmax(280px,.76fr) minmax(0,1fr);align-items:center;gap:clamp(34px,6vw,86px);padding:54px 0 92px;position:relative}.hero-minimal{min-height:calc(100svh - 64px);display:grid;grid-template-columns:minmax(0,.92fr) minmax(300px,.78fr);align-items:center;gap:clamp(28px,5vw,76px);padding:clamp(48px,7vw,86px) 0 clamp(44px,6vw,72px);transform:translateY(-64px)}.hero:after{content:"portfolio notes";position:absolute;right:0;bottom:42px;display:block;padding:10px 18px;border:3px dashed var(--ink);border-radius:var(--wobbly);background:var(--postit);box-shadow:var(--shadow);font-family:Kalam,cursive;font-size:clamp(1rem,2vw,1.45rem);transform:rotate(3deg)}.hero-minimal:after{display:none}.eyebrow,.item-meta{display:block;margin:0 0 10px;padding:0;border:0;border-radius:0;background:transparent;color:var(--accent-2);font-family:Kalam,cursive;font-size:.95rem;line-height:1.1;transform:none}.hero-copy{position:relative;transform:translate(40px,-15px)}.hero-minimal .hero-copy{width:min(1120px,100%)}.hero-photo-wall{width:min(50vw,600px);margin:0;justify-self:end;align-self:center;transform:translate(40px,-170px);pointer-events:none}.hero-photo-wall img{width:100%;max-height:calc(100svh - 4px);object-fit:contain;filter:drop-shadow(0 14px 20px rgba(45,45,45,.12))}.hero-copy:before{content:"";position:absolute;top:-34px;left:-34px;width:82px;height:42px;border-top:4px dashed var(--accent-2);border-left:4px dashed var(--accent-2);border-radius:55% 45% 40% 60%;transform:rotate(-14deg)}.hero-minimal .hero-copy:before{display:none}.hero-minimal h1{max-width:680px;margin-bottom:clamp(20px,3vw,34px);font-size:clamp(2.2rem,9vw,8rem);line-height:.98}.hero-minimal h1 span{display:block}.hero-minimal .intro{max-width:600px;font-family:Kalam,Patrick Hand,cursive;font-size:clamp(1rem,3vw,1.5rem);line-height:1.42}.intro{max-width:600px;color:var(--ink);font-size:clamp(1.22rem,2.2vw,1.65rem)}.tag-list{display:flex;flex-wrap:wrap;gap:10px}.tag-list span,.back-link{min-height:38px;display:inline-flex;align-items:center;padding:7px 14px;border:3px solid var(--ink);border-radius:var(--wobbly);background:var(--white);color:var(--ink);box-shadow:var(--shadow);font-size:1rem;line-height:1;transition:transform .1s ease,box-shadow .1s ease,background .1s ease,color .1s ease}.tag-list span:nth-child(2n){background:var(--muted);transform:rotate(1deg)}.back-link:hover{background:var(--accent);color:var(--white);box-shadow:2px 2px 0 0 var(--ink);transform:translate(2px,2px) rotate(1deg)}.portrait-frame{position:relative;margin:0;align-self:end;min-height:520px;overflow:visible;background:transparent;transform:rotate(-1.8deg)}.portrait-frame:before{content:"";position:absolute;left:4%;right:8%;bottom:16px;height:78%;z-index:-1;border:4px solid var(--ink);border-radius:48% 52% 46% 54%/55% 45% 58% 42%;background:var(--white);box-shadow:var(--shadow-lg)}.portrait-frame:after{display:none}.portrait-frame img{height:100%;max-height:650px;object-fit:contain;object-position:center bottom;filter:drop-shadow(5px 8px 0 rgba(45,45,45,.15))}.split-section{display:grid;grid-template-columns:.42fr 1fr;gap:clamp(34px,6vw,90px);min-height:calc(100svh - 64px);align-items:start;padding:120px 0}.about-section{display:grid;grid-template-columns:minmax(260px,.86fr) minmax(0,1.14fr);align-items:center;gap:clamp(32px,5.5vw,88px);min-height:calc(100svh - 64px);padding:120px 0}.about-portrait{margin:0;justify-self:center;width:min(40vw,490px);overflow:visible;border:0;border-radius:0;background:transparent;box-shadow:none}.about-portrait img{height:auto;object-fit:contain;filter:drop-shadow(4px 7px 0 rgba(45,45,45,.12))}.about-copy{max-width:560px;transform:translate(32px)}.about-copy h2{margin-bottom:88px}.about-copy h3{margin-bottom:20px;font-size:clamp(1.55rem,2.8vw,2.5rem)}.about-copy>p:last-child{font-size:clamp(1.08rem,1.8vw,1.32rem);line-height:1.72}.section-heading{position:sticky;top:112px;align-self:start}.split-section .section-heading{top:120px}.section-heading h2{display:inline-block;transform:rotate(-1deg);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-style:wavy;text-decoration-thickness:3px;text-underline-offset:8px}.wide-heading{position:static;padding:120px 0 42px}.timeline{display:grid;gap:28px}.experience-groups{display:grid;gap:42px}.experience-group{position:relative}.experience-group>h3{display:block;margin:0 0 22px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none}.experience-group:nth-child(2)>h3{background:transparent;transform:none}.timeline-item{display:grid;grid-template-columns:46px 20px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:18px;row-gap:2px;padding:0 0 4px;position:relative}.timeline-item:before{content:"";position:absolute;left:64px;top:18px;width:12px;height:12px;border:3px solid var(--ink);border-radius:50% 45% 58% 43%;background:var(--accent);box-shadow:2px 2px 0 var(--ink)}.timeline-item:after{content:"";position:absolute;left:71px;top:39px;bottom:-28px;border-left:3px dashed var(--ink)}.timeline-item:last-child:after{display:none}.timeline-date{grid-column:3;grid-row:1;color:var(--ink);font-family:Kalam,cursive;font-size:1.05rem;line-height:1.1;white-space:nowrap}.contact-copy{position:relative;border:2px solid var(--ink);border-radius:18px;background:var(--white);box-shadow:var(--shadow-soft)}.timeline-card{display:contents;border:0;background:transparent;box-shadow:none;padding:0;transform:none}.timeline-item:nth-child(2n) .timeline-card{background:transparent;transform:none}.timeline-card:before,.project-detail-header:before{display:none}.timeline-card img{grid-column:1;grid-row:1;align-self:center;aspect-ratio:1;border:2px solid var(--ink);border-radius:14px;object-fit:cover;background:#fff}.timeline-card>div{grid-column:3;grid-row:2;max-width:min(88%,940px)}.timeline-card h3{margin-bottom:8px}.timeline-card p{font-size:.98rem}.timeline-card p,.contact-copy p{color:var(--ink)}.projects-section{position:relative;min-height:calc(130svh - 64px);padding-bottom:220px;overflow:hidden;background:radial-gradient(rgba(253,251,247,.13) 1px,transparent 1px) 0 0 / 22px 22px,#141414;color:var(--paper)}.projects-section .section-heading h2,.projects-section .project-card,.projects-section .project-card-copy h3{color:var(--paper)}.projects-section .wide-heading{padding-top:180px}.projects-section .project-card-copy p{color:#fdfbf7b8}.project-scroll{width:100%;overflow:hidden}.project-track{display:flex;gap:clamp(24px,5vw,42px);overflow-x:auto;overflow-y:hidden;padding:10px 0 28px;cursor:grab;scroll-snap-type:none;scrollbar-width:none;user-select:none}.project-track::-webkit-scrollbar{display:none}.project-track.is-dragging{cursor:grabbing;scroll-snap-type:none}.project-card{flex:0 0 17.5vw;width:17.5vw;display:grid;gap:24px;color:var(--ink)}.project-card:first-child{margin-left:calc(var(--page-x) + 4px)}.project-card:last-child{margin-right:calc(var(--page-x) + 24px)}.project-card-cover{margin:0;overflow:visible;border:0;border-radius:0;background:transparent}.project-card-cover img{width:100%;height:auto;object-fit:contain;border-radius:8px}.project-card-copy{display:grid;gap:12px}.project-card-copy h3{margin:0;color:var(--ink);font-family:Patrick Hand,Comic Sans MS,cursive;font-size:clamp(1.2rem,1.6vw,1.55rem);line-height:1.05}.project-card-copy p{margin:0;color:#2d2d2dbd;font-size:clamp(.82rem,1.35vw,1.2rem);line-height:1.25}.tag-list{margin:22px 0 18px}.tag-list span{background:var(--postit)}.campus-section{min-height:calc(100svh - 64px);padding:0 0 120px;overflow:hidden}.campus-scroll{width:100%;overflow:hidden}.campus-track{display:flex;gap:clamp(18px,3vw,42px);overflow-x:auto;overflow-y:hidden;padding:10px var(--page-x) 28px;cursor:grab;scroll-snap-type:x mandatory;scrollbar-width:none;user-select:none}.campus-track::-webkit-scrollbar{display:none}.campus-track.is-dragging{cursor:grabbing;scroll-snap-type:none}.campus-slide{flex:0 0 70vw;width:70vw;margin:0;scroll-snap-align:center;pointer-events:none}.campus-slide img{height:auto;border-radius:0;pointer-events:none}.contact-section{position:relative;isolation:isolate;display:grid;grid-template-columns:minmax(260px,.34fr) minmax(0,.66fr);grid-template-rows:auto auto;column-gap:clamp(42px,6vw,96px);row-gap:clamp(48px,7vw,88px);min-height:calc(130svh - 64px);align-content:center;align-items:start;padding:190px 0;border-top:0;color:var(--paper)}.contact-section:before{content:"";position:absolute;top:0;bottom:0;left:50%;z-index:-1;width:100vw;background:#010101;transform:translate(-50%)}.contact-section .section-heading h2{color:var(--paper)}.contact-copy{padding:0;border:0;background:transparent;box-shadow:none;transform:none}.contact-list{display:grid;grid-template-columns:1fr;gap:clamp(28px,4vw,54px)}.contact-photo-wall{grid-column:2;grid-row:1 / span 2;justify-self:end;align-self:center;width:min(58vw,820px);margin:0;transform:translate(2px,54px);pointer-events:none}.contact-photo-wall img{width:100%;height:auto;object-fit:contain}.contact-item{display:grid;gap:6px}.contact-item span{color:var(--accent-2);font-family:Kalam,Patrick Hand,cursive;font-size:1rem;line-height:1}.contact-item p{width:fit-content;color:var(--paper);font-size:clamp(1.18rem,2vw,1.7rem);line-height:1.2;word-break:break-word;margin:0}.project-detail{padding:0 0 10px}.project-detail-header{position:relative;padding:50px 30px 42px;margin-top:44px;border:4px solid var(--ink);border-radius:var(--wobbly-md);background:var(--white);box-shadow:var(--shadow-lg);transform:rotate(-.35deg)}.project-detail-header h1{max-width:960px;margin:18px 0 24px;font-size:clamp(3.6rem,10vw,8.4rem)}.back-link{margin-bottom:38px}.detail-tags span{background:var(--postit)}.project-gallery{display:grid;width:100vw;max-width:none;gap:0;padding-top:0;margin:0 auto}.project-image{margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden}.project-image:nth-child(2n){transform:none}.project-image:nth-child(odd){transform:none}.project-image img{height:auto;border:0;border-radius:0}@keyframes sketch-bounce{0%,to{transform:translateY(0) rotate(3deg)}50%{transform:translateY(-8px) rotate(1deg)}}@media(prefers-reduced-motion:no-preference){.hero:after{animation:sketch-bounce 3s ease-in-out infinite}}@media(max-width:880px){body{padding-top:89px}body.no-site-header{padding-top:0}.site-header{align-items:flex-start;flex-direction:column;gap:8px;padding:10px 14px 12px;top:0}.brand{font-size:1.1rem}nav{justify-content:flex-start;gap:4px 12px;font-size:1rem}.hero,.about-section,.split-section,.contact-section{grid-template-columns:1fr}.hero{min-height:auto;padding-top:46px}.hero-minimal{min-height:78svh;padding-top:48px;gap:26px;transform:translateY(-18px)}.hero-minimal h1{font-size:clamp(2.2rem,11vw,4rem)}.hero-minimal .intro{font-size:clamp(.95rem,4.2vw,1.35rem)}.hero-photo-wall{width:min(82vw,420px);justify-self:center}.hero-photo-wall img{max-height:44svh}.hero:after,.hero-copy:before,.projects-section:before{display:none}.portrait-frame{min-height:420px}.about-portrait{width:min(84vw,420px)}.about-copy{max-width:100%;transform:none}.contact-photo-wall{grid-column:1;grid-row:auto;justify-self:center;width:min(88vw,520px);transform:none}.section-heading{position:static}.project-card{flex-basis:min(58vw,230px)}}@media(max-width:560px){.section-shell{width:min(100% - 28px,1160px)}body{font-size:18px;padding-top:89px}body.no-site-header{padding-top:0}h1{font-size:clamp(2.2rem,11vw,4rem)}h2{font-size:clamp(2.6rem,15vw,4rem)}.site-header{width:100%}.timeline-item{grid-template-columns:48px 22px minmax(0,1fr);column-gap:12px;padding-left:0}.timeline-card{padding:0}.project-detail-header h1{font-size:clamp(3.1rem,18vw,5.2rem)}}
