@font-face{font-family:Geist Variable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2")}:root{--bg:#f6f1e3;--surface:#f4eedf;--paper-card:#fffaf0;--text:#302d27;--text-secondary:#5b564c;--text-muted:#6e6558;--border:#d9ceba;--border-strong:#b8aa92;--accent:#8a432c;--paper-shadow:0 2px 3px #49351e0b, 0 14px 34px #49351e13;--paper-shadow-lift:0 4px 8px #49351e12, 0 20px 45px #49351e20;--font-body:"Geist Variable", system-ui, sans-serif;--font-display:var(--font-body);--c-about:#695287;--c-experience:#80561b;--c-projects:#276c70;--c-writing:#42653b;--c-highlights:#9c4944}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-font-smoothing:antialiased;color-scheme:light;overscroll-behavior-y:none;background:#faf8ef;min-height:100%;scroll-padding-top:1.5rem}body:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(#74684e12 1px, transparent 1px) left top / 32px 32px, linear-gradient(90deg, #74684e12 1px, transparent 1px) left top / 32px 32px, url(/assets/scrapbook/crumple.svg) left top / 850px, url(/assets/scrapbook/paper-bg.jpg) left top / 440px, var(--bg);background-blend-mode:normal, normal, soft-light, soft-light, normal;height:100lvh;position:fixed;inset:0}body{font-family:var(--font-body);color:var(--text);isolation:isolate;background:0 0;min-width:280px;min-height:100svh;font-size:1rem;line-height:1.65}.layout{min-height:100dvh;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);flex-direction:column;display:flex}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}button,input,select{font:inherit}button{color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}img{max-width:100%;height:auto;display:block}svg{flex-shrink:0}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--tc,var(--accent));outline-offset:5px;border-radius:2px}:target{scroll-margin-top:2rem}::selection{color:#302d27;background:#e5c7a1}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--paper-card);z-index:100;padding:.75rem 1rem;position:fixed;top:1rem;left:1rem;transform:translateY(-200%)}.skip-link:focus{transform:none}.portfolio{flex:1;align-items:center;width:100%;min-height:0;padding:3.5rem 2rem 2.5rem;display:grid}.interactive-scrapbook{width:min(100%,1040px);min-width:0;margin-inline:auto}.token-row{grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;display:grid}.token-link{place-items:center;min-width:0;padding:1.75rem 0 1.25rem;text-decoration:none;display:grid;position:relative}.token-motion{transform-origin:50%;place-items:center;display:grid}.token-art{width:min(19vw,218px);transform:rotate(var(--rot));transition:transform .36s}.token-art img{filter:drop-shadow(0 3px 2px #4b38211a)drop-shadow(0 15px 13px #4b382122);width:100%}@keyframes paper-float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-7px)rotate(1deg)}}@media (prefers-reduced-motion:no-preference){.portfolio:not(.is-open) .token-art img{animation:paper-float var(--dur,4.5s) ease-in-out var(--delay,0s) infinite}.portfolio.motion-paused .token-art img,.token-link:hover .token-art img,.token-link:focus-visible .token-art img{animation-play-state:paused}}.token-link:hover .token-art,.token-link:focus-visible .token-art{transform:translateY(-7px) rotate(calc(var(--rot) + 2deg))}.token-name{opacity:0;pointer-events:none;border:1px solid var(--border);background:var(--paper-card);color:var(--tc);white-space:nowrap;box-shadow:var(--paper-shadow);padding:.35rem .7rem;font-size:.875rem;font-weight:650;line-height:1.3;transition:opacity .16s,transform .18s;position:absolute;bottom:100%;left:50%;transform:translate(-50%,10px)rotate(-2deg)}.token-name:before{content:"";background:url(/assets/scrapbook/tape-2.svg) 50%/contain no-repeat;width:34px;height:12px;position:absolute;top:-9px;left:calc(50% - 17px)}.token-link:hover .token-name,.token-link:focus-visible .token-name,.token-link.is-active .token-name{opacity:1;transform:translate(-50%)rotate(-2deg)}.carousel-footer{justify-content:center;align-items:center;gap:.7rem;padding-top:1rem;display:flex}.carousel-counter{color:var(--text-muted);text-align:center;font-variant-numeric:tabular-nums;min-width:5rem;font-size:.75rem;font-weight:550}.carousel-nav{gap:.45rem;display:flex}.paper-button{border:1px solid var(--border-strong);background:var(--paper-card);border-radius:3px;justify-content:center;align-items:center;width:44px;height:44px;padding:0;transition:background .18s,transform .18s;display:inline-flex;box-shadow:0 2px 4px #4b38210c}.paper-button svg{width:19px;height:19px}.paper-button span{display:flex}.paper-button:hover{background:#fffdf8;transform:translateY(-2px)}.sound-toggle,.motion-toggle{box-shadow:none;background:0 0;border-color:#0000}.portfolio.is-open .motion-toggle{display:none}.portfolio.is-open{align-items:start;padding-top:2.5rem}.portfolio.is-open .interactive-scrapbook{grid-template-columns:170px minmax(0,790px);gap:3rem;width:min(100%,1100px);display:grid}.portfolio.is-open .carousel-shell{position:sticky;top:1.5rem}.portfolio.is-open .token-row{flex-direction:column;gap:.2rem;display:flex}.portfolio.is-open .token-link{width:106px;padding:.3rem}.portfolio.is-open .token-art{width:100px}.portfolio.is-open .token-link.is-active:before{content:"";border:1px dashed var(--border-strong);background:#fffaf060;position:absolute;inset:4px;transform:rotate(-2deg)}.portfolio.is-open .token-name{z-index:2;padding:.15rem .45rem;font-size:.75rem;bottom:0;left:50%}.portfolio.is-open .carousel-footer{flex-wrap:wrap;gap:.3rem}.sidecar{min-width:0}.detail-actions{margin-top:.75rem}.detail-actions .back-link,.panel-footer .back-link{min-height:44px}.photography-selection{border-top:1px dashed var(--border-strong);margin-top:1.5rem;padding-top:1.75rem}.photography-selection h2,.photography-selection h3{letter-spacing:-.025em;font-size:1.3rem;font-weight:650;line-height:1.3}.photography-selection>p{color:var(--text-secondary);max-width:55ch;margin-top:.6rem}.photography-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin:1.4rem .25rem 2rem;display:grid}.photography-grid .photo-card{margin:0;transform:rotate(-1deg)}.photography-grid .photo-card:first-child{grid-column:1/-1;transform:rotate(.6deg)}.photography-grid .photo-card:last-child{transform:rotate(1deg)}@media (width<=420px){.photography-grid{grid-template-columns:1fr;gap:1.5rem;margin-inline:.15rem}}.paper-sheet{background:url(/assets/scrapbook/crumple.svg) center / 720px, var(--paper-card);background-blend-mode:soft-light;box-shadow:3px 4px 0 -1px #f3ebdc, 3px 4px 0 0 #d5c8b4, var(--paper-shadow);border:1px solid #cbbda7;border-radius:2px 3px 2px 5px;padding:clamp(1.25rem,3vw,2.75rem);position:relative}.paper-sheet:before{content:"";pointer-events:none;background:url(/assets/scrapbook/tape-1.svg) 50%/contain no-repeat;width:130px;height:34px;position:absolute;top:-17px;left:calc(50% - 65px);transform:rotate(-3deg)}.sheet-topline{border-bottom:1px dashed var(--border-strong);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1rem;display:flex}.sheet-number{letter-spacing:.08em;color:var(--tc);font-size:.75rem;font-weight:650}.panel-close{width:44px;height:44px;transform:rotate(2deg)}.sheet-header{gap:1rem;display:grid}.eyebrow{border:1px solid var(--border);color:var(--tc);letter-spacing:.035em;justify-self:start;padding:.25rem .55rem;font-size:.75rem;font-weight:650;transform:rotate(-1.5deg)}.sheet-header h1,.sheet-header h2{letter-spacing:-.045em;overflow-wrap:anywhere;font-size:clamp(2.4rem,4.4vw,4.15rem);font-weight:650;line-height:1.08}.sheet-header h2:focus{outline:none}.sheet-deck{color:var(--text-secondary);max-width:59ch;font-size:1.0625rem;line-height:1.7}.fact-grid{border-block:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));margin-block:2rem 2.5rem;padding-block:1rem;display:grid}.fact-item{flex-direction:column;gap:.55rem;padding:.15rem 1rem;display:flex}.fact-item:first-child{padding-left:0}.fact-item:last-child{padding-right:0}.fact-item+.fact-item{border-left:1px dashed var(--border)}.fact-item dt{color:var(--text-muted);font-size:.75rem;line-height:1.4}.fact-item dd{letter-spacing:-.025em;overflow-wrap:break-word;font-size:clamp(1rem,1.5vw,1.3rem);font-weight:650;line-height:1.35}.list-label{color:var(--tc);letter-spacing:.04em;padding-bottom:.5rem;font-size:.8125rem;font-weight:600}.portfolio-entry{border-top:1px dashed var(--border-strong);padding:1.75rem 0;scroll-margin-top:2rem}.portfolio-entry+.portfolio-entry{margin-top:.25rem}.entry-copy{min-width:0}.entry-copy header{gap:.3rem;display:grid}.entry-meta{color:var(--tc);font-size:.875rem;font-weight:550;line-height:1.5}.entry-copy h2,.entry-copy h3{letter-spacing:-.025em;font-size:1.3rem;font-weight:650;line-height:1.3}.entry-dates{color:var(--text-muted);font-size:.75rem}.entry-impact{border-left:2px solid var(--tc);color:var(--tc);background:#e6ddcb40;margin-block:1rem .8rem;padding:.4rem .7rem;font-size:.875rem;font-weight:600}.entry-description{color:var(--text-secondary);margin-top:.8rem}.process-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin-top:1.3rem;padding:0;list-style:none;display:grid}.process-strip li{border:1px solid var(--border);background:#fffdf780;align-content:start;gap:.45rem;padding:.75rem;font-size:.875rem;line-height:1.45;display:grid}.process-strip li span{color:var(--tc);font-size:.75rem;font-weight:650}.contact-actions{flex-wrap:wrap;gap:1.25rem;display:flex}.contribution{margin-top:.6rem}.contribution summary{color:var(--text);cursor:pointer;width:fit-content;min-height:44px;padding-block:.6rem;font-size:.875rem}.contribution summary::marker{color:var(--tc);font-size:.75rem}.contribution ul{color:var(--text-secondary);padding-left:1.15rem}.contribution li{margin-block:.55rem;padding-left:.2rem}.contribution li::marker{color:var(--tc)}.skill-tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--border);color:var(--text-secondary);border-radius:2px;padding:.2rem .5rem;font-size:.75rem}.entry-links{flex-wrap:wrap;gap:.4rem 1.25rem;margin-top:.75rem;display:flex}.entry-links a{color:var(--tc);padding-block:.6rem;font-size:.875rem}.with-photo{grid-template-columns:minmax(0,1fr) 180px;align-items:start;gap:1.6rem;display:grid}.photo-card{background:#fffdf7;border:1px solid #d4cbbd;margin-top:1rem;padding:.5rem .5rem .8rem;position:relative;transform:rotate(1.5deg);box-shadow:1px 3px 5px #35291312,0 10px 20px #3529130c}.photo-card:before{content:"";pointer-events:none;z-index:1;background:url(/assets/scrapbook/tape-2.svg) 50%/contain no-repeat;width:60px;height:22px;position:absolute;top:-12px;left:calc(50% - 30px);transform:rotate(-5deg)}.photo-link{display:block}.photo-card img{width:100%}.photo-card figcaption{color:var(--text-secondary);padding:.65rem .15rem 0;font-size:.75rem;line-height:1.5}.photo-credit{margin-top:.4rem;font-size:.75rem;display:block}.photo-credit a{display:inline}.photo-card.document{transform:rotate(2deg)}.photo-pair{grid-template-columns:1fr 1.35fr;align-items:center;gap:1.5rem;margin:0 .4rem 2.75rem;display:grid}.photo-pair .portrait{transform:rotate(-3deg)}.photo-pair .photo-card img{object-fit:cover;max-height:285px}.photo-pair .portrait img{object-position:center 38%}.editorial-note{border-left:2px solid var(--tc);color:var(--text-secondary);background:#ede3cb6b;margin-top:1.25rem;padding:1.1rem}.editorial-note a{color:var(--tc);padding-block:.45rem;display:inline-block}.section-contact{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin-top:1rem;padding-top:1.5rem;font-size:.875rem;display:flex}.section-contact span{color:var(--text-secondary)}.section-contact a{color:var(--tc);padding:.6rem 0;font-weight:600}.panel-footer{border-top:1px dashed var(--border);flex-wrap:wrap;justify-content:space-between;gap:.8rem 1rem;margin-top:1.5rem;padding-top:1rem;display:flex}.text-link,.back-link{color:var(--tc,var(--text-secondary));padding-block:.6rem;font-size:.875rem}.back-link{text-underline-offset:.2em;background:0 0;border:0;text-decoration:underline}.section-shell{grid-template-columns:140px minmax(0,820px);align-items:start;gap:3.5rem;width:min(100% - 4rem,1080px);margin:2.5rem auto 3rem;display:grid}.section-rail{flex-direction:column;align-items:center;gap:.7rem;display:flex;position:sticky;top:1.5rem}.rail-link{justify-items:center;padding:.3rem;text-decoration:none;display:grid;position:relative}.rail-link img{filter:drop-shadow(0 8px 7px #49351e23);width:85px;transition:transform .18s}.rail-link:hover img{transform:translateY(-4px)rotate(-2deg)}.rail-link span{color:var(--tc);opacity:0;font-size:.75rem}.rail-link[aria-current],.rail-link:hover,.rail-link:focus-visible{background:#fffaf054}.rail-link[aria-current] span,.rail-link:hover span,.rail-link:focus-visible span{opacity:1}@media (width>=1600px){.token-art{width:230px}.interactive-scrapbook{max-width:1100px}}@media (width<=980px){.portfolio.is-open{padding:1rem 1.25rem 2rem}.portfolio.is-open .interactive-scrapbook{max-width:760px;display:block}.portfolio.is-open .carousel-shell{padding-bottom:1.8rem;position:relative;top:auto}.portfolio.is-open .token-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem;display:grid}.portfolio.is-open .token-link{width:auto;padding-bottom:1.6rem}.portfolio.is-open .token-art{width:min(13vw,82px)}.portfolio.is-open .token-name{box-shadow:none;background:0 0;border:0;padding:.2rem;font-size:.75rem}.portfolio.is-open .token-name:before{display:none}.portfolio.is-open .carousel-footer{padding-top:.4rem}.section-shell{flex-direction:column;gap:1.5rem;width:min(100% - 2.5rem,760px);margin-top:1rem;display:flex}.section-rail{grid-template-columns:repeat(5,minmax(0,1fr));gap:.2rem;width:100%;display:grid;position:static}.rail-link img{width:min(13vw,82px)}.section-content{width:100%}}@media (width<=600px){html{scroll-padding-top:1rem}.portfolio{padding:3rem 1rem 2rem}.token-row{grid-template-columns:repeat(6,minmax(0,1fr));gap:1rem 0}.token-link{grid-column:span 2;padding:.8rem 0 2.25rem}.token-link:nth-child(4){grid-column:2/span 2}.token-art{width:min(29vw,155px)}.token-name{opacity:1;font-size:.875rem;bottom:.1rem;transform:translate(-50%)rotate(-2deg)}.rail-link span{opacity:1}.portfolio.is-open{padding:.6rem .75rem 2rem}.portfolio.is-open .token-link{grid-column:auto}.portfolio.is-open .token-row{gap:0}.portfolio.is-open .token-art{width:min(16vw,78px)}.portfolio.is-open .token-name{font-size:.75rem}.portfolio.is-open .token-link.is-active:before{inset:2px 0}.paper-sheet{box-shadow:2px 3px 0 -1px #f3ebdc, 2px 3px 0 0 #d5c8b4, var(--paper-shadow);padding:1.15rem}.sheet-topline{margin-bottom:1.5rem}.sheet-header h1,.sheet-header h2{font-size:clamp(2.3rem,9.5vw,3.4rem)}.sheet-deck{font-size:1rem}.fact-grid{gap:0;margin-block:1.5rem 2rem}.fact-item{padding-inline:.55rem}.fact-item dd{font-size:1rem}.fact-item dt{font-size:.75rem}.portfolio-entry{padding-block:1.5rem}.with-photo{grid-template-columns:minmax(0,1fr);gap:.6rem}.with-photo .photo-card{justify-self:center;width:80%;max-width:260px;margin-block:1rem .5rem}.with-photo .document{max-width:310px}.photo-pair{grid-template-columns:1fr 1fr;gap:.8rem;margin-inline:.15rem}.photo-pair .photo-card{padding:.35rem .35rem .65rem}.photo-pair .photo-card img{object-fit:contain;height:auto}.photo-pair figcaption{font-size:.75rem}.section-shell{width:calc(100% - 1.5rem)}.rail-link span{font-size:.75rem}}@media (width<=359px){.paper-sheet{padding:1rem}.fact-grid{grid-template-columns:1fr;padding:.25rem 0}.fact-item,.fact-item:first-child,.fact-item:last-child{padding:.65rem 0}.fact-item+.fact-item{border-left:0;border-top:1px dashed var(--border)}.photo-pair{grid-template-columns:1fr;padding-inline:1rem}.process-strip{grid-template-columns:1fr}.portfolio.is-open .token-name,.rail-link span{letter-spacing:-.04em;font-size:.75rem}}@media (hover:none),(pointer:coarse){.token-name,.rail-link span{opacity:1}.token-name{transform:translate(-50%)rotate(-2deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{html,body{background:#fff}body:before{display:none}body{font-size:11pt}.layout{padding:0}.section-rail,.site-footer,.carousel-shell,.panel-close,.panel-footer,.skip-link,.back-link,.section-contact{display:none!important}.portfolio.is-open .interactive-scrapbook,.section-shell{width:100%;margin:0;display:block}.portfolio{padding:0}.paper-sheet{box-shadow:none;background:#fff;border:0;padding:0}.paper-sheet:before,.photo-card:before{display:none}.portfolio-entry,.photo-card{break-inside:avoid}}.deck-preview{border:1px solid var(--border-strong);width:100%;min-width:0;box-shadow:var(--paper-shadow);background:#fffdf7;margin-top:1.4rem;padding:.6rem}.deck-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;padding:.2rem .2rem .7rem;display:flex}.deck-heading strong{font-size:.875rem;font-weight:600}.deck-heading>span,.deck-hint{color:var(--text-muted);font-size:.75rem}.deck-track{scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;width:100%;display:flex;overflow-x:auto}.deck-track::-webkit-scrollbar{display:none}.deck-slide{scroll-snap-align:start;scroll-snap-stop:always;flex:0 0 100%;min-width:0}.deck-slide img{aspect-ratio:16/9;object-fit:contain;background:#080a0c;width:100%}.deck-slide figcaption{color:var(--text-secondary);padding:.65rem .2rem .25rem;font-size:.8125rem}.deck-toolbar,.deck-controls{align-items:center;gap:.5rem;display:flex}.deck-toolbar{flex-wrap:wrap;justify-content:space-between;padding:.4rem .2rem 0}.deck-counter{text-align:center;font-variant-numeric:tabular-nums;min-width:3rem;font-size:.75rem}.deck-controls button:disabled{opacity:.4;cursor:default;transform:none}@media (width<=420px){.deck-toolbar{justify-content:center}.deck-hint{text-align:center;width:100%}}@media print{.deck-toolbar{display:none}.deck-track{overflow:hidden}}.site-footer[data-astro-cid-jo6i4kqk]{text-align:center;flex-direction:column;align-items:center;gap:.5rem;margin-top:auto;padding:1.5rem 1rem 1.75rem;display:flex}.wordmark[data-astro-cid-jo6i4kqk]{border:1px solid var(--border-strong);background:var(--paper-card);box-shadow:var(--paper-shadow);border-radius:2px;padding:.5rem 1rem;font-size:.9375rem;font-weight:650;line-height:1.2;text-decoration:none;position:relative;transform:rotate(-1.5deg)}.wordmark[data-astro-cid-jo6i4kqk]:before{content:"";background:url(/assets/scrapbook/tape-2.svg) 50%/contain no-repeat;width:50px;height:18px;position:absolute;top:-10px;left:calc(50% - 25px)}.footer-intro[data-astro-cid-jo6i4kqk]{color:var(--text-secondary);margin-top:.35rem;font-size:.8125rem}.footer-icons[data-astro-cid-jo6i4kqk]{gap:.5rem;display:flex}.footer-icons[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{width:44px;height:44px;color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;display:flex}.footer-icons[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--accent);background:#fffaf0a0}.footer-icons[data-astro-cid-jo6i4kqk] svg{width:19px;height:19px}.footer-icons[data-astro-cid-jo6i4kqk] .resume-link[data-astro-cid-jo6i4kqk]{border-radius:2px;gap:.5rem;width:auto;padding-inline:.75rem;font-size:.875rem;text-decoration:none}
