@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/sora-latin-wght-normal.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}@font-face{font-family:Sora;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/sora-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,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}:root{--ink: #1d1f24;--ink-2: #40454d;--gray: #575c65;--hair: rgba(255, 255, 255, .6);--line: rgba(29, 31, 36, .09);--line-2: rgba(29, 31, 36, .14);--accent: oklch(72% .13 88);--accent-deep: oklch(from var(--accent) calc(l - .07) calc(c + .015) h);--glass: .55;--side: .26;--font: "Sora", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--ease: cubic-bezier(.2, .7, .2, 1);--ease-io: cubic-bezier(.65, 0, .35, 1);--spring: linear(0, .009, .035 2.1%, .141, .281 6.7%, .723 12.9%, .938 16.7%, 1.017, 1.077, 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%, 1.051 39.6%, 1.017 43.1%, .991, .977 51%, .974 53.8%, .975 57.1%, .997 69.8%, 1.003 76.9%, 1.004 83.8%, 1);--spring-soft: linear(0, .06, .21 4%, .42 7%, .69 11%, .86 15%, .96 19.5%, 1.01 24%, 1.03 28%, 1.025 33%, 1.008 42%, .999 55%, 1);--win-w: 1320px;--win-h: 860px;--gap-x: clamp(16px, 4vw, 96px);--gap-top: clamp(16px, 4.5vh, 64px);--gap-bottom: clamp(44px, 7vh, 84px);--z: 1;color-scheme:light}@media(min-width:1680px)and (min-height:980px){:root{--z: 1.1}}@media(min-width:1900px)and (min-height:1060px){:root{--z: 1.2}}@media(min-width:2300px)and (min-height:1250px){:root{--z: 1.4}}@media(min-width:2800px)and (min-height:1550px){:root{--z: 1.65}}@property --r{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --ring-a{syntax: "<angle>"; inherits: false; initial-value: 0deg;}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:#6d8486;-webkit-font-smoothing:antialiased;overflow:hidden;font-feature-settings:"kern"}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}:focus-visible{outline:2px solid color-mix(in oklch,var(--accent),black 10%);outline-offset:2px}.backdrop{position:fixed;inset:0;overflow:hidden;z-index:0}.scene{position:absolute;inset:-48px;background-size:cover;background-position:var(--focal, 50% 50%);transform-origin:var(--focal, 50% 50%);filter:blur(2px);opacity:0;transform:scale(1.06);translate:calc(var(--px, 0) * -18px) calc(var(--py, 0) * -12px);transition:opacity .7s ease,transform 1.4s var(--ease),filter .9s ease;will-change:opacity,transform}.scene.is-on{opacity:1;transform:scale(1);animation:drift 46s var(--ease-io) infinite alternate}@keyframes drift{0%{scale:1.015}to{scale:1.11}}.scene.is-revealing{--r: 0px;transition:opacity 0ms,transform 1.4s var(--ease),filter .9s ease;-webkit-mask-image:radial-gradient(circle at calc(var(--ox, 50vw) + 48px) calc(var(--oy, 50vh) + 48px),#000 calc(var(--r) - 220px),transparent var(--r));mask-image:radial-gradient(circle at calc(var(--ox, 50vw) + 48px) calc(var(--oy, 50vh) + 48px),#000 calc(var(--r) - 220px),transparent var(--r));animation:drift 46s var(--ease-io) infinite alternate,reveal 1.25s var(--ease) forwards}@keyframes reveal{0%{--r: 0px;filter:blur(18px) saturate(1.3)}60%{filter:blur(4px) saturate(1.1)}to{--r: 3200px;filter:blur(2px) saturate(1)}}.backdrop:before{content:"";position:absolute;inset:-30%;z-index:3;pointer-events:none;background:radial-gradient(34% 30% at 26% 22%,rgba(255,244,222,.34),transparent 70%),radial-gradient(28% 28% at 74% 72%,rgba(255,214,178,.18),transparent 70%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='c'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.0035' numOctaves='3' seed='7'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23c)'/%3E%3C/svg%3E") 0 0 / 1800px 1800px repeat;mix-blend-mode:soft-light;opacity:.9;animation:weather 70s linear infinite}@keyframes weather{0%{transform:translateZ(0) rotate(0)}50%{transform:translate3d(-6%,3%,0) rotate(2deg)}to{transform:translateZ(0) rotate(0)}}.ambient{position:absolute;inset:0;z-index:4;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}.backdrop:after{content:"";position:absolute;inset:0;z-index:5;background:radial-gradient(130% 100% at 50% 40%,transparent 55%,rgba(0,0,0,.18)),#0000000d;pointer-events:none;transition:opacity .6s ease}body.peek .scene.is-on{filter:blur(0)}body.peek .backdrop:after{opacity:0}.credit{position:fixed;z-index:3;right:max(12px,calc((100vw - min(var(--win-w) * var(--z),100vw - 2 * var(--gap-x)))/2));bottom:max(10px,calc((var(--gap-bottom) - 26px) / 2));display:flex;align-items:center;gap:6px;height:26px;padding:0 11px 0 8px;border-radius:999px;font-size:11.5px;line-height:1;letter-spacing:.005em;color:#fffffff0;background:#10141a3d;-webkit-backdrop-filter:blur(16px) saturate(1.6);backdrop-filter:blur(16px) saturate(1.6);box-shadow:inset 0 0 0 .5px #ffffff42,0 6px 18px -8px #00000059;white-space:nowrap;transform-origin:100% 100%;scale:var(--z);transition:opacity .26s ease,filter .26s ease,transform .5s var(--spring),background-color .2s}.credit:hover{background:#10141a61}.credit__icon{width:13px;height:13px;flex:none;opacity:.8}.credit__label,.credit__sep,.credit__src{color:#ffffffa8}.credit__sep{opacity:.7}.credit a{text-decoration:none;transition:color .16s}.credit__who{font-weight:500}.credit a:hover{color:#fff;text-decoration:underline;text-underline-offset:2px;text-decoration-color:#ffffff80}.credit.is-swapping{opacity:0;filter:blur(4px);transform:translateY(3px)}.credit.is-peeking{transform:scale(1.18) translateY(-6px);background:#10141a66}.window{position:fixed;z-index:2;inset:0;margin:auto;zoom:var(--z);width:min(var(--win-w),calc((100vw - 2 * var(--gap-x)) / var(--z)));height:min(var(--win-h),calc((100svh - var(--gap-top) - var(--gap-bottom)) / var(--z)));translate:0 calc((var(--gap-top) - var(--gap-bottom)) / 2 / var(--z));display:grid;grid-template-columns:260px 1fr;border-radius:22px;background:rgba(255,255,255,var(--glass));backdrop-filter:blur(30px) saturate(1.8);-webkit-backdrop-filter:blur(30px) saturate(1.8);box-shadow:0 0 0 .5px #0000001a,0 2px 6px #0f19230f,0 24px 48px -16px #0f192338,0 60px 120px -40px #0f192373;overflow:hidden;transition:opacity .6s ease,transform .75s var(--spring-soft),filter .6s ease,background-color .6s ease}.window:before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:4;background:radial-gradient(520px circle at var(--mx, 50%) var(--my, -20%),rgba(255,255,255,.26),rgba(255,255,255,.08) 38%,transparent 62%);opacity:0;transition:opacity .6s ease}.window.is-lit:before{opacity:1}.window:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:5;padding:1px;background:radial-gradient(380px circle at var(--mx, 50%) var(--my, -30%),rgba(255,255,255,1),rgba(255,255,255,.62) 45%,rgba(255,255,255,.5));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}body.peek .window{opacity:0;transform:scale(.94) translateY(28px);filter:blur(12px);pointer-events:none}html:not([data-booted]) .window{animation:win-in 1s var(--spring-soft) 80ms both}@keyframes win-in{0%{opacity:0;transform:translateY(26px) scale(.955);filter:blur(14px)}60%{filter:blur(0)}}html:not([data-booted]) .sidebar .row,html:not([data-booted]) .pill{animation:row-in .62s var(--ease) calc(.32s + var(--i, 0) * 32ms) both}@keyframes row-in{0%{opacity:0;transform:translate(-10px)}}.peek-hint{position:fixed;z-index:3;top:22px;left:50%;translate:-50% 0;padding:7px 14px;border-radius:999px;font-size:12.5px;font-weight:500;color:#fff;background:#14181e47;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:inset 0 0 0 .5px #ffffff40;opacity:0;transform:translateY(-6px);transition:opacity .3s ease,transform .4s var(--ease);pointer-events:none}body.peek .peek-hint{opacity:1;transform:none;transition-delay:.25s}.sidebar{position:relative;display:flex;flex-direction:column;min-height:0;background:rgba(255,255,255,var(--side));border-right:1px solid rgba(29,31,36,.06);box-shadow:inset -1px 0 #ffffff59;transition:background-color .6s ease}.side-top{height:44px;flex:none;display:flex;align-items:center;padding:0 14px 0 16px;gap:8px}.lights{display:flex;gap:8px}.light{width:12px;height:12px;border-radius:50%;border:0;padding:0;box-shadow:inset 0 0 0 .5px #0000002e;display:grid;place-items:center}.light{transition:scale .38s var(--spring),filter .2s}.light:hover{filter:brightness(1.06)}.light:active{scale:.8}.light svg{width:8px;height:8px;opacity:0;transition:opacity .12s}.lights:hover .light svg{opacity:.55}.light.r{background:#ff5f57}.light.y{background:#febc2e}.light.g{background:#28c840}.search{margin:2px 10px 6px;height:30px;flex:none;display:flex;align-items:center;gap:7px;padding:0 8px 0 9px;border-radius:9px;background:#ffffff6b;box-shadow:inset 0 0 0 .5px #1d1f2414;color:var(--gray);transition:background-color .16s,box-shadow .16s}.search:focus-within{background:#ffffffc7;box-shadow:inset 0 0 0 .5px #1d1f241f,0 0 0 3px color-mix(in oklch,var(--accent),transparent 72%)}.search svg{width:14px;height:14px;flex:none}.search input{flex:1;min-width:0;border:0;background:none;outline:none;font-size:13px;color:var(--ink);padding:0}.search input::placeholder{color:var(--gray)}.search input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}kbd{font:500 11px/1 var(--font);color:var(--gray);padding:3px 5px;border-radius:5px;background:#ffffff80;box-shadow:inset 0 0 0 .5px #1d1f241f}.nav{position:relative;flex:1;min-height:0;overflow-y:auto;padding:0 10px 14px;scrollbar-width:none;-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 18px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 18px),transparent)}.nav::-webkit-scrollbar{display:none}.group-label{margin:12px 0 3px;padding:0 10px;font-size:12px;font-weight:500;color:var(--gray);letter-spacing:0}.group:first-child .group-label{margin-top:8px}.row{position:relative;width:100%;height:32px;padding:0 10px 0 8px;border:0;border-radius:8px;display:flex;align-items:center;gap:9px;background:transparent;text-align:left;text-decoration:none;font-size:13.5px;line-height:1.35;color:var(--ink);z-index:1;transition:background-color .16s ease,box-shadow .16s ease,color .16s ease}.row:hover{background:#ffffff57}.row[aria-current=page]{background:#ffffffb3;box-shadow:0 1px 2px #0f192314,0 0 0 .5px #0f19230d;font-weight:500}.row .thumb{width:16px;height:16px;flex:none;border-radius:4.5px;background-size:cover;background-position:center;box-shadow:inset 0 0 0 .5px #0000002e}.row .glyph{width:16px;height:16px;flex:none;display:grid;place-items:center;color:#3c4048}.row .glyph svg{width:15px;height:15px}.row .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35;padding-block:1px}.row .meta{flex:none;font-size:12px;line-height:1.35;color:var(--gray);font-variant-numeric:tabular-nums;font-weight:400;transition:color .2s}.row .thumb{transition:scale .45s var(--spring),rotate .45s var(--spring),box-shadow .3s}.row:hover .thumb{scale:1.22;rotate:-6deg;box-shadow:inset 0 0 0 .5px #0000002e,0 4px 10px -3px #00000059}.row[aria-current=page] .thumb{box-shadow:inset 0 0 0 .5px #0000002e,0 0 0 2px color-mix(in oklch,var(--accent),white 15%)}.row:active{scale:.98}.nav-plate{position:absolute;left:10px;right:10px;top:0;z-index:0;height:var(--h, 32px);translate:0 var(--y, 0px);border-radius:8px;pointer-events:none;opacity:0;transition:translate .46s var(--spring-soft),height .3s var(--ease),opacity .2s ease}.nav-plate--hover{background:#ffffff57}.nav-plate--active{background:#ffffffb8;box-shadow:0 1px 2px #0f192314,0 0 0 .5px #0f19230d,0 8px 20px -12px #0f192347}.nav-plate.is-visible{opacity:1}.nav-plate.is-instant{transition:none}.nav:has(.nav-plate--active.is-visible) .row[aria-current=page],.nav:has(.nav-plate--hover) .row:hover{background:transparent;box-shadow:none}.row[hidden]{display:none}.group.flash .group-label{color:var(--ink)}.group.flash .row:not([aria-current]){animation:rowflash 1.1s var(--ease)}@keyframes rowflash{0%,to{background:transparent}30%{background:#ffffff80}}.empty{padding:10px;font-size:12.5px;color:var(--gray)}.me{flex:none;display:flex;align-items:center;gap:10px;margin:0 10px 10px;padding:9px 8px;border-top:1px solid rgba(29,31,36,.06)}.me img{width:26px;height:26px;border-radius:7px;box-shadow:0 0 0 .5px #0000001f}.me b{display:block;font-size:13px;font-weight:600;letter-spacing:-.005em}.me span{display:block;margin-top:2px;font-size:12px;color:var(--gray);font-variant-numeric:tabular-nums}.pane{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}.titlebar{height:44px;flex:none;position:relative;display:flex;align-items:center;justify-content:center;padding:0 12px}.crumbs{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:500;white-space:nowrap}.crumbs .root{color:var(--gray)}.crumbs .sep{color:#1d1f2447;font-weight:400}.crumbs .here{color:var(--ink);transition:opacity .2s}.tools{position:absolute;right:12px;top:0;height:44px;display:flex;align-items:center;gap:2px}.icon-btn{width:28px;height:28px;border:0;border-radius:7px;background:transparent;display:grid;place-items:center;color:#4a4f57;transition:background-color .14s,color .14s}.icon-btn{transition:background-color .14s,color .14s,scale .38s var(--spring)}.icon-btn:hover{background:#ffffff80;color:var(--ink)}.icon-btn:active{scale:.88}.icon-btn svg{width:16px;height:16px}.toast{position:absolute;right:14px;top:44px;z-index:6;padding:6px 10px;border-radius:8px;font-size:12px;font-weight:500;background:#1d1f24db;color:#fff;opacity:0;transform:translateY(-6px) scale(.92);transform-origin:top right;transition:opacity .18s,transform .42s var(--spring);pointer-events:none}.toast.show{opacity:1;transform:none}.view{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 40px;scrollbar-width:thin;scrollbar-color:rgba(29,31,36,.18) transparent}.view-inner{min-height:100%;display:flex;flex-direction:column;transition:opacity .22s ease,transform .32s var(--ease)}.view-inner>*{margin-top:auto!important;margin-bottom:auto!important;width:100%}.view-inner.is-out{opacity:0;transform:translateY(6px)}.view-inner.is-entering>*>*{animation:block-in .68s var(--ease) calc(60ms + var(--i, 0) * 70ms) both}@keyframes block-in{0%{opacity:0;transform:translateY(16px);filter:blur(6px)}}.view-inner.is-entering .card{animation:card-in .76s var(--spring-soft) calc(.26s + var(--i, 0) * 80ms) both}@keyframes card-in{0%{opacity:0;transform:translateY(22px) scale(.96)}}:is(.hello,.title) .w{display:inline-block}.view-inner.is-entering :is(.hello,.title) .w{animation:word-in .76s var(--spring) calc(90ms + var(--i, 0) * 70ms) both}@keyframes word-in{0%{opacity:0;transform:translateY(.45em) rotate(5deg);filter:blur(6px)}}.about{max-width:808px;margin:0 auto;padding:8px 0 24px}.hello{margin:0;font-size:48px;line-height:1.06;font-weight:600;letter-spacing:-.035em}.lead{margin:14px 0 0;max-width:36em;font-size:18px;line-height:1.55;color:var(--ink-2);letter-spacing:-.012em;text-wrap:pretty}.composer{margin-top:32px;border-radius:18px;background:#fffc;box-shadow:0 0 0 .5px #0f192314,0 1px 2px #0f19230d,0 12px 32px -14px #0f192338;padding:15px 12px 11px 18px;position:relative;transition:box-shadow .2s,transform .5s var(--spring-soft)}.composer:before{content:"";position:absolute;inset:-1.5px;border-radius:19.5px;padding:1.5px;pointer-events:none;background:conic-gradient(from var(--ring-a),transparent 0 55%,color-mix(in oklch,var(--accent),white 25%) 72%,#fff 78%,transparent 92%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:0;transition:opacity .4s ease;animation:ring 3.6s linear infinite;animation-play-state:paused}.composer:focus-within:before{opacity:1;animation-play-state:running}@keyframes ring{to{--ring-a: 360deg}}.composer.is-sending{transform:translateY(-3px) scale(1.01)}.composer.is-sending .send svg{animation:fly .52s var(--ease-io) both}@keyframes fly{50%{transform:translateY(-22px);opacity:0}51%{transform:translateY(18px);opacity:0}to{transform:none;opacity:1}}.composer:focus-within{box-shadow:0 0 0 .5px #0f19231f,0 0 0 4px color-mix(in oklch,var(--accent),transparent 75%),0 12px 32px -14px #0f192338}.composer textarea{display:block;width:100%;resize:none;border:0;outline:none;background:none;font-size:15px;line-height:22px;height:44px;padding:0;color:var(--ink)}.composer textarea::placeholder{color:#737880}.composer-row{display:flex;align-items:center;gap:6px;margin-top:6px;margin-left:-6px}.chip{height:28px;padding:0 12px;border-radius:999px;border:0;background:#1d1f240b;box-shadow:inset 0 0 0 .5px #1d1f241a;font-size:12.5px;font-weight:500;color:#33373e;transition:background-color .14s}.chip{transition:background-color .14s,translate .38s var(--spring),scale .38s var(--spring)}.chip:hover{background:#1d1f2416;translate:0 -1px}.chip:active{scale:.94}a.chip{display:inline-flex;align-items:center;text-decoration:none}.send{margin-left:auto;width:30px;height:30px;border-radius:50%;border:0;display:grid;place-items:center;background:var(--accent-deep);color:#fff;box-shadow:inset 0 1px #ffffff40,0 1px 2px #0000001f;transition:scale .42s var(--spring),background-color .6s ease,box-shadow .3s}.send:hover{scale:1.1;box-shadow:inset 0 1px #ffffff40,0 0 0 5px color-mix(in oklch,var(--accent),transparent 80%)}.send:hover svg{animation:nudge .9s var(--ease-io) infinite}@keyframes nudge{50%{transform:translateY(-2px)}}.send:active{scale:.9}.send svg{width:14px;height:14px}.recent{margin-top:40px}.section-label{margin:0 0 12px;font-size:12px;font-weight:500;color:var(--gray);display:flex;justify-content:space-between}.section-label button,.section-label a{border:0;background:none;padding:0;font:inherit;color:var(--gray);text-decoration:none}.section-label button:hover,.section-label a:hover{color:var(--ink)}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.card{display:block;border:0;padding:6px 6px 14px;border-radius:16px;text-align:left;text-decoration:none;background:#ffffff5c;box-shadow:inset 0 0 0 .5px #fffc,0 0 0 .5px #0f19230f;position:relative;overflow:hidden;transition:background-color .18s ease,translate .56s var(--spring),scale .4s var(--spring),box-shadow .3s ease}.card:hover{background:#ffffff9e;translate:0 -5px;box-shadow:inset 0 0 0 .5px #ffffffe6,0 0 0 .5px #0f19230f,0 22px 36px -18px #0f192361}.card:active{scale:.97}.card:before,[data-glare]:before{content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;background:radial-gradient(240px circle at var(--gx, 50%) var(--gy, 0%),rgba(255,255,255,.5),transparent 62%);mix-blend-mode:soft-light;opacity:0;transition:opacity .3s}.card.is-hover:before,[data-glare].is-hover:before{opacity:1}.card .strip{position:relative;display:block;height:80px;border-radius:11px;overflow:hidden;background-size:cover;background-position:center;transition:scale .7s var(--ease),filter .5s}.card:hover .strip{scale:1.035;filter:saturate(1.15) brightness(1.04)}.card .strip:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.32),transparent 60%)}.card .strip span{position:absolute;left:9px;bottom:7px;z-index:1;font-size:11px;font-weight:500;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.card .ct{display:flex;justify-content:space-between;align-items:baseline;margin:12px 8px 0;font-size:14.5px;font-weight:600;letter-spacing:-.01em}.card .ct small{font-size:12px;font-weight:400;color:var(--gray);font-variant-numeric:tabular-nums}.card p{margin:5px 8px 0;font-size:13px;line-height:1.42;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project{max-width:840px;margin:0 auto;padding:8px 0 24px;display:grid;grid-template-columns:296px 1fr;gap:48px;align-items:center}.project.no-shot{grid-template-columns:1fr 340px}.kicker{margin:0;display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;color:var(--gray)}.kicker i{width:7px;height:7px;border-radius:50%;background:var(--accent-deep);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent),transparent 78%);animation:beacon 2.6s var(--ease-io) infinite}@keyframes beacon{0%{box-shadow:0 0 color-mix(in oklch,var(--accent),transparent 40%)}70%,to{box-shadow:0 0 0 9px color-mix(in oklch,var(--accent),transparent 100%)}}.title{margin:12px 0 0;font-size:40px;line-height:1.06;font-weight:600;letter-spacing:-.026em}.tagline{margin:12px 0 0;font-size:16.5px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}.stack{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.stack li{height:24px;padding:0 9px;display:inline-flex;align-items:center;border-radius:999px;font-size:12px;font-weight:500;color:#3a3e45;background:#ffffff80;box-shadow:inset 0 0 0 .5px #1d1f241f}.prose{margin-top:22px;padding-top:20px;border-top:1px solid rgba(29,31,36,.08)}.prose p{margin:0 0 12px;font-size:14px;line-height:1.6;color:var(--ink-2);text-wrap:pretty}.actions{margin-top:20px;display:flex;gap:8px;flex-wrap:wrap}.btn{height:34px;padding:0 15px;border-radius:999px;border:0;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;text-decoration:none;background:var(--ink);color:#fff;box-shadow:0 1px 2px #00000024,inset 0 1px #ffffff1f;transition:scale .42s var(--spring),translate .42s var(--spring),background-color .14s,box-shadow .3s}.btn:hover{background:#000;translate:0 -1px;box-shadow:0 1px 2px #00000024,0 10px 22px -10px #00000080}.btn:active{scale:.95}.btn.ghost{background:#ffffff8c;color:var(--ink);box-shadow:inset 0 0 0 .5px #1d1f2424}.btn.ghost:hover{background:#ffffffd9}.shot{margin:0;position:relative;border-radius:14px;overflow:hidden;box-shadow:0 0 0 1px #1d1f241a,0 1px 2px #0f19230f,0 24px 44px -22px #0f192366;background:#fff6}.shot img{display:block;width:100%;height:auto}.shot{transition:translate .6s var(--spring),box-shadow .4s}.shot:hover{translate:0 -4px;box-shadow:0 0 0 1px #1d1f241a,0 1px 2px #0f19230f,0 34px 56px -26px #0f192380}.shot img{transition:scale .9s var(--ease)}.shot:hover img{scale:1.02}.shot.scene-shot{aspect-ratio:4 / 5;background-size:cover;animation:drift 30s var(--ease-io) infinite alternate}.facts{margin:22px 0 0;display:grid;grid-template-columns:90px 1fr;row-gap:0;font-size:13.5px}.facts dt,.facts dd{margin:0;padding:10px 0;border-top:1px solid rgba(29,31,36,.08)}.facts dt{color:var(--gray)}.facts dd{color:var(--ink)}.resume{max-width:680px;margin:0 auto;padding:32px 0 40px}.resume .intro{margin:14px 0 0;font-size:15.5px;line-height:1.6;color:var(--ink-2);text-wrap:pretty}.xp{list-style:none;margin:28px 0 0;padding:0}.xp li{display:grid;grid-template-columns:1fr auto;gap:2px 24px;padding:13px 0;border-top:1px solid rgba(29,31,36,.08)}.xp li:last-child{border-bottom:1px solid rgba(29,31,36,.08)}.xp b{font-size:14.5px;font-weight:600;letter-spacing:-.005em}.xp span{grid-column:1;font-size:13.5px;color:var(--gray)}.xp time{grid-row:1 / span 2;grid-column:2;align-self:center;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}.subhead{margin:28px 0 0;font-size:12px;font-weight:500;color:var(--gray)}.contact{max-width:640px;margin:0 auto;padding:8px 0 24px}.mail{display:inline-block;margin-top:14px;font-size:26px;font-weight:500;letter-spacing:-.018em;text-decoration:none;border-bottom:1.5px solid color-mix(in oklch,var(--accent),transparent 30%);padding-bottom:2px}.mail:hover{border-bottom-color:var(--ink)}.card-credits{margin:14px 2px 0;font-size:11.5px;line-height:1.5;color:var(--gray)}.card-credits a{color:inherit;text-decoration:underline;text-decoration-color:#1d1f2440;text-underline-offset:2px}.card-credits a:hover{color:var(--ink)}.print-only{display:none}.composer{view-transition-name:composer}.chat[hidden],.chat__note[hidden]{display:none!important}.view-inner>.about.is-chatting{margin-top:0!important;margin-bottom:0!important;flex:1}.about.is-chatting{display:flex;flex-direction:column;min-height:100%;padding:28px 0 18px}.chat__log.is-restored .msg,.chat__log.is-restored .msg__action,.chat__log.is-restored .mailcard,.chat__log.is-restored .msg__text>span{animation:none}.about.is-chatting>:is(.hello,.lead,.recent,.card-credits){display:none}.about.is-chatting .composer{position:sticky;bottom:14px;z-index:3;margin-top:18px;box-shadow:0 0 0 .5px #0f19231a,0 1px 2px #0f19230d,0 18px 40px -14px #0f192357}.chat{flex:1;display:flex;flex-direction:column;justify-content:flex-end}.chat__log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:18px}.chat__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;font-size:12px;font-weight:500;color:var(--gray)}.chat__reset{border:0;background:none;padding:4px 8px;margin-right:-8px;border-radius:7px;font:inherit;color:var(--gray);transition:background-color .14s,color .14s}.chat__reset:hover{background:#ffffff80;color:var(--ink)}.msg{display:flex;gap:12px;max-width:100%}.msg--user{justify-content:flex-end;animation:msg-user .52s var(--spring) both;transform-origin:100% 100%}.msg--agent{animation:msg-agent .52s var(--ease) both}@keyframes msg-user{0%{opacity:0;transform:translateY(10px) scale(.92)}}@keyframes msg-agent{0%{opacity:0;transform:translateY(8px);filter:blur(4px)}}.msg--user .msg__body{max-width:78%;padding:10px 14px;border-radius:18px 18px 6px;background:#ffffffd1;box-shadow:0 0 0 .5px #0f192314,0 6px 16px -10px #0f19234d;font-size:14.5px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}.msg__avatar{flex:none;width:26px;height:26px;border-radius:8px;margin-top:1px;box-shadow:0 0 0 .5px #00000024,0 3px 8px -3px #0000004d}.msg--agent .msg__body{min-width:0;flex:1}.msg__text{margin:0;font-size:15px;line-height:1.62;color:var(--ink);text-wrap:pretty;white-space:pre-wrap;overflow-wrap:anywhere}.msg__text>span{animation:tok-in .42s var(--ease) both}@keyframes tok-in{0%{opacity:0;filter:blur(3px)}}.msg__text.is-streaming:after{content:"";display:inline-block;width:7px;height:1.05em;margin-left:3px;vertical-align:-3px;border-radius:2px;background:var(--accent-deep);animation:caret .9s steps(2,jump-none) infinite}@keyframes caret{50%{opacity:0}}.msg__typing{display:inline-flex;gap:5px;padding:9px 0}.msg__typing i{width:7px;height:7px;border-radius:50%;background:color-mix(in oklch,var(--accent),var(--ink) 25%);animation:dot 1.1s var(--ease-io) infinite}.msg__typing i:nth-child(2){animation-delay:.14s}.msg__typing i:nth-child(3){animation-delay:.28s}@keyframes dot{0%,60%,to{transform:translateY(0);opacity:.45}30%{transform:translateY(-5px);opacity:1}}.msg__action{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:8px;margin-top:10px;height:30px;padding:0 12px 0 10px;border-radius:999px;font-size:12.5px;font-weight:500;color:var(--ink);background:#fff9;box-shadow:inset 0 0 0 .5px #1d1f241f;animation:msg-user .52s var(--spring) both}.msg__action:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent-deep);box-shadow:0 0 0 3px color-mix(in oklch,var(--accent),transparent 75%)}.msg__action:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.85) 50%,transparent 70%);animation:sweep 1.2s var(--ease-io) 1}@keyframes sweep{to{transform:translate(100%)}}.mailcard{margin-top:12px;max-width:520px;padding:14px 16px 12px;border-radius:16px;background:#fffc;box-shadow:0 0 0 .5px #0f192314,0 14px 30px -18px #0f192366;animation:card-in .64s var(--spring-soft) both}.mailcard__head{display:flex;gap:8px;align-items:baseline;font-size:12px;color:var(--gray)}.mailcard__subject{margin-top:6px;font-size:14.5px;font-weight:600;color:var(--ink)}.mailcard__body{margin-top:6px;font-size:13.5px;line-height:1.55;color:var(--ink-2);white-space:pre-wrap}.mailcard__actions{display:flex;gap:8px;margin-top:12px}.chat__error{font-size:13.5px;line-height:1.5;color:#8a2b22}.chat__note{margin:10px 0 0;text-align:center;font-size:11.5px;color:var(--gray)}.chat__note b{font-weight:500;color:var(--ink-2)}.composer__count{margin-left:4px;font-size:11.5px;color:var(--gray);font-variant-numeric:tabular-nums;opacity:0;transition:opacity .2s,color .2s}.composer__count.is-visible{opacity:1}.composer__count.is-over{color:#b3261e}.composer.is-busy .send{pointer-events:none;background:color-mix(in oklch,var(--accent-deep),white 30%)}.send:disabled{cursor:not-allowed;background:#1d1f242e;box-shadow:none;scale:1}.send:disabled svg{animation:none}.composer.is-busy .send svg{animation:spin .9s linear infinite}@keyframes spin{to{rotate:360deg}}::view-transition-group(composer){animation-duration:.52s;animation-timing-function:var(--spring-soft)}@media(max-width:1100px)and (min-width:701px){.project,.project.no-shot{grid-template-columns:1fr;gap:28px}.shot.scene-shot{aspect-ratio:16 / 9}.cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:920px)and (min-width:701px){.cards{grid-template-columns:1fr}.view{padding:0 28px}}.pills{display:none}@media(max-width:700px){body{overflow:hidden}.window{inset:10px 10px 48px;margin:0;zoom:1;width:auto;height:auto;min-height:0;translate:none;grid-template-columns:1fr;grid-template-rows:auto auto 1fr;border-radius:26px}.sidebar{display:none}.pane{display:contents}.titlebar{height:48px;justify-content:flex-start;padding:0 14px 0 16px}.crumbs .here,.crumbs .sep{display:none}.crumbs:before{content:"";width:22px;height:22px;border-radius:6px;background:url(/favicon.svg) center / cover;box-shadow:0 0 0 .5px #0000001f;margin-right:3px}.crumbs .root{font-weight:600;font-size:14px;color:var(--ink)}.tools{right:8px;height:48px}.pills{display:flex;gap:6px;overflow-x:auto;padding:2px 14px 12px;scrollbar-width:none;border-bottom:1px solid rgba(29,31,36,.07);mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 28px),transparent)}.pills::-webkit-scrollbar{display:none}.pill{flex:none;height:32px;padding:0 12px 0 7px;border-radius:999px;border:0;display:inline-flex;align-items:center;gap:7px;background:#ffffff57;box-shadow:inset 0 0 0 .5px #1d1f2414;font-size:13.5px;color:var(--ink);white-space:nowrap;text-decoration:none}.pill .thumb{width:20px;height:20px;border-radius:50%;background-size:cover;background-position:center;box-shadow:inset 0 0 0 .5px #0000002e}.pill[aria-current=page]{background:#ffffffd1;font-weight:500;box-shadow:0 1px 2px #0f19231a,0 0 0 .5px #0f19230d}.pill.div{width:1px;padding:0;height:18px;align-self:center;background:#1d1f2424;box-shadow:none}.view{padding:0 20px 28px}.about{padding-top:24px}.view-inner>*{margin-top:0!important}.hello{font-size:34px}.lead{font-size:17px;margin-top:10px}.composer{margin-top:22px;padding:13px 10px 10px 15px}.composer textarea{font-size:15px}.chip{padding:0 10px}.recent{margin-top:28px}.cards{grid-template-columns:1fr;gap:10px}.card{display:grid;grid-template-columns:84px 1fr;grid-template-rows:auto 1fr;column-gap:12px;padding:6px}.card .strip{grid-row:1 / span 2;height:70px;border-radius:10px}.card .strip span{display:none}.card .ct{margin:5px 4px 0 0;font-size:14px}.card p{margin:3px 4px 0 0;font-size:12.5px;align-self:start}.project,.project.no-shot{grid-template-columns:1fr;gap:24px;padding-top:22px}.title{font-size:32px}.resume,.contact{padding-top:24px}.credit{right:50%;translate:50% 0;bottom:12px;transform-origin:50% 100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important}.scene,.view-inner,.credit,.window,.nav-plate{transition-duration:1ms!important}.scene{translate:none}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip{position:fixed;top:12px;left:12px;z-index:20;padding:8px 14px;border-radius:999px;background:#fff;color:var(--ink);font-size:13px;font-weight:500;text-decoration:none;box-shadow:0 1px 2px #0f19231f,0 0 0 .5px #0f192314;opacity:0;pointer-events:none;transform:translateY(-6px);transition:opacity .16s ease,transform .22s var(--ease)}.skip:focus-visible{opacity:1;pointer-events:auto;transform:none}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}@keyframes pane-out{to{opacity:0;transform:translateY(-6px);filter:blur(4px)}}@keyframes pane-in{0%{opacity:0}}::view-transition-old(pane){animation:pane-out .17s ease both}::view-transition-new(pane){animation:pane-in .12s ease both}@media(prefers-reduced-motion:reduce){::view-transition-old(pane),::view-transition-new(pane){animation:none}}.project-wrap{max-width:840px;margin:0 auto;padding:8px 0 24px}.project-wrap .project{max-width:none;margin:0;padding:0}.project-story{max-width:680px;margin-top:28px;padding-top:22px;border-top:1px solid rgba(29,31,36,.08)}.project-story p{margin:0 0 14px;font-size:14.5px;line-height:1.65;color:var(--ink-2);text-wrap:pretty}.project-story h2{margin:22px 0 10px;font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.project-story h3{margin:18px 0 8px;font-size:14.5px;font-weight:600;color:var(--ink)}.project-story ul,.project-story ol{margin:0 0 14px;padding-left:20px;font-size:14.5px;line-height:1.65;color:var(--ink-2)}.project-story li{margin-bottom:6px;text-wrap:pretty}.project-story a{text-decoration-color:color-mix(in oklch,var(--accent),transparent 25%);text-underline-offset:2px}.project-story a:hover{text-decoration-color:var(--ink)}.project-story strong{color:var(--ink);font-weight:600}.project-story code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}@supports (animation-timeline: view()){.project-story>*,.xp li{animation:story-in linear both;animation-timeline:view();animation-range:entry 0% entry 45%}}@keyframes story-in{0%{opacity:0;transform:translateY(14px)}}@media(max-width:700px){.project-wrap{padding-top:0}.project-wrap .project{padding-top:22px}}.projects{max-width:808px;margin:0 auto;padding:8px 0 24px}.projects-grid{margin-top:24px}@media print{body{overflow:visible;background:#fff}.backdrop,.credit,.peek-hint,.skip,.sidebar,.titlebar,.pills,.toast,.no-print{display:none!important}.window{position:static;width:auto;height:auto;min-height:0;translate:none;display:block;border-radius:0;background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;overflow:visible}.window:after{display:none}.pane{display:block}.view{overflow:visible;padding:0}.view-inner>*{margin-top:0!important;margin-bottom:0!important}.resume{max-width:none;padding:0}.print-only{display:block}.print-head{margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid #ddd;font-size:12px;line-height:1.6;color:#333}.print-head b{color:#111}a{text-decoration:none}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
