.closing-letter{color:#382b23;isolation:isolate;width:100vw;height:330svh;margin-inline:calc(50% - 50vw);scroll-margin-top:0;position:relative}.closing-stage{background:#251c17;height:100svh;position:sticky;top:0;overflow:hidden}.letter-desk{background:linear-gradient(#140d0955,#140d09a0),url(/assets/portfolio-book-desk.webp) 50%/cover;position:absolute;inset:0}.closing-paper{aspect-ratio:2/3;width:min(550px,88vw,66.7svh - 86.71px);font-family:var(--sans);color:#382b23;will-change:transform,opacity;background:url(/assets/portfolio-book-leaf.webp) 50%/100% 100% no-repeat;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.letter-scroll{scrollbar-width:thin;scrollbar-color:#a28c69 transparent;text-align:center;padding:0 1px 10px;position:absolute;inset:8% 10%;overflow:auto}.letter-date{letter-spacing:.12em;color:#756147;margin:0 0 20px;font-size:8px;line-height:1.5}.closing-paper h2{font-family:var(--serif);letter-spacing:-.04em;margin:0 0 20px;font-size:clamp(27px,3.7vw,45px);font-weight:450;line-height:1.02}.letter-scroll>p:not(.letter-date):not(.letter-signature){margin:0 0 17px;font-size:12px;line-height:1.65}.letter-location strong{font-size:10px;font-weight:600}.letter-invitation{color:#67513d}.closing-paper .contact-links{flex-direction:column;gap:0;width:100%;margin:0;display:flex}.closing-paper .contact-links>a{color:#49382a;background:0 0;border:0;border-top:1px solid #8e785b55;justify-content:center;align-items:center;gap:13px;min-height:46px;padding:11px 0;text-decoration:none;display:flex}.closing-paper .contact-links>a:last-child{border-bottom:1px solid #8e785b55}.closing-paper .contact-links svg{stroke:currentColor;stroke-width:1.4px;flex:0 0 18px;width:18px;height:18px}.closing-paper .contact-links small{display:none}.closing-paper .contact-links span{font-size:11px;line-height:1.35}.closing-paper .contact-links b{font-size:12px;font-weight:400}.closing-paper .contact-links>a:hover{color:#8b571e}.closing-paper a:focus-visible{outline-offset:1px;outline:2px solid #93692d}.letter-signature{font-family:var(--serif);margin:24px 0 0;font-size:19px;font-style:italic;line-height:1.2}.letter-signature span{font-family:var(--sans);color:#79644e;margin-top:7px;font-size:9px;font-style:normal;display:block}.closing-replay{text-align:center;color:#f1e4c8;opacity:0;visibility:hidden;width:min(640px,85vw);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.closing-replay>p{font-family:var(--serif);margin:0 0 28px;font-size:clamp(25px,4vw,48px);line-height:1.1}.closing-replay>a:first-of-type{color:#34271c;background:#e5cfaa;border:1px solid #d2b785;justify-content:center;align-items:center;gap:24px;min-height:54px;padding:18px 24px;font-size:13px;text-decoration:none;display:inline-flex}.closing-replay>a:last-of-type{color:#e2d1b0;text-underline-offset:6px;width:max-content;margin:24px auto 0;font-size:11px;display:block}.closing-replay a:focus-visible{outline-offset:5px;outline:2px solid #fff2ce}.closing-letter[data-minimal=true]{height:auto;min-height:100svh}.closing-letter[data-minimal=true] .closing-stage{flex-direction:column;align-items:center;gap:45px;height:auto;min-height:100svh;padding:90px 0 85px;display:flex;position:relative}.closing-letter[data-minimal=true] .closing-paper{aspect-ratio:auto;width:min(550px,92vw);padding:65px 10%;position:relative;top:auto;left:auto;transform:none!important}.closing-letter[data-minimal=true] .letter-scroll{position:relative;inset:auto;overflow:visible}.closing-letter[data-minimal=true] .closing-replay{position:relative;top:auto;left:auto;transform:none}@media (max-width:600px){.closing-paper{width:min(88vw,76svh - 98.8px)}.letter-scroll{inset:7% 8%}.letter-date{margin-bottom:14px;font-size:7px}.closing-paper h2{margin-bottom:15px;font-size:29px}.letter-scroll>p:not(.letter-date):not(.letter-signature){margin-bottom:14px;font-size:11px;line-height:1.55}.letter-signature{margin-top:18px;font-size:17px}.closing-paper .contact-links span{font-size:10px}.letter-location strong{font-size:9px}.closing-replay>a:first-of-type{gap:16px;font-size:12px}}@media (max-height:500px) and (min-width:601px){.closing-paper{aspect-ratio:auto;width:330px;height:calc(100svh - 70px)}.letter-scroll{inset:8% 10%}.closing-paper h2{font-size:30px}.letter-date{margin-bottom:14px}.closing-replay>p{font-size:30px}}
.modern-portfolio{--modern-bg:#03060e;--modern-ink:#edf0f8;--modern-accent:#dbc59b;background:var(--modern-bg);color:var(--modern-ink);min-height:100dvh;font-family:var(--sans);isolation:isolate;padding:0 5.5%;position:relative;overflow:clip}.cosmos-scene{z-index:-1;pointer-events:none;--hole-x:76%;--hole-y:42%;background:#02040b;position:fixed;inset:0;overflow:hidden}.cosmos-scene[data-arrival=pending]{visibility:hidden}.universe-camera{will-change:transform;position:absolute;inset:0}.cosmic-starfield{opacity:.55;position:absolute;inset:-5%}.cosmic-stars-drift{animation:95s ease-in-out infinite alternate cosmic-stars;position:absolute;inset:-3%}.cosmic-galaxy{aspect-ratio:1.7;opacity:.27;width:min(45vw,800px);position:absolute;top:62%;left:65%}.cosmic-galaxy.galaxy-1{opacity:.17;width:28vw;top:6%;left:33%}.galaxy-infall,.galaxy-spin{transform-origin:53%;position:absolute;inset:0}.galaxy-infall{animation:24s ease-in-out infinite alternate galaxy-infall}.galaxy-spin{animation:105s linear infinite orbital-spin}.galaxy-1 .galaxy-spin{animation-duration:145s;animation-direction:reverse}.cosmic-galaxy-drift{animation:70s ease-in-out infinite alternate galaxy-drift;position:absolute;inset:0}.cosmic-galaxy .art{object-fit:contain}.cosmic-black-hole{left:var(--hole-x);top:var(--hole-y);aspect-ratio:1;opacity:.64;width:min(64vw,1100px);position:absolute;transform:translate(-50%,-50%)}.cosmic-black-hole>div,.cosmic-hole-drift,.black-hole-image{position:absolute;inset:0}.black-hole-image .art{object-fit:contain}.cosmic-hole-drift{transform:none}.cosmic-planet{aspect-ratio:1;position:absolute}.cosmic-ringed{opacity:.5;width:min(27vw,460px);top:68%;left:-4%}.cosmic-ice{opacity:.5;width:min(8vw,130px);top:7%;left:48%}.cosmic-earth{opacity:.62;width:min(17vw,265px);top:72%;left:82%}.cosmic-mars{opacity:.6;width:min(10vw,160px);top:8%;left:87%}.cosmic-moon{opacity:.5;width:min(6vw,100px);top:80%;left:32%}.cosmic-planet-drift{animation:36s ease-in-out infinite alternate planet-drift;position:absolute;inset:0}.planet-spin{animation:135s linear infinite orbital-spin;position:absolute;inset:0}.cosmic-earth .planet-spin{animation-duration:95s}.cosmic-mars .planet-spin{animation-duration:115s}.cosmic-moon .planet-spin{animation-duration:155s;animation-direction:reverse}.cosmic-ice .planet-spin{animation-duration:125s}.cosmic-ice .cosmic-planet-drift{animation-duration:47s;animation-direction:alternate-reverse}.cosmic-planet .art{object-fit:contain}.cosmos-veil{background:linear-gradient(90deg,#02050df0,#02050dad 34%,#02050d0a 72%),linear-gradient(#0000 50%,#02050d99);position:absolute;inset:0}.cosmos-scene[data-minimal=true] *,.cosmos-scene[data-visible=false] *{animation-play-state:paused!important}.cosmos-scene[data-arrival=zooming] .cosmic-hole-drift{animation:none}.modern-header,.modern-portfolio main,.modern-footer{max-width:1600px;margin:auto;position:relative}.modern-header{border-bottom:1px solid #b7c6e02b;align-items:center;gap:35px;height:104px;display:flex}.modern-wordmark{font:750 32px/1 var(--sans);letter-spacing:-2.4px}.modern-header-note{letter-spacing:.15em;color:#a4aec4;margin-right:auto;font-size:8px}.modern-header nav{align-items:center;gap:32px;font-size:11px;font-weight:600;display:flex}.modern-header nav a:last-child{align-items:center;gap:16px;display:flex}.modern-hero{grid-template-columns:1fr 1fr;align-content:space-between;gap:25px;min-height:min(790px,100svh - 104px);padding:clamp(90px,12svh,160px) 0 0;display:grid;position:relative}.modern-hero-copy{z-index:2;min-width:0;max-width:760px;position:relative}.modern-kicker{letter-spacing:.15em;color:#b2bed6;margin:0 0 27px;font-size:9px;font-weight:600;line-height:1.7}.modern-hero h1{letter-spacing:-.065em;text-wrap:balance;margin:0;font-size:clamp(48px,6.5vw,112px);font-weight:500;line-height:1}.modern-intro{color:#b8c1d3;margin:30px 0;font-size:13px;line-height:1.9}.modern-cta{color:#f4e6c8;background:#0408118c;border:1px solid #d6c8a573;align-items:center;gap:45px;padding:18px 24px;font-size:11px;font-weight:600;transition:background .3s;display:inline-flex}.modern-cta:hover{background:#d6c8a521}.modern-cta span{color:var(--modern-accent);font-size:20px}.cosmic-hole-caption{text-align:right;color:#c9d2e6;place-self:end;margin:0 7% 24px 0}.cosmic-hole-caption>span{letter-spacing:.18em;font-size:7px}.cosmic-hole-caption p{color:#9daac4;font-size:10px;line-height:1.7}.cosmic-hole-caption i{background:#bdcbe253;width:52px;height:1px;display:inline-block}.modern-hero-bottom{letter-spacing:.15em;color:#a5b1ca;border-bottom:1px solid #b7c6e02b;grid-column:1/-1;justify-content:space-between;gap:20px;margin-top:60px;padding:42px 115px 26px 0;font-size:7px;display:flex}.modern-works{padding:100px 0 110px;scroll-margin-top:30px}.modern-section-heading{justify-content:space-between;align-items:flex-end;gap:25px;margin-bottom:38px;display:flex}.modern-section-heading .modern-kicker{margin-bottom:14px}.modern-section-heading h2{letter-spacing:-.06em;margin:0;font-size:clamp(42px,5vw,76px);font-weight:500;line-height:1}.modern-section-heading h2>span{color:var(--modern-accent)}.modern-filters{gap:6px;display:flex}.modern-filters button{color:#bdc8de;background:#050b17a6;border:1px solid #a0b1ce42;padding:12px 20px;font-size:11px;transition:background .2s}.modern-filters button[aria-pressed=true]{color:#111624;background:#d9c79f;border-color:#d9c79f}.modern-empty{background:linear-gradient(100deg,#070f1eeb,#070f1ead);border-top:1px solid #a5b7d24a;border-bottom:1px solid #a5b7d24a;align-items:center;gap:40px;min-height:240px;padding:35px 35px 65px;display:flex;position:relative}.empty-index{color:#64728d;font-size:100px;font-weight:250;line-height:1}.modern-empty h3{letter-spacing:-.03em;margin:0 0 12px;font-size:23px;font-weight:500}.modern-empty p{color:#aab8d1;max-width:470px;margin:0;font-size:12px;line-height:1.8}.modern-empty-label{letter-spacing:.13em;color:#97a7c2;font-size:7px;position:absolute;bottom:25px;left:35px}.project-count{color:#aab8d1;margin:0 0 24px;font-size:10px}.modern-project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 50px;display:grid}.modern-project{border-top:1px solid #b7c6e03d;flex-direction:column;min-width:0;padding:28px 0 35px;transition:border-color .3s,background .3s;display:flex}.modern-project:hover,.modern-project:focus-within{background:linear-gradient(140deg,#a0bada09,#0000 65%);border-top-color:#e3c991}.modern-project img{aspect-ratio:1.5;object-fit:cover;width:100%;height:auto;margin-bottom:20px}.project-meta{flex-wrap:wrap;align-items:baseline;gap:15px;margin-bottom:22px;display:flex}.project-meta>span{color:#8f9db8;font-variant-numeric:tabular-nums;font-size:13px}.project-meta p{letter-spacing:.12em;color:#d1bc91;margin:0;font-size:8px}.project-meta small{color:#9caecb;margin-left:auto;font-size:9px}.modern-project h3{letter-spacing:-.05em;margin:0 0 15px;font-size:clamp(30px,3.3vw,50px);font-weight:500;line-height:1.1}.modern-project h3 a{transition:color .25s;display:inline-block}.modern-project h3 a:hover{color:#e8d19c}.project-description{color:#c0cbdf;max-width:530px;margin:0 0 12px;font-size:13px;line-height:1.9}.project-note{color:#99abc8;max-width:490px;margin:0 0 10px;font-size:10px;line-height:1.8}.project-downloads{flex-wrap:wrap;align-items:center;gap:12px 20px;min-width:0;display:flex}.project-mediafire{color:#111624;background:#d9c79f;justify-content:space-between;align-items:center;gap:18px;min-height:44px;padding:12px 16px;font-size:11px;font-weight:600;transition:background .2s;display:inline-flex}.project-mediafire:hover{background:#f0dfb8}.project-mediafire>span[aria-hidden]{font-size:17px}.project-alternative{color:#c0cbdf;text-underline-offset:5px;align-items:center;gap:12px;min-height:44px;font-size:10px;text-decoration:underline;display:inline-flex}.modern-project .project-actions{flex-wrap:wrap;gap:12px 24px}.project-actions>.project-source{margin-left:auto}.project-actions{justify-content:space-between;align-items:center;gap:24px;margin-top:auto;padding-top:20px;display:flex}.project-primary{color:#eadaba;border-bottom:1px solid #d9c79f8c;align-items:center;gap:35px;min-height:44px;padding:12px 0;font-size:11px;display:inline-flex}.project-primary>span[aria-hidden]{font-size:17px;transition:transform .25s}.project-primary:hover>span[aria-hidden]{transform:translate(3px,-3px)}.project-source{color:#b7c5dd;align-items:center;gap:8px;min-height:44px;font-size:10px;display:inline-flex}.project-source svg{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.modern-contact{border-top:1px solid #b7c6e02b;grid-template-columns:1fr 1fr;gap:70px;padding:75px 0 100px;scroll-margin-top:30px;display:grid}.modern-contact h2{letter-spacing:-.06em;margin:0;font-size:clamp(42px,5vw,76px);font-weight:500;line-height:1.05}.modern-contact h2 span{color:var(--modern-accent)}.modern-contact>div>p:not(.modern-kicker){color:#aab8d1;margin-top:25px;font-size:12px;line-height:1.8}.contact-links{flex-direction:column;display:flex}.contact-links>a{border-bottom:1px solid #b7c6e02b;align-items:center;gap:20px;min-width:0;min-height:78px;padding:20px 0;transition:color .25s;display:flex}.contact-links>a:hover{color:#e4ce9b}.contact-links svg{stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:24px;height:24px}.contact-links span{overflow-wrap:anywhere;font-size:clamp(12px,1.3vw,19px);line-height:1.5}.contact-links small{text-transform:uppercase;letter-spacing:.12em;color:#a2b2cf;margin-bottom:4px;font-size:8px;display:block}.contact-links b{margin-left:auto;font-size:22px;font-weight:400}.modern-journey-note{border-top:1px solid #b7c6e02b;grid-template-columns:1fr 1fr;gap:90px;padding:70px 0 95px;display:grid}.modern-journey-note h2{letter-spacing:-.055em;margin:0;font-size:clamp(34px,4vw,65px);font-weight:500;line-height:1.08}.modern-journey-note p:not(.modern-kicker){color:#aab8d1;max-width:400px;font-size:12px;line-height:1.9}.modern-journey-note a:not(.modern-memory){color:#e2d4b6;border-bottom:1px solid #b7c6e04a;align-items:center;gap:45px;padding:14px 0;font-size:11px;display:inline-flex}.modern-memories{align-items:flex-start;gap:16px;min-width:0;padding-top:12px;display:flex}.modern-memory{flex:1;min-width:0;transition:transform .4s;display:block}.modern-memory>div{width:100%;height:190px;position:relative;overflow:hidden}.modern-memory img{object-fit:cover;opacity:.8}.modern-memory>span{color:#b4c2db;margin-top:12px;font-size:7px;line-height:1.8;display:block}.modern-memory:hover,.modern-memory:focus-visible{transform:translateY(-8px)}.memory-musashi{margin-top:32px}.memory-ocean{margin-top:15px}.modern-footer{border-top:1px solid #b7c6e02b;justify-content:space-between;align-items:center;gap:25px;padding:28px 0 80px;display:flex}.modern-footer .modern-wordmark{font-size:25px}.modern-footer>span:nth-child(2){letter-spacing:.1em;color:#a1aec8;font-size:7px}.modern-footer>a{font-size:10px}.modern-skip{z-index:110;color:#06101c;background:#e9dfc8;padding:15px 20px;font-size:12px;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.modern-skip:focus{transform:none}@keyframes cosmic-stars{0%{transform:translate(-1%)scale(1.02)}to{transform:translate(1%,1%)scale(1.08)}}@keyframes galaxy-drift{0%{transform:translate(-10px,6px)rotate(-4deg)}to{transform:translate(16px,-14px)rotate(5deg)}}@keyframes planet-drift{0%{transform:translate(-7px,9px)rotate(-4deg)}to{transform:translate(12px,-12px)rotate(5deg)}}@keyframes orbital-spin{to{transform:rotate(360deg)}}@keyframes galaxy-infall{0%{opacity:.9;transform:scale(1.05)}to{opacity:.6;transform:scale(.82)}}@media (min-width:1900px){.cosmos-scene{--hole-x:72%}.modern-hero{min-height:850px}}@media (max-width:1024px){.modern-header-note{display:none}.modern-header nav{margin-left:auto}.modern-hero{grid-template-columns:1.1fr 1fr;min-height:710px;padding-top:90px}.modern-hero h1{font-size:clamp(48px,7.5vw,76px)}.modern-journey-note{gap:40px}.modern-memory>div{height:155px}.cosmic-black-hole{width:80vw}.cosmic-ice{width:13vw;top:9%;left:44%}}@media (max-width:768px){.modern-portfolio{padding:0 7%}.modern-header{gap:15px;height:86px}.modern-wordmark{font-size:29px}.modern-header nav{gap:20px;font-size:9px}.modern-header nav a:last-child{gap:8px}.cosmos-scene{--hole-x:65%;--hole-y:61%}.cosmic-black-hole{width:140vw}.cosmic-galaxy{opacity:.4;width:88vw;top:11%;left:42%}.cosmic-ice{opacity:.6;width:20vw;top:12%;left:71%}.cosmic-galaxy{opacity:.22}.cosmic-galaxy.galaxy-1{opacity:.15;width:83vw;top:65%;left:32%}.cosmic-earth{opacity:.55;width:33vw;top:78%;left:76%}.cosmic-mars{opacity:.5;width:16vw;top:12%;left:6%}.cosmic-moon{opacity:.5;width:12vw;top:82%;left:48%}.cosmic-ringed{opacity:.42;width:48vw;top:75%;left:-12%}.cosmos-veil{background:linear-gradient(#02050d99 25%,#0000 55%,#02050d47),linear-gradient(90deg,#02050dc7,#02050d12 90%)}.modern-hero{flex-direction:column;justify-content:space-between;gap:0;min-height:max(690px,100svh - 86px);padding-top:65px;display:flex}.modern-hero h1{max-width:630px;font-size:clamp(42px,11vw,75px)}.modern-kicker{margin-bottom:23px;font-size:7px}.modern-intro{margin:24px 0;font-size:12px;line-height:1.8}.modern-cta{gap:35px;padding:16px 20px;font-size:10px}.cosmic-hole-caption{place-self:flex-end;margin:105px 0 15px}.cosmic-hole-caption p{font-size:9px}.modern-hero-bottom{gap:15px;margin-top:25px;padding-top:22px;font-size:6px;line-height:1.8}.modern-hero-bottom>span:last-child{text-align:right}.modern-works{padding:65px 0}.modern-section-heading{margin-bottom:25px;display:block}.modern-section-heading h2{font-size:49px}.modern-filters{flex-wrap:wrap;margin-top:25px}.modern-filters button{padding:11px 18px;font-size:10px}.modern-empty{gap:18px;min-height:230px;padding:25px 20px 60px}.empty-index{font-size:65px}.modern-empty h3{font-size:19px}.modern-empty p{font-size:11px}.modern-empty-label{font-size:6px;bottom:22px;left:20px;right:15px}.modern-project-grid{grid-template-columns:1fr;gap:40px}.modern-project h3{font-size:28px}.modern-journey-note{padding:45px 0 65px;display:block}.modern-journey-note h2{font-size:39px}.modern-memories{gap:12px;padding-top:35px}.modern-memory>div{height:155px}.modern-memory>span{font-size:6px}.modern-footer{flex-wrap:wrap;gap:20px;padding:25px 0 85px}.modern-footer>span:nth-child(2){order:3;width:100%;font-size:6px}.modern-footer>a{margin-left:auto;font-size:9px}}@media (max-width:360px){.modern-header nav{gap:13px}.modern-hero h1{font-size:40px}.modern-empty{gap:12px;padding-left:15px;padding-right:15px}.empty-index{font-size:45px}.modern-empty h3{font-size:17px}.modern-memory>div{height:130px}}@media (max-width:768px){.modern-header nav{gap:14px}.replay-label{display:none}.modern-header nav a:last-child{gap:5px}.modern-header .modern-wordmark{font-size:26px}.modern-project{padding:25px 0 30px}.modern-project-grid{gap:0}.project-description{font-size:12px}.project-meta{gap:12px}.project-meta small{font-size:8px}.modern-contact{grid-template-columns:1fr;gap:30px;padding:50px 0 70px}.modern-contact h2{font-size:49px}.contact-links span{font-size:15px}.contact-links>a{gap:17px;padding:19px 0}.modern-contact>div>p:not(.modern-kicker){font-size:11px}}@media (max-width:360px){.modern-header{gap:10px}.modern-header nav{gap:10px;font-size:8px}.modern-header .modern-wordmark{font-size:24px}}@media (max-height:560px) and (min-width:769px){.modern-header{height:74px}.modern-hero{min-height:600px;padding-top:55px}.modern-hero h1{font-size:clamp(45px,6vw,76px)}.cosmic-hole-caption{margin-bottom:20px}}@media (prefers-reduced-motion:reduce){.modern-portfolio:not([data-motion=full]) .cosmos-scene *{animation-play-state:paused!important}.modern-portfolio:not([data-motion=full]) .modern-memory{transition:none}}
.lunar-flight{isolation:isolate;width:100vw;max-width:none;height:860svh;margin-left:calc(50% - 50vw);position:relative}.flight-stage{isolation:isolate;background:linear-gradient(#0000 30%,#030811);width:100%;height:100svh;position:sticky;top:0;overflow:hidden}.flight-art{object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none}.flight-ufo{aspect-ratio:1.5;z-index:3;will-change:transform;width:clamp(260px,37vw,680px);position:absolute;top:15%;left:0;transform:translate(118vw)}.flight-ufo .flight-art{object-fit:contain}.ufo-float{animation:3.7s ease-in-out infinite alternate ufo-hover;position:absolute;inset:0}.flight-copy{z-index:4;color:#f1ede4;visibility:hidden;opacity:0;text-shadow:0 2px 20px #01050d99;max-width:45%;position:absolute;top:29%;left:8%}.flight-copy>p{letter-spacing:.17em;color:#ddceb0;margin:0 0 25px;font-size:9px}.flight-copy h3{letter-spacing:-.055em;margin:0 0 25px;font-size:clamp(42px,5.6vw,87px);font-weight:450;line-height:1.05}.flight-copy>span{color:#c7d0dd;font-size:11px;line-height:1.8}.ufo-copy{top:55%}.ufo-copy h3{font-size:clamp(36px,4.6vw,72px)}.flight-moon-layer,.moon-camera,.flight-cockpit-layer,.flight-window,.cockpit-camera,.flight-earth-layer{position:absolute;inset:0}.flight-moon-layer{z-index:4;visibility:hidden;opacity:0}.moon-camera{will-change:transform}.moon-sky{opacity:0;background:#03070b;position:absolute;inset:0}.moon-panorama{position:absolute;inset:-4%;-webkit-mask-image:linear-gradient(#0000 5%,#000 44%);mask-image:linear-gradient(#0000 5%,#000 44%)}.lunar-distant-earth{aspect-ratio:1;opacity:.8;width:7%;position:absolute;top:13%;left:82%;transform:translate(-50%,-50%)}.lunar-distant-earth .flight-art{object-fit:contain}.lunar-rocket{aspect-ratio:2/3;height:min(76svh,110vw);position:absolute;bottom:6%;left:65%;transform:translate(-50%)}.lunar-rocket .flight-art{object-fit:fill}.rocket-closed-state{clip-path:polygon(39% 46%,79% 46%,79% 83%,39% 83%);position:absolute;inset:0}.rocket-hatch-anchor{width:0;height:0;position:absolute;top:59%;left:53%}.rocket-ground-shadow{background:radial-gradient(#0009,#0000 70%);width:27%;height:4%;position:absolute;bottom:6%;left:65%;transform:translate(-50%)}.moon-near-ridge{z-index:2;pointer-events:none;position:absolute;inset:20% -4% -10%}.moon-near-ridge .flight-art{object-fit:fill}.moon-vignette{pointer-events:none;background:linear-gradient(90deg,#02081099,#0000 60%),linear-gradient(#0000 75%,#02081070);position:absolute;inset:0}.moon-copy{max-width:40%;top:32%}.moon-copy h3{font-size:clamp(38px,4.8vw,74px)}.flight-cockpit-layer{z-index:5;visibility:hidden;opacity:0;background:#01040a;overflow:hidden}.flight-window{background:#01040a;overflow:hidden}.flight-window>.flight-art{opacity:.75}.departing-moon{aspect-ratio:1;opacity:.6;width:64%;position:absolute;top:34%;left:0}.departing-moon .flight-art,.earth-target .flight-art{object-fit:contain}.earth-target{aspect-ratio:1;will-change:transform;width:min(32vw,42svh);position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}.cockpit-camera{z-index:2;will-change:transform}.cockpit-camera>.flight-art{object-fit:cover}.cockpit-instruments{background:radial-gradient(#ffaf4720,#0000 65%);width:20%;height:25%;animation:2.8s ease-in-out infinite alternate cockpit-light;position:absolute;top:68%;left:40%}.cockpit-copy{max-width:35%;top:17%;left:8%}.cockpit-copy h3{font-size:clamp(32px,4.2vw,61px)}.flight-earth-layer{z-index:6;visibility:hidden;opacity:0;background:#07131a}.earth-destination{z-index:-1;opacity:0;visibility:hidden;pointer-events:none;background:#07131a;position:fixed;inset:0}.earth-destination>.flight-art{opacity:.7}.earth-shade{background:linear-gradient(90deg,#020811bf,#02081160),linear-gradient(#0000 20%,#03101cf0);position:absolute;inset:0}.modern-portfolio[data-destination=earth]>.earth-destination{opacity:1;visibility:visible}.modern-portfolio[data-destination=earth]>.cosmos-scene{opacity:0;visibility:hidden}.modern-portfolio[data-destination=earth]>.cosmos-scene *{animation-play-state:paused!important}.earth-landing{z-index:0;opacity:1;visibility:visible;position:absolute;inset:0}.earth-copy{max-width:65%;top:40%}.flight-arrival-clouds{z-index:7;pointer-events:none;position:absolute;inset:0;overflow:hidden}.arrival-cloud-left,.arrival-cloud-right{position:absolute;inset:-15% 15% -15% -40%;transform:translate(-110%);-webkit-mask-image:linear-gradient(90deg,#000 50%,#0000);mask-image:linear-gradient(90deg,#000 50%,#0000)}.arrival-cloud-right{inset:-15% -40% -15% 15%;transform:translate(110%);-webkit-mask-image:linear-gradient(90deg,#0000,#000 50%);mask-image:linear-gradient(90deg,#0000,#000 50%)}.arrival-cloud-left .flight-art,.arrival-cloud-right .flight-art{object-fit:fill}.arrival-cloud-cover{opacity:0;visibility:hidden;position:absolute;inset:-8%}.flight-rail{z-index:9;color:#d7d7cf;letter-spacing:.14em;text-shadow:0 1px 5px #000;align-items:center;gap:24px;font-size:8px;display:flex;position:absolute;bottom:27px;left:8%;right:8%}.flight-rail i{background:#d1c8b35c;flex:1;height:1px}.flight-minimal-note{display:none}.lunar-flight:not([data-awake=true]) .flight-ambient,.lunar-flight[data-visible=false] .flight-ambient{animation-play-state:paused}@keyframes ufo-hover{0%{transform:translateY(-9px)rotate(-1deg)}to{transform:translateY(9px)rotate(1deg)}}@keyframes cockpit-light{0%{opacity:.3}to{opacity:.9}}.lunar-flight[data-minimal=true]{height:100svh;min-height:540px}.lunar-flight[data-minimal=true] .flight-stage{position:relative}.lunar-flight[data-minimal=true] .flight-moon-layer{transform:none}.lunar-flight[data-minimal=true] .moon-copy{visibility:visible;opacity:1}.lunar-flight[data-minimal=true] .flight-ufo,.lunar-flight[data-minimal=true] .flight-rail{display:none}.lunar-flight[data-minimal=true] .flight-ambient{animation:none}.lunar-flight[data-minimal=true] .flight-minimal-note{color:#d7deea;font-size:11px;line-height:1.8;display:block;position:absolute;bottom:35px;left:8%;right:8%}.flight-minimal-note a{text-underline-offset:5px;padding:12px 0;text-decoration:underline;display:inline-block}.hero-actions{flex-wrap:wrap;align-items:center;gap:20px 27px;display:flex}.github-profile{color:#c9d5e8;align-items:center;gap:10px;min-height:44px;font-size:11px;display:inline-flex}.github-profile svg{stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:21px;height:21px}.github-profile:hover{color:#ebd5a8}.project-title-row{align-items:center;gap:20px;margin:0 0 19px;display:flex}.modern-project .project-icon{aspect-ratio:1;object-fit:contain;background:#0b1020;border-radius:17px;flex:none;width:76px;height:76px;margin:0}.project-title-row h3{margin:0}.works-intro{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 25px;margin-bottom:24px;display:flex}.works-intro .project-count{margin:0}.works-intro .github-profile{font-size:10px}@media (max-width:768px){.lunar-flight{height:800svh}.flight-ufo{width:75vw;top:19%}.flight-copy{max-width:84%;top:20%;left:7%}.flight-copy>p{letter-spacing:.12em;margin-bottom:18px;font-size:7px}.flight-copy h3{margin-bottom:18px;font-size:clamp(33px,9vw,57px)}.flight-copy>span{font-size:10px}.ufo-copy{top:55%}.moon-copy{max-width:84%;top:12%}.moon-copy h3{font-size:clamp(30px,8vw,47px)}.lunar-rocket{height:min(65svh,105vw);bottom:7%;left:65%}.lunar-distant-earth{width:11%;top:6%;left:13%}.rocket-ground-shadow{width:52%;bottom:7%}.moon-near-ridge{inset:42% -15% -6%}.cockpit-copy{max-width:85%;top:16%}.cockpit-copy h3{font-size:clamp(28px,7vw,43px)}.earth-target{width:62vw}.departing-moon{width:110%;top:53%;left:-30%}.earth-copy{top:40%}.flight-rail{gap:17px;font-size:6px;bottom:28px;left:7%;right:7%}.hero-actions{gap:14px 23px}.github-profile{font-size:10px}.modern-project .project-icon{border-radius:14px;width:66px;height:66px}.project-title-row{gap:16px}.project-title-row h3{font-size:30px}.works-intro{margin-bottom:20px}.lunar-flight[data-minimal=true]{height:100svh;min-height:600px}}@media (max-height:560px){.flight-copy{max-width:48%;top:17%}.flight-copy h3{margin-bottom:13px;font-size:clamp(27px,4.3vw,48px)}.flight-copy>p{margin-bottom:13px;font-size:7px}.flight-copy>span{font-size:9px}.ufo-copy{top:48%}.flight-ufo{width:38vw;top:8%}.lunar-rocket{height:79svh;bottom:4%}.moon-copy{max-width:42%}.cockpit-copy{max-width:40%;top:18%}.flight-rail{bottom:18px}.earth-copy{max-width:70%;top:35%}.lunar-flight[data-minimal=true]{min-height:390px}.lunar-flight[data-minimal=true] .flight-minimal-note{font-size:9px;bottom:8px;left:8%}}@media (prefers-reduced-motion:reduce){.modern-portfolio:not([data-motion=full]) .lunar-flight .flight-ambient{animation:none}}
.ufo-beam{transform-origin:50% 0;clip-path:polygon(43% 0,57% 0,100% 100%,0 100%);background:linear-gradient(#9dedff80,#69cfee20 60%,#0000);width:68%;height:150%;animation:2.7s ease-in-out infinite beam-breathe;position:absolute;top:66%;left:17%;-webkit-mask-image:linear-gradient(#000,#0000);mask-image:linear-gradient(#000,#0000)}.ufo-lamp{filter:blur(5px);background:#bff9ff;border-radius:50%;width:17%;height:6%;animation:2.7s ease-in-out infinite beam-breathe;position:absolute;top:68%;left:45%}.ufo-trail{background:linear-gradient(90deg,#83d9ea35,#0000 90%);width:170%;height:25%;animation:1.9s ease-in-out infinite alternate trail-breathe;position:absolute;top:53%;left:55%;transform:rotate(3deg);-webkit-mask-image:radial-gradient(at 0,#000,#0000 70%);mask-image:radial-gradient(at 0,#000,#0000 70%)}@keyframes beam-breathe{0%,to{opacity:.2;transform:scaleX(.88)}50%{opacity:.85;transform:scaleX(1.06)}}@keyframes trail-breathe{0%{opacity:.25}to{opacity:.8}}.earth-globe{isolation:isolate;border-radius:50%;position:absolute;inset:0;overflow:hidden;box-shadow:0 0 18px #79b9df35}.earth-globe>.flight-art{object-fit:contain;z-index:0}.globe-day-map{z-index:1;background-image:url(/assets/earth-day-map.webp);background-repeat:repeat-x;background-size:200% 100%;border-radius:50%;animation:90s linear infinite earth-longitude;position:absolute;inset:0}.earth-terminator{z-index:2;background:radial-gradient(circle at 32% 30%,#0000 20%,#02091718 50%,#000b 89%,#000e 100%);border-radius:50%;position:absolute;inset:0;box-shadow:inset 2px 1px 6px #d8f4ff60,inset -8px -2px 16px #0007}@keyframes earth-longitude{0%{background-position:0 0}to{background-position:200% 0}}.cockpit-camera{transform-origin:50% 38%}.modern-portfolio .cosmic-earth{opacity:calc(.62 * var(--flight-departure,1))}.modern-portfolio[data-cosmos-covered=true]>.cosmos-scene{visibility:hidden}.modern-portfolio[data-cosmos-covered=true]>.cosmos-scene *{animation-play-state:paused!important}.earth-cloud{opacity:.12;pointer-events:none;will-change:transform;width:110%;height:48%;animation:66s linear infinite earth-cloud-drift;position:absolute;top:27%;left:-65%}.earth-cloud>.flight-art{object-fit:fill}.earth-cloud-b{opacity:.085;animation-name:earth-cloud-return;animation-duration:83s;animation-delay:-24s;top:56%;left:auto;right:-65%}@keyframes earth-cloud-drift{0%{transform:translate(-35%)}to{transform:translate(145%)}}@keyframes earth-cloud-return{0%{transform:translate(35%)}to{transform:translate(-145%)}}.earth-destination:not(.earth-landing) .earth-cloud{animation-play-state:paused}.modern-portfolio[data-destination=earth]>.earth-destination .earth-cloud{animation-play-state:running}.modern-portfolio[data-motion=minimal] .earth-cloud,.modern-portfolio[data-motion=minimal] .globe-day-map{animation:none!important}.lunar-flight[data-minimal=true] .flight-moon-layer{opacity:1;visibility:visible}@media (max-width:768px){.lunar-distant-earth{width:11%;top:13%;left:76%!important}.earth-cloud{opacity:.09;height:36%}}
.earth-encounter{isolation:isolate;width:100vw;max-width:none;height:650svh;margin-left:calc(50% - 50vw);position:relative}.encounter-stage{isolation:isolate;background:#191612;height:100svh;position:sticky;top:0;overflow:hidden}.studio-arrival-backdrop{z-index:0;opacity:1;visibility:visible;position:absolute;inset:0}.studio-camera{z-index:1;visibility:hidden;will-change:transform;position:absolute;inset:0}.earth-encounter[data-ready=true] .studio-camera{visibility:visible}.studio-plane{isolation:isolate;background:#34281e;position:absolute;overflow:hidden}.studio-room-art{pointer-events:none;display:block;position:absolute;inset:0}.studio-room-art img{object-fit:fill;-webkit-user-select:none;user-select:none}.studio-desk-front{z-index:6;clip-path:polygon(0 64%,100% 64%,100% 100%,0 100%);pointer-events:none;position:absolute;inset:0}.studio-monitor{aspect-ratio:1.5;z-index:4;width:35%;position:absolute;top:17%;left:23%}.studio-monitor>.flight-art{object-fit:fill}.studio-screen{isolation:isolate;background:#050505;border-radius:1px;width:85.3%;height:66.02%;position:absolute;top:9.77%;left:7.3%;overflow:hidden}.studio-screen-view{z-index:0;opacity:1;visibility:visible;position:absolute;inset:50% auto auto 50%;overflow:hidden;transform:translate(-50%,-50%)}.studio-screen-image,.studio-screen-atmosphere{transform-origin:50%;will-change:transform;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.studio-screen-image>.flight-art{object-fit:fill;opacity:.7}.studio-screen-atmosphere{width:100%;height:100%}.studio-screen .earth-cloud{opacity:.12;height:48%;animation-play-state:paused}.earth-encounter[data-awake=true] .studio-screen .earth-cloud{animation-play-state:running}.earth-encounter[data-visible=false] .studio-screen .earth-cloud{animation-play-state:paused}.studio-portrait{aspect-ratio:1086/1900;z-index:10;pointer-events:none;width:25%;position:absolute;top:9%;left:68%}.developer-sequence,.developer-sequence canvas,.developer-fallback{width:100%;height:100%;position:absolute;inset:0}.developer-sequence canvas,.developer-fallback{object-fit:contain}.developer-sequence[data-ready=true] .developer-fallback{opacity:0}.developer-upper{height:76.211%;position:absolute;inset:0 0 auto;-webkit-mask-image:linear-gradient(#000 0 97%,#0000 100%);mask-image:linear-gradient(#000 0 97%,#0000 100%)}.developer-lower{z-index:-1;width:100%;height:76.58%;position:absolute;top:23.6%;left:0;-webkit-mask-image:linear-gradient(#0000 0 64%,#000 68%);mask-image:linear-gradient(#0000 0 64%,#000 68%)}.developer-lower img{object-fit:fill}.developer-ground{z-index:-2;background:radial-gradient(#17100c85,#0000 70%);height:7%;position:absolute;bottom:1%;left:5%;right:5%}.studio-book{aspect-ratio:2/3;z-index:12;pointer-events:none;transform-origin:50%;width:12%;position:absolute;top:43%;left:53%;transform:perspective(800px)rotateX(78deg)rotate(-8deg)}.studio-keyboard{z-index:7;pointer-events:none;width:24%;height:12%;position:absolute;top:52%;left:28%}.studio-keyboard>.flight-art{object-fit:fill}.studio-lamp{aspect-ratio:1261/1247;z-index:7;pointer-events:none;width:10.5%;position:absolute;top:42%;left:15%}.studio-lamp>.flight-art{object-fit:contain}.studio-lamp-light{transform-origin:20% 0;background:radial-gradient(at 30% 0,#ffdca845,#0000 65%);width:130%;height:80%;animation:8s ease-in-out infinite alternate studio-light;position:absolute;top:26%;left:43%}.studio-plant{aspect-ratio:1145/1374;z-index:4;pointer-events:none;width:13%;position:absolute;top:29%;left:2%}.studio-plant-pot,.studio-plant-leaves{position:absolute;inset:0}.studio-plant .flight-art{object-fit:contain}.studio-plant-pot{clip-path:inset(70% 0 0)}.studio-plant-leaves{clip-path:inset(0 0 23%);transform-origin:55% 75%;animation:6s ease-in-out infinite alternate studio-leaves}.studio-curtain{aspect-ratio:2/3;z-index:8;transform-origin:5% 0;pointer-events:none;height:66%;animation:9s ease-in-out infinite alternate studio-curtain;position:absolute;top:-1%;left:-4%}.studio-curtain>.flight-art{object-fit:fill}.studio-sunlight{z-index:2;pointer-events:none;background:linear-gradient(125deg,#0000 15%,#fff2c713 35%,#0000 59%);width:65%;height:55%;animation:16s ease-in-out infinite alternate studio-sunlight;position:absolute;top:15%;left:0}.studio-reading-shade{z-index:8;opacity:0;pointer-events:none;background:linear-gradient(#0000,#17110bbf);position:absolute;inset:62% 0 0}.studio-intro{z-index:9;color:#f6efe5;opacity:0;visibility:hidden;text-shadow:0 2px 14px #130b0799;width:72%;position:absolute;top:73%;left:7%}.studio-intro>p:first-child{letter-spacing:.14em;color:#e6d5b8;margin:0 0 13px;font-size:9px}.studio-intro h2{letter-spacing:-.045em;margin:0 0 14px;font-size:clamp(32px,4.2vw,65px);font-weight:450;line-height:1.02}.studio-intro>p:last-child{color:#eee4d5;margin:0;font-size:12px;line-height:1.6}.studio-pullback-hint{z-index:3;color:#eee7dc;text-shadow:0 2px 12px #000;opacity:0;visibility:hidden;max-width:75%;font-size:12px;line-height:1.6;position:absolute;bottom:12%;left:8%}.studio-caption{letter-spacing:.12em;z-index:10;color:#dfd6c8;text-shadow:0 1px 5px #000;font-size:8px;position:absolute;bottom:3%;left:7%}.studio-edge-shade{z-index:2;pointer-events:none;opacity:0;background:linear-gradient(90deg,#191612,#0000 3% 97%,#191612),linear-gradient(#191612,#0000 3% 97%,#191612);position:absolute;inset:0}.encounter-minimal-link{display:none}.earth-encounter[data-minimal=true]{height:100svh;min-height:650px}.earth-encounter[data-minimal=true] .encounter-stage{height:100%;min-height:inherit;position:relative}.earth-encounter[data-minimal=true] .encounter-minimal-link{z-index:11;color:#f5ebdc;text-underline-offset:5px;text-shadow:0 2px 8px #000;padding:12px 0;font-size:12px;text-decoration:underline;display:block;position:absolute;bottom:4%;left:7%}.earth-encounter[data-minimal=true] .studio-caption{display:none}.earth-encounter:not([data-awake=true]) .studio-ambient,.earth-encounter[data-visible=false] .studio-ambient{animation-play-state:paused}@keyframes studio-leaves{0%{transform:rotate(-.8deg)}to{transform:rotate(.8deg)}}@keyframes studio-curtain{0%{transform:rotate(-.65deg)skew(-.3deg)}to{transform:rotate(.65deg)skew(.3deg)}}@keyframes studio-light{0%{opacity:.45}to{opacity:.85}}@keyframes studio-sunlight{0%{opacity:.35;transform:translate(-1%)}to{opacity:.65;transform:translate(2%)}}.studio-plane[data-layout=portrait] .studio-monitor{width:55%;top:18.7%;left:6%}.studio-plane[data-layout=portrait] .studio-portrait{width:46%;top:32%;left:48%}.studio-plane[data-layout=portrait] .studio-book{width:20%;top:30%;left:39%}.studio-plane[data-layout=portrait] .studio-desk-front{clip-path:polygon(0 42%,100% 42%,100% 100%,0 100%)}.studio-plane[data-layout=portrait] .studio-keyboard{width:25%;height:5%;top:37%;left:10%}.studio-plane[data-layout=portrait] .studio-lamp{display:none}.studio-plane[data-layout=portrait] .studio-plant{z-index:2;width:17%;top:26%;left:80%}.studio-plane[data-layout=portrait] .studio-curtain{height:44%;left:-7%}.studio-plane[data-layout=portrait] .studio-sunlight{height:42%;top:9%}.studio-plane[data-layout=portrait] .studio-reading-shade{background:linear-gradient(#0000,#17110bd9 56%);inset:44% 0 0}.studio-plane[data-layout=portrait] .studio-intro{width:87%;top:78.5%;left:7%}.studio-plane[data-layout=portrait] .studio-intro h2{margin-bottom:8px;font-size:clamp(26px,6.5vw,50px)}.studio-plane[data-layout=portrait] .studio-intro>p:first-child{letter-spacing:.11em;margin-bottom:9px;font-size:7px}.studio-plane[data-layout=portrait] .studio-intro>p:last-child{font-size:10px;line-height:1.5}@media (max-height:560px){.earth-encounter[data-minimal=true]{min-height:390px}.studio-intro{top:71%}.studio-intro h2{margin-bottom:8px;font-size:clamp(26px,3.4vw,46px)}.studio-intro>p:first-child{margin-bottom:8px;font-size:7px}.studio-intro>p:last-child{font-size:9px}.studio-caption{font-size:6px}.studio-pullback-hint{font-size:10px}}.studio-screen-copy{width:100vw;height:100svh;transform:translate(-50%,-50%) scale(var(--studio-scene-scale));transform-origin:50%;color:#f1ede4;text-shadow:0 2px 20px #01050d99;pointer-events:none;position:absolute;top:50%;left:50%}.studio-screen-copy>.earth-copy{opacity:1;visibility:visible}.studio-photo-frame{aspect-ratio:3/4;z-index:11;cursor:pointer;background:linear-gradient(125deg,#614126,#bd9562 45%,#57391f);border:1px solid #b69058;width:3.8%;padding:clamp(2px,.3vw,5px);position:absolute;top:7.5%;left:51.2%;transform:rotate(-2deg);box-shadow:1px 2px 3px #25190c70}.studio-photo-frame:after{content:"";width:100%;min-width:44px;height:100%;min-height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.studio-photo-frame:focus-visible{outline-offset:5px;outline:2px solid #fff2bc}.studio-photo-mat{background:#e7d7b9;width:100%;height:100%;padding:12%;display:block;box-shadow:inset 0 0 2px #291c12}.studio-photo-mat>span{background:#c7b795;width:100%;height:100%;display:block;box-shadow:inset 0 1px 4px #442e1626}.studio-plane[data-layout=portrait] .studio-photo-frame{width:11%;top:8.2%;left:45%;transform:rotate(-2deg)}.studio-photo-dialog{color:#38291e;background:#eee3cd;border:1px solid #b29b74;max-width:min(410px,100vw - 40px);max-height:calc(100svh - 40px);padding:0;box-shadow:0 18px 75px #0007}.studio-photo-dialog::backdrop{background:#100c08b8}.studio-photo-panel{text-align:center;padding:30px}.studio-photo-empty{aspect-ratio:3/4;background:#d9c9a9;border:6px solid #8d6841;width:100px;margin:0 auto 24px;box-shadow:inset 0 0 0 10px #eee1c9}.studio-photo-panel>p{font-size:12px;line-height:1.7}.studio-photo-panel>p:first-of-type{letter-spacing:.08em;text-transform:uppercase;font-size:9px}.studio-photo-panel h2{font-family:var(--serif),Georgia,serif;margin:12px 0;font-size:31px;line-height:1.12}.studio-photo-panel button{color:#fff2d9;min-height:44px;font:inherit;cursor:pointer;background:#483522;border:1px solid #795b37;margin-top:16px;padding:10px 22px;font-size:12px}.studio-photo-panel button:focus-visible{outline-offset:4px;outline:2px solid #573c18}.earth-encounter[data-phase=studio] .studio-caption{visibility:hidden}
.book-cover-art,.book-cover-title{width:100%;height:100%;position:absolute;inset:0}.book-cover-art>img{object-fit:contain}.book-cover-title{color:#d7bd83;font-family:var(--serif),Georgia,serif}.modern-works.book-portfolio{width:100vw;height:calc(var(--book-travel,5500px) + 100svh);color:#30261d;isolation:isolate;margin-inline:calc(50% - 50vw);padding:0;scroll-margin-top:0;position:relative}.book-portfolio[data-minimal=false]{margin-top:-100svh}.book-stage{perspective:1800px;opacity:0;pointer-events:none;visibility:hidden;background:#35261b;height:100svh;position:sticky;top:0;overflow:hidden}.book-portfolio[data-entered=true]>.book-stage,.book-portfolio[data-minimal=true]>.book-stage{opacity:1;pointer-events:auto;visibility:visible}.book-desk{pointer-events:none;background:linear-gradient(#120c0855,#120c0820 40%,#120c0877),url(/assets/portfolio-book-desk.webp) 50%/cover;position:absolute;inset:0}.book-camera{will-change:transform;transform-style:preserve-3d;position:absolute;inset:0}.book-plane{transform-style:preserve-3d;perspective:1800px;position:absolute}.book-open-art{pointer-events:none;position:absolute;inset:-2.5%}.book-open-art img{object-fit:fill}.book-pages{transform-style:preserve-3d;position:absolute;inset:2% 2.5%}.book-pages:after{content:"";pointer-events:none;z-index:3;background:linear-gradient(90deg,#0000,#52432c27,#0000);width:5%;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.book-portfolio .book-project{color:#30261d;visibility:hidden;pointer-events:none;scrollbar-width:thin;scrollbar-color:#a8936d transparent;background:0 0;border:0;width:50%;min-width:0;margin:0;padding:clamp(22px,3vw,44px) clamp(22px,3vw,44px) 48px;transition:none;position:absolute;top:0;bottom:0;overflow:auto}.book-project[data-side=left]{left:0}.book-project[data-side=right]{right:0}.book-project[data-active=true]{visibility:visible;pointer-events:auto}.book-project>*{flex-shrink:0}.book-portfolio .book-project:hover,.book-portfolio .book-project:focus-within{background:0 0;border:0}.book-project .project-meta{align-items:center;gap:10px;margin-bottom:24px}.book-project .project-meta>span{color:#715c3d;font-size:15px}.book-project .project-meta p{color:#735326;letter-spacing:.08em;font-size:9px}.book-project .project-meta small{color:#635745;width:100%;margin-left:0;font-size:10px}.book-project .project-title-row{align-items:flex-start;gap:16px;margin:0 0 24px;display:flex}.book-portfolio .book-project .project-icon{aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 3px 3px #30251520);background:0 0;border-radius:13px;flex:none;width:64px;height:64px;margin:0;padding:0}.book-portfolio .book-project h3{font-family:var(--serif),Georgia,serif;letter-spacing:-.045em;overflow-wrap:anywhere;margin:0;font-size:clamp(29px,3.2vw,48px);line-height:1.02}.book-project h3 a:hover{color:#815b25}.book-project .project-description{color:#43382b;max-width:none;margin-bottom:18px;font-size:15px;line-height:1.75}.book-project .project-note{color:#6b5c46;margin-bottom:16px;font-size:12px;line-height:1.7}.book-project .project-actions{gap:12px;margin-top:auto;padding-top:14px}.book-project .project-primary,.book-project .project-mediafire,.book-project .project-alternative{color:#51350f;border-bottom-color:#9c7a42;gap:18px;font-size:12px}.book-project .project-source{color:#5d4d36;font-size:12px}.book-project .project-downloads{gap:8px}.book-project a{touch-action:manipulation}.book-project a:focus-visible,.book-controls a:focus-visible,.book-controls button:focus-visible,.book-toolbar button:focus-visible{outline-offset:5px;outline:2px solid #a37128}.book-folio{letter-spacing:.12em;color:#77654b;pointer-events:none;margin-top:24px;font-size:8px;display:block}.book-colophon{text-align:center;visibility:hidden;flex-direction:column;justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0 0 0 50%}.book-colophon[data-active=true]{visibility:visible}.book-colophon>span{font-family:var(--serif),Georgia,serif;font-size:52px;line-height:1}.book-colophon p{max-width:190px;font-size:13px;line-height:1.8}.book-colophon small{letter-spacing:.12em;color:#756143;margin-top:35px;font-size:8px}.book-front-cover{transform-origin:0;width:50%;height:100%;transform-style:preserve-3d;z-index:8;will-change:transform;position:absolute;top:0;left:50%}.book-front-cover>.book-cover-art{backface-visibility:hidden}.book-cover-inside{backface-visibility:hidden;background:#c8b38a;border:8px solid #392b20;position:absolute;inset:0;transform:rotateY(180deg);-webkit-mask:url(/assets/portfolio-book-cover.webp) 50%/100% 100% no-repeat;mask:url(/assets/portfolio-book-cover.webp) 50%/100% 100% no-repeat}.book-turning-leaf{transform-origin:0;width:47.5%;height:96%;transform-style:preserve-3d;z-index:7;opacity:0;pointer-events:none;will-change:transform;position:absolute;top:2%;left:50%}.book-leaf-front,.book-leaf-back{backface-visibility:hidden;position:absolute;inset:0;-webkit-mask:url(/assets/portfolio-book-leaf.webp) 50%/100% 100% no-repeat;mask:url(/assets/portfolio-book-leaf.webp) 50%/100% 100% no-repeat}.book-leaf-back{transform:rotateY(180deg)}.book-turning-leaf img{object-fit:fill}.book-leaf-front:after,.book-leaf-back:after{content:"";background:linear-gradient(90deg,#604b2c35,#0000 20%,#fff2 70%,#5a422222);position:absolute;inset:0}.book-toolbar{z-index:10;color:#f1e5c8;opacity:0;visibility:hidden;justify-content:space-between;align-items:center;gap:20px;display:flex;position:absolute;top:24px;left:5.5%;right:5.5%}.book-heading .modern-kicker{color:#e4cfa8;margin:0 0 6px;font-size:8px}.book-heading h2{font-family:var(--serif),Georgia,serif;letter-spacing:-.04em;margin:0;font-size:36px;font-weight:400;line-height:1}.book-heading h2 span{color:#d2b57b}.book-filter-group{text-align:right}.book-toolbar .modern-filters{justify-content:flex-end;margin:0}.book-toolbar .modern-filters button{color:#f5e7c8;background:#20170ed9;border-color:#d0b78966;min-height:44px;padding:8px 18px;font-size:11px}.book-toolbar .modern-filters button[aria-pressed=true]{color:#332614;background:#ecd9b0;border-color:#ecd9b0}.book-toolbar .project-count{color:#e5d1ad;margin:8px 0 0;font-size:9px}.book-controls{z-index:12;color:#f1e3c7;justify-content:space-between;align-items:center;gap:20px;display:flex;position:absolute;bottom:18px;left:5.5%;right:5.5%}.book-controls button{color:#f5e9cf;cursor:pointer;background:#21170eea;border:1px solid #bfa37180;min-width:44px;min-height:44px;font-family:inherit;font-size:11px}.book-controls button:disabled{opacity:.35;cursor:default}.book-open-button{padding:0 17px}.book-pagination{align-items:center;gap:12px;display:flex}.book-page-status{text-align:center;min-width:125px;margin:0;font-size:10px}.book-controls .github-profile{color:#f1dfbc;gap:8px;margin:0;font-size:10px}.book-controls .github-profile svg{width:17px;height:17px}.book-portfolio[data-phase=closed] .book-open-button,.book-portfolio[data-phase=opening] .book-open-button{color:#362717;background:#ead6aa;border-color:#ead6aa}.book-portfolio[data-layout=single] .book-pages{inset:2% 3.5%}.book-portfolio[data-layout=single] .book-pages:after{width:9%;left:0}.book-portfolio[data-layout=single] .book-project{width:100%;padding:24px 25px 44px;left:0;right:0}.book-portfolio[data-layout=single] .book-front-cover{width:100%;left:0}.book-portfolio[data-layout=single] .book-turning-leaf{width:93%;left:3.5%}.book-portfolio[data-layout=single] .book-open-art{inset:-2.5%;overflow:hidden}.book-portfolio[data-layout=single] .book-open-art img{max-width:none;width:200%!important;left:-100%!important}.book-portfolio[data-layout=single] .book-project h3{font-size:32px}.book-portfolio[data-layout=single] .book-project .project-title-row{gap:12px;margin-bottom:18px}.book-portfolio[data-layout=single] .book-project .project-icon{width:52px;height:52px}.book-portfolio[data-layout=single] .book-project .project-description{font-size:14px;line-height:1.65}.book-portfolio[data-layout=single] .book-project .project-meta{margin-bottom:18px}.book-portfolio[data-layout=single] .book-folio{left:25px}.book-portfolio[data-minimal=true]{background:#35261b;height:auto;padding:40px 5.5%}.book-portfolio[data-minimal=true] .book-stage{background:0 0;height:auto;position:relative;overflow:visible}.book-portfolio[data-minimal=true] .book-toolbar{opacity:1;visibility:visible;margin-bottom:30px;position:relative;inset:auto}.book-portfolio[data-minimal=true] .book-camera{position:relative;inset:auto;transform:none}.book-portfolio[data-minimal=true] .book-plane{filter:none;width:auto;height:auto;position:relative;inset:auto}.book-portfolio[data-minimal=true] .book-pages{background:0 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid;position:relative;inset:auto}.book-portfolio[data-minimal=true] .book-project{visibility:visible;pointer-events:auto;background:#f0e5cb;width:100%;min-height:470px;padding:35px 32px 48px;position:relative;inset:auto;overflow:visible}.book-portfolio[data-minimal=true] .book-open-art,.book-portfolio[data-minimal=true] .book-front-cover,.book-portfolio[data-minimal=true] .book-turning-leaf,.book-portfolio[data-minimal=true] .book-colophon,.book-portfolio[data-minimal=true] .book-pages:after,.book-portfolio[data-minimal=true] .book-desk{display:none}.book-portfolio[data-minimal=true] .book-controls{justify-content:flex-end;margin-top:25px;position:relative;inset:auto}.book-portfolio[data-minimal=true] .book-open-button,.book-portfolio[data-minimal=true] .book-pagination{display:none}@media (max-width:700px){.book-toolbar{gap:10px;top:18px;left:5%;right:5%}.book-heading h2{font-size:28px}.book-heading .modern-kicker{max-width:105px;font-size:6px;line-height:1.5}.book-toolbar .modern-filters{gap:3px}.book-toolbar .modern-filters button{padding:7px 10px;font-size:10px}.book-toolbar .project-count{font-size:8px}.book-controls{flex-wrap:wrap;gap:10px;bottom:12px;left:5%;right:5%}.book-controls .github-profile{justify-content:center;width:100%;font-size:9px}.book-controls .github-profile svg{width:14px;height:14px}.book-open-button{padding:0 10px;font-size:10px!important}.book-pagination{gap:4px;margin-left:auto}.book-page-status{min-width:102px;font-size:9px}.book-pagination button{min-width:38px}.book-portfolio[data-minimal=true] .book-pages{grid-template-columns:1fr;gap:20px}.book-portfolio[data-minimal=true] .book-project{min-height:0;padding:28px 25px 50px}.book-portfolio[data-minimal=true] .book-toolbar{align-items:flex-start}.book-portfolio[data-minimal=true] .book-controls{justify-content:center}.book-portfolio[data-minimal=true] .book-project .project-description{font-size:15px}.book-portfolio[data-minimal=true] .book-project .project-note{font-size:12px}}@media (max-height:650px) and (min-width:701px){.book-toolbar{align-items:flex-start;top:12px}.book-heading h2{font-size:27px}.book-controls{bottom:12px}.book-portfolio[data-layout=single] .book-project{padding:20px 24px 45px}.book-portfolio[data-layout=single] .book-project .project-meta,.book-portfolio[data-layout=single] .book-project .project-title-row{margin-bottom:12px}.book-controls .github-profile{max-width:160px}}@media (prefers-contrast:more){.book-project .project-note,.book-project .project-meta small,.book-folio{color:#493923}.book-controls button{border-color:#ead6aa}}@media (max-width:360px){.book-portfolio[data-layout=single] .book-project h3{font-size:28px}.book-portfolio[data-layout=single] .book-project .project-icon{width:44px;height:44px}.book-portfolio[data-layout=single] .book-project .project-title-row{gap:10px}.book-controls .book-open-button{padding:0 8px;font-size:9px!important}.book-pagination{gap:3px}.book-pagination button{min-width:34px}.book-page-status{min-width:88px;font-size:8px}}.book-toolbar .modern-filters{flex-wrap:nowrap}.book-filter-group{flex:none}.book-controls .github-profile{margin-right:110px}.book-portfolio[data-short=true] .book-project .project-meta{gap:8px;margin-bottom:12px}.book-portfolio[data-short=true] .book-project .project-meta small{width:auto;margin-left:auto}.book-portfolio[data-short=true] .book-project .project-title-row{margin-bottom:12px}.book-portfolio[data-short=true] .book-project h3{font-size:32px}.book-portfolio[data-short=true] .book-project .project-description{font-size:14px;line-height:1.6}.book-portfolio[data-short=true] .book-project{padding-right:48px}@media (max-width:700px){.book-controls .github-profile{justify-content:flex-start;width:calc(100% - 105px);margin-right:0;font-size:8px}.book-portfolio[data-minimal=true] .book-controls .github-profile{width:auto;margin-right:105px}}.book-open-art{filter:drop-shadow(0 18px 16px #130b0980)}.book-edge-stack{pointer-events:none;position:absolute;inset:-2.5%;transform:translateZ(-12px)}.book-edge-stack i{filter:brightness(.76);background:url(/assets/portfolio-book-open.webp) 50%/100% 100% no-repeat;position:absolute;inset:0;transform:translateY(13px)}.book-edge-stack i:nth-child(2){filter:brightness(.84);transform:translateY(9px)}.book-edge-stack i:nth-child(3){filter:brightness(.91);transform:translateY(5px)}.book-portfolio[data-layout=single] .book-edge-stack{overflow:hidden}.book-portfolio[data-layout=single] .book-edge-stack i{width:200%;left:-100%}.book-portfolio .book-project{text-align:center;align-items:center}.book-project .project-meta{justify-content:center;max-width:100%}.book-project .project-title-row{flex-direction:column;justify-content:center;align-items:center;gap:14px;width:100%}.book-project .project-description,.book-project .project-note{text-align:center;width:100%}.book-project .project-actions{flex-direction:column;justify-content:center;align-items:center;gap:12px;width:100%}.book-project .project-downloads{flex-direction:column;justify-content:center;width:100%}.book-project .project-actions>.project-source{margin:0}.book-project .project-primary,.book-project .project-alternative,.book-project .project-mediafire{color:#4c3519;text-align:center;background:#f6ecd4a6;border:1px solid #876a37;justify-content:center;align-items:center;gap:12px;max-width:100%;min-height:46px;padding:12px 18px;text-decoration:none;display:inline-flex}.book-project .project-primary:hover,.book-project .project-alternative:hover,.book-project .project-mediafire:hover{background:#e5d1a8}.project-action-mark{stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:19px;height:19px}.book-project .project-meta small{text-align:center;margin-left:0}.book-folio{text-align:center;width:100%}.book-portfolio[data-short=true] .book-project .project-meta small{margin-left:0}.book-portfolio[data-minimal=true] .book-edge-stack{display:none}.book-front-cover>.book-cover-art,.book-cover-inside{opacity:var(--cover-alpha,1)}.book-stage{perspective:none}.book-plane{perspective:3200px}.book-toolbar .project-count{text-align:left;margin-top:8px;position:absolute;top:100%;left:0}.book-pages{z-index:2}.book-paper-edges{z-index:1;pointer-events:none;width:105%;height:105%;position:absolute;inset:-2.5%}.book-portfolio[data-layout=single] .book-paper-edges{clip-path:inset(0 0 0 50%);width:210%;left:-107.5%}.book-portfolio[data-minimal=true] .book-paper-edges{display:none}
.book-cover-art{container-type:inline-size}.book-cover-lettering{color:#d7bd83;font-family:var(--serif),Georgia,serif;position:absolute;inset:0}.book-cover-lettering>span,.book-cover-lettering>i{white-space:nowrap;display:block;position:absolute}.cover-kicker{letter-spacing:.4cqw;font-size:2.7cqw;top:26.5%;left:15%}.cover-name{letter-spacing:-.6cqw;font-size:14.3cqw;line-height:1.16;top:35%;left:14.5%}.book-cover-lettering>i{background:currentColor;width:29%;height:.2cqw;top:62.3%;left:15%}.cover-author{letter-spacing:.2cqw;font-size:2.5cqw;top:67%;left:15%}
