@charset "UTF-8";@import"https://fonts.googleapis.com/css2?family=Caveat&display=swap";@font-face{font-family:Beatrice;font-display:block;block-timeout:.3;swap-timeout:.1;src:url(/assets/fonts/Beatrice-Regular.eot);src:url(/assets/fonts/Beatrice-Regular.woff2) format("woff2"),url(/assets/fonts/Beatrice-Regular.woff) format("woff"),url(/assets/fonts/Beatrice-Regular.ttf) format("truetype")}*{margin:0;padding:0;box-sizing:border-box;font-family:Beatrice,sans-serif;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.overlay{position:absolute;width:100vw;height:100vh;z-index:999;pointer-events:none}.overlay:after{content:"";background-image:url(/assets/noise-texture.png);height:300%;width:300%;position:fixed;top:-100%;left:-100%;opacity:.1;animation:animateGrain 8s steps(10) infinite;will-change:transform;pointer-events:none;z-index:1}@keyframes animateGrain{0%,to{transform:translateZ(0)}10%{transform:translate3d(-5%,-10%,0)}20%{transform:translate3d(-15%,-20%,0)}30%{transform:translate3d(-5%,-10%,0)}40%{transform:translate3d(-15%,-20%,0)}50%{transform:translate3d(-5%,-10%,0)}60%{transform:translate3d(-15%,-20%,0)}70%{transform:translate3d(-5%,-10%,0)}80%{transform:translate3d(-15%,-20%,0)}90%{transform:translate3d(-5%,-10%,0)}}body,html{border-right:.25em solid #0a0a0a;background-color:#fff;cursor:url(/assets/cursors/windows95-cursor.png),auto;scroll-behavior:smooth;overflow-x:hidden;overflow-x:clip;line-height:1.6}a{cursor:url(/assets/cursors/windows95-pointer.png),auto;color:#0a0a0a;text-decoration:none}#header{background-color:#fff}#name{position:fixed;top:0;left:0;right:0;padding:0 .5rem;z-index:1;mix-blend-mode:difference;font-size:100px;color:#fff;white-space:nowrap;pointer-events:none;text-align:justify;font-weight:600;paint-order:stroke fill;-webkit-text-stroke:3px #fff;letter-spacing:1px}#name:after{content:"";display:inline-block;width:100%}#title-letter{display:inline-block;color:#fff;transition:transform 50s ease;pointer-events:all;font-size:100px;paint-order:stroke fill;-webkit-text-stroke:3px #fff}#name:hover #title-letter{transform:rotateY(3600deg)}#top-gap{height:140px;border-bottom:.5em solid #0a0a0a}#box{background:#0a0a0a;color:#fff;position:absolute;top:160px;right:20px;width:200px;height:200px;padding:15px;overflow:hidden;cursor:url(/assets/cursors/windows95-grab.png),auto;box-shadow:8px 8px #0a0a0a}#box button{position:absolute;top:30px;right:30px;padding-top:-.3rem;border:0;background-color:#0a0a0a;color:#fff;cursor:pointer;width:30px;border-radius:100px;font-weight:900;font-size:1.4rem;height:30px;line-height:30px;text-align:center;transition:transform .15s linear;z-index:2;cursor:url(/assets/cursors/windows95-pointer.png),auto}#box button:hover{transform:scale(1.5)}#box:before{content:"";position:absolute;width:150%;height:150%;background:repeating-linear-gradient(#fff,#fff 7.5px,#0a0a0a 7.5px,#0a0a0a 15px,#fff 15px,#fff 22.5px,#0a0a0a 22.5px,#0a0a0a 30px);transform:translate(-20%) translateY(-20%) rotate(-45deg);animation:animate 20s linear infinite}#box .content{position:relative;background-color:#0a0a0a;flex-direction:column;box-sizing:border-box;padding:10px;text-align:center;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}#box .content p,#box .content #books-container a,#books-container #box .content a,#box .content #projects-container a,#projects-container #box .content a{font-weight:600;color:#fff}@keyframes animate{0%{background-position:0}to{background-position:0 450px}}#new,#welcome,#chinese,#rays,#flowers{position:absolute;cursor:url(/assets/cursors/windows95-grab.png),auto}#new{top:155px;left:110px;transform:rotate(-10deg);padding:0;border-radius:100px}#new img{border-radius:100px;margin-bottom:-.5em;animation:rotate 1s linear infinite;animation-play-state:paused;animation-delay:calc(var(--scroll) * -1s);width:190px}#welcome{top:410px;transform:rotate(-10deg);border-radius:100px;right:10px;max-width:fit-content}#welcome img{width:200px;border-radius:100px}#rays{top:385px;right:30px;border-radius:200px;max-width:fit-content;max-height:150px;background-color:#fff;animation:rotate 180s infinite}#rays img{border-radius:200px;width:150px}#chinese{left:10px;top:150px;font-weight:600;font-size:2.75em;color:#0a0a0a;writing-mode:vertical-rl;text-orientation:upright;transition:text-shadow .25s;background-color:#fff;padding:.25em .05em .25em 0;border:6px solid #0a0a0a;text-align:center;box-shadow:8px 8px #0a0a0a;white-space:nowrap}#flowers{width:150px;height:150px;left:120px;top:360px}#flowers img{position:absolute;left:0;top:0;width:175px;height:175px;border:6px solid #0a0a0a;box-shadow:8px 8px #0a0a0a}@keyframes rotate{to{transform:rotate(3580deg)}}#spit{position:absolute;top:190px;left:300px;padding:.35em .7em .45em;background:#fff;border:6px solid #0a0a0a;box-shadow:8px 8px #0a0a0a;transform:rotate(-5deg);text-align:center;line-height:1.02;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:url(/assets/cursors/windows95-grab.png),auto;transition:transform .15s ease,box-shadow .15s ease}#spit:hover{transform:rotate(-3deg) scale(1.04);box-shadow:10px 10px #0a0a0a}#spit .spit__zh{display:block;font-weight:800;font-size:1.7em;letter-spacing:.08em;color:#0a0a0a}#spit .spit__tui{display:block;margin-top:.15em;font-weight:700;font-size:.82em;letter-spacing:.22em;color:#1f7a4d}#spit.is-spitting{animation:spit-recoil .34s ease}@keyframes spit-recoil{0%{transform:rotate(-5deg)}32%{transform:rotate(-5deg) translate(-6px,-3px) scale(1.05)}52%{transform:rotate(-5deg) translate(9px,2px) scale(.95)}to{transform:rotate(-5deg)}}.spit-glob{position:fixed;z-index:9999;width:16px;height:12px;margin:-6px 0 0 -8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fffffff2,#bfe3cf 42%,#6fb693);border:2px solid #0a0a0a;pointer-events:none;will-change:transform,opacity}.spit-splat{position:fixed;z-index:9998;width:28px;height:11px;border-radius:50%;background:radial-gradient(circle at 50% 40%,#a9dbc1,#7fbf9b 68%,#7fbf9b00);border:2px solid rgba(10,10,10,.45);pointer-events:none;opacity:0}.spit-splat i{position:absolute;left:50%;top:60%;width:5px;height:9px;margin-left:-2.5px;border-radius:50% 50% 60% 60%;background:#7fbf9b;animation:spit-drip 1.6s ease-in .35s both}@keyframes spit-drip{0%{transform:translateY(0) scaleY(.4);opacity:0}25%{opacity:.9}to{transform:translateY(16px) scaleY(1.3);opacity:0}}#header.spit-shake{animation:spit-shake .4s ease}@keyframes spit-shake{0%,to{transform:translate(0)}15%{transform:translate(-5px,2px) rotate(-.4deg)}35%{transform:translate(6px,-3px) rotate(.4deg)}55%{transform:translate(-4px,3px) rotate(-.3deg)}75%{transform:translate(3px,-2px) rotate(.2deg)}}.spit-burst{position:fixed;z-index:10000;font-weight:900;font-size:1.5rem;color:#1f7a4d;text-shadow:2px 2px #0a0a0a;pointer-events:none;white-space:nowrap;opacity:0}#smiley{position:absolute;top:34px;right:110px;z-index:2}#smiley img{position:absolute;width:90px;cursor:url(/assets/cursors/windows95-pointer.png),auto;transition:transform .25s ease-in-out}#smiley.move-left img{animation:moveAndRotate 2s ease-in-out}@keyframes moveAndRotate{0%{transform:translate(0) rotate(0)}50%{transform:translate(-600px) rotate(720deg)}to{transform:translate(0) rotate(1440deg)}}#intro{position:absolute;top:68vh;display:flex;justify-content:space-between;min-width:98vw;pointer-events:none}#intro p,#intro #books-container a,#books-container #intro a,#intro #projects-container a,#projects-container #intro a{margin:1rem 2rem 1rem 1rem;max-width:16ch;min-width:12ch;font-size:clamp(.8rem,2.5vh,2rem);text-align:start;line-height:1.1;font-weight:600;letter-spacing:.025em;color:#fff;text-shadow:3px 3px 0px black,-3px 3px 0px black,3px -3px 0px black,-3px -3px 0px black,3px 0px 0px black,-3px 0px 0px black,0px 3px 0px black,0px -3px 0px black;z-index:1}#intro #right{max-width:31ch;min-width:16ch;column-count:2}#handwriting{position:relative;top:-38.1vh;right:clamp(-100em,max(-42vh,-41vw),12em)}#handwriting p,#handwriting #books-container a,#books-container #handwriting a,#handwriting #projects-container a,#projects-container #handwriting a{font-family:Caveat,sans-serif;font-size:clamp(1em,4vh,2.25em);text-align:center;white-space:nowrap;line-height:1em;pointer-events:auto;cursor:url(/assets/cursors/windows95-question.png),auto;transform:rotate(20deg);font-weight:600;text-shadow:none;paint-order:stroke fill;-webkit-text-stroke:1px #0a0a0a;color:#0a0a0a}#duck-modal{width:22em;height:170px;right:15em;paint-order:stroke fill;-webkit-text-stroke:1px #0a0a0a}#duck-modal,#contact-modal{pointer-events:none;position:absolute;opacity:0;color:#0a0a0a;border:.5em solid #0a0a0a;border-top:35px solid #0a0a0a;background-color:#fff;padding:1em;cursor:url(/assets/cursors/windows95-grab.png),auto;box-shadow:10px 10px #0a0a0a;transition:opacity .35s}#duck-modal button,#contact-modal button{position:absolute;top:-35px;right:-2px;padding-top:-.3rem;border:0;background-color:#0a0a0a;color:#fff;cursor:pointer;height:30px;width:37px;font-weight:900;font-size:1.4rem;line-height:40px;text-align:center;transition:transform .15s linear;cursor:url(/assets/cursors/windows95-pointer.png),auto}#duck-modal .duck-modal-title,#contact-modal .duck-modal-title{position:absolute;color:#fff;top:-28px;left:3px}#contact-modal{padding-right:70px;display:grid;grid-template-columns:1fr 1fr;column-gap:1em;right:250px;top:160px;width:16em;height:175px;text-shadow:1px 1px 1px #0a0a0a;paint-order:stroke fill;-webkit-text-stroke:1px #0a0a0a}#contact-modal a{font-size:1.1em;letter-spacing:normal;text-wrap:nowrap;cursor:url(/assets/cursors/windows95-pointer.png),auto}#contact-modal .left{text-align:right}#contact-modal a:hover{text-decoration:line-through}#scroll-prompt{position:absolute;bottom:-1em;left:-2em;white-space:nowrap;font-weight:600;background-color:#0a0a0a;color:#fff;padding:.1em;font-size:2em;transform:rotate(3deg)}canvas{border-bottom:.5em solid #0a0a0a}.wavy{font-size:80px;margin:0 0 .5em .5em;padding-top:.5em;max-width:-moz-fit-content;max-width:fit-content;-webkit-text-stroke:6px #0a0a0a}.wavy span{position:relative;display:inline-block;text-transform:uppercase;margin:-.2rem}.wavy:hover span{animation:wavy 1s infinite;animation-delay:calc(.1s * var(--i))}@keyframes wavy{0%,40%,to{transform:translateY(0)}20%{transform:translateY(-20px)}}#projects-container{display:grid;grid-template-columns:1fr 1fr;background:url(/assets/stripes.svg);background-position:bottom right}.project-card{padding:2rem;border:.5em solid #0a0a0a;margin:-3px;display:block;animation:fadeInFromNone .5s ease-out;transition:background-color .25s ease}@keyframes fadeInFromNone{0%{display:none;opacity:0}to{display:block;opacity:1}}.project-image-container,.project-image{position:relative;z-index:3}.project-image-container{margin-bottom:-1em;box-shadow:8px 8px #0a0a0a;border:.4em solid #0a0a0a;max-width:fit-content;height:19.5rem;transition:transform .6s ease-in-out,filter .6s ease-in-out,box-shadow .7s ease-in-out;-webkit-filter:grayscale(100%);filter:grayscale(100%);cursor:url(/assets/cursors/windows95-pointer.png),auto}.project-image-container:hover{transform:perspective(600px) translateZ(160px) rotateY(-10deg) rotateX(20deg);box-shadow:0 0 #0a0a0a;-webkit-filter:grayscale(0%);filter:grayscale(0%)}.project-image{height:19rem;transition:opacity .9s ease-in-out}.project-title{font-size:2em;font-weight:700;white-space:nowrap;text-align:left;letter-spacing:.1em;text-shadow:1px 1px #fff,2px 2px #fff,3px 3px #0a0a0a}.project-title:hover{animation:flash .3s infinite;animation-timing-function:steps(4,jump-both)}@keyframes flash{0%{display:none;opacity:0}to{display:block;opacity:1}}.project-summary,.technologies{pointer-events:none}.project-summary{padding:1em 1em 1em 0;font-weight:600;text-align:justify}.technologies{margin:0 0 1.5rem;font-size:.75rem;background-color:#0a0a0a;color:#fff;max-width:fit-content;padding:.4em .6em;transform:rotate(-3deg)}.repo-link{font-weight:600;font-size:1.4rem}.repo-link:hover:after{content:" < < < < < <"}.show-more{font-weight:600;letter-spacing:.05em;color:#fff;background-color:#0a0a0a;border:0;cursor:url(/assets/cursors/windows95-pointer.png),auto}.more,.show-more{padding:20px;text-align:center;border-bottom:.3333333333em solid #0a0a0a;border-top:.3333333333em solid #0a0a0a;margin-top:-1.5px;font-size:1.5em;font-weight:600}.exclamation{animation:flash .3s infinite;font-weight:600}#books-container{display:grid;grid-template-columns:1fr 1fr;background:url(/assets/stripes.svg);background-position:bottom right}.book-card{padding:2rem;border:.5em solid #0a0a0a;margin:-3px;display:flex;flex-direction:column;animation:fadeInFromNone .5s ease-out;transition:background-color .25s ease}.book-actions{margin-top:auto;padding-top:.9em;display:flex;flex-direction:column;align-items:flex-start;gap:.6em}.book-shops{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.6rem}#books-container .book-card .project-image-container{height:auto;min-height:19rem;box-shadow:5px 5px #0a0a0a;margin-bottom:.6em}#books-container .book-card .project-image-container a{display:block;line-height:0}#books-container .book-card .project-image{height:19rem;width:auto;object-fit:contain;display:block}.seperator{font-weight:900;text-shadow:.5px .5px 0 #0a0a0a;font-size:.85rem}.technologies{margin:0 0 0rem;font-size:.9rem;background-color:#0a0a0a;color:#fff;max-width:fit-content;padding:.4em .6em;transform:rotate(-3deg)}.book-date{display:inline-block;margin-top:.2em;padding:.45em .85em;background:#fff;border:2px solid #0a0a0a;font-weight:700;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}.book-date--live{background:#0a0a0a;color:#fff;border-color:#0a0a0a;transform:rotate(-2deg);box-shadow:4px 4px #0a0a0a47;text-decoration:none;cursor:url(/assets/cursors/windows95-pointer.png),pointer;transition:transform .2s ease,box-shadow .2s ease}.book-date--live:after{content:" ↗";font-weight:700}.book-date--live:hover{transform:rotate(-2deg) translate(-2px,-2px);box-shadow:6px 6px #0a0a0a66}.chinese-letter-section{margin:2em 0;padding:2em;border:6px solid #0a0a0a;box-shadow:12px 12px #0a0a0a;background-color:#fff;position:relative;overflow:hidden;transition:transform .3s ease}.chinese-letter-section:hover{transform:translateY(-5px)}.chinese-letter-section:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(45deg,#a8b5a1 10%,#e2d5c3 10%,#e2d5c3 20%,#98a7b5 20%,#98a7b5 30%,#d5b8b8 30%,#d5b8b8 40%,#e8e8e8 40%,#e8e8e8 50%,#a8b5a1 50%,#a8b5a1 60%,#e2d5c3 60%,#e2d5c3 70%,#98a7b5 70%,#98a7b5 80%,#d5b8b8 80%,#d5b8b8 90%,#e8e8e8 90%,#e8e8e8);background-size:141.42px 141.42px;animation:slideStripes 20s linear infinite}.chinese-letter-section .wavy{font-size:2.5em;margin-bottom:1.5em;color:#0a0a0a;text-align:center;font-weight:700;transform-origin:center;animation:gentleFloat 3s ease-in-out infinite}.chinese-letter-section .letter-content{font-family:Kaiti SC,STKaiti,KaiTi,楷体,Xingkai SC,STXingkai,cursive;font-size:1.7em;line-height:2;margin:0 0 .35em;min-height:2em;color:#1a1a1a;cursor:url(../assets/cursors/windows95-pointer.png),auto;transition:transform .25s cubic-bezier(.4,0,.2,1)}.letter-caret{display:inline-block;width:.5em;height:1.05em;margin-left:2px;background:#1a1a1a;vertical-align:-.14em;animation:letterCaretBlink 1s steps(1) infinite}@keyframes letterCaretBlink{0%,50%{opacity:1}50.01%,to{opacity:0}}.letter-figure{margin:var(--line, 2.4rem) auto;width:fit-content;max-width:min(78%,420px);padding:.7rem .7rem .6rem;background:#fffdf8;border:1px solid rgba(0,0,0,.12);box-shadow:0 10px 26px #1c181438,inset 0 0 0 1px #0000000a;transform:rotate(var(--tilt, -1.5deg));opacity:0;translate:0 12px;transition:opacity .5s ease,translate .5s cubic-bezier(.2,.8,.3,1),transform .35s cubic-bezier(.4,0,.2,1),box-shadow .35s ease;cursor:url(../assets/cursors/windows95-pointer.png),auto}.letter-figure.is-shown{opacity:1;translate:0 0}.letter-figure img{display:block;width:100%;height:auto}.letter-figure figcaption{margin-top:.5rem;font-family:Kaiti SC,STKaiti,KaiTi,楷体,Xingkai SC,STXingkai,cursive;font-size:1.05rem;line-height:1.35;text-align:center;color:#5a544a}.letter-figure:hover{transform:rotate(0) scale(1.02);box-shadow:0 16px 36px #1c18144d}.letter-envelope{position:relative;padding:14px;border:2px solid #0a0a0a;background:repeating-linear-gradient(45deg,#c0392b 0,#c0392b 12px,#fdfdfb 12px,#fdfdfb 24px,#2b4c8c 24px,#2b4c8c 36px,#fdfdfb 36px,#fdfdfb 48px)}.letter-paper{--line: 2.4rem;position:relative;padding:var(--line) 2.4rem var(--line);overflow:hidden;background-color:#fbf8ef;background-image:linear-gradient(to right,transparent 0,transparent 2.2em,rgba(192,57,43,.25) 2.2em,rgba(192,57,43,.25) calc(2.2em + 1px),transparent calc(2.2em + 1px)),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--line) - .5rem - 1px),rgba(43,76,140,.16) calc(var(--line) - .5rem - 1px),rgba(43,76,140,.16) calc(var(--line) - .5rem),transparent calc(var(--line) - .5rem),transparent var(--line))}.letter-stamp{position:absolute;top:1.3em;right:1.3em;width:4.6em;padding:5px;background:#efe7d2;color:#26344f;transform:rotate(4deg);z-index:2}.letter-stamp .letter-stamp__inner{position:relative;display:flex;flex-direction:column;align-items:center;padding:.55em .4em .4em;border:1px solid rgba(38,52,79,.55)}.letter-stamp .letter-stamp__value{position:absolute;top:.15em;right:.3em;font-size:.62em;font-weight:800;line-height:1}.letter-stamp .letter-stamp__art{width:2.7em;height:2.7em;display:block;fill:#1b1b1b}.letter-stamp .letter-stamp__issuer{margin-top:.15em;font-size:.5em;font-weight:700;letter-spacing:.16em;text-indent:.16em}.letter-stamp:before{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;pointer-events:none;background:radial-gradient(circle 4px at 0 50%,#fbf8ef 46%,#0000 48%) 0 0/8px 8px repeat-y,radial-gradient(circle 4px at 100% 50%,#fbf8ef 46%,#0000 48%) 100% 0/8px 8px repeat-y,radial-gradient(circle 4px at 50% 0,#fbf8ef 46%,#0000 48%) 0 0/8px 8px repeat-x,radial-gradient(circle 4px at 50% 100%,#fbf8ef 46%,#0000 48%) 0 100%/8px 8px repeat-x}.letter-postmark{position:absolute;top:.6em;right:4.4em;width:5.4em;height:5.4em;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15em;border:2px solid rgba(20,20,20,.72);border-radius:50%;color:#141414b8;font-weight:700;text-align:center;transform:rotate(-12deg);mix-blend-mode:multiply;pointer-events:none;z-index:3}.letter-postmark:before{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border:1px solid rgba(20,20,20,.6);border-radius:50%}.letter-postmark .letter-postmark__top{font-size:.55em;letter-spacing:.04em}.letter-postmark .letter-postmark__date{font-size:.64em;letter-spacing:.02em}.letter-postmark .letter-postmark__foot{font-size:.5em;letter-spacing:.1em}#this-website .letter-content{font-size:1.5rem;line-height:var(--line);min-height:var(--line);margin:0 0 var(--line)}#this-website .letter-nav{margin:2.4em 0 0;display:flex;flex-direction:column;align-items:center;gap:.9rem}#this-website .letter-nav__row{display:flex;align-items:center;justify-content:center;gap:1.4rem}#this-website .letter-nav__readout{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-width:9rem;line-height:1.2}#this-website .letter-nav__date{font-size:.95rem;font-weight:700;color:#0a0a0a}#this-website .letter-nav__count{font-size:.72rem;font-weight:400;letter-spacing:.1em;color:#a29d92}#this-website .letter-nav__bar{position:relative;width:13rem;max-width:60%;height:2px;background:#00000024}#this-website .letter-nav__fill{position:absolute;left:0;top:0;height:100%;background:#0a0a0a;transition:width .25s ease}#this-website .letter-arrow{flex:none;width:2.4em;height:2.4em;display:flex;align-items:center;justify-content:center;padding:0;font-family:inherit;font-size:1rem;line-height:1;color:#0a0a0a;background:#fff;border:2px solid #0a0a0a;border-radius:50%;cursor:pointer;transition:background .15s ease,color .15s ease,transform .1s ease,opacity .15s ease}#this-website .letter-arrow svg{width:42%;height:42%;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}#this-website .letter-arrow:hover:not(:disabled){background:#0a0a0a;color:#fff}#this-website .letter-arrow:active:not(:disabled){transform:scale(.9)}#this-website .letter-arrow:disabled{opacity:.22;cursor:default}@media screen and (max-width:700px){.letter-envelope{padding:9px}.letter-paper{padding:1.4em 1.3em}.letter-body{padding-top:3.4em}.chinese-letter-section .letter-content{font-size:1.35em;line-height:1.9}.letter-stamp{top:.7em;right:.7em;width:3.7em;padding:.6em .3em;gap:.2em}.letter-postmark{top:.5em;right:3.2em;width:4em;height:4em}}@keyframes slideStripes{0%{background-position:0 0}to{background-position:141.42px 141.42px 0}}@keyframes gentleFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}#contact,#about,#this-website{padding-top:1em;padding-bottom:6em;border-bottom:.5em solid #0a0a0a;display:flex;flex-direction:column}#contact p,#about p,#this-website p,#contact #projects-container a,#about #projects-container a,#this-website #projects-container a,#projects-container #contact a,#projects-container #about a,#projects-container #this-website a,#contact #books-container a,#about #books-container a,#this-website #books-container a,#books-container #contact a,#books-container #about a,#books-container #this-website a{font-size:1.7rem;line-height:1.1;margin-left:5em;margin-bottom:3em;font-weight:600}#contact a,#about a,#this-website a{font-size:2rem}#socials{display:grid;grid-template-columns:1fr 1fr;padding-left:5em}.social-slot{display:flex;flex-direction:column;align-items:flex-start}.social{display:inline-block;padding:.5em}.social span{paint-order:stroke fill;-webkit-text-stroke:2px #0a0a0a;letter-spacing:10px}.social:after{color:#0000;content:"......";background-image:url(/assets/duck_white.svg);background-size:contain;background-repeat:no-repeat;height:40px;width:50px}.social:hover:after{color:#0000;content:"......";background-image:url(../assets/duck.svg);background-size:contain;background-repeat:no-repeat;height:40px;width:50px;scale:2}#about,#this-website{padding:0 4.5rem 4.5rem;border:0}#about .wavy,#this-website .wavy{margin-left:0}#about .sentence,#this-website .sentence{margin-left:100rem;letter-spacing:.05em}#about p,#this-website p,#about #projects-container a,#this-website #projects-container a,#projects-container #about a,#projects-container #this-website a,#about #books-container a,#this-website #books-container a,#books-container #about a,#books-container #this-website a{will-change:transform,box-shadow,background-color;padding:3rem;margin-bottom:1em;border:.25em solid #0a0a0a;max-width:60ch;min-width:12ch;box-shadow:8px 8px #0a0a0a;text-justify:inter-cluster;transition:transform .5s ease-in-out,box-shadow .5s ease-in-out,background-color .25s ease}#about p:hover,#this-website p:hover,#about #projects-container a:hover,#this-website #projects-container a:hover,#projects-container #about a:hover,#projects-container #this-website a:hover,#about #books-container a:hover,#this-website #books-container a:hover,#books-container #about a:hover,#books-container #this-website a:hover{max-width:60ch;transform:perspective(100px) translateZ(10px)!important;box-shadow:0 0 #0a0a0a}#awards{border-top:.5em solid #0a0a0a;border-bottom:.5em solid #0a0a0a;padding:1em 0;background-color:#0a0a0a;color:#fff;display:flex;flex-direction:column}#awards .wavy span{color:#fff}#awards-title{-webkit-text-stroke:5px #fff}#awards-container{display:flex;flex-direction:column}.award{display:flex;flex-direction:row;margin-left:10em;margin-bottom:7em;color:#fff;max-height:fit-content;align-items:flex-start}.award-x{margin:.25em .4em 0 0;padding:.1em .05em;font-size:5em;text-align:center;border:4px dashed #fff;transform-style:preserve-3d;animation:loader 5s infinite;background-image:linear-gradient(45deg,#a8b5a1 10%,#e2d5c3 10%,#e2d5c3 20%,#98a7b5 20%,#98a7b5 30%,#d5b8b8 30%,#d5b8b8 40%,#e8e8e8 40%,#e8e8e8 50%,#a8b5a1 50%,#a8b5a1 60%,#e2d5c3 60%,#e2d5c3 70%,#98a7b5 70%,#98a7b5 80%,#d5b8b8 80%,#d5b8b8 90%,#e8e8e8 90%,#e8e8e8);background-size:141.42px 141.42px;transform:rotate(-10deg);white-space:nowrap}.award-details{margin-top:3.7em}.award-title{font-weight:600;font-size:1.7rem;margin-left:-.4em}.award-awarder{font-size:1.7rem}.award-title>span,.award-awarder>span{display:inline-block;white-space:pre;letter-spacing:.04em;transition:all .5s ease-out;color:#fff}.award-title:hover>span,.award-awarder:hover>span{transform:rotate(-20deg)}.award-description{max-width:60ch;font-size:1.1rem;margin-left:.9em;color:#fff}#this-website{padding-top:5.5em;padding-bottom:7em;background-size:auto auto}#this-website .wavy{padding:0 .2em;margin-left:-.2em}#this-website .chinese-letter-section .wavy{text-align:center;font-size:2rem;line-height:var(--line);margin:0 auto var(--line);padding:0;-webkit-text-stroke:2px #0a0a0a;letter-spacing:.1em;font-weight:600;animation:none}#this-website p,#this-website #projects-container a,#projects-container #this-website a,#this-website #books-container a,#books-container #this-website a{cursor:url(/assets/cursors/windows95-cursor.png),auto;padding:0;max-width:60ch;margin:1.3em 3em;border:0;box-shadow:none;will-change:transform}#this-website p:hover,#this-website #projects-container a:hover,#projects-container #this-website a:hover,#this-website #books-container a:hover,#books-container #this-website a:hover{transform:translateZ(0)!important}#this-website a{font-weight:600;text-decoration:underline}#this-website a:hover{text-decoration:line-through}footer{min-height:26em;padding:2em 0;background-color:#0a0a0a;display:flex;flex-direction:column;align-items:center;justify-content:center;border-top:.5em solid #0a0a0a}footer #copyright{font-size:1.7rem;text-align:start;line-height:1.4;font-weight:500;font-size:2.1rem;font-weight:600;color:#fff;text-shadow:4px 4px #0a0a0a;margin:2rem;transition:content 2s;width:19ch;text-align:center}footer #disclaimer,footer #desktop-prompt{color:#fff;max-width:44ch;text-align:center;margin-top:2em}footer #disclaimer a,footer #desktop-prompt a{color:#fff;text-decoration:underline}footer #duck{margin-top:3em;margin-bottom:1em;color:#fff;width:50px;display:flex;justify-content:center;cursor:url(/assets/cursors/windows95-pointer.png),auto;transition:all .25s}footer #duck:hover{transform:rotate(15deg)}@keyframes flash{0%{opacity:.2}to{opacity:1}}#p5_loading{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;height:90vh;background-color:#fff;cursor:url(../assets/cursors/windows95-hourglass.png),auto}#p5_loading div{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;z-index:10;background-color:#0a0a0a}#p5_loading div div{font-size:20vw;font-weight:600;animation:flash .5s infinite;color:#fff;background-image:linear-gradient(45deg,#a8b5a1 10%,#e2d5c3 10%,#e2d5c3 20%,#98a7b5 20%,#98a7b5 30%,#d5b8b8 30%,#d5b8b8 40%,#e8e8e8 40%,#e8e8e8 50%,#a8b5a1 50%,#a8b5a1 60%,#e2d5c3 60%,#e2d5c3 70%,#98a7b5 70%,#98a7b5 80%,#d5b8b8 80%,#d5b8b8 90%,#e8e8e8 90%,#e8e8e8);background-size:141.42px 141.42px;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:barberpole 3s linear infinite}@keyframes barberpole{0%{background-position:-50% -50%}to{background-position:50% 50%}}:root{--float-size: clamp(56px, 6.5vw, 96px);--float-inset: clamp(12px, 1.4vw, 24px)}#top-button,#sound-button{opacity:0;position:fixed;bottom:var(--float-inset);z-index:99;width:var(--float-size);height:var(--float-size);line-height:var(--float-size);font-size:calc(var(--float-size) * .28);font-weight:600;letter-spacing:.06em;cursor:url(/assets/cursors/windows95-pointer.png),auto;border-radius:50%;text-align:center;background:#0a0a0a;color:#fff;border:4px solid transparent;background-clip:padding-box;transition:opacity .45s ease,transform .45s ease,border-color .3s ease,box-shadow .25s ease}#top-button{right:var(--float-inset);pointer-events:none;background:#fff;color:#0a0a0a;border:4px solid #0a0a0a;display:flex;align-items:center;justify-content:center;line-height:1}#top-button:hover{transform:rotate(360deg) scale(1.08)}#top-button:active{transform:rotate(360deg) scale(1.02)}#sound-button{background:#fff;left:var(--float-inset);padding:calc(var(--float-size) * .2);display:flex;align-items:center;justify-content:center;line-height:0;overflow:hidden}#sound-button img{display:block;width:100%;height:100%;object-fit:contain}#sound-button:hover{transform:scale(1.06)}#sound-button.np-player{opacity:1;left:var(--float-inset);bottom:var(--float-inset);width:auto;height:auto;line-height:normal;border-radius:0;overflow:visible;display:flex;align-items:center;gap:.6rem;padding:.45rem .7rem .45rem .45rem;background:#fff;border:2px solid #0a0a0a;box-shadow:5px 5px #0a0a0a;font-family:Courier New,monospace;max-width:min(80vw,300px);transition:box-shadow .2s ease}#sound-button.np-player:hover{transform:none;box-shadow:7px 7px #0a0a0a}.np__disc{position:relative;flex:none;width:46px;height:46px;padding:0;border-radius:50%;border:2px solid #0a0a0a;overflow:hidden;display:grid;place-items:center;cursor:url(/assets/cursors/windows95-pointer.png),pointer}.np__vinyl{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:repeating-radial-gradient(#2b2b2f 0,#2b2b2f 2px,#17171a 2px,#17171a 4px)}.np-player.is-playing .np__vinyl{animation:npSpin 3.4s linear infinite}@keyframes npSpin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.np-player.is-playing .np__vinyl{animation:none}}.np__icon{position:relative;z-index:1}.np-player:not(.is-playing) .np__icon{width:0;height:0;border-left:12px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}.np-player.is-playing .np__icon{width:13px;height:13px;border-left:4px solid #fff;border-right:4px solid #fff;box-sizing:border-box}.np__meta{display:flex;flex-direction:column;min-width:0;gap:1px}.np__label{font-size:.55rem;font-weight:700;letter-spacing:.22em;color:#c0392b}.np__title{font-size:.9rem;font-weight:700;color:#0a0a0a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.np__bar{display:block;margin-top:4px;height:5px;background:#0a0a0a21;overflow:hidden}.np__fill{display:block;height:100%;width:0;background:#0a0a0a}@media screen and (max-width:700px){#sound-button.np-player{gap:.45rem;padding:.4rem .55rem .4rem .4rem;max-width:70vw}.np__disc{width:38px;height:38px}.np__title{font-size:.8rem}}html::-webkit-scrollbar,body::-webkit-scrollbar{width:1em;background:#fff}html::-webkit-scrollbar-thumb,body::-webkit-scrollbar-thumb{background-color:#0a0a0a;outline:1px solid #0a0a0a}body{scrollbar-width:auto;scrollbar-color:#0a0a0a #fff}@-webkit-keyframes ticker{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);visibility:visible}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes ticker{0%{-webkit-transform:translate3d(0,0,0);transform:translateZ(0);visibility:visible}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.ticker-wrap .ticker__item:before{content:"";height:11px;width:11px;display:inline-block;background-color:#0000;position:relative;margin-right:15px}.ticker-wrap{position:fixed;top:0;left:0;z-index:3;width:100%;overflow:hidden;height:1.5rem;padding-left:0;box-sizing:content-box;mix-blend-mode:difference}.ticker-wrap .ticker:hover{-webkit-animation-play-state:paused;-moz-animation-play-state:paused;-ms-animation-play-state:paused;-o-animation-play-state:paused;animation-play-state:paused}.ticker-wrap .ticker{display:inline-block;height:1.6rem;line-height:1.6rem;white-space:nowrap;padding-right:100%;box-sizing:content-box;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-name:ticker;animation-name:ticker;-webkit-animation-duration:500s;animation-duration:500s;color:#0a0a0a;background-color:#fff;paint-order:stroke fill;-webkit-text-stroke:1.8px #0a0a0a;font-size:.875rem;letter-spacing:1.5px;will-change:transform}.ticker-wrap .ticker__item{display:inline-block}@media only screen and (max-width:820px){#smiley,#chinese,#welcome,#flowers,#rays{display:none}}@media only screen and (max-width:700px){html,body{border:0;overflow-x:clip}.ticker-wrap{display:none}#spit{top:150px;left:16px;font-size:.82em}#contact-modal{display:none}#top-gap{height:65px}#new img{position:absolute;top:-70px;left:-5px;width:100px}#box{position:absolute;top:80px;right:30px;width:120px;height:120px;padding:10px;font-size:.8em;width:150px}#box button{display:none}#name{font-size:9vw;position:absolute;top:0;left:0;right:0;width:100%;text-align:justify;overflow:hidden}#name span{font-size:9vw}#intro{background-color:#f7d106;background-image:url(../assets/duck.webp);background-position:center center;background-repeat:no-repeat;position:static;top:65px;height:95vh;border-bottom:.4em solid #0a0a0a;background-size:100%}#intro p,#intro #projects-container a,#projects-container #intro a,#intro #books-container a,#books-container #intro a{text-shadow:none;color:#0a0a0a}#intro #left{display:none}#intro #right{display:block;font-size:1em;column-count:1;position:absolute;bottom:144px;right:12px}#handwriting,#welcome,#scroll-prompt{display:none}canvas{display:none}#p5_loading{display:none}#new{left:20px}#new img{animation:none}.wavy{font-size:9vw;margin-top:0;padding:0}section{margin:2rem .1rem 0}#projects-container{display:flex;flex-direction:column;background:none}.project-card{padding:20px;border-left:0;border-right:0}.project-title{max-width:15ch;text-shadow:none;white-space:unset;letter-spacing:.05em;font-size:1.4em}.project-title:hover{letter-spacing:.05em;text-shadow:none}.project-image{height:11rem;box-shadow:none;border:.4em solid #0a0a0a;-webkit-filter:grayscale(100%);filter:grayscale(100%)}.project-image:hover{transform:none;box-shadow:none}.more,.show-more{font-size:1em;border-bottom:.4em solid #0a0a0a}#books-container{display:flex;flex-direction:column;background:none}.book-card{padding:20px;border-left:0;border-right:0}.book-title{max-width:15ch;text-shadow:none;white-space:unset;letter-spacing:.05em;font-size:1.4em}.book-title:hover{letter-spacing:.05em;text-shadow:none}.book-image{height:11rem;box-shadow:none;border:.4em solid #0a0a0a;-webkit-filter:grayscale(100%);filter:grayscale(100%)}.book-image:hover{transform:none;box-shadow:none}#books-stripes{display:none}#contact,#about,#this-website{display:flex;flex-direction:column;align-items:flex-start;justify-content:left}#contact p,#about p,#this-website p,#contact #projects-container a,#projects-container #contact a,#about #projects-container a,#projects-container #about a,#this-website #projects-container a,#projects-container #this-website a,#contact #books-container a,#books-container #contact a,#about #books-container a,#books-container #about a,#this-website #books-container a,#books-container #this-website a{font-size:1rem;margin:0;margin-left:5vw}#contact a,#about a,#this-website a{margin:0rem;margin-left:5vw;font-size:1.5em}#socials{display:flex;flex-direction:column;margin-top:40px;margin-bottom:-30px;padding-left:1em}.social:after{color:#0a0a0a;content:""}.social:hover:after{color:#0a0a0a;background-image:none;content:""}#about,#this-website{display:flex;flex-direction:column;margin-left:0;padding:0;margin-left:5vw}#about .wavy,#this-website .wavy{margin-left:5vw}#about p,#this-website p,#about #projects-container a,#projects-container #about a,#this-website #projects-container a,#projects-container #this-website a,#about #books-container a,#books-container #about a,#this-website #books-container a,#books-container #this-website a{margin-bottom:3rem;padding:30px;font-size:1.1em;width:25ch;box-shadow:none;border:.4em solid #0a0a0a}#about p:hover,#this-website p:hover,#about #projects-container a:hover,#projects-container #about a:hover,#this-website #projects-container a:hover,#projects-container #this-website a:hover,#about #books-container a:hover,#books-container #about a:hover,#this-website #books-container a:hover,#books-container #this-website a:hover{transform:none;box-shadow:none}#awards{margin-left:1em;display:none}.award-x{display:none}.award-title{font-size:1.4em;width:10ch}.award-awarder{font-size:1.2em}#this-website{display:none;margin:.1em;text-align:left}#this-website a{font-size:1em}footer{width:100%;height:70vh;padding:0 1em}footer p,footer #projects-container a,#projects-container footer a,footer #books-container a,#books-container footer a{max-width:80vw}#top-button:hover,#sound-button:hover,#top-button:active{transform:none;box-shadow:none}}@media only screen and (min-width:700px)and (max-width:820px){#sound,#handwriting{display:none}#top-gap{height:100px}#name{font-size:9vw;position:absolute;top:10px}#name span{font-size:9vw}#right{column-count:1}#projects-container,#books-container{grid-template-columns:repeat(2,1fr)}}@media only screen and (min-width:992px){#projects-container,#books-container{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width:1100px){#socials{display:flex;flex-direction:column}}@media only screen and (min-width:1600px){#projects-container,#books-container{grid-template-columns:repeat(3,1fr)}}@media only screen and (min-width:2200px){#projects-container,#books-container{grid-template-columns:repeat(4,1fr)}#awards-container{flex-direction:row}}.error-container{text-align:center;padding:50px;background:#f0f0f0}.error-content{background-color:#fff;padding:30px;border-radius:10px;box-shadow:0 4px 10px #0000001a}.error-title{font-size:36px;color:#e74c3c}.error-description{font-size:18px;color:#555}.home-link{font-size:16px;color:#3498db;text-decoration:none}.home-link:hover{text-decoration:underline}.color-theme-1{background-color:#a8b5a1}.color-theme-2{background-color:#e2d5c3}.color-theme-3{background-color:#98a7b5}.color-theme-4{background-color:#d5b8b8}.color-theme-5{background-color:#e8e8e8}.error-page{display:flex;justify-content:center;align-items:center;height:100vh;font-family:Beatrice,sans-serif;color:#333;text-align:center;margin:0}.container{padding:20px;background-color:#fffc;border-radius:10px;box-shadow:0 4px 8px #0000001a}.error-title{font-size:96px;font-weight:700;color:#ff4081;margin-bottom:10px}.error-message{font-size:24px;margin-bottom:20px}.suggestion{font-size:18px;margin-bottom:20px}.home-link{font-size:18px;text-decoration:none;color:#2196f3;border:2px solid #2196f3;padding:10px 20px;border-radius:5px}.home-link:hover{background-color:#2196f3;color:#fff}#duck-overlay{position:fixed;left:-200px;bottom:2rem;width:160px;z-index:9999;pointer-events:none;animation:duck-swim 8s linear forwards}#duck-overlay img{width:160px;height:auto;display:block}@keyframes duck-swim{0%{transform:translate(0)}to{transform:translate(calc(100vw + 220px))}}#rays img.spin{animation:rays-spin 2s linear infinite}@keyframes rays-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#duck-buddy-panel{position:absolute;left:30px;top:500px;z-index:101;width:min(340px,88vw);background:#fff;border:.4em solid #0a0a0a;box-shadow:8px 8px #0a0a0a;display:flex;flex-direction:column}#duck-buddy-panel[hidden]{display:none}#duck-buddy-bar{display:flex;align-items:center;justify-content:space-between;gap:.5em;padding:.5em .7em;background:#0a0a0a;color:#fff;font-weight:700;font-size:.72rem;letter-spacing:.12em;cursor:url(/assets/cursors/windows95-grab.png),grab;-webkit-user-select:none;user-select:none;touch-action:none}#duck-buddy-bar.is-dragging{cursor:url(/assets/cursors/windows95-grab.png),grabbing}#duck-buddy-close{background:none;border:none;color:#fff;font-size:1.1rem;line-height:1;padding:0 .2em;cursor:url(/assets/cursors/windows95-pointer.png),pointer}#duck-buddy-log{padding:.8em;max-height:42vh;overflow-y:auto;font-size:.85rem;line-height:1.5}.duck-line{margin:0 0 .6em;padding:.5em .7em;border:2px solid #0a0a0a}.duck-line--duck{background:#f3ead3;font-weight:600}.duck-line--duck:before{content:"DUCK — ";font-weight:700;letter-spacing:.08em;font-size:.72em}.duck-line--you{background:#fff;margin-left:1.6em;border-style:dashed}.duck-line--you:before{content:"YOU — ";font-weight:700;letter-spacing:.08em;font-size:.72em}#duck-buddy-form{display:flex;border-top:.4em solid #0a0a0a}#duck-buddy-input{flex:1;min-width:0;padding:.7em;border:none;font-family:inherit;font-size:.85rem;background:#fff;color:#0a0a0a}#duck-buddy-input:focus{outline:2px solid #0a0a0a;outline-offset:-4px}#duck-buddy-form button{padding:.7em 1em;border:none;border-left:3px solid #0a0a0a;background:#0a0a0a;color:#fff;font-weight:700;letter-spacing:.1em;font-size:.75rem;cursor:url(/assets/cursors/windows95-pointer.png),pointer}#duck-buddy-form button:hover{background:#333}@media screen and (max-width:700px){#duck-buddy-panel{left:14px;top:420px}#duck-buddy-log{max-height:34vh}}#darkroom-toggle{position:absolute;right:30px;top:832px;z-index:100;display:flex;align-items:center;gap:.5em;padding:.55em .9em;background:#fff;color:#0a0a0a;border:.4em solid #0a0a0a;box-shadow:5px 5px #0a0a0a;font-weight:700;font-size:.72rem;letter-spacing:.12em;cursor:url(/assets/cursors/windows95-pointer.png),pointer;transition:transform .2s ease,box-shadow .2s ease}#darkroom-toggle:hover{transform:translate(-2px,-2px);box-shadow:8px 8px #0a0a0a}#darkroom-lamp{width:.8em;height:.8em;border-radius:50%;border:2px solid #0a0a0a;background:#c9c9c9}body.darkroom #photography{position:relative;background-color:#1d0507;color:#e6dfcc}body.darkroom #photography .wavy{color:#f2e2de;-webkit-text-stroke-color:#f2e2de}body.darkroom #darkroom-toggle{background:#1b0507;color:#ff6b5e;border-color:#ff6b5e;box-shadow:5px 5px #6d1a17}body.darkroom #darkroom-lamp{background:#ff2d1a;border-color:#ff6b5e;box-shadow:0 0 10px 3px #ff2d1ad9}body.darkroom #photography:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;pointer-events:none;background:radial-gradient(circle at 50% 40%,#d22c1629,#96140c3d 60%,#600c0852)}body.darkroom #photography img{filter:invert(1) sepia(.55) hue-rotate(150deg) saturate(1.5) contrast(1.1);transition:filter 1.1s ease-in-out}body.darkroom #photography img:hover{filter:none}@media screen and (max-width:700px){#darkroom-toggle{right:14px;top:712px;font-size:.62rem;padding:.45em .7em}}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){#projects-container .project-image-container:before,#books-container .project-image-container:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none;background:#efe7d9;animation:develop linear both;animation-timeline:view();animation-range:entry 15% cover 42%}}}@keyframes develop{0%{opacity:1}60%{opacity:.35}to{opacity:0}}@media(prefers-reduced-motion:no-preference){::view-transition-old(root),::view-transition-new(root){animation-duration:.55s;animation-timing-function:cubic-bezier(.4,0,.2,1)}}#ambience{position:fixed;top:0;right:0;bottom:0;left:0;z-index:996;pointer-events:none;opacity:0;transition:opacity 1.4s ease}body[data-tod=evening] #ambience{opacity:1;background:linear-gradient(155deg,#d6842c24,#ba601e2e 55%,#7e3a1238)}#contact-sheet{background:radial-gradient(120% 90% at 50% 0%,rgba(255,255,255,.05),transparent 70%),#0f0f0f;border:.5em solid #0a0a0a;margin:-3px;padding:1.6rem 1.2rem;display:flex;flex-direction:column;gap:1rem}#cs-header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem 1rem;padding:0 .2rem .9rem;margin-bottom:.2rem;border-bottom:1px solid rgba(240,160,74,.28);font-family:Courier New,monospace;text-transform:uppercase}.cs-header__id{font-size:.82rem;font-weight:700;letter-spacing:.26em;color:#f0a04a}.cs-header__meta{font-size:.66rem;letter-spacing:.16em;color:#8f8a7c}.cs-strip{position:relative;padding:26px 0;background:repeating-linear-gradient(90deg,#d8d2bd 0 11px,transparent 11px 26px) 0 6px/100% 9px repeat-x,repeating-linear-gradient(90deg,#d8d2bd 0 11px,transparent 11px 26px) 0 calc(100% - 6px) /100% 9px repeat-x,#1d1c1a}.cs-strip:before{content:"KODAK 400TX";position:absolute;top:16px;left:14px;line-height:1;font-family:Courier New,monospace;font-size:.5rem;letter-spacing:.22em;color:#f0a04a;opacity:.8}.cs-frames{display:grid;grid-template-columns:repeat(4,1fr);gap:.55rem;padding:0 .55rem}.cs-frame{position:relative;margin:0}.cs-number{display:block;font-family:Courier New,monospace;font-size:.66rem;letter-spacing:.08em;color:#f0a04a;margin:0 0 4px 1px}.cs-window{position:relative;aspect-ratio:2/3;overflow:hidden;background:#000;box-shadow:inset 0 0 0 1px #000000e6}.cs-window:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(115% 105% at 50% 45%,transparent 55%,rgba(0,0,0,.45) 100%)}.cs-window img,.cs-latent{width:100%;height:100%;object-fit:cover;display:block;transition:filter .6s ease,transform .6s ease}.cs-window img{filter:contrast(1.04) saturate(1.05)}.cs-latent{filter:grayscale(1) contrast(1.08)}.cs-latent{position:relative;background:radial-gradient(130% 100% at 32% 18%,rgba(255,255,255,.16),transparent 62%),linear-gradient(152deg,hsl(var(--h, 30),22%,calc(var(--l, 22) * 1.6%)),hsl(calc(var(--h, 30) + 40),18%,calc(var(--l, 22) * .5%)))}.cs-latent:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/noise-texture.png);opacity:.22;mix-blend-mode:overlay}.cs-frame:hover .cs-window img{filter:contrast(1.1) brightness(1.08) saturate(1.08);transform:scale(1.05)}.cs-frame:hover .cs-latent{filter:grayscale(0) contrast(1.12) brightness(1.2);transform:scale(1.05)}.cs-window{transition:box-shadow .4s ease}.cs-frame:hover .cs-window{box-shadow:inset 0 0 0 1px #f0a04a80,0 0 22px 2px #f0a04a2e}.cs-frame:hover .cs-window:after{opacity:.4}.cs-window:after{transition:opacity .4s ease}.cs-caption{transition:color .3s ease}.cs-frame:hover .cs-caption{color:#fff6e2}.cs-mark{position:absolute;top:7%;right:5%;bottom:7%;left:5%;z-index:2;border:3px solid rgba(214,44,36,.92);border-radius:var(--squash, 47%) calc(100% - var(--squash, 47%)) 50% 50%/52% 48% 52% 48%;transform:rotate(var(--tilt, -4deg));pointer-events:none}.cs-mark:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid rgba(214,44,36,.4);border-radius:inherit;transform:rotate(2.5deg) scale(1.02)}.cs-caption{font-family:Caveat,cursive;font-size:1.1rem;line-height:1.15;color:#e6dfcc;margin-top:5px;text-align:center}.cs-frame--select .cs-caption{color:#ff8f7d}@media screen and (max-width:700px){.cs-frames{grid-template-columns:repeat(2,1fr);gap:.45rem}}#contact-sheet{position:relative}#contact-sheet.has-loupe:hover,#contact-sheet.has-loupe:hover .cs-frame{cursor:none}.cs-loupe-toggle{position:relative;z-index:10;display:inline-flex;align-items:center;gap:.45em;padding:.25em .7em;font-family:Courier New,monospace;font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:#8f8a7c;background:transparent;border:1px solid rgba(240,160,74,.4);border-radius:999px;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.cs-loupe-toggle:hover{color:#f0a04a;border-color:#f0a04a}.cs-loupe-toggle__ring{position:relative;width:.72em;height:.72em;border:1.5px solid currentColor;border-radius:50%}.cs-loupe-toggle__ring:after{content:"";position:absolute;right:-.24em;bottom:-.16em;width:.38em;height:1.5px;background:currentColor;transform:rotate(45deg);transform-origin:left center}.cs-loupe-toggle.is-on{color:#1d0507;background:#f0a04a;border-color:#f0a04a}#contact-sheet.has-loupe .cs-loupe-toggle{cursor:pointer}#cs-loupe{position:absolute;top:0;left:0;width:168px;height:168px;z-index:6;pointer-events:none;opacity:0;transition:opacity .18s ease;will-change:transform}#cs-loupe.is-lit{opacity:1}.cs-loupe__barrel{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;overflow:hidden;background:#0b0b0b;border:7px solid;border-image:linear-gradient(150deg,#e6e2d6,#6f6b60 45%,#cdc7b6 70%,#4a473f) 1;box-shadow:0 0 0 2px #000000e6,0 14px 30px #0000008c,inset 0 0 26px #000000bf}.cs-loupe__copy{position:absolute;top:0;left:0;transform-origin:0 0;pointer-events:none}.cs-loupe__barrel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;pointer-events:none;background:radial-gradient(60% 45% at 32% 22%,rgba(255,255,255,.22),transparent 70%),radial-gradient(100% 100% at 50% 50%,transparent 62%,rgba(0,0,0,.5) 100%)}.cs-frame{cursor:url(/assets/cursors/windows95-pointer.png),pointer}.cs-frame:focus-visible{outline:3px solid #f0c419;outline-offset:3px}.cs-pencil{position:absolute;top:6%;right:4%;bottom:6%;left:4%;z-index:3;pointer-events:none;overflow:visible}.cs-pencil ellipse{fill:none;stroke:#f0c419;stroke-linecap:round;stroke-dasharray:900;stroke-dashoffset:900}.cs-pencil.is-drawn ellipse{transition:stroke-dashoffset .55s cubic-bezier(.22,.75,.3,1);stroke-dashoffset:0}.cs-pencil.is-drawn ellipse:nth-child(2){transition-delay:.12s}.cs-pencil.is-set ellipse{stroke-dashoffset:0}@media(prefers-reduced-motion:reduce){.cs-pencil.is-drawn ellipse{transition:none}}#legal-notice{width:100%;max-width:62ch;margin:1.6em auto 0;color:#fff;text-align:center}#legal-notice summary{display:inline-block;padding:.35em .9em;border:2px solid rgba(255,255,255,.45);font-size:.82rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;cursor:url(/assets/cursors/windows95-pointer.png),pointer;list-style:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}#legal-notice summary::-webkit-details-marker{display:none}#legal-notice summary:after{content:"▸";margin-left:.6em}#legal-notice[open] summary:after{content:"▾"}#legal-notice summary:hover,#legal-notice[open] summary{background:#fff;color:#0a0a0a;border-color:#fff}#legal-notice__body{margin-top:1.6em;text-align:left;font-size:.95rem;line-height:1.75}#legal-notice__body p,#legal-notice__body #projects-container a,#projects-container #legal-notice__body a,#legal-notice__body #books-container a,#books-container #legal-notice__body a{margin-bottom:1em;padding-left:2em;text-indent:-2em}#legal-notice__body p:last-child,#legal-notice__body #projects-container a:last-child,#projects-container #legal-notice__body a:last-child,#legal-notice__body #books-container a:last-child,#books-container #legal-notice__body a:last-child{margin-bottom:0}#legal-notice__body strong{font-weight:700;padding-right:.5em}#canary{width:100%;max-width:64ch;margin:1.2em auto 0;color:#fff;text-align:center}#canary summary{display:inline-block;padding:.35em .9em;border:2px solid rgba(255,255,255,.45);font-size:.82rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;cursor:url(/assets/cursors/windows95-pointer.png),pointer;list-style:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}#canary summary::-webkit-details-marker{display:none}#canary summary:after{content:"▸";margin-left:.6em}#canary[open] summary:after{content:"▾"}#canary summary:hover,#canary[open] summary{background:#fff;color:#0a0a0a;border-color:#fff}#canary__body{margin-top:1.4em;text-align:left;font-size:.9rem;line-height:1.7}#canary__body p,#canary__body #projects-container a,#projects-container #canary__body a,#canary__body #books-container a,#books-container #canary__body a{margin-bottom:.9em}#canary__body p:last-child,#canary__body #projects-container a:last-child,#projects-container #canary__body a:last-child,#canary__body #books-container a:last-child,#books-container #canary__body a:last-child{margin-bottom:0}#canary__body a{color:#fff;text-decoration:underline}#canary__body code{font-family:monospace;font-size:.85em}.canary__meta{font-family:monospace;font-size:.78rem;letter-spacing:.06em;opacity:.7}.canary__slot em{opacity:.6}.canary__empty{opacity:.55;font-style:italic}.canary__block{margin:.4em 0 1.1em;padding:.8em 1em;border:1px solid rgba(255,255,255,.28);font-family:monospace;font-size:.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;opacity:.7}#canary__body hr{border:0;border-top:1px solid rgba(255,255,255,.22);margin:1.3em 0}@media screen and (max-width:700px){#legal-notice{max-width:none;margin-left:1.2em;margin-right:1.2em}#legal-notice__body{font-size:.9rem}}body.darkroom #main-content #contact-sheet,body.darkroom #main-content #contact-sheet a{color:#e6dfcc}#research-container{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:url(/assets/stripes.svg);background-position:bottom right}.research-card{padding:2rem;border:.5em solid #0a0a0a;margin:-3px;display:block;min-height:22rem;animation:fadeInFromNone .5s ease-out;transition:background-color .25s ease}.research-card .research-status{display:inline-block;margin:0 0 .7em;padding:.4em .75em;background:transparent;color:#0a0a0a;border:2px solid #0a0a0a;transform:none;font-size:.64rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase}.research-card .research-title br{display:none}.research-card .research-title{display:block;white-space:normal;max-width:none;width:100%;font-size:1.55em;line-height:1.15;overflow-wrap:break-word}.research-cite{font-family:Caveat,cursive;font-size:1.45rem;line-height:1.3;margin-top:.1em}a.research-title:hover{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:3px}@media screen and (max-width:700px){#research-container{grid-template-columns:1fr}.research-card{padding:1.5rem;border-left:0;border-right:0}.research-cite{font-size:1.2rem}.research-card .research-title{font-size:1.25em}.research-actions{flex-direction:column;align-items:stretch}.research-actions .research-read{text-align:center}}@media only screen and (min-width:1600px){#research-container{grid-template-columns:repeat(3,minmax(0,1fr))}}.research-read{margin-top:1.2em;padding:.6em 1.2em;background:#0a0a0a;color:#fff;border:0;font-family:inherit;font-weight:700;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;box-shadow:4px 4px #0a0a0a59;cursor:url(/assets/cursors/windows95-pointer.png),pointer;transition:transform .2s ease,box-shadow .2s ease}.research-read:hover{transform:translate(-2px,-2px);box-shadow:6px 6px #0a0a0a73}#pdf-viewer[hidden]{display:none}#pdf-viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100001;display:flex;align-items:center;justify-content:center;padding:3vh 3vw}#pdf-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0a0ab8}#pdf-window{position:relative;display:flex;flex-direction:column;width:min(920px,100%);height:100%;background:#fff;border:.4em solid #0a0a0a;box-shadow:12px 12px #0a0a0a}#pdf-bar{display:flex;align-items:center;justify-content:space-between;gap:1em;padding:.6em .9em;background:#0a0a0a;color:#fff;font-weight:700;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase}#pdf-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#pdf-close{flex:none;background:none;border:0;color:#fff;font-size:1.4rem;line-height:1;padding:0 .2em;cursor:url(/assets/cursors/windows95-pointer.png),pointer}#pdf-body{flex:1;min-height:0;display:flex}#pdf-stage{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;padding:1rem;background:#2a2a2a;overflow:auto}#pdf-pages{flex:none;width:132px;overflow-y:auto;padding:.6rem;background:#1c1c1c;border-right:3px solid #0a0a0a;display:flex;flex-direction:column;gap:.5rem}.pdf-thumb{display:block;padding:0;background:none;border:3px solid transparent;cursor:url(/assets/cursors/windows95-pointer.png),pointer;position:relative;line-height:0}.pdf-thumb canvas{display:block;width:100%;height:auto;background:#fff}.pdf-thumb span{display:block;padding-top:3px;color:#b9b2a2;font-size:.68rem;font-weight:700;letter-spacing:.08em;line-height:1.4;text-align:center}.pdf-thumb:hover{border-color:#6f6a5e}.pdf-thumb.is-current{border-color:#f0a04a}.pdf-thumb.is-current span{color:#f0a04a}#pdf-zoom{display:inline-flex;align-items:stretch;margin-left:.2em}#pdf-zoom button+button{border-left:1px solid rgba(255,255,255,.28)}#pdf-out,#pdf-in{width:2.4em;padding:0;font-size:.86rem}#pdf-level{min-width:4.4em}#pdf-count{padding:0 .2em}#pdf-canvas{display:block;background:#fff;box-shadow:0 6px 24px #00000080}#pdf-status{color:#e8e2d4;font-weight:600;letter-spacing:.06em}#pdf-controls{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.8em;padding:.7em .9em;border-top:.4em solid #0a0a0a}.pdf-group{display:flex;align-items:center;gap:.6em}.pdf-group--left{justify-content:flex-start}.pdf-group--centre{justify-content:center}.pdf-group--right{justify-content:flex-end}#pdf-controls button,#pdf-download{height:2.4em;display:inline-flex;align-items:center;justify-content:center;padding:0 .9em;background:#0a0a0a;color:#fff;border:0;font-family:inherit;font-weight:700;font-size:.74rem;letter-spacing:.1em;line-height:1;text-transform:uppercase;text-decoration:none;white-space:nowrap;cursor:url(/assets/cursors/windows95-pointer.png),pointer}#pdf-prev,#pdf-next{min-width:6.4em}#pdf-controls button:disabled{opacity:.32;cursor:url(/assets/cursors/windows95-cursor.png),default}#pdf-count{font-weight:700;font-size:.82rem;letter-spacing:.08em}body.pdf-open{overflow:hidden}@media screen and (max-width:700px){#pdf-viewer{padding:0}#pdf-window{border-width:5px;box-shadow:none}#pdf-controls{grid-template-columns:1fr;gap:.5em}.pdf-group--centre{order:1}.pdf-group--right{order:2;justify-content:center}.pdf-group--left{order:3;justify-content:center}#pdf-pages{display:none}}footer:has(#legal-notice[open]){padding:3em 0}.research-actions{display:flex;flex-wrap:wrap;gap:.6em;margin-top:1.2em}.research-actions .research-read{margin-top:0}.research-read--ghost{background:transparent;color:#0a0a0a;border:3px solid #0a0a0a;box-shadow:4px 4px #0a0a0a40;text-decoration:none;display:inline-block}.research-read--ghost:hover{background:#0a0a0a;color:#fff}#objection{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100000;display:grid;place-items:center;pointer-events:none;visibility:hidden;overflow:hidden;--accent: #d62c24}#objection.is-on{visibility:visible;animation:objectionHold 1.5s ease forwards}@keyframes objectionHold{0%,82%{opacity:1}to{opacity:0}}.objection__rays{position:absolute;width:200vmax;height:200vmax;background:repeating-conic-gradient(from 0deg,#fff0,#fff0 3deg,#ffffff29 3deg,#ffffff29 6deg);opacity:0}.is-on .objection__rays{animation:objectionRays 1.5s linear forwards}@keyframes objectionRays{0%{opacity:0;transform:rotate(0) scale(.4)}14%{opacity:1}82%{opacity:1}to{opacity:0;transform:rotate(26deg) scale(1)}}.objection__bubble{position:relative;transform:rotate(-6deg) scale(0)}.is-on .objection__bubble{animation:objectionPop 1.5s cubic-bezier(.18,1.4,.4,1) forwards}@keyframes objectionPop{0%{transform:rotate(-7deg) scale(0)}10%{transform:rotate(-7deg) scale(1.28)}16%{transform:rotate(5deg) scale(1.12)}22%{transform:rotate(-4deg) scale(1.2)}28%{transform:rotate(-8deg) scale(1.1)}34%{transform:rotate(-6deg) scale(1.14)}82%{transform:rotate(-6deg) scale(1.14)}to{transform:rotate(-6deg) scale(1.14)}}.objection__text{font-family:Arial Black,Helvetica Neue,Impact,sans-serif;font-weight:900;font-style:italic;font-size:clamp(52px,13vw,168px);line-height:1;letter-spacing:-.02em;color:#fff;-webkit-text-stroke:.14em #14213a;paint-order:stroke fill;text-shadow:.07em .07em 0 var(--accent),.14em .14em 0 rgba(0,0,0,.35);white-space:nowrap}.objection__bubble.is-objection{--accent: #d62c24}.objection__bubble.is-holdit{--accent: #e08a1e}.objection__bubble.is-takethat{--accent: #2a8f3a}.cs-window{position:relative}.cs-exif{position:absolute;left:0;right:0;bottom:0;padding:.32em .55em;font-family:Courier New,monospace;font-size:.62rem;letter-spacing:.02em;color:#f0e9d8;background:#09090bd1;border-top:1px solid rgba(214,44,36,.65);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform:translateY(110%);opacity:0;transition:transform .22s ease,opacity .22s ease;pointer-events:none;z-index:4}.cs-frame:hover .cs-exif{transform:translateY(0);opacity:1}.cs-window:has(img){cursor:zoom-in}#cs-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100002;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(.5rem,3vw,2.5rem);padding:clamp(1rem,4vw,3rem);background:radial-gradient(120% 90% at 50% 42%,rgba(28,24,20,.4),transparent 70%),#080706f5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:zoom-out;animation:cs-lb-in .22s ease}#cs-lightbox[hidden]{display:none}@keyframes cs-lb-in{0%{opacity:0}to{opacity:1}}.cs-lb__stage{grid-column:2;margin:0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:1.15rem;cursor:default}.cs-lb__print{padding:10px;background:#0d0d0d;border:1px solid rgba(240,160,74,.4);box-shadow:0 28px 80px #000000b3,inset 0 0 0 1px #000000e6;line-height:0;max-height:78vh;animation:cs-lb-rise .28s cubic-bezier(.2,.8,.3,1)}@keyframes cs-lb-rise{0%{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}.cs-lb__img{display:block;width:auto;height:auto;max-width:min(88vw,56vh);max-height:calc(78vh - 20px)}.cs-lb__meta{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.4rem;max-width:min(88vw,56vh)}.cs-lb__caption{font-family:Caveat,cursive;font-size:1.7rem;line-height:1.1;color:#fff6e2}.cs-lb__exif{font-family:Courier New,monospace;font-size:.72rem;letter-spacing:.08em;color:#f0a04a}.cs-lb__count{font-family:Courier New,monospace;font-size:.64rem;letter-spacing:.24em;color:#8f8a7c}.cs-lb__nav{width:clamp(40px,7vw,58px);height:clamp(40px,7vw,58px);display:grid;place-items:center;border-radius:50%;border:1px solid rgba(240,233,216,.5);background:#00000040;color:#f0e9d8;cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease,opacity .2s ease}.cs-lb__nav svg{width:42%;height:42%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.cs-lb__nav:hover:not(:disabled){background:#f0a04a;border-color:#f0a04a;color:#0d0d0d;transform:scale(1.06)}.cs-lb__nav:disabled{opacity:.22;cursor:default}.cs-lb__nav--prev{grid-column:1}.cs-lb__nav--next{grid-column:3}.cs-lb__close{position:absolute;top:clamp(.8rem,3vw,1.6rem);right:clamp(.8rem,3vw,1.6rem);width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(240,233,216,.4);background:#00000040;color:#f0e9d8;font-size:1.5rem;line-height:1;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.cs-lb__close:hover{background:#d62c24;border-color:#d62c24;color:#fff}@media screen and (max-width:700px){#cs-lightbox{grid-template-columns:1fr;padding:1rem}.cs-lb__stage{grid-column:1}.cs-lb__nav{position:absolute;top:50%;transform:translateY(-50%)}.cs-lb__nav:hover:not(:disabled){transform:translateY(-50%) scale(1.06)}.cs-lb__nav--prev{left:.5rem}.cs-lb__nav--next{right:.5rem}}#room{padding:2rem 0 1.5rem;text-align:center}#room-stage{position:relative;width:100%;height:clamp(440px,74vh,820px);overflow:hidden;border-top:2px solid #0a0a0a;border-bottom:2px solid #0a0a0a;background:radial-gradient(120% 100% at 50% 12%,#efe7d8,#d9ccb6 55%,#c8b89e);touch-action:pan-y}.room-canvas{display:block;width:100%;height:100%;cursor:grab}.room-canvas:active{cursor:grabbing}.room-card{position:absolute;top:.9rem;left:.9rem;width:min(20rem,100% - 1.8rem);padding:1rem 1.15rem 1.15rem;background:#fff;border:3px solid #0a0a0a;box-shadow:6px 6px #0a0a0a;color:#0a0a0a;text-align:left;opacity:0;transform:translate(-4px,-6px);pointer-events:none;transition:opacity .16s ease,transform .16s ease}.room-card.is-open{opacity:1;transform:none;pointer-events:auto}.room-card__sub{display:block;font-family:Courier New,monospace;font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:#c0392b;margin-bottom:.4rem}.room-card__title{margin:0 0 .5rem;font-size:1.45rem;font-weight:800;line-height:1.1;color:#0a0a0a}.room-card__blurb{margin:0;font-size:.92rem;line-height:1.6;color:#2b2b2b}.room-card__close{position:absolute;top:.4rem;right:.45rem;width:1.6rem;height:1.6rem;display:grid;place-items:center;border:2px solid #0a0a0a;background:#fff;color:#0a0a0a;font-size:1rem;line-height:1;cursor:pointer;transition:background .15s ease,color .15s ease}.room-card__close:hover{background:#0a0a0a;color:#fff}.room-hint{position:absolute;bottom:.8rem;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.5rem;padding:.35rem .8rem;background:#0a0a0a;color:#fff;font-family:Courier New,monospace;font-size:.68rem;letter-spacing:.1em;pointer-events:none}.room-hint__dot{opacity:.5}.room-hint__drag{color:#f2c14e}.room-loader{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:#efe7d8;color:#0a0a0a;font-family:Courier New,monospace;font-size:.8rem;letter-spacing:.16em;transition:opacity .5s ease;z-index:3}.room-loader.is-done{opacity:0;pointer-events:none}.room-loader__spin{width:30px;height:30px;border-radius:50%;border:3px solid rgba(10,10,10,.2);border-top-color:#0a0a0a;animation:roomSpin .9s linear infinite}@keyframes roomSpin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.room-loader__spin{animation:none}}@media screen and (max-width:700px){#room-stage{height:clamp(340px,60vh,540px)}.room-card{width:calc(100% - 1.2rem);top:.6rem;left:.6rem;padding:.85rem .95rem .95rem}.room-card__title{font-size:1.2rem}}#fine{position:fixed;right:0;bottom:0;z-index:9000;pointer-events:none}.fine__paper{pointer-events:auto;position:relative;width:min(23rem,100vw - 2rem);margin:0 1rem 1rem 0;padding:.9rem 1rem 1rem;background:#f4efe2;color:#0a0a0a;border:2px solid #0a0a0a;box-shadow:9px 9px #0a0a0ad9;font-family:Courier New,ui-monospace,monospace;transform:rotate(-1.2deg);overflow:hidden}.fine__paper--half{position:fixed;margin:0;pointer-events:none;z-index:9001}.fine__head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;padding-bottom:.35rem;border-bottom:2px solid #0a0a0a}.fine__doc{font-weight:700;font-size:1.02rem;letter-spacing:.06em}.fine__no{font-size:.68rem;opacity:.7;white-space:nowrap}.fine__bureau{margin:.5rem 0 .7rem;text-align:center;font-weight:700;letter-spacing:.24em;line-height:1.25}.fine__bureau em{display:block;font-style:normal;font-size:.56rem;letter-spacing:.14em;opacity:.65}.fine__body{margin:0;display:grid;grid-template-columns:4.6rem 1fr;gap:.05rem .6rem;font-size:.76rem;line-height:1.5}.fine__body dt{opacity:.6;letter-spacing:.05em}.fine__body dd{margin:0;border-bottom:1px dotted rgba(10,10,10,.35)}.fine__body b{font-size:.95rem}.fine__verdict{font-weight:700;font-size:.95rem;color:#b3241d}.fine__verdict em{display:block;font-style:normal;font-size:.55rem;letter-spacing:.16em;color:#0a0a0a8c}.fine__seal{position:absolute;right:.7rem;bottom:3.7rem;pointer-events:none;width:3.5rem;height:3.5rem;display:grid;place-content:center;border:2.5px solid rgba(179,36,29,.75);border-radius:50%;color:#b3241dcc;font-size:.62rem;font-weight:700;line-height:1.05;text-align:center;letter-spacing:.05em;transform:rotate(-13deg);animation:fine-stamp .42s cubic-bezier(.2,1.4,.4,1) .34s both}@keyframes fine-stamp{0%{transform:rotate(-13deg) scale(2.4);opacity:0}60%{transform:rotate(-13deg) scale(.94);opacity:.95}to{transform:rotate(-13deg) scale(1);opacity:1}}.fine__note{margin:.6rem 5rem .7rem 0;font-size:.62rem;line-height:1.4;opacity:.7}.fine__actions{display:flex;gap:.5rem}.fine__actions button{flex:1;padding:.42rem .5rem;border:2px solid #0a0a0a;background:#fff;color:#0a0a0a;font-family:inherit;font-size:.78rem;font-weight:700;letter-spacing:.08em;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.fine__actions button:hover{transform:translate(-1px,-1px);box-shadow:3px 3px #0a0a0a}.fine__actions button:active{transform:translate(1px,1px);box-shadow:none}.fine__object{background:#b3241d!important;color:#fff!important;border-color:#0a0a0a}.fine__paper.is-paid:after{content:"已缴";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;font-size:3.2rem;font-weight:700;letter-spacing:.2em;color:#1f7a4db8;border:6px double rgba(31,122,77,.6);transform:rotate(-11deg) scale(.82);animation:fine-stamp .34s cubic-bezier(.2,1.4,.4,1) both;pointer-events:none}@media(prefers-reduced-motion:reduce){.fine__seal,.fine__paper.is-paid:after{animation:none}}@media screen and (max-width:700px){.fine__paper{width:calc(100vw - 1.2rem);margin:0 .6rem .6rem 0;box-shadow:6px 6px #0a0a0ad9}.fine__seal{width:3rem;height:3rem;bottom:3rem}}#spitback{position:fixed;top:0;right:0;bottom:0;left:0;z-index:8500;pointer-events:none;opacity:0;transition:opacity .18s ease}#spitback.is-dirty{opacity:1}.spitback__incoming{position:fixed;z-index:8499;width:5.2rem;height:4.4rem;margin:0;pointer-events:none;border-radius:54% 46% 58% 42%/52% 58% 42% 48%;background:radial-gradient(ellipse at 34% 30%,#e2f5eae6,#7abc98f2 42%,#4a8f6cf2);box-shadow:inset -6px -6px 12px #30684e80}.ticker-wrap .ticker{transition:opacity .2s ease}.ticker-wrap .ticker.is-swapping{opacity:0}#shortcuts{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9500;display:grid;place-items:center}#shortcuts[hidden]{display:none}.sc__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0a0a8c}.sc__card{position:relative;width:min(38rem,100vw - 2rem);max-height:min(80vh,44rem);display:flex;flex-direction:column;background:#fff;border:5px solid #0a0a0a;box-shadow:12px 12px #0a0a0ae6}.sc__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .5rem .45rem .8rem;background:#0a0a0a;color:#fff;font-weight:700;letter-spacing:.08em;font-size:.82rem;flex:none}.sc__close{border:0;background:transparent;color:#fff;font-size:1.25rem;line-height:1;padding:0 .3rem;cursor:url(/assets/cursors/windows95-pointer.png),auto}.sc__body{padding:.9rem 1.1rem .2rem;overflow-y:auto}.sc__group+.sc__group{margin-top:1.1rem}.sc__h{margin:0 0 .5rem;font-size:1rem;letter-spacing:.14em;border-bottom:2px solid #0a0a0a;padding-bottom:.25rem}.sc__h em{font-style:normal;font-size:.6rem;letter-spacing:.18em;opacity:.5;margin-left:.5em}.sc__list{margin:0;display:grid;grid-template-columns:minmax(5.5rem,auto) 1fr;gap:.32rem .85rem;align-items:baseline;font-size:.8rem}.sc__list dd{margin:0;line-height:1.45}.sc__list kbd{display:inline-block;padding:.1em .42em;border:2px solid #0a0a0a;box-shadow:2px 2px #0a0a0a;background:#f4efe2;font-family:Consolas,Cascadia Mono,DejaVu Sans Mono,ui-monospace,Courier New,monospace;font-size:.78rem;font-weight:700;white-space:nowrap}.sc__foot{flex:none;margin:0;padding:.7rem 1.1rem .8rem;border-top:2px dotted rgba(10,10,10,.3);font-size:.7rem;opacity:.75}.sc__foot em{font-style:normal;opacity:.7}@media screen and (max-width:700px){.sc__list{grid-template-columns:1fr;gap:.1rem 0}.sc__list dd{margin-bottom:.45rem}}@media print{.ticker-wrap,.overlay,#overlay,#top-button,#sound-button,#shortcuts,#ambience,#duck-buddy,#darkroom,#darkroom-toggle,#cs-lightbox,#cs-loupe,#objection,#fine,#spitback,#sketch-placeholder,#duck-modal,#handwriting,#contact-modal,#smiley,#top-gap,#spit,#new,#chinese,#rays,#flowers,#welcome,#box,#room,.room-loader,.room-card,.room-hint,.spit-glob,.spit-splat,.spit-burst{display:none!important}@page{margin:18mm 16mm 20mm}html,body{background:#fff!important;color:#000!important;font-size:10.5pt;line-height:1.5}*,*:before,*:after{background-color:#fff!important;background-image:none!important;mix-blend-mode:normal!important;box-shadow:none!important;text-shadow:none!important;-webkit-text-stroke:0!important;filter:none!important;animation:none!important;transform:none!important}body,body *{color:#000!important;-webkit-text-fill-color:#000!important}#title-letter{font-size:inherit!important;height:auto!important;line-height:inherit!important;padding:0!important}#header *,#main,#main *,#footer *{position:static!important;inset:auto!important;float:none!important;width:auto!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;margin-left:0!important;margin-right:0!important;overflow:visible!important;columns:auto!important}#main img,#main svg{max-height:70mm!important}#main .cs-frame img{max-height:45mm!important}#header{border:0!important;padding:0!important;height:auto!important;min-height:0!important;background:#fff!important}#name{font-size:28pt!important;letter-spacing:.02em;margin:0 0 2mm!important;color:#000!important}#header:after{content:"SOFTWARE ENGINEER & PHOTOGRAPHER · calvinsze.com";display:block;font-size:8pt;letter-spacing:.18em;padding-bottom:3mm;border-bottom:1pt solid #000;margin-bottom:6mm}#main,#main-content,#intro,#left,#right{display:block!important;width:auto!important;height:auto!important;padding:0!important;margin:0!important;background:#fff!important;color:#000!important}#intro{margin-bottom:8mm!important;font-size:12pt}h2{font-size:15pt!important;letter-spacing:.14em;border-bottom:1pt solid #000;padding-bottom:1.5mm;margin:0 0 4mm!important;break-after:avoid}h2 span{display:inline!important}#photography,#research,[id=about],#awards{break-before:page}section,#projects,#books,#photography,#research,#contact,#about,#this-website,[id=about],#awards{margin:0 0 8mm!important;padding:0!important;background:#fff!important}.project-card,.book-card,.research-card,.award,.cs-frame{background:#fff!important;color:#000!important;border:.8pt solid #000!important;break-inside:avoid;page-break-inside:avoid;margin-bottom:4mm!important}#projects-container,#books-container,#research-container{display:block!important}#contact-sheet,.cs-strip{background:#fff!important;padding:0!important}.cs-frames{display:grid!important;grid-template-columns:repeat(3,1fr);gap:5mm!important}.cs-frame:not(:has(img)){display:none!important}.cs-number{color:#000!important;font-size:7pt}img{max-width:100%!important;max-height:70mm!important;width:auto!important;height:auto!important;object-fit:contain;break-inside:avoid}.cs-frame img{max-height:45mm!important}a{color:#000!important;text-decoration:none}#socials a[href^=http]:after,#email a:after{content:" (" attr(href) ")";font-size:8pt;word-break:break-all}#legal-notice[open]>summary~*,#canary[open]>summary~*,#legal-notice>*,#canary>*{display:revert!important}#footer{border-top:1pt solid #000!important;padding-top:4mm!important;margin-top:8mm!important;background:#fff!important;color:#000!important;font-size:8.5pt;break-before:page}}.duck-zzz{position:fixed;z-index:4;pointer-events:none;opacity:0;transition:opacity .5s ease;font-family:Courier New,ui-monospace,monospace;font-weight:700;color:#0a0a0a}.duck-zzz i{position:absolute;font-style:normal;opacity:0}.duck-zzz i:nth-child(1){font-size:1.1rem}.duck-zzz i:nth-child(2){font-size:1.5rem;left:.9rem}.duck-zzz i:nth-child(3){font-size:2rem;left:2.1rem}.duck-zzz.is-asleep{opacity:1}.duck-zzz.is-asleep i{animation:duck-zzz 3.4s ease-in-out infinite}.duck-zzz.is-asleep i:nth-child(2){animation-delay:1.1s}.duck-zzz.is-asleep i:nth-child(3){animation-delay:2.2s}@keyframes duck-zzz{0%{transform:translate(0) rotate(-8deg);opacity:0}20%{opacity:.85}to{transform:translate(26px,-60px) rotate(12deg);opacity:0}}@media(prefers-reduced-motion:reduce){.duck-zzz{display:none}}#rap-sheet{width:100%;max-width:64ch;margin:1.2em auto 0;color:#fff;text-align:center}#rap-sheet[hidden]{display:none}#rap-sheet summary{display:inline-block;padding:.35em .9em;border:2px solid rgba(255,255,255,.45);font-size:.82rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;cursor:url(/assets/cursors/windows95-pointer.png),pointer;list-style:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}#rap-sheet summary::-webkit-details-marker{display:none}#rap-sheet summary:after{content:"▸";margin-left:.6em}#rap-sheet[open] summary:after{content:"▾"}#rap-sheet summary:hover,#rap-sheet[open] summary{background:#fff;color:#0a0a0a;border-color:#fff}#rap-sheet__body{margin-top:1.4em;text-align:left;font-size:.9rem}#rap-sheet__body dl{display:grid;grid-template-columns:1fr auto;gap:.35em 1em;margin:0}#rap-sheet__body dt{border-bottom:1px dotted rgba(255,255,255,.25)}#rap-sheet__body dt em{display:block;font-style:normal;font-size:.6rem;letter-spacing:.16em;opacity:.5}#rap-sheet__body dd{margin:0;white-space:nowrap;font-variant-numeric:tabular-nums}#rap-sheet__body dd b{font-size:1.15rem}.rap-sheet__note{margin:1.2em 0 0;font-size:.72rem;line-height:1.6;opacity:.65}.rap-sheet__note em{display:block;font-style:normal;opacity:.8}
