@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#000;--color-surface:#050505;--color-surface-elevated:#0b0b0b;--color-surface-hover:#131313;--color-fg:#ededed;--color-muted:#ededed9e;--color-dim:#ededed66;--color-accent:#4d8eff;--color-accent-dim:#3a6fd6;--color-accent-glow:#4d8eff2e;--color-error:#e0574f;--color-success:#4ea653;--color-warn:#d7a13b;--color-border:#ffffff29;--color-border-strong:#ffffff47;--color-border-subtle:#ffffff14;--rule:1px;--font-display:"JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace;--font-body:"IBM Plex Mono", "JetBrains Mono", ui-monospace, monospace;--font-technical:"JetBrains Mono", "IBM Plex Mono", ui-monospace, monospace;--text-xs:.6875rem;--text-sm:.8125rem;--text-base:.9375rem;--text-md:1.0625rem;--text-lg:1.25rem;--text-xl:1.75rem;--text-2xl:2.5rem;--text-3xl:3.25rem;--line-height-display:1.12;--line-height-body:1.65;--max-line-length:62ch;--content-width:42rem;--frame-width:64rem;--space-1:4px;--space-2:8px;--space-3:16px;--space-4:24px;--space-5:32px;--space-6:48px;--space-7:64px;--space-8:96px;--space-9:128px;--page-gutter:1.5rem;--radius-sm:0px;--radius-md:0px;--radius-lg:0px;--radius-full:9999px;--shadow-sm:0 1px 2px #0009;--shadow-md:0 8px 24px -8px #000c;--shadow-lg:0 24px 60px -12px #000000e6;--shadow-accent:none;--shadow-device:0 12px 32px -10px #000000e6;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--duration-fast:.12s;--duration-medium:.2s;--duration-slow:.32s;--commission-bg:var(--color-bg);--commission-fg:var(--color-fg);--commission-muted:var(--color-muted);--commission-dim:var(--color-dim);--commission-accent:var(--color-accent);--commission-border:var(--color-border);--commission-border-strong:var(--color-border-strong);--commission-error:var(--color-error);--bg-primary:var(--color-bg);--bg-secondary:var(--color-surface);--bg-card:var(--color-surface);--bg-card-hover:var(--color-surface-hover);--text-primary:var(--color-fg);--text-secondary:var(--color-muted);--text-muted:var(--color-dim);--accent:var(--color-accent);--accent-dim:var(--color-accent-dim);--accent-glow:var(--color-accent-glow);--border:var(--color-border);--border-hover:var(--color-border-strong);--error:var(--color-error);--success:var(--color-success);--space-xs:var(--space-2);--space-sm:var(--space-3);--space-md:var(--space-4);--space-lg:var(--space-6);--space-xl:var(--space-8);--font-sans:var(--font-body);--font-mono:var(--font-technical)}*{box-sizing:border-box}html{background:var(--color-bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:32px}body{padding:0 var(--page-gutter) 96px;color:var(--color-fg);background:var(--color-bg);font:var(--text-base)/var(--line-height-body) var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}a{color:var(--color-accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}a,button{-webkit-tap-highlight-color:transparent}p,h1,h2,h3,figure,ul,ol,dl{margin:0}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}::selection{background:var(--color-accent);color:#000}kbd{font:inherit;border:var(--rule) solid var(--color-border-strong);padding:1px 5px;font-size:.9em}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:60;background:var(--color-fg);color:#000;padding:10px 16px;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus{text-decoration:none;transform:none}.page{width:min(100%, var(--content-width));margin-inline:auto}.site-header{border-bottom:var(--rule) solid var(--color-border);justify-content:space-between;align-items:baseline;gap:24px;padding:20px 0;display:flex}.site-mark{color:var(--color-fg);font:700 .9375rem/1 var(--font-display);letter-spacing:-.02em}.site-mark:hover{color:var(--color-muted);text-decoration:none}.site-header-end{align-items:baseline;gap:20px;display:flex}.site-header nav{font-size:var(--text-sm);gap:22px;display:flex}.site-header nav a{color:var(--color-fg)}.site-header nav a:hover{color:var(--color-accent);text-decoration:none}.palette-trigger{color:var(--color-dim);font-size:var(--text-xs);align-items:center;gap:6px;padding:6px 0;display:inline-flex}.palette-trigger:hover{color:var(--color-fg)}.palette-trigger kbd{line-height:1.4}.hero{padding:72px 0 0}.wordmark{font:800 var(--text-2xl)/1 var(--font-display);letter-spacing:-.05em;color:var(--color-fg);display:inline-block;position:relative}.wordmark .accent{color:var(--color-accent)}.wordmark:after{content:"";background:var(--color-fg);height:1px;transform-origin:var(--mark-origin,0%) center;transition:transform var(--duration-medium) var(--ease-out);position:absolute;bottom:-.14em;left:0;right:0;transform:scaleX(0)}.wordmark.is-playing:after{transform:scaleX(1)}.lede{max-width:54ch;font-size:var(--text-md);color:var(--color-fg);margin-top:28px}.meta{font-size:var(--text-sm);color:var(--color-dim);margin-top:12px}.tags{font-size:var(--text-sm);color:var(--color-muted);margin-top:22px}.tags li{display:inline}.tags li+li:before{content:" · ";color:var(--color-dim)}.section{border-top:var(--rule) solid var(--color-border);padding:44px 0}.section-title{font:500 var(--text-xs)/1.5 var(--font-technical);letter-spacing:.14em;text-transform:uppercase;color:var(--color-dim)}.project{border-top:var(--rule) solid var(--color-border-subtle);padding:26px 0}.project:first-of-type{border-top:0}.project-head{align-items:baseline;gap:14px;display:flex}.project-number{font:400 var(--text-xs)/1 var(--font-technical);color:var(--color-dim)}.project-name{font:700 var(--text-lg)/1.25 var(--font-display);letter-spacing:-.02em;color:var(--color-fg)}.project-summary{max-width:56ch;font-size:var(--text-sm);color:var(--color-muted);margin-top:10px}.project-foot{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-top:14px;display:flex}.project-stack{font:400 var(--text-xs)/1.5 var(--font-technical);color:var(--color-dim)}.project-link{font-size:var(--text-sm)}.project-row{border-top:var(--rule) solid var(--color-border-subtle);color:var(--color-fg);grid-template-columns:26px minmax(0,1fr) auto;align-items:baseline;gap:14px;padding:22px 0;display:grid}.project-row:hover{text-decoration:none}.project-row:hover .project-title{color:var(--color-accent)}.project-row:hover .project-arrow{transform:translate(2px,-2px)}.project-title{font:700 var(--text-md)/1.3 var(--font-display);letter-spacing:-.02em;transition:color var(--duration-fast)}.project-row-summary{font-size:var(--text-sm);color:var(--color-muted);margin-top:5px;display:block}.project-arrow{color:var(--color-dim);transition:transform var(--duration-fast), color var(--duration-fast)}.project-row:hover .project-arrow{color:var(--color-accent)}.shots{gap:16px;margin-top:22px;display:flex}.shots figure{width:148px;min-width:0}.shots img{border:var(--rule) solid var(--color-border);width:100%;height:auto;transition:border-color var(--duration-fast);display:block}.shots figure:hover img{border-color:var(--color-border-strong)}.shots figcaption{font-size:var(--text-xs);color:var(--color-dim);margin-top:8px}.shots figcaption span{color:var(--color-dim);margin-right:6px}.shot-toggle{align-items:center;gap:10px;margin-top:18px;display:none}.shot-toggle button{border:var(--rule) solid var(--color-border);font:400 var(--text-xs)/1 var(--font-technical);color:var(--color-dim);padding:6px 10px}.shot-toggle button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent)}.prose p{max-width:var(--max-line-length);color:var(--color-muted)}.prose p+p{margin-top:16px}.prose strong{color:var(--color-fg);font-weight:500}.link-list{gap:10px;margin-top:20px;display:grid}.link-list a{font-size:var(--text-sm)}.link-list .ext{color:var(--color-dim);margin-left:4px}.site-footer{border-top:var(--rule) solid var(--color-border);font-size:var(--text-sm);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-top:8px;padding-top:24px;display:flex}.site-footer nav{flex-wrap:wrap;gap:16px;display:flex}.site-footer .colophon{color:var(--color-dim);font-size:var(--text-xs)}.palette{z-index:50;background:#000000c7;justify-content:center;padding-top:18vh;display:flex;position:fixed;inset:0}.palette__panel{border:var(--rule) solid var(--color-border-strong);background:var(--color-bg);flex-direction:column;width:min(520px,100vw - 32px);height:fit-content;max-height:62vh;display:flex}.palette__search{border-bottom:var(--rule) solid var(--color-border);align-items:center;padding:0 14px;display:flex}.palette__input{color:var(--color-fg);font:inherit;caret-color:var(--color-accent);background:0 0;border:0;flex:1;padding:13px 0}.palette__input:focus{outline:none}.palette__input::placeholder{color:var(--color-dim)}.palette__list{padding:4px;overflow-y:auto}.palette__row{text-align:left;align-items:baseline;gap:12px;width:100%;padding:8px 10px;display:flex}.palette__row.is-active{background:var(--color-surface-hover)}.palette__row.is-active .palette__name{color:var(--color-accent)}.palette__name{color:var(--color-fg);flex:none}.palette__summary{color:var(--color-dim);font-size:var(--text-xs)}.palette__empty{color:var(--color-dim);font-size:var(--text-sm);padding:12px 10px}.palette__footer{border-top:var(--rule) solid var(--color-border);font-size:var(--text-xs);color:var(--color-dim);padding:9px 14px}@media (width<=560px){body{padding-bottom:64px}.site-header{flex-wrap:wrap;gap:10px}.site-header nav{gap:16px}.hero{padding:48px 0 0}.section{padding:36px 0}.project-row{grid-template-columns:22px minmax(0,1fr);gap:10px}.project-arrow{display:none}.shots{scrollbar-width:none;overflow-x:auto}.shots::-webkit-scrollbar{display:none}.shots figure{flex:0 0 190px;width:190px}.shot-toggle{display:flex}.site-footer{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
