@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-ext-wght-normal-DiMfzA-V.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-wght-normal-D5lnP6kL.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-ext-wght-normal-Byk3UhVp.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-wght-normal-C1hSzPvX.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-vietnamese-400-normal-65jA92mZ.woff2)format("woff2"),url(/assets/patrick-hand-vietnamese-400-normal-CZjY324Y.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-latin-ext-400-normal-Dno5CMlI.woff2)format("woff2"),url(/assets/patrick-hand-latin-ext-400-normal-C2ywpnn3.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Patrick Hand;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/patrick-hand-latin-400-normal-B7HHA2Vw.woff2)format("woff2"),url(/assets/patrick-hand-latin-400-normal-Df9_VoRQ.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f8f0e1;--paper-deep:#efe2c8;--card:#fffaf0;--ink:#33293d;--ink-soft:#62576b;--ink-faint:#33293d29;--on-accent:#2a1b12;--sun:#f3c35b;--sky:#8fbfe0;--sage:#9cc49a;--rose:#f0a8b0;--clay:#e0845e;--lilac:#b9a6e0;--light:#ffe39a;--wood:#dcae7e;--window:#cfe6f5;--lid:#d9d2c6;--wash-opacity:.6;--wash-blend:multiply;--vignette:#966c3c29;--shadow:0 1px 0 #33293d0d, 0 18px 34px -18px #583a1e66;--tape:#f3deaab8;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .3 0 0 0 0 .16 0 0 0 .11 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--font-hand:"Caveat Variable", "Caveat", "Segoe Print", cursive;--font-note:"Patrick Hand", "Caveat Variable", "Comic Sans MS", cursive;--font-body:"Nunito Variable", "Nunito", ui-rounded, system-ui, sans-serif;--radius-wobbly:255px 15px 225px 15px / 15px 225px 15px 255px;--radius-wobbly-alt:15px 225px 15px 255px / 255px 15px 225px 15px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--gutter:max(1rem, env(safe-area-inset-left));--max:1180px;--header-h:4.25rem;--sw:2.4;--cursor-pencil:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 50 50'%3E%3Cpath d='M4 44 L9 32 L33 8 L40 15 L16 39 Z' fill='%23f3c35b' stroke='%2333293d' stroke-width='2.5' stroke-linejoin='round'/%3E%3Cpath d='M4 44 L9 32 L16 39 Z' fill='%23f1d3a5' stroke='%2333293d' stroke-width='2.5' stroke-linejoin='round'/%3E%3Cpath d='M4 44 L6.4 38.3 L9.8 41.6 Z' fill='%2333293d'/%3E%3Cpath d='M33 8 L37 4 C39 2 42 2 44 4 C46 6 46 9 44 11 L40 15 Z' fill='%23f0a8b0' stroke='%2333293d' stroke-width='2.5' stroke-linejoin='round'/%3E%3C/svg%3E") 2 26;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--paper:#1e2233;--paper-deep:#171a28;--card:#262b40;--ink:#f2e8d5;--ink-soft:#c2bbd0;--ink-faint:#f2e8d529;--sun:#f0c566;--sky:#6f9fd0;--sage:#7fb184;--rose:#e3919c;--clay:#e38c66;--lilac:#a794d8;--light:#ffd97a;--wood:#8b6a4d;--window:#2a3766;--lid:#454a60;--wash-opacity:.42;--wash-blend:normal;--vignette:#04061080;--shadow:0 1px 0 #0003, 0 20px 36px -18px #000000b3;--tape:#f0e1be4d;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .95 0 0 0 0 .92 0 0 0 0 .85 0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--cursor-pencil:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 50 50'%3E%3Cpath d='M4 44 L9 32 L33 8 L40 15 L16 39 Z' fill='%23f0c566' stroke='%23f2e8d5' stroke-width='2.5' stroke-linejoin='round'/%3E%3Cpath d='M4 44 L9 32 L16 39 Z' fill='%23c9a67a' stroke='%23f2e8d5' stroke-width='2.5' stroke-linejoin='round'/%3E%3Cpath d='M4 44 L6.4 38.3 L9.8 41.6 Z' fill='%23f2e8d5'/%3E%3Cpath d='M33 8 L37 4 C39 2 42 2 44 4 C46 6 46 9 44 11 L40 15 Z' fill='%23e3919c' stroke='%23f2e8d5' stroke-width='2.5' stroke-linejoin='round'/%3E%3C/svg%3E") 2 26;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){html:not(.js){--paper:#1e2233;--paper-deep:#171a28;--card:#262b40;--ink:#f2e8d5;--ink-soft:#c2bbd0;--ink-faint:#f2e8d529;--window:#2a3766;--wood:#8b6a4d;--lid:#454a60;--wash-opacity:.42;--wash-blend:normal;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (width<=640px){:root{--header-h:3.75rem;--sw:3.2}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem)}html.show-intro,html.menu-open{overflow:hidden}body{min-height:100vh;font-family:var(--font-body);color:var(--ink);background-color:var(--paper);background-image:var(--grain);cursor:var(--cursor-pencil), auto;margin:0;font-size:clamp(1rem,.95rem + .22vw,1.1rem);line-height:1.7;transition:background-color .6s,color .6s;overflow-x:clip}body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(120% 90% at 50% 10%, transparent 55%, var(--vignette) 100%);position:fixed;inset:0}img,svg{max-width:100%}img{height:auto;display:block}a{color:inherit}a,button,[role=button]{cursor:pointer}button{font:inherit;color:inherit;background:0 0;border:0;padding:0}p{margin:0 0 1em}h1,h2,h3{font-family:var(--font-hand);text-wrap:balance;margin:0;font-weight:700;line-height:1}strong{font-weight:800}::selection{background:color-mix(in srgb, var(--sun) 70%, transparent);color:var(--ink)}:focus-visible{outline:2.5px dashed var(--clay);outline-offset:4px;border-radius:8px}.skip-link{z-index:200;font-family:var(--font-note);background:var(--card);border:2px solid var(--ink);border-radius:var(--radius-wobbly);transition:transform .3s var(--ease-out);padding:.5rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:none}.svg-defs{width:0;height:0;position:absolute;overflow:hidden}.ink-link{color:inherit;text-decoration-line:underline;text-decoration-style:wavy;-webkit-text-decoration-color:var(--clay);text-decoration-color:var(--clay);text-underline-offset:5px;font-weight:700;text-decoration-thickness:1.5px;transition:color .2s}.ink-link:hover{color:var(--clay)}mark.hl{--hl:color-mix(in srgb, var(--sun) 62%, transparent);color:inherit;background:linear-gradient(100deg, transparent .15em, var(--hl) .35em, var(--hl) calc(100% - .35em), transparent calc(100% - .1em)) no-repeat 0 72% / 100% 58%;-webkit-box-decoration-break:clone;box-decoration-break:clone;transition:background-size 1.1s var(--ease-out) .45s;border-radius:.3em .7em .4em .6em;margin:0 -.1em;padding:0 .2em}.js [data-reveal]:not(.is-visible) mark.hl{background-size:0% 58%}.doodle{fill:none;stroke:currentColor;stroke-width:2.3px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:48px;height:48px;overflow:visible}.arrow{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:1.6em;height:.8em;transition:transform .3s var(--ease-spring);overflow:visible}.btn{--btn-bg:var(--card);font-family:var(--font-note);color:var(--ink);background:var(--btn-bg);border:2px solid var(--ink);border-radius:var(--radius-wobbly);box-shadow:3px 4px 0 var(--ink);transition:transform .25s var(--ease-spring), box-shadow .25s var(--ease-spring), background-color .3s;align-items:center;gap:.5em;padding:.7em 1.35em .65em;font-size:1.2rem;line-height:1.1;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:5px 7px 0 var(--ink);transform:translate(-2px,-2px)rotate(-1deg)}.btn:hover .arrow{transform:translate(4px)}.btn:active{box-shadow:1px 1px 0 var(--ink);transform:translate(2px,3px)}.btn--primary{--btn-bg:var(--clay);color:var(--on-accent)}.btn__icon{stroke-width:2.8px;width:1.35em;height:1.35em}.tags{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.tag{font-family:var(--font-note);background:color-mix(in srgb, var(--tone,var(--sun)) 28%, var(--card));border:1.6px solid color-mix(in srgb, var(--ink) 55%, transparent);border-radius:var(--radius-wobbly-alt);transition:transform .25s var(--ease-spring);padding:.12em .75em .08em;font-size:1rem;line-height:1.5}.tag:nth-child(2n){border-radius:var(--radius-wobbly)}.tag:hover{transform:rotate(-3deg)scale(1.06)}.tape{z-index:3;background:var(--tape);clip-path:polygon(0 4%,100% 0,97% 22%,100% 45%,96% 70%,100% 100%,0 96%,3% 74%,0 50%,4% 26%);pointer-events:none;width:92px;height:26px;position:absolute}.tape--top{top:-12px;left:50%;transform:translate(-50%)rotate(-3deg)}.tape--tl{top:6px;left:-26px;transform:rotate(-38deg)}.tape--br{bottom:18px;right:-26px;transform:rotate(-36deg)}[data-sketch]{position:relative}html:not(.js) [data-sketch]{border:2px solid var(--ink);border-radius:var(--radius-wobbly)}.sketch-frame{pointer-events:none;width:calc(100% + 12px);height:calc(100% + 12px);color:var(--ink);fill:none;position:absolute;inset:-6px;overflow:visible}.sketch-frame path{stroke-linecap:round}.js :where([data-reveal]){opacity:0;transition:opacity .8s var(--ease-out), transform 1s var(--ease-out);transition-delay:calc(var(--i,0) * .11s);transform:translateY(22px)rotate(-.6deg)}.js :where([data-reveal].is-visible){opacity:1;transform:none}.js .write{clip-path:inset(-20% 100% -30% -4%);transition:clip-path calc(var(--len,12) * 55ms + .25s) cubic-bezier(.45, .1, .55, .95);transition-delay:calc(var(--i,0) * .11s + .15s);display:inline-block}.js .is-visible .write,.js .is-visible.write,.intro.is-visible .write{clip-path:inset(-20% -4% -30%)}.draw-css{stroke-dasharray:1 2;stroke-dashoffset:0}.js [data-reveal] .draw-css,.js .intro .draw-css{transition:stroke-dashoffset .9s var(--ease-out);transition-delay:calc(var(--i,0) * .13s + var(--delay,.2s))}.js [data-reveal]:not(.is-visible) .draw-css,.js .intro:not(.is-visible) .draw-css{stroke-dashoffset:1.01px}.scene{margin:0;position:relative}.scene__canvas{position:relative}.scene-svg{width:100%;height:auto;display:block;overflow:visible}.scene-svg .ink{fill:none;stroke:var(--ink);stroke-width:var(--sw);stroke-linecap:round;stroke-linejoin:round}.scene-svg .ink--thin{stroke-width:calc(var(--sw) * .66)}.scene-svg .pop{fill:var(--ink)}.scene-svg text{font-family:var(--font-hand);fill:var(--ink-soft);stroke:none;font-weight:700}.js [data-scene]:not(.is-prepared) .ink{opacity:0}.wash{opacity:var(--wash-opacity);mix-blend-mode:var(--wash-blend);filter:url(#watercolor);transform-box:fill-box;transform-origin:50%;transition:opacity 1.1s ease, transform 1.3s var(--ease-out);transition-delay:calc(var(--d,0) * 45ms)}.js [data-scene]:not(.is-drawn) .wash{opacity:0;transition-duration:.2s;transition-delay:0s;transform:scale(.9)}.wash--sun{fill:var(--sun)}.wash--sky{fill:var(--sky)}.wash--sage{fill:var(--sage)}.wash--rose{fill:var(--rose)}.wash--clay{fill:var(--clay)}.wash--lilac{fill:var(--lilac)}.wash--light{fill:var(--light)}.wash--wood{fill:var(--wood)}.wash--window{fill:var(--window)}.wash--lid{fill:var(--lid)}.wash--paper{fill:var(--card);mix-blend-mode:normal;opacity:1}.wash--skin{fill:var(--skin,#f2cfae)}.wash--hair{fill:var(--hair,#5b3a29)}.wash--hoodie{fill:var(--hoodie,var(--clay))}:root[data-theme=dark] .scene.is-drawn .wash--skin,:root[data-theme=dark] .scene.is-drawn .wash--hair{opacity:.78}.wash.backdrop{opacity:calc(var(--wash-opacity) * .55)}:root[data-theme=dark] .only-day,:root:not([data-theme=dark]) .only-night{display:none}.ambient{transition:opacity .6s .2s}.js [data-scene]:not(.is-drawn) .ambient{opacity:0;transition:none}.pencil{z-index:5;pointer-events:none;opacity:0;transform-origin:3.5px 38.7px;filter:drop-shadow(2px 4px 2px #0000002e);width:44px;height:44px;transition:opacity .35s;position:absolute;top:0;left:0}.pencil svg{width:100%;height:100%;display:block;overflow:visible}.scene.is-drawing .pencil{opacity:1}.pencil__body{fill:var(--sun)}.pencil__wood{fill:#f1d3a5}.pencil__band{fill:#b8b0a6}.pencil__eraser{fill:var(--rose)}.pencil__lead{fill:#33293d}.pencil path{stroke:#33293d;stroke-width:2px;stroke-linejoin:round}.pencil__edge{fill:none}.pencil__lead{stroke:none}.boil{filter:url(#boil-1)}@keyframes boil{0%{filter:url(#boil-1)}33.333%{filter:url(#boil-2)}66.666%{filter:url(#boil-3)}to{filter:url(#boil-1)}}[data-boil=true] .scene.is-drawn.is-onscreen .boil{animation:.4s step-end infinite boil}.scene:not(.is-onscreen) *,.scene:not(.is-drawn) *{animation-play-state:paused!important}.steam{transform-box:fill-box;transform-origin:bottom;animation:2.6s steps(8,end) infinite steam}.steam:nth-child(2){animation-delay:-.9s}.steam:nth-child(3){animation-delay:-1.7s}@keyframes steam{0%{opacity:0;transform:translateY(6px)scaleX(1)}30%{opacity:1}60%{opacity:.8;transform:translateY(-4px)scaleX(-1)}to{opacity:0;transform:translateY(-12px)scaleX(1)}}.sway{transform-box:view-box;transform-origin:95px 0;animation:6s ease-in-out infinite sway}@keyframes sway{0%,to{transform:rotate(-2.2deg)}50%{transform:rotate(2.2deg)}}.zzz{transform-box:fill-box;transform-origin:50%;animation:3s steps(12,end) infinite zzz;animation-delay:calc(var(--z) * -1s);font-size:20px}@keyframes zzz{0%{opacity:0;transform:translateY(8px)scale(.6)}30%{opacity:1}to{opacity:0;transform:translate(10px,-14px)scale(1.1)}}.scene.is-drawn .bulb-glow{animation:3.2s steps(6,end) infinite twinkle;animation-delay:calc(var(--t,0) * -.8s)}@keyframes twinkle{0%,to{opacity:calc(var(--wash-opacity) * .5)}50%{opacity:var(--wash-opacity)}}.scene.is-drawn .lamp-light{animation:5s steps(10,end) infinite flicker}@keyframes flicker{0%,to{opacity:calc(var(--wash-opacity) * .75)}47%{opacity:calc(var(--wash-opacity) * .9)}50%{opacity:calc(var(--wash-opacity) * .6)}53%{opacity:var(--wash-opacity)}}.eye{transform-box:fill-box;transform-origin:50%;animation:4.5s infinite blink}@keyframes blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}.cat-tail{transform-box:fill-box;transform-origin:0 0;animation:3.6s steps(6,end) infinite tail}@keyframes tail{0%,to{transform:rotate(0)}50%{transform:rotate(-9deg)}}.wave{transform-box:view-box;transform-origin:308px 292px;animation:1.8s steps(4,end) infinite wave}@keyframes wave{0%,to{transform:rotate(-6deg)}25%{transform:rotate(10deg)}50%{transform:rotate(-4deg)}75%{transform:rotate(12deg)}}.wave-line{animation:1.8s steps(2,end) infinite blink-line}@keyframes blink-line{0%,to{opacity:1}50%{opacity:.2}}.twinkle{transform-box:fill-box;transform-origin:50%;animation:2.4s steps(6,end) infinite sparkle}.twinkle:nth-child(odd){animation-delay:-1.2s}@keyframes sparkle{0%,to{opacity:.4;transform:scale(.6)rotate(0)}50%{opacity:1;transform:scale(1.1)rotate(45deg)}}.drift{animation:14s ease-in-out infinite drift}.drift--b{animation-duration:18s;animation-delay:-6s}.drift--c{animation-duration:11s;animation-delay:-3s}@keyframes drift{0%,to{transform:translate(-10px)}50%{transform:translate(14px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.001ms!important;transition-delay:0s!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.boil{filter:none}}main{display:block;overflow-x:clip}.chapter{width:min(100% - var(--gutter) * 2, var(--max));margin-inline:auto;padding-block:clamp(3.5rem,9vw,7rem)}.site-header{z-index:50;height:var(--header-h);transition:background-color .4s ease, transform .4s var(--ease-out);position:fixed;inset:0 0 auto}.site-header.is-scrolled{background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(8px)}.site-header__inner{height:100%;width:min(100% - var(--gutter) * 2, var(--max));align-items:center;gap:1rem;margin-inline:auto;display:flex}.site-header__edge{fill:none;width:100%;height:12px;stroke:var(--ink-faint);stroke-width:2px;stroke-linecap:round;opacity:0;transition:opacity .4s;position:absolute;bottom:-6px;left:0}.site-header.is-scrolled .site-header__edge{opacity:1}.brand{flex:none;place-items:center;width:3rem;height:3rem;text-decoration:none;display:grid;position:relative}.brand__ring{width:100%;height:100%;fill:color-mix(in srgb, var(--sun) 45%, transparent);stroke:var(--ink);stroke-width:2.2px;stroke-linecap:round;transition:transform .5s var(--ease-spring);position:absolute;inset:0;overflow:visible}.brand:hover .brand__ring{transform:rotate(-20deg)scale(1.06)}.brand__text{font-family:var(--font-hand);font-size:1.45rem;font-weight:700;line-height:1;position:relative}.nav{margin-left:auto}.nav__list{gap:.15rem;margin:0;padding:0;list-style:none;display:flex}.nav__link{font-family:var(--font-note);color:var(--ink-soft);align-items:baseline;gap:.35em;padding:.4em .8em;font-size:1.1rem;text-decoration:none;transition:color .2s;display:inline-flex;position:relative}.nav__num{font-family:var(--font-hand);color:var(--clay);font-size:.95em;font-weight:700}.nav__link:hover,.nav__link.is-active{color:var(--ink)}.nav__circle{pointer-events:none;fill:none;width:calc(100% + 8px);height:calc(100% + 4px);stroke:var(--clay);stroke-width:2px;stroke-linecap:round;position:absolute;inset:-2px -4px;overflow:visible}.nav__circle path{stroke-dasharray:1 2;stroke-dashoffset:1.01px;transition:stroke-dashoffset .6s var(--ease-out)}.nav__link.is-active .nav__circle path,.nav__link:hover .nav__circle path{stroke-dashoffset:0}.site-header__tools{align-items:center;gap:.35rem;display:flex}.theme-toggle,.menu-toggle{width:2.75rem;height:2.75rem;transition:transform .4s var(--ease-spring), background-color .2s;border-radius:50%;place-items:center;display:grid}.theme-toggle:hover,.menu-toggle:hover{background:color-mix(in srgb, var(--sun) 30%, transparent)}.theme-toggle svg,.menu-toggle svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:1.75rem;height:1.75rem;overflow:visible}.theme-toggle:hover{transform:rotate(18deg)}.theme-toggle__sun,.theme-toggle__moon{transform-origin:24px 24px;transition:transform .6s var(--ease-spring), opacity .3s ease}.theme-toggle__moon{opacity:0;transform:rotate(-90deg)scale(.4)}:root[data-theme=dark] .theme-toggle__sun{opacity:0;transform:rotate(90deg)scale(.4)}:root[data-theme=dark] .theme-toggle__moon{opacity:1;transform:none}.menu-toggle{display:none}.menu-toggle path{transform-box:fill-box;transform-origin:50%;transition:transform .35s var(--ease-spring), opacity .2s}.menu-open .menu-toggle__l1{transform:translateY(7px)rotate(45deg)}.menu-open .menu-toggle__l2{opacity:0}.menu-open .menu-toggle__l3{transform:translateY(-7px)rotate(-45deg)}@media (width<=899px){.nav{display:none}.site-header__tools{margin-left:auto}.menu-toggle{display:grid}}.mobile-menu{z-index:40;padding:calc(var(--header-h) + 1rem) calc(var(--gutter) + 1rem) 2rem;background-color:var(--paper);background-image:repeating-linear-gradient(to bottom, transparent 0 2.95rem, var(--ink-faint) 2.95rem 3rem), var(--grain);clip-path:circle(0% at calc(100% - 2.5rem) 2rem);visibility:hidden;transition:clip-path .7s var(--ease-out), visibility 0s linear .7s;flex-direction:column;justify-content:center;display:flex;position:fixed;inset:0}.menu-open .mobile-menu{clip-path:circle(150% at calc(100% - 2.5rem) 2rem);visibility:visible;transition:clip-path .7s var(--ease-out), visibility 0s}.mobile-menu__title{font-family:var(--font-note);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 1rem;font-size:1.1rem}.mobile-menu__list{margin:0;padding:0;list-style:none}.mobile-menu__list li{opacity:0;transition:opacity .4s ease, transform .5s var(--ease-spring);transform:translate(-24px)rotate(-2deg)}.menu-open .mobile-menu__list li{opacity:1;transition-delay:calc(.15s + var(--i) * 60ms);transform:none}.mobile-menu__link{font-family:var(--font-hand);align-items:baseline;gap:.6rem;padding:.35rem 0;font-size:clamp(2.2rem,10vw,3rem);font-weight:700;line-height:1.15;text-decoration:none;display:flex}.mobile-menu__link .nav__num{min-width:2.2ch;font-size:.6em}.mobile-menu__link.is-active{color:var(--clay)}.progress{--progress:0;z-index:60;pointer-events:none;height:4px;position:fixed;inset:0 0 auto;container-type:inline-size}.progress__line{background:var(--clay);width:calc(100% - 24px);height:3px;transform:scaleX(var(--progress));transform-origin:0;border-radius:0 3px 3px 0;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='3'%3E%3Cpath d='M0 1.5 C10 0 20 3 40 1.5' stroke='%23000' stroke-width='3' fill='none'/%3E%3C/svg%3E") repeat-x;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='3'%3E%3Cpath d='M0 1.5 C10 0 20 3 40 1.5' stroke='%23000' stroke-width='3' fill='none'/%3E%3C/svg%3E") repeat-x}.progress__pencil{transform-origin:1.76px 19.36px;width:22px;height:22px;transform:translateX(calc(var(--progress) * (100cqw - 24px) - 1.76px)) rotate(25deg);opacity:min(1, calc(var(--progress) * 30));position:absolute;top:-17.9px;left:0}.progress__pencil svg{width:100%;height:100%;overflow:visible}.progress__pencil path{stroke:#33293d;stroke-width:2.5px;stroke-linejoin:round}.chapter-head{max-width:44rem;margin-bottom:clamp(2.5rem,6vw,4rem)}.chapter-head__label{font-family:var(--font-note);letter-spacing:.14em;text-transform:uppercase;margin:0 0 .75rem;font-size:1.05rem;display:inline-block}.chapter-head__label span{color:var(--on-accent);background:var(--sun);clip-path:polygon(0 0,100% 0,calc(100% - .6em) 50%,100% 100%,0 100%,.6em 50%);padding:.15em 1.1em .1em;display:inline-block;position:relative}.chapter-head__title{font-size:clamp(2.7rem,6.5vw,4.4rem);line-height:1.02}.chapter-head__underline{fill:none;width:min(100%,18rem);height:18px;stroke:var(--clay);stroke-width:3.5px;stroke-linecap:round;margin-top:.35rem;display:block;overflow:visible}.chapter-head__lead{max-width:38rem;color:var(--ink-soft);margin:1.25rem 0 0;font-size:1.12em}.divider{width:min(100% - var(--gutter) * 2, 34rem);color:var(--ink-soft);justify-content:center;align-items:center;gap:1rem;margin:0 auto;display:flex}.divider__line{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;flex:1;min-width:0;height:20px;overflow:visible}.divider__line--flip{transform:scaleX(-1)}.divider__doodle{width:36px;height:36px;color:var(--clay)}.intro{display:none}.show-intro .intro{z-index:100;padding:var(--gutter);background-color:var(--paper-deep);background-image:var(--grain);perspective:1600px;align-content:center;place-items:center;gap:1.5rem;transition:background-color .9s .2s;display:grid;position:fixed;inset:0}.intro.is-opening{pointer-events:none;background-color:#0000}.intro__book{aspect-ratio:3/4;width:min(380px,78vw);transform-style:preserve-3d;animation:book-in .8s var(--ease-out) both}@keyframes book-in{0%{opacity:0;transform:translateY(24px)rotate(-3deg)scale(.95)}}.intro__cover{color:#fbeed3;background:radial-gradient(120% 80% at 30% 20%, #ffffff24, transparent 60%), linear-gradient(90deg, #00000040 0 10px, transparent 18px), var(--grain), #b8583a;transform-origin:0;backface-visibility:hidden;border-radius:6px 16px 16px 6px;height:100%;padding:1.1rem;transition:transform 1.1s cubic-bezier(.6,0,.3,1),opacity .9s .25s;position:relative;box-shadow:inset -2px 0 #ffffff1f,0 30px 60px -20px #28140a8c,12px 0 0 -4px #efe2c8,14px 2px 0 -4px #d8c8a8}.intro.is-opening .intro__cover{opacity:0;transform:rotateY(-115deg)}.intro__frame{text-align:center;border:2px dashed #fbeed399;border-radius:4px 12px 12px 4px;place-content:center;justify-items:center;height:100%;padding:1.5rem 1rem;display:grid}.intro__star{color:#f7cf6c;width:40px;height:40px;margin-bottom:1rem}.intro__kicker{font-family:var(--font-note);letter-spacing:.25em;text-transform:uppercase;opacity:.85;margin:0;font-size:1.1rem}.intro__name{font-family:var(--font-hand);color:#fff4dc;margin:.4rem 0 0;font-size:clamp(2.6rem,11vw,3.6rem);font-weight:700;line-height:1.05}.intro__flourish{fill:none;stroke:#f7cf6c;stroke-width:2.4px;stroke-linecap:round;width:70%;height:26px;margin:.4rem 0 .8rem;overflow:visible}.intro .draw-css{--delay:1.2s}.intro__subtitle{font-family:var(--font-hand);opacity:.85;margin:0;font-size:1.5rem}.intro__hint{font-family:var(--font-note);color:var(--ink-soft);margin:0;font-size:1rem;transition:opacity .3s;animation:2s ease-in-out infinite hint-pulse}.intro.is-opening .intro__hint{opacity:0}@keyframes hint-pulse{50%{opacity:.45}}.ink-trail{z-index:90;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){animation:.9s cubic-bezier(.6,0,.2,1) ink-spread}@keyframes ink-spread{0%{clip-path:circle(0 at var(--vt-x,90%) var(--vt-y,2rem))}to{clip-path:circle(150vmax at var(--vt-x,90%) var(--vt-y,2rem))}}.site-footer{padding:clamp(4rem, 10vw, 7rem) var(--gutter) 2.5rem;text-align:center;justify-items:center;gap:1.5rem;display:grid}.the-end__title{font-family:var(--font-hand);margin:0;font-size:clamp(4rem,14vw,7.5rem);font-weight:700;line-height:1}.the-end__flourish{fill:none;width:min(260px,70vw);height:40px;stroke:var(--clay);stroke-width:2.6px;stroke-linecap:round;overflow:visible}.the-end__subtitle{font-family:var(--font-hand);color:var(--ink-soft);margin:.5rem 0 0;font-size:1.7rem}.back-to-top{font-family:var(--font-note);color:var(--ink);align-items:center;gap:.5rem;font-size:1.15rem;text-decoration:none;display:inline-flex}.back-to-top svg{fill:none;width:18px;height:30px;stroke:var(--clay);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s var(--ease-spring)}.back-to-top:hover svg{transform:translateY(-6px)}.site-footer__credit{color:var(--ink-soft);margin:1rem 0 0;font-size:.9rem}.hero{padding-top:calc(var(--header-h) + clamp(1.5rem, 5vw, 3rem));align-items:center;gap:clamp(1.5rem,4vw,3rem);display:grid}@media (width>=900px){.hero{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);min-height:100svh;padding-bottom:2rem}}.hero__chapter{margin-bottom:.25rem}.hero__greeting{font-family:var(--font-hand);color:var(--ink-soft);margin:.75rem 0 .2rem;font-size:clamp(1.5rem,3vw,2rem);line-height:1.15}.hero__name{padding-bottom:.2em;font-size:clamp(3.6rem,10vw,7rem);line-height:.95;display:inline-block;position:relative}.hero__swash{fill:none;width:104%;height:.32em;stroke:var(--clay);stroke-width:4px;stroke-linecap:round;position:absolute;bottom:-.05em;left:-2%;overflow:visible}.hero__role{font-family:var(--font-hand);margin:1rem 0;font-size:clamp(1.6rem,3.4vw,2.3rem);line-height:1.15}.hero__lead{max-width:34rem;color:var(--ink-soft)}.hero__actions{flex-wrap:wrap;gap:1rem 1.1rem;margin:1.75rem 0 1.5rem;display:flex}.hero__meta{font-family:var(--font-note);color:var(--ink-soft);flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;padding:0;font-size:1.05rem;list-style:none;display:flex}.hero__meta li{align-items:center;gap:.45rem;display:inline-flex}.hero__meta-icon{width:1.4em;height:1.4em;color:var(--clay)}.status-dot{background:var(--sage);width:.7em;height:.7em;box-shadow:0 0 0 0 color-mix(in srgb, var(--sage) 70%, transparent);border-radius:50%;animation:2.2s ease-out infinite status-pulse}@keyframes status-pulse{70%,to{box-shadow:0 0 0 10px #0000}}.hero__scene{justify-self:center;width:100%;max-width:680px}.hero__scene .scene__canvas{border-radius:12px}.scene__caption{text-align:center;font-family:var(--font-hand);color:var(--ink-soft);opacity:0;margin-top:.5rem;font-size:1.3rem;transition:opacity .8s 1s}.scene.is-drawn .scene__caption{opacity:.85}.scroll-cue{font-family:var(--font-note);color:var(--ink-soft);flex-direction:column;grid-column:1/-1;justify-self:center;align-items:center;gap:.2rem;font-size:1.05rem;text-decoration:none;display:flex}.scroll-cue svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:36px;animation:1.6s steps(4,end) infinite cue}@keyframes cue{50%{transform:translateY(8px)}}.about__grid{align-items:start;gap:clamp(3rem,6vw,5rem);display:grid}@media (width>=860px){.about__grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}}.about__portrait{justify-self:center;width:min(100%,420px);padding-top:1.5rem;position:relative}.polaroid{background-color:var(--card);background-image:var(--grain);box-shadow:var(--shadow);transition:rotate .6s var(--ease-spring);padding:1rem 1rem .4rem;rotate:-2deg}.polaroid:hover{rotate:.5deg}.polaroid__photo{aspect-ratio:4/5;object-fit:cover;filter:sepia(.12)saturate(.95);width:100%}.about__scene{background:color-mix(in srgb, var(--sky) 16%, var(--card));padding:.5rem}.polaroid__caption{font-family:var(--font-hand);text-align:center;color:var(--ink-soft);margin:.6rem 0 .3rem;font-size:1.35rem;line-height:1.2}.margin-note{font-family:var(--font-hand);color:var(--clay);align-items:flex-end;margin:0;font-size:1.55rem;font-weight:700;display:flex;position:absolute;top:-1.2rem;right:-.5rem;rotate:5deg}.margin-note svg{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;width:70px;height:48px;overflow:visible;transform:translateY(18px)}@media (width<=520px){.tape--tl{left:-12px}.tape--br{right:-12px}}.margin-note .draw-css{--delay:.9s}.about__para:first-of-type:first-letter{float:left;font-family:var(--font-hand);color:var(--clay);margin:.08em .12em 0 0;font-size:3.6em;font-weight:700;line-height:.8}.about__para{font-size:1.06em}.facts{background-color:var(--card);background-image:repeating-linear-gradient(to bottom, transparent 0 2.45rem, var(--ink-faint) 2.45rem 2.5rem), var(--grain);box-shadow:var(--shadow);background-position:0 3.1rem,0 0;margin-top:2.25rem;padding:1.5rem 1.75rem 1.25rem;rotate:.6deg}.facts__title{margin-bottom:.6rem;font-size:2rem}.facts__list{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.facts__list li{flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;min-height:2.5rem;padding-top:.35rem;display:flex}.check{fill:none;width:1.35rem;height:1.35rem;stroke:var(--clay);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;align-self:center;overflow:visible}.facts__label{font-family:var(--font-note);color:var(--ink-soft);font-size:1.05rem}.facts__label:after{content:":"}.facts__value{font-weight:800}.journey__map{padding-block:.5rem 1rem;position:relative}.journey__road{pointer-events:none;fill:none;stroke-linecap:round;position:absolute;top:0;left:0;overflow:visible}.road-guide{stroke:var(--ink-faint);stroke-width:2.5px;stroke-dasharray:1 10}.road{stroke:var(--clay);stroke-width:3.4px;stroke-dasharray:12 10}.road-reveal{stroke:#fff;stroke-width:18px}.journey__list{gap:clamp(2.5rem,6vw,4.5rem);margin:0;padding:0;list-style:none;display:grid;position:relative}.stop{grid-template-columns:minmax(0,1fr) 150px minmax(0,1fr);align-items:start;display:grid;position:relative}.stop__marker{z-index:2;width:64px;height:64px;color:var(--ink);background:var(--paper);border:2.5px solid var(--ink);transition:background-color .5s ease, rotate .6s var(--ease-spring), scale .6s var(--ease-spring);border-radius:50% 46% 52% 48%/48% 52% 46% 50%;grid-area:1/2;justify-self:center;place-items:center;display:grid;position:relative}.stop__marker .doodle{width:34px;height:34px}.stop.is-reached .stop__marker{background:color-mix(in srgb, var(--sun) 60%, var(--paper));rotate:-8deg;scale:1.08}.stop__label{font-family:var(--font-hand);color:var(--ink-soft);grid-area:2/1/auto/-1;justify-self:center;margin-top:.5rem;font-size:1.6rem;font-weight:700}.stop--end .stop__label{color:var(--clay)}.milestone--left .milestone__marker{justify-self:start}.milestone--right .milestone__marker{justify-self:end}.milestone__card{background-color:var(--card);background-image:var(--grain);box-shadow:var(--shadow);rotate:var(--tilt,0deg);transition:opacity .8s var(--ease-out), translate 1s var(--ease-out), rotate .6s var(--ease-spring);grid-row:1;padding:1.4rem 1.5rem 1.5rem}.milestone--left .milestone__card{grid-column:1}.milestone--right .milestone__card{grid-column:3}.milestone__card:hover{rotate:0deg}.js .milestone[data-reveal]{opacity:1;transform:none}.js .milestone:not(.is-visible) .milestone__card{opacity:0;translate:-48px}.js .milestone--right:not(.is-visible) .milestone__card{translate:48px}.js .milestone .milestone__marker{transition:background-color .5s ease, rotate .6s var(--ease-spring), scale .6s var(--ease-spring)}.js .milestone:not(.is-visible) .milestone__marker{scale:.2}.milestone__period{font-family:var(--font-note);color:var(--clay);margin:0;font-size:1.05rem}.milestone__title{margin:.15rem 0 .1rem;font-size:clamp(1.8rem,3vw,2.1rem)}.milestone__place{font-family:var(--font-note);color:var(--ink-soft);margin:0 0 .8rem;font-size:1.05rem}.milestone__desc{margin-bottom:1rem}.milestone__card .tag:nth-child(3n+1){--tone:var(--sky)}.milestone__card .tag:nth-child(3n+2){--tone:var(--sage)}.milestone__card .tag:nth-child(3n){--tone:var(--rose)}@media (width<=899px){.stop{grid-template-columns:52px minmax(0,1fr);column-gap:1rem}.stop__marker,.milestone--left .milestone__marker,.milestone--right .milestone__marker{grid-column:1;justify-self:center;width:50px;height:50px}.stop__marker .doodle{width:28px;height:28px}.milestone--left .milestone__card,.milestone--right .milestone__card{grid-column:2}.stop__label{grid-area:1/2;place-self:center start;margin:0}.js .milestone--right:not(.is-visible) .milestone__card,.js .milestone--left:not(.is-visible) .milestone__card{translate:0 28px}}.traveler{z-index:3;pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.traveler__svg{width:42px;height:63px;transition:transform .25s var(--ease-out);margin:-59px 0 0 -21px;display:block;overflow:visible}.traveler.is-left .traveler__svg{transform:scaleX(-1)}.traveler.is-walking .traveler__svg{animation:.36s steps(2,end) infinite bob}@keyframes bob{50%{translate:0 -2px}}.traveler__line{fill:none;stroke:var(--ink);stroke-width:2.6px;stroke-linecap:round}.traveler__head{fill:var(--skin,#f2cfae);stroke:var(--ink);stroke-width:2.2px}.traveler__hair{fill:var(--hair,#5b3a29)}.traveler__pack{fill:var(--hoodie,var(--clay));stroke:var(--ink);stroke-width:2px}.traveler__shadow{fill:var(--ink-faint)}.traveler__frame--b{visibility:hidden}.traveler.is-walking .traveler__frame--a{animation:.36s step-end infinite frame-a}.traveler.is-walking .traveler__frame--b{animation:.36s step-end infinite frame-b}@keyframes frame-a{0%{visibility:visible}50%,to{visibility:hidden}}@keyframes frame-b{0%{visibility:hidden}50%,to{visibility:visible}}.traveler.is-arrived .traveler__svg{animation:hop 1.4s var(--ease-spring) infinite}@keyframes hop{0%,60%,to{translate:0}75%{translate:0 -10px}}.skills__intro{align-items:center;gap:1.5rem;margin-bottom:clamp(2rem,5vw,3.5rem);display:grid}@media (width>=860px){.skills__intro{grid-template-columns:minmax(0,1fr) minmax(200px,290px)}.skills__intro .chapter-head{margin-bottom:0}}.skills__scene{justify-self:center;width:min(100%,260px)}.skills__grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:2.25rem 1.75rem;display:grid}.skill-card{background-color:var(--card);background-image:var(--grain);box-shadow:var(--shadow);rotate:var(--tilt,0deg);transition:opacity .8s var(--ease-out), transform 1s var(--ease-out), rotate .5s var(--ease-spring), translate .5s var(--ease-spring);transition-delay:calc(var(--i,0) * .11s), calc(var(--i,0) * .11s), 0s, 0s;padding:1.5rem 1.5rem 1.6rem}.skill-card:hover{translate:0 -6px;rotate:0deg}.skill-card__head{align-items:center;gap:.9rem;margin-bottom:.4rem;display:flex}.skill-card__icon{background:color-mix(in srgb, var(--tone) 45%, var(--card));border-radius:58% 42% 51% 49%/45% 55%;flex:none;place-items:center;width:62px;height:62px;display:grid}.skill-card__icon .doodle{width:36px;height:36px}.skill-card__title{font-size:2rem}.skill-card__note{font-family:var(--font-hand);color:var(--ink-soft);margin:0 0 1rem;font-size:1.35rem;line-height:1.2}.js [data-reveal] .tag{transition:opacity .4s ease, scale .5s var(--ease-spring), rotate .5s var(--ease-spring), transform .25s var(--ease-spring);transition-delay:calc(var(--j,0) * 60ms + .45s), calc(var(--j,0) * 60ms + .45s), calc(var(--j,0) * 60ms + .45s), 0s}.js [data-reveal]:not(.is-visible) .tag{opacity:0;rotate:-10deg;scale:.5}.projects__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:3rem 2.25rem;display:grid}.project{background-color:var(--card);background-image:var(--grain);box-shadow:var(--shadow);rotate:var(--tilt,0deg);transition:opacity .8s var(--ease-out), transform 1s var(--ease-out), rotate .5s var(--ease-spring), translate .5s var(--ease-spring), box-shadow .5s ease;transition-delay:calc(var(--i,0) * .11s), calc(var(--i,0) * .11s), 0s, 0s, 0s;flex-direction:column;padding:.9rem .9rem 1.4rem;display:flex;position:relative}.project:hover{translate:0 -8px;rotate:0deg;box-shadow:0 1px #33293d0d,0 28px 44px -20px #583a1e73}.project__media{aspect-ratio:4/3;background:color-mix(in srgb, var(--tone) 20%, var(--card));position:relative}.project__photo{object-fit:cover;filter:sepia(.1)saturate(.95);width:100%;height:100%}.project__art{place-items:center;display:grid;position:absolute;inset:0;overflow:hidden}.project__blob{aspect-ratio:1;background:var(--tone);width:64%;opacity:var(--wash-opacity);mix-blend-mode:var(--wash-blend);filter:url(#watercolor);border-radius:42% 58% 55% 45%/50% 40% 60% 50%;animation:10s ease-in-out infinite alternate blob-morph;position:absolute}@keyframes blob-morph{50%{border-radius:58% 42% 45% 55%/40% 58% 42% 60%;rotate:20deg}to{border-radius:48% 52% 60% 40%/55% 45%;rotate:-10deg}}.project__doodle{aspect-ratio:1;stroke-width:1.6px;width:40%;height:auto;transition:rotate .4s var(--ease-spring), scale .4s var(--ease-spring);position:relative}.project:hover .project__doodle{animation:.5s steps(3,end) infinite wiggle;scale:1.08}@keyframes wiggle{0%,to{rotate:-5deg}50%{rotate:5deg}}.project__spark{width:22px;height:22px;color:var(--ink-soft);stroke-width:2.6px;position:absolute}.project__spark--a{top:13%;left:14%}.project__spark--b{width:16px;height:16px;bottom:15%;right:13%}.project__body{flex-direction:column;flex:1;padding:1.1rem .5rem 0;display:flex}.project__year{font-family:var(--font-note);color:var(--clay);margin:0}.project__title{margin:.1rem 0 .5rem;font-size:2.1rem}.project__desc{color:var(--ink-soft)}.project__tags{margin-bottom:1.2rem}.project__links{flex-wrap:wrap;gap:.5rem 1.4rem;margin-top:auto;display:flex}.project__link{font-family:var(--font-note);background:linear-gradient(var(--clay), var(--clay)) no-repeat 0 100% / 0% 2px;transition:background-size .35s var(--ease-out);align-items:center;gap:.35rem;font-size:1.15rem;text-decoration:none;display:inline-flex}.project__link:hover{background-size:100% 2px}.project__link:hover .arrow{transform:translate(4px)rotate(-10deg)}.notes{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:2.75rem 2rem;padding-top:.75rem;display:grid}.note{background-color:color-mix(in srgb, var(--tone) 40%, var(--card));background-image:var(--grain);rotate:var(--tilt,0deg);transition:opacity .8s var(--ease-out), transform 1s var(--ease-out), rotate .5s var(--ease-spring), scale .5s var(--ease-spring);transition-delay:calc(var(--i,0) * .11s), calc(var(--i,0) * .11s), 0s, 0s;border-bottom-right-radius:48px 10px;margin:0;padding:2.1rem 1.6rem 1.5rem;position:relative;box-shadow:inset 0 -24px 30px -26px #00000024,0 18px 26px -18px #3c281466}.note:hover{rotate:0deg;scale:1.02}.note__quote{margin:0}.note__quote p{font-family:var(--font-hand);margin:0 0 1rem;font-size:1.65rem;line-height:1.2}.note__quote p:before{content:"“";vertical-align:-.35em;color:var(--clay);margin-right:.05em;font-size:1.8em;line-height:0}.note__author{font-family:var(--font-note);font-size:1.1rem;font-weight:700}.note__author span{color:var(--ink-soft);font-size:.95rem;font-weight:400;display:block}.contact__scene{max-width:760px;margin:-1.5rem auto 1rem}.trail{fill:none;stroke:var(--ink-soft);stroke-width:2.4px;stroke-dasharray:2 9;stroke-linecap:round}.plane__body{fill:var(--card);stroke:var(--ink);stroke-width:2.2px;stroke-linejoin:round}.plane__fold{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round}.postcard{background-color:var(--card);background-image:var(--grain);max-width:980px;box-shadow:var(--shadow);gap:2rem;margin:0 auto;padding:clamp(1.5rem,4vw,2.75rem);display:grid;rotate:-.6deg}@media (width>=820px){.postcard{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:0}.postcard__message{border-right:2px dashed var(--ink-faint);padding-right:2.5rem}.postcard__address{padding-left:2.5rem}}@media (width<=819px){.postcard__address{border-top:2px dashed var(--ink-faint);padding-top:1.75rem}}.postcard__greeting{font-family:var(--font-hand);margin:0 0 .75rem;font-size:2.3rem;font-weight:700;line-height:1.1}.postcard__lead{color:var(--ink-soft);font-size:1.08em}.postcard__cta{margin:.5rem 0 1.75rem}.postcard__sign{font-family:var(--font-hand);margin:0;font-size:1.6rem;line-height:1.1}.postcard__sign span{color:var(--clay);font-size:2.3rem;font-weight:700}.postcard__stamps{justify-content:flex-end;height:118px;margin-bottom:1rem;display:flex;position:relative}.stamp{border:5px dotted var(--card);background:#fffdf8;width:88px;height:106px;padding:4px;rotate:4deg;box-shadow:0 4px 10px -4px #0000004d}.stamp svg{width:100%;height:100%;display:block}.stamp__sky{fill:#cfe6f5}.stamp__sun{fill:#f3c35b}.stamp__hill{fill:#9cc49a}.stamp__hill--back{fill:#c3dcb8}.stamp__line{fill:none;stroke:#33293d;stroke-width:2px;stroke-linecap:round}.postmark{width:210px;color:var(--ink-soft);opacity:.7;pointer-events:none;position:absolute;top:8px;right:46px;rotate:-10deg}.postmark svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:100%;display:block;overflow:visible}.postmark text{fill:currentColor;stroke:none;font-family:var(--font-note);letter-spacing:.08em;font-size:9px}.postcard__lines{margin:0 0 1.5rem;display:grid}.postcard__lines div{border-bottom:1.5px solid var(--ink-faint);flex-wrap:wrap;align-items:baseline;gap:.2rem .75rem;padding:.55rem 0;display:flex}.postcard__lines dt{min-width:3.5rem;font-family:var(--font-note);color:var(--ink-soft)}.postcard__lines dd{min-width:0;font-family:var(--font-hand);overflow-wrap:anywhere;margin:0;font-size:1.55rem;line-height:1.2}.postcard__socials-title{font-family:var(--font-note);color:var(--ink-soft);margin:0 0 .6rem}.socials{flex-wrap:wrap;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.social{font-family:var(--font-note);background:var(--paper);border:1.8px solid var(--ink);border-radius:var(--radius-wobbly);transition:transform .3s var(--ease-spring), background-color .2s;align-items:center;gap:.4rem;padding:.3rem .9rem .3rem .5rem;font-size:1.05rem;text-decoration:none;display:inline-flex}.social:hover{background:color-mix(in srgb, var(--sun) 40%, var(--paper));transform:translateY(-3px)rotate(-2deg)}.social__icon{width:1.6em;height:1.6em}.scene-svg .stitch{fill:none;stroke:var(--ink-soft);stroke-width:1.6px;stroke-dasharray:4 5;stroke-linecap:round}.scene-svg .bubble-text{fill:var(--ink);font-size:22px}
