@font-face{font-family:Shantell Sans Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/_astro/shantell-sans-cyrillic-ext-full-normal.BjYxMGxf.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Shantell Sans Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/_astro/shantell-sans-cyrillic-full-normal.DUfzUDR1.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Shantell Sans Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/_astro/shantell-sans-vietnamese-full-normal.BtHVRjmM.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Shantell Sans Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/_astro/shantell-sans-latin-ext-full-normal.db8N66z1.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Shantell Sans Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/_astro/shantell-sans-latin-full-normal.BMB_BRHG.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #fcfbf8;--ink: #26231f;--acc: #9dbf9e;--font: "Shantell Sans Variable", "Noteworthy", "Comic Neue", cursive;--gutter: clamp(20px, 5vw, 44px);--col: 620px;--ease: cubic-bezier(.22, 1, .36, 1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);overflow:hidden}body{color:var(--ink);font-family:var(--font);font-size:18px;line-height:1.5;font-variation-settings:"INFM" 0,"BNCE" 0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a:focus-visible,button:focus-visible,main:focus-visible{outline:2px dashed var(--ink);outline-offset:4px;border-radius:6px}.sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;top:8px;left:8px;z-index:10;padding:8px 14px;background:var(--ink);color:var(--bg);border-radius:8px;transform:translateY(-160%);transition:transform .2s var(--ease)}.skip-link:focus,.skip-link:focus-visible{transform:none}.book{--soft: color-mix(in srgb, var(--ink) 72%, var(--bg));--hair: color-mix(in srgb, var(--ink) 26%, transparent);position:relative;isolation:isolate;height:100vh;height:100dvh;background:var(--bg);color:var(--ink)}.paper{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:0;pointer-events:none}.card{position:relative;z-index:1;height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) minmax(30%,max-content)}.book.open .card{grid-template-rows:auto minmax(0,1fr) fit-content(64%)}.top{display:flex;align-items:center;justify-content:space-between;padding:10px clamp(16px,4vw,44px);padding-top:max(10px,env(safe-area-inset-top))}.mark{min-height:44px;display:inline-flex;align-items:center;font-size:24px;font-weight:600;letter-spacing:-.01em}.dot{width:52px;height:52px;padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center;margin-right:-12px;transition:transform .12s ease-out,opacity .12s ease-out}.dot:active,.oval:active{opacity:.55;transform:scale(.94)}.dot canvas{width:28px;height:28px;display:block}.no-js .dot{visibility:hidden}.stage{position:relative;min-height:0}.stage canvas{position:absolute;top:0;left:16px;width:calc(100% - 32px);height:100%;display:block}.panel{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;padding:0 var(--gutter)}.copy{width:100%;max-width:calc(var(--col) + 24px);min-height:0;margin:0 auto;padding:4px 12px 8px;overflow-y:auto;scrollbar-width:none}.copy::-webkit-scrollbar{display:none}.book.open .copy{mask-image:linear-gradient(#0000,#000 12px calc(100% - 32px),#0000)}.sect{animation:fade .26s ease-out both}@keyframes fade{0%{opacity:0}}.line{position:relative;margin:0 0 .45em;font-size:clamp(21px,.9rem + .9vw,28px);line-height:1.3;text-wrap:balance}.typed{display:none}.js .ghost{color:transparent}.js .typed{display:block;position:absolute;inset:0 0 auto}.caret{display:inline-block;width:0;height:.9em;margin-left:2px;border-left:1.5px solid currentColor;vertical-align:-.08em;animation:blink .9s steps(1) infinite}.caret.gone{animation:none;opacity:0;transition:opacity .4s ease-out}@keyframes blink{50%{opacity:0}}.more{display:none;align-items:center;min-height:44px;margin-top:2px;padding:0;border:0;background:none;cursor:pointer;font-size:17px;color:var(--soft);transition:color .2s}.js .more{display:inline-flex}.more:hover{color:var(--ink)}.detail{padding:6px 0 12px;font-size:17px}.js .detail{display:none}.js .book.open .detail{display:block;animation:rise .36s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.detail p{margin:0 0 10px;max-width:52ch;text-wrap:pretty}.soft{color:var(--soft)}.u{text-decoration:underline;text-decoration-color:var(--hair);text-decoration-thickness:1.5px;text-underline-offset:.22em;transition:text-decoration-color .2s}.u:hover{text-decoration-color:currentColor}.detail .u{padding-block:8px;white-space:nowrap}.u:focus-visible{outline-offset:2px}.links{display:flex;flex-wrap:wrap;gap:0 22px}.links a{min-height:44px;display:inline-flex;align-items:center;padding-block:0}.list{list-style:none;margin:4px 0 14px;padding:0}.list li{position:relative;display:flex;justify-content:space-between;align-items:baseline;gap:20px;padding:8px 0;font-size:17px}.list li+li:before{content:"";position:absolute;inset:0 0 auto;height:1px;background:repeating-linear-gradient(90deg,var(--hair) 0 3px,transparent 3px 7px)}.projects li{flex-wrap:wrap;row-gap:2px;padding:10px 0}.projects a{flex:1 1 0;min-width:0}.projects .note{flex-basis:100%;font-size:15px;line-height:1.4;color:var(--soft);text-wrap:pretty}.list .y{flex:none;font-size:15px;color:var(--soft);font-variant-numeric:tabular-nums}.list a{transition:opacity .2s}.list a:hover{opacity:.65}.portrait{display:flex;align-items:center;gap:18px;margin:4px 0 14px}.portrait p{margin:0}.photo{position:relative;flex:none;width:88px;height:88px}.photo img{display:block;width:100%;height:100%;clip-path:circle(44% at 50% 50%);filter:grayscale(1) contrast(1.04);mix-blend-mode:multiply}.photo canvas{position:absolute;inset:-3px;width:calc(100% + 6px);height:calc(100% + 6px);pointer-events:none}.contact{display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;margin-top:10px}.oval{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:56px;padding:0 30px;font-size:17px;font-weight:600;transition:transform .12s ease-out,opacity .12s ease-out}.oval canvas{position:absolute;top:-5px;left:-8px;width:calc(100% + 16px);height:calc(100% + 10px);pointer-events:none}.no-js .oval{border:1.5px solid var(--ink);border-radius:999px}.elsewhere{display:flex;flex-wrap:wrap;gap:0 20px;font-size:17px;color:var(--soft)}.elsewhere a{min-height:44px;display:inline-flex;align-items:center;transition:color .2s}.elsewhere a:hover{color:var(--ink)}.bar{width:100%;max-width:var(--col);margin:0 auto;display:flex;justify-content:space-between;gap:4px;padding:6px 0 max(10px,env(safe-area-inset-bottom));font-size:17px;color:var(--soft)}.bar a{min-height:44px;display:inline-flex;align-items:center;padding:0 2px;text-decoration:underline;text-decoration-color:transparent;text-decoration-thickness:2px;text-underline-offset:.4em;transition:color .2s,text-decoration-color .2s}.bar a:hover{color:var(--ink)}.bar a[aria-current=page]{color:var(--ink);text-decoration-color:currentColor}@media(max-width:520px){.bar{font-size:16px}}@media(max-width:400px){.bar{font-size:15px}}@media(max-height:560px){.card{grid-template-rows:auto minmax(72px,1fr) minmax(46%,max-content)}.book.open .card{grid-template-rows:auto 0 minmax(0,1fr)}.book.open .stage{visibility:hidden}}@media(prefers-reduced-motion:reduce){.caret{display:none}.skip-link{transition:none}.sect,.js .book.open .detail{animation:none}}
