:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#fff;--color-menu:#dadbe3;--color-disabled:#adb1c4;--color-default:#33374c;--color-accent:#2d539e;--color-error-main:#cc517a;--color-error-secondary:#cc3768;--font-sans:"Switzer Variable", "Switzer", sans-serif;--text-size:15px;--text-line-height:20px;--text-weight:500;--text-tracking:-.45px;--page-width:min(1406px, calc(100vw - 64px));--narrow-width:min(373px, calc(100vw - 48px));--radius-xl:28px;--radius-lg:16px;--radius-md:12px;--radius-control:8px;--transition:.18s cubic-bezier(.23, 1, .32, 1);--transition-link-plate-opacity:90ms linear;--transition-link-plate-transform:.13s cubic-bezier(.215, .61, .355, 1);--page-bg:var(--color-bg);--surface-subtle:color-mix(in srgb, var(--color-menu) 84%, transparent);--surface-strong:color-mix(in srgb, var(--color-menu) 92%, var(--color-bg));--surface-accent:color-mix(in srgb, var(--color-accent) 12%, var(--color-bg));--text-primary:var(--color-default);--text-secondary:color-mix(in srgb, var(--color-default) 78%, var(--color-disabled));--text-muted:var(--color-disabled);--text-placeholder:color-mix(in srgb, var(--color-disabled) 88%, var(--color-default));--border-subtle:color-mix(in srgb, var(--color-default) 16%, transparent);--border-strong:color-mix(in srgb, var(--color-default) 26%, transparent);--focus-ring:color-mix(in srgb, var(--color-accent) 58%, var(--color-default));--pace-caret:color-mix(in srgb, var(--color-accent) 42%, var(--color-disabled));--error-text:var(--color-error-main);--hero-prompt-width:min(1320px, calc(100vw - 120px))}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--page-bg)}body{background:var(--page-bg);min-height:100dvh;color:var(--text-secondary);font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}img{max-width:100%;display:block}a,button{color:inherit;font:inherit}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button{background:0 0;border:0}.page-update{width:100%;color:var(--text-muted);font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);text-align:center;letter-spacing:var(--text-tracking);font-variant-numeric:tabular-nums;margin:0;padding:0 24px 24px}.page{width:100%;min-height:100dvh;margin:0;padding-bottom:0}.portfolio{width:var(--page-width);min-height:100dvh;margin:0 auto;padding:clamp(132px,25vh,246px) 0 88px}.hero+.portfolio{min-height:auto;padding-top:0}.portfolio-shell{gap:0;width:100%;display:grid}.portfolio-tabs{width:min(373px,100%);color:var(--color-disabled);text-align:center;justify-content:space-between;justify-self:center;align-items:center;gap:0;display:flex}.portfolio-tab{color:var(--color-disabled);transition:color var(--transition);justify-self:center;text-decoration:none}.portfolio-tab.is-active{color:var(--text-primary);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.portfolio-tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.portfolio-panel{opacity:1;will-change:opacity;min-height:calc(100dvh - 120px);transition:opacity .2s cubic-bezier(.27,0,.51,1)}.portfolio-panel.is-switching{opacity:0}.portfolio-shell[data-route-kind=kitchen-sink]{gap:0}.portfolio-shell[data-route-kind=kitchen-sink] .portfolio-tabs{display:none}.portfolio-shell[data-route-kind=kitchen-sink] .portfolio-panel{min-height:0}.hero[data-route-kind=kitchen-sink]{min-height:auto;padding:56px 0 24px}.hero[data-route-kind=kitchen-sink] .hero-shell{width:var(--page-width);place-items:stretch stretch;margin:0 auto}.kitchen-hero,.kitchen-kicker,.kitchen-title,.kitchen-description,.kitchen-section-title,.kitchen-section-description,.kitchen-field-label,.kitchen-toggle,.kitchen-toc-link,.kitchen-preview-note,.kitchen-gallery-caption,.kitchen-hero-kicker,.kitchen-hero-title,.kitchen-hero-copy,.kitchen-hero-back{font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);margin:0}.kitchen-hero{width:100%;padding:0 0 8px}.kitchen-hero-row{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;display:grid}.kitchen-hero-copyblock{gap:8px;display:grid}.kitchen-hero-kicker,.kitchen-kicker{color:var(--text-muted)}.kitchen-hero-title,.kitchen-title,.kitchen-section-title{color:var(--text-primary)}.kitchen-hero-copy,.kitchen-description,.kitchen-section-description,.kitchen-preview-note,.kitchen-gallery-caption{color:var(--text-secondary)}.kitchen-hero-back{border:1px solid var(--border-subtle);min-height:32px;color:var(--text-primary);transition:background-color var(--transition), border-color var(--transition), color var(--transition);border-radius:8px;justify-content:center;align-items:center;padding:0 14px;text-decoration:none;display:inline-flex}.kitchen-hero-back:hover,.kitchen-hero-back:focus-visible{border-color:var(--border-strong);background:var(--surface-subtle)}.kitchen-hero-back:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.kitchen-panel-root{width:100%}.kitchen-shell{gap:52px;display:grid}.kitchen-header{border-bottom:1px solid var(--border-subtle);gap:24px;padding:0 0 28px;display:grid}.kitchen-header-copy{gap:8px;display:grid}.kitchen-summary-grid,.kitchen-foundation-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.kitchen-summary-card,.kitchen-foundation-card{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-subtle);gap:10px;padding:16px;display:grid}.kitchen-summary-title{color:var(--text-primary);margin:0}.kitchen-summary-copy,.kitchen-pattern-caption{color:var(--text-secondary);margin:0}.kitchen-foundation-copy{gap:8px;display:grid}.kitchen-foundation-list{color:var(--text-secondary);margin:0;padding-left:18px}.kitchen-toc{flex-wrap:wrap;gap:8px;display:flex}.kitchen-toc-link,.kitchen-toggle{border:1px solid var(--border-subtle);border-radius:var(--radius-control);min-height:32px;color:var(--text-secondary);cursor:pointer;transition:background-color var(--transition), border-color var(--transition), color var(--transition);background:0 0;justify-content:center;align-items:center;padding:0 12px;display:inline-flex}.kitchen-toggle.is-active{border-color:var(--border-strong);background:var(--surface-strong);color:var(--text-primary)}.kitchen-toc-link:hover,.kitchen-toggle:hover,.kitchen-toc-link:focus-visible,.kitchen-toggle:focus-visible{border-color:var(--border-strong);background:var(--surface-subtle);color:var(--text-primary)}.kitchen-toc-link:focus-visible,.kitchen-toggle:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.kitchen-section{gap:24px;scroll-margin-top:24px;display:grid}.kitchen-section-header{gap:8px;display:grid}.kitchen-controls{gap:16px;display:grid}.kitchen-field{gap:10px;display:grid}.kitchen-field-label{color:var(--text-muted)}.kitchen-toggle-group{flex-wrap:wrap;gap:8px;display:flex}.kitchen-preview-frame{border:1px solid var(--border-subtle);border-radius:var(--radius-control);background:var(--surface-subtle);gap:16px;padding:24px;display:grid}.kitchen-preview-note{max-width:560px}.kitchen-pattern-meta{gap:8px;display:grid}.kitchen-hero-preview,.kitchen-link-preview,.kitchen-work-preview,.kitchen-writing-preview,.kitchen-reader-drawer-mount,.kitchen-demo-preview,.kitchen-gallery-preview{min-width:0}.kitchen-hero-preview .hero-core{width:min(var(--hero-prompt-width), 100%);max-width:100%}.kitchen-hero-static .hero-contact-link[data-copy-text]{cursor:default}.kitchen-link-preview,.kitchen-work-preview,.kitchen-demo-preview,.kitchen-gallery-preview{gap:20px;display:grid}.kitchen-inline-link-row{flex-wrap:wrap;align-items:center;gap:24px;display:flex}.kitchen-inline-link{display:inline-block}.kitchen-link-preview[data-preview-state=hover] .hero-link:before,.kitchen-demo-preview[data-preview-state=hover] .hero-link:before{opacity:1;transform:scaleX(1)}.kitchen-link-preview[data-preview-state=hover] .portfolio-tab,.kitchen-link-preview[data-preview-state=hover] .kitchen-inline-link,.kitchen-demo-preview[data-preview-state=hover] .demo-title-link,.kitchen-demo-preview[data-preview-state=hover] .demo-link{color:var(--text-primary)}.kitchen-link-preview[data-preview-state=focus] .portfolio-tab,.kitchen-link-preview[data-preview-state=focus] .kitchen-inline-link,.kitchen-demo-preview[data-preview-state=focus] .demo-entry{outline:2px solid var(--focus-ring);outline-offset:3px}.kitchen-link-preview[data-preview-state=focus] .portfolio-tab:before,.kitchen-link-preview[data-preview-state=focus] .hero-link:before,.kitchen-demo-preview[data-preview-state=focus] .hero-link:before{opacity:1;transform:scaleX(1)}.kitchen-link-preview[data-preview-state=focus] .portfolio-tab,.kitchen-link-preview[data-preview-state=focus] .kitchen-inline-link,.kitchen-demo-preview[data-preview-state=focus] .demo-title-link,.kitchen-demo-preview[data-preview-state=focus] .demo-link{color:var(--text-primary)}.kitchen-work-preview[data-work-focus="0"] .project-card:not([data-project-index="0"]),.kitchen-work-preview[data-work-focus="1"] .project-card:not([data-project-index="1"]),.kitchen-work-preview[data-work-focus="3"] .project-card:not([data-project-index="3"]){opacity:.42}.kitchen-work-preview[data-work-focus="0"] .project-card[data-project-index="0"],.kitchen-work-preview[data-work-focus="1"] .project-card[data-project-index="1"],.kitchen-work-preview[data-work-focus="3"] .project-card[data-project-index="3"]{box-shadow:inset 0 0 0 1px var(--border-strong)}.kitchen-writing-preview{justify-items:center;display:grid}.kitchen-reader-drawer-preview{gap:16px;display:grid}.kitchen-reader-drawer-intro{gap:16px;max-width:560px;display:grid}.kitchen-reader-drawer-trigger,.reader-drawer-close,.reader-drawer-footer-action{border:1px solid var(--border-subtle);border-radius:var(--radius-control);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);transition:background-color var(--transition), border-color var(--transition), color var(--transition);background:0 0}.kitchen-reader-drawer-trigger{cursor:pointer;width:fit-content;min-height:36px;padding:0 14px}.kitchen-reader-drawer-trigger:hover,.reader-drawer-close:hover,.reader-drawer-footer-action:hover,.kitchen-reader-drawer-trigger:focus-visible,.reader-drawer-close:focus-visible,.reader-drawer-footer-action:focus-visible{border-color:var(--border-strong);background:var(--surface-subtle)}.kitchen-reader-drawer-trigger:focus-visible,.reader-drawer-close:focus-visible,.reader-drawer-footer-action:focus-visible{outline:none}.reader-drawer-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:linear-gradient(90deg,#dadbe38f 0%,#adb1c48f 81.568%);position:fixed;inset:0}.reader-drawer-content{z-index:100;background:var(--page-bg);border-radius:4px;outline:none;width:min(620px,100vw - 48px);position:fixed;top:24px;bottom:24px;right:24px;box-shadow:0 20px 56px #33374c14}.reader-drawer-shell{box-sizing:border-box;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:36px;width:620px;max-width:100%;height:100%;margin-inline:auto;padding:100px;display:flex;position:relative;overflow:auto}.reader-drawer-close{width:32px;min-height:32px;box-shadow:none;cursor:pointer;outline:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:10px;right:10px}.reader-drawer-close span{font-size:20px;line-height:1}.reader-drawer-header,.reader-drawer-body,.reader-drawer-footer{width:100%}.reader-drawer-meta{text-align:center;justify-items:center;gap:4px;display:grid}.reader-drawer-date,.reader-drawer-heading,.reader-drawer-copy,.reader-drawer-copy p,.reader-drawer-footer-action{font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);margin:0}.reader-drawer-date{color:var(--text-muted)}.reader-drawer-heading{color:var(--text-primary);text-align:center;max-width:281px}.reader-drawer-copy{color:var(--text-primary);gap:20px;display:grid}.kitchen-gallery-preview .gallery-modal{border-radius:var(--radius-control);padding:72px 64px 48px;position:relative;inset:auto;overflow:hidden}.kitchen-gallery-preview .gallery-control{position:absolute}.kitchen-gallery-preview .gallery-control--close{top:20px;right:20px}.kitchen-gallery-preview .gallery-control--previous{left:20px}.kitchen-gallery-preview .gallery-control--next{right:20px}.kitchen-gallery-preview .gallery-image-stage{width:min(100%,880px);height:min(60dvh,520px)}.kitchen-gallery-closed{gap:16px;display:grid}.kitchen-gallery-closed-stage{border-radius:var(--radius-control);background:color-mix(in srgb, var(--color-menu) 88%, var(--color-bg));place-items:center;min-height:360px;padding:40px;display:grid}.kitchen-gallery-closed-stage .gallery-image{max-height:280px}.hero{place-items:center;min-height:620px;padding:48px 0 144px;display:grid}.hero-shell{place-items:center;width:100%;max-width:100%;display:grid}.hero-core{width:min(var(--hero-prompt-width), 100%);justify-items:center;gap:32px;padding-top:24px;display:grid;position:relative}.hero-logo{width:22px;height:var(--text-line-height);color:var(--text-primary);place-items:center;display:grid}.hero-logo svg{width:22px;height:14px;display:block}.hero-status,.hero-metrics,.hero-prompt,.hero-contact-row,.hero-contact-link,.hero-reset{font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);text-align:center;letter-spacing:var(--text-tracking);margin:0}.hero-status{grid-template-columns:minmax(0,1fr);justify-items:center;gap:32px;width:min(760px,100%);display:grid;position:relative}.hero-stack,.hero-logo,.hero-active-controls,.hero-metrics,.hero-ready-copy,.hero-ready-cta,.hero-reset{opacity:1;visibility:visible;pointer-events:auto;will-change:opacity, filter;transition:opacity .8s cubic-bezier(.23,1,.32,1),filter .8s cubic-bezier(.23,1,.32,1)}.hero-stack{grid-area:1/1;justify-items:center;gap:32px;width:100%;display:grid}.hero-stack--typing{align-items:start}.hero-active-controls,.hero-metrics,.hero-reset{display:none}.hero-core[data-state=teaser-ready] .hero-stack--teaser,.hero-core[data-state=typing-complete] .hero-stack--teaser,.hero-core[data-state=typing-idle-outcome] .hero-stack--teaser{opacity:1;filter:blur()}.hero-core[data-state=teaser-ready] .hero-stack--typing,.hero-core[data-state=typing-complete] .hero-stack--typing,.hero-core[data-state=typing-idle-outcome] .hero-stack--typing,.hero-core[data-state=typing-active] .hero-stack--teaser{opacity:0;filter:blur(6px);pointer-events:none}.hero-core[data-state=typing-active] .hero-stack--typing{opacity:1;filter:blur()}.hero-core[data-state=typing-active] .hero-active-controls{order:1;display:grid}.hero-core[data-state=typing-active] .hero-metrics--inline{flex-wrap:nowrap;justify-content:center;align-items:center;gap:32px;width:auto;max-width:100%;padding:0;display:flex}.hero-core[data-state=typing-active] .hero-metrics--inline .hero-metric{white-space:nowrap;flex-direction:row;justify-content:center;align-items:baseline;gap:4px;display:inline-flex}.hero-active-controls{justify-items:center;gap:32px}.hero-ready-copy,.hero-ready-cta{color:var(--text-secondary);text-align:center;width:100%;margin:0}.hero-ready-copy{font-size:var(--text-size);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);white-space:nowrap;display:block}.hero-ready-copy.is-empty{display:none}.hero-link{isolation:isolate;display:inline-block;position:relative}.hero-link:before,.hero-link:after{content:"";pointer-events:none;position:absolute}.hero-link:before{z-index:-1;background:var(--color-menu);opacity:0;transform-origin:0;transition:transform var(--transition-link-plate-transform), opacity var(--transition-link-plate-opacity);will-change:transform, opacity;inset:-.08em -.22em;transform:scaleX(.92)}.hero-link--teaser{cursor:pointer}.hero-ready-emphasis{color:var(--text-primary);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.portfolio-tab.hero-ready-emphasis{color:var(--color-disabled);text-decoration:none}.portfolio-tab.hero-ready-emphasis.is-active{color:var(--text-primary);text-underline-offset:.12em;text-decoration:underline;text-decoration-thickness:1px}.hero-ready-link{vertical-align:baseline;overflow:visible}.hero-ready-link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.hero-profile-tooltip{z-index:10;opacity:0;pointer-events:none;transform-origin:bottom;will-change:opacity, transform;width:min(340px,100vw - 32px);max-width:none;transition:opacity .18s cubic-bezier(.23,1,.32,1),transform .18s cubic-bezier(.23,1,.32,1);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,8px)scale(.96)}.hero-profile-tooltip img{width:100%;max-width:none;height:auto;display:block}.hero-ready-link:hover .hero-profile-tooltip,.hero-ready-link:focus-visible .hero-profile-tooltip,.hero-ready-link:focus .hero-profile-tooltip{opacity:1;transform:translate(-50%)scale(1)}.hero-ready-cta{color:var(--text-primary);font-size:var(--text-size);line-height:var(--text-line-height);letter-spacing:var(--text-tracking)}.hero-metrics{width:292px;max-width:100%;color:var(--text-muted);font-variant-numeric:tabular-nums;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;padding:0 18px;display:grid}.hero-metric{justify-items:center;gap:4px;display:grid}.hero-metric-value{text-align:center;min-width:5ch}#heroMetricWpm{min-width:3ch}#heroMetricAcc{min-width:4ch}.hero-metric-label,.hero-metric-value{transition:color var(--transition);margin:0}.hero-metric-label{color:var(--text-muted)}.hero-metric-value{color:var(--text-primary)}.hero-core[data-state=typing-active] #heroMetricAccFrame{color:var(--color-disabled)}.hero-core[data-state=typing-active] #heroMetricTimeFrame{color:var(--text-muted)}.hero-core[data-state=typing-active] #heroMetricWpmFrame{color:var(--text-primary)}.hero-core[data-state=typing-active] #heroMetricAccFrame .hero-metric-label,.hero-core[data-state=typing-active] #heroMetricAccFrame .hero-metric-value{color:var(--color-disabled)}.hero-core[data-state=typing-active] #heroMetricTimeFrame .hero-metric-label,.hero-core[data-state=typing-active] #heroMetricTimeFrame .hero-metric-value{color:var(--text-muted)}.hero-core[data-state=typing-active] #heroMetricWpmFrame .hero-metric-label,.hero-core[data-state=typing-active] #heroMetricWpmFrame .hero-metric-value{color:var(--text-primary)}.hero-carets{z-index:2;pointer-events:none;position:absolute;inset:0}.hero-caret{background:var(--color-accent);opacity:0;will-change:transform, height;border-radius:999px;width:1px;min-height:1em;transition:transform .145s cubic-bezier(.22,1,.36,1),height .145s cubic-bezier(.22,1,.36,1),opacity .12s ease-out;position:absolute;top:0;left:0;transform:translate(0,0)}.hero-caret.is-visible{opacity:1}.hero-pace-indicator{opacity:0;will-change:transform, height;width:1px;height:0;transition:transform 55ms linear,height 55ms linear,opacity .12s ease-out;position:absolute;top:0;left:0;transform:translate(0,0)}.hero-pace-indicator.is-visible{opacity:1}.hero-pace-label{color:var(--color-accent);font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);letter-spacing:var(--text-tracking);white-space:nowrap;line-height:1;position:absolute;bottom:calc(100% + 7px);left:50%;transform:translate(-50%)}.hero-core[data-state=teaser-ready] .hero-caret.is-visible:not(.hero-caret--pace){animation:1s step-end infinite hero-caret-blink}.hero-caret--pace{background:var(--color-accent);width:1px;transition:opacity .12s ease-out;position:absolute;top:0;left:0}.hero-prompt.is-finished-view .hero-char{opacity:1}.hero-prompt.is-finished-ready .hero-char{color:var(--text-primary);transition-duration:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1)}.hero-prompt.is-teaser .hero-char{color:var(--text-placeholder)}.hero-input{z-index:-1;opacity:0;resize:none;caret-color:#0000;pointer-events:none;text-wrap-mode:nowrap;border:0;border-radius:0;outline:none;width:0;height:1em;margin:0;padding:0;display:block;position:absolute;overflow:hidden}.hero-prompt{width:var(--hero-prompt-width);z-index:1;max-width:100%;color:var(--text-secondary);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);text-align:center;text-wrap:balance;cursor:text;transition:opacity var(--transition);margin:0 auto;position:relative}.hero-line-break{width:100%;height:4px;display:block}.hero-char{color:var(--text-muted);transition:color .16s cubic-bezier(.23,1,.32,1),opacity .16s cubic-bezier(.23,1,.32,1);position:relative}.hero-char.is-upcoming{color:var(--text-muted)}.hero-char.is-correct{color:var(--text-primary)}.hero-char.is-incorrect{color:var(--error-text)}.hero-char.is-current{color:var(--text-muted)}.hero-char.is-teaser-highlight{color:var(--text-primary)}.hero-link--completion{cursor:inherit}.hero-link--completion-anchor{color:inherit;text-decoration:none}.hero-link-underline{background:var(--text-primary);transform-origin:0;pointer-events:none;height:1px;transition:transform .32s cubic-bezier(.215,.61,.355,1);position:absolute;bottom:-.14em;left:0;right:0;transform:scaleX(0)}.hero-prompt.is-finished-view .hero-link--completion{cursor:pointer}.hero-prompt.is-finished-ready .hero-link-underline{transition-delay:var(--hero-link-delay,0s);transform:scaleX(1)}@media (hover:hover) and (pointer:fine){.hero-link--teaser:hover:before,.hero-prompt.is-finished-view .hero-link--completion:hover:before{opacity:1;transform:scaleX(1)}.writing-archive:hover .writing-entry-title-link,.demos-layout:hover .demo-title-link{color:var(--color-disabled)}.writing-entry:hover .writing-entry-title-link:before,.writing-entry:focus-visible .writing-entry-title-link:before,.demo-entry:hover .demo-title-link:before,.demo-entry:focus-visible .demo-title-link:before{opacity:1;transform:scaleX(1)}.writing-entry:hover .writing-entry-title-link,.writing-entry:focus-visible .writing-entry-title-link,.writing-entry:hover .writing-entry-date,.writing-entry:focus-visible .writing-entry-date,.demo-entry:hover .demo-title-link,.demo-entry:focus-visible .demo-title-link,.demo-entry:hover .demo-link,.demo-entry:focus-visible .demo-link,.writing-back:hover{color:var(--text-primary)}.writing-back:hover{background:var(--color-menu)}.portfolio-tab:hover:before,.portfolio-tab:focus-visible:before{opacity:1;transform:scaleX(1)}}.hero-contact-row{min-width:100%;color:var(--text-primary);transition:color var(--transition), opacity var(--transition);justify-content:center;align-items:center;gap:32px;display:flex}.hero-contact-link{min-width:0;color:inherit;appearance:none;text-align:center;background:0 0;border:0;padding:0}.hero-core[data-state=typing-active] .hero-contact-row{color:var(--color-disabled);pointer-events:none}.hero-core[data-state=typing-active] .hero-contact-link{cursor:default}.hero-contact-link[data-copy-text]{grid-template-columns:minmax(0,1fr);place-items:center;display:inline-grid}.hero-contact-label{grid-area:1/1;transition:opacity 90ms cubic-bezier(.27,0,.51,1)}.hero-contact-label--copied,.hero-contact-link.is-copied .hero-contact-label--default{opacity:0}.hero-contact-label--default,.hero-contact-link.is-copied .hero-contact-label--copied{opacity:1}.hero-reset{width:43px;height:43px;margin:0;margin-block:calc((var(--text-line-height) - 43px) / 2);color:var(--color-default);cursor:pointer;transition:background-color var(--transition), color var(--transition), opacity var(--transition);background:0 0;border:0;border-radius:10px;justify-content:center;justify-self:center;align-items:center;padding:0;display:inline-flex;overflow:hidden}.hero-reset:hover:not(:disabled){background:var(--color-menu);color:var(--text-primary)}.hero-reset-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px;display:block}.hero-reset:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.hero-reset:disabled{opacity:.45;cursor:default}.hero-reset.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.hero-core[data-state=typing-active] .hero-metrics{display:grid}.hero-core[data-state=typing-active] .hero-reset,.hero-core[data-state=typing-complete] .hero-reset,.hero-core[data-state=typing-idle-outcome] .hero-reset{display:inline-flex}.projects{width:var(--page-width);margin:0 auto;padding:0 0 120px}.project-shell{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.work-footer{color:var(--text-primary);text-align:center;justify-items:center;gap:48px;margin-top:clamp(280px,24vw,420px);padding:0 24px;display:grid}.work-footer p{margin:0}.work-footer-locations{align-items:center;gap:10px;display:inline-flex}.work-footer-divider{background:var(--text-muted);width:1px;height:20px}.work-footer-updated{color:var(--text-muted);font-variant-numeric:tabular-nums}.project-card{aspect-ratio:715/518;width:100%;height:auto;color:var(--text-primary);cursor:zoom-in;isolation:isolate;appearance:none;transition:background-color var(--transition), opacity var(--transition);background:#f0f0f0;border:0;border-radius:1px;place-items:center;margin:0;padding:0;display:grid;position:relative;overflow:hidden}.project-card-image{object-fit:contain;width:auto;max-width:calc(100% - 64px);height:256px}.project-card-image--compact{max-width:calc(100% - 120px);height:212px}.project-card-image--panel{object-fit:contain;width:42%;max-width:42%;height:39%}.project-card-image--scale-up{width:58.8%;max-width:58.8%;height:54.6%}.project-card-image--scale-down{width:25.2%;max-width:25.2%;height:23.4%}.project-card-image--scale-down-20{width:33.6%;max-width:33.6%;height:31.2%}.project-card-image--full-bleed{object-fit:cover;width:100%;max-width:100%;height:100%}.project-card-title,.project-card-year{display:none}.project-card-title{top:10px;transform:translateY(-14px)}.project-card-year{bottom:10px;transform:translateY(14px)}.writing{width:var(--page-width);margin:0 auto;padding:0 0 96px;scroll-margin-top:24px}.writing-shell{width:100%}.writing-layout{width:min(420px,100%);margin:0 auto;display:grid}.writing-layout--index,.writing-layout--article{gap:60px}.writing-header{color:var(--text-muted);text-align:center;gap:32px;display:grid}.writing-heading,.writing-recommendation,.writing-disclaimer,.writing-year,.writing-entry,.writing-article-date,.writing-article-title,.writing-article-body{font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);margin:0}.writing-heading,.writing-entry-title,.writing-article-title,.writing-layout--article{color:var(--text-primary)}.writing-recommendation,.writing-disclaimer,.writing-year,.writing-entry-date,.writing-article-date{color:var(--text-muted)}.writing-recommendation-emphasis{color:var(--text-primary)}.writing-recommendation-line{display:block}.writing-recommendation-link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.writing-archive,.writing-year-group{gap:0;display:grid}.writing-year-entries{gap:16px;display:grid}.writing-year{pointer-events:none;padding:16px 0}.writing-entry{z-index:1;color:inherit;transition:color var(--transition);align-items:center;gap:24px;margin:-8px 0;padding:8px 0;text-decoration:none;display:flex;position:relative}.writing-year-entries>.writing-entry:first-child{margin-top:-16px;padding-top:16px}.writing-year-entries>.writing-entry:last-child{margin-bottom:-16px;padding-bottom:16px}.writing-entry-title{flex:1 0 0;min-width:0}.writing-entry-title-link{max-width:100%;transition:color var(--transition);display:inline-block}.writing-entry-date{transition:color var(--transition);flex-shrink:0}.writing-article-header{text-align:center;gap:8px;display:grid}.writing-article-body{gap:20px;display:grid}.writing-article-body p{margin:0}.writing-back{width:43px;height:41px;color:var(--text-primary);transition:background-color var(--transition), color var(--transition);border-radius:10px;justify-content:center;justify-self:center;align-items:center;display:inline-flex}.writing-back-icon{width:20px;height:20px;display:block}.writing-back:focus-visible,.writing-entry:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.demos-layout{gap:16px;width:min(420px,100%);margin:0 auto;padding-top:0;display:grid}.demo-entry{z-index:1;color:inherit;transition:color var(--transition);align-items:center;gap:24px;margin:-8px 0;padding:8px 0;text-decoration:none;display:flex;position:relative}.demo-title,.demo-link{font-family:var(--font-sans);font-size:var(--text-size);font-weight:var(--text-weight);line-height:var(--text-line-height);letter-spacing:var(--text-tracking);margin:0}.demo-title{min-width:0;color:var(--text-primary);flex:1 0 0}.demo-title-link{max-width:100%;transition:color var(--transition);display:inline-block}.demo-link{color:var(--color-disabled);white-space:nowrap;transition:color var(--transition);flex-shrink:0}.demo-entry:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.has-gallery-open{overscroll-behavior:none;overflow:hidden}.gallery-modal{--gallery-backdrop-blur:18px;z-index:100;-webkit-backdrop-filter:blur();overscroll-behavior:contain;will-change:background-color, backdrop-filter;background-color:#f0f0f0;place-items:center;padding:clamp(76px,10vh,156px) clamp(72px,8vw,168px);transition:background-color .24s cubic-bezier(.23,1,.32,1),-webkit-backdrop-filter .24s cubic-bezier(.23,1,.32,1),backdrop-filter .24s cubic-bezier(.23,1,.32,1);display:grid;position:fixed;inset:0;transform:translateZ(0)}@starting-style{.gallery-modal{-webkit-backdrop-filter:blur(var(--gallery-backdrop-blur));background-color:#f0f0f000}}::view-transition-group(gallery-panel){z-index:102;animation-duration:.36s;animation-timing-function:cubic-bezier(.22,1,.36,1)}::view-transition-old(gallery-panel){mix-blend-mode:normal;object-fit:contain;border-radius:1px;height:100%;animation:none;overflow:clip}::view-transition-new(gallery-panel){mix-blend-mode:normal;object-fit:contain;border-radius:1px;height:100%;animation:none;overflow:clip}html[data-gallery-transition=open]::view-transition-old(gallery-panel){opacity:0}html[data-gallery-transition=close]::view-transition-new(gallery-panel){opacity:0}html[data-gallery-transition=open]::view-transition-new(gallery-panel){opacity:1}html[data-gallery-transition=close]::view-transition-old(gallery-panel){opacity:1}html[data-gallery-transition=open]::view-transition-old(root){mix-blend-mode:normal;animation:.24s cubic-bezier(.23,1,.32,1) both gallery-page-out}html[data-gallery-transition=open]::view-transition-new(root){mix-blend-mode:normal;animation:.24s cubic-bezier(.23,1,.32,1) both gallery-backdrop-in}html[data-gallery-transition=close]::view-transition-old(root){mix-blend-mode:normal;animation:.36s cubic-bezier(.22,1,.36,1) both gallery-backdrop-out}html[data-gallery-transition=close]::view-transition-new(root){mix-blend-mode:normal;animation:.36s cubic-bezier(.22,1,.36,1) both gallery-page-in}@keyframes gallery-page-out{0%{opacity:1}to{opacity:0}}@keyframes gallery-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes gallery-backdrop-out{0%{opacity:1}to{opacity:0}}@keyframes gallery-page-in{0%{opacity:0;filter:blur(12px)}to{opacity:1;filter:blur()}}.gallery-image-stage{touch-action:none;border-radius:18px;place-items:center;width:min(86vw,1280px);max-width:100%;height:min(70dvh,720px);display:grid;overflow:visible}.gallery-image{cursor:zoom-in;object-fit:contain;touch-action:none;transform-origin:50%;-webkit-user-select:none;user-select:none;will-change:transform;-webkit-user-drag:none;-webkit-touch-callout:none;border-radius:18px;width:auto;max-width:100%;height:auto;max-height:100%;transition:transform .18s cubic-bezier(.23,1,.32,1)}.gallery-modal[aria-modal=true] .gallery-image-stage,.gallery-modal[aria-modal=true] .gallery-image{border-radius:1px}.gallery-modal[aria-modal=true] .gallery-image{max-width:min(86vw,1280px);max-height:min(70dvh,720px)}.gallery-image.is-gesturing{cursor:grabbing;transition:none}.gallery-control{z-index:2;width:48px;min-height:48px;color:var(--text-primary);cursor:pointer;touch-action:manipulation;transition:opacity var(--transition), transform var(--transition), background-color var(--transition);-webkit-tap-highlight-color:transparent;background:#ffffffc7;border-radius:10px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:fixed}@media (hover:hover) and (pointer:fine){.gallery-control:hover:not(:disabled){background:#ffffffeb}}.gallery-control:disabled{opacity:.36;cursor:default}.gallery-control:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.gallery-control svg{width:20px;height:20px}.gallery-control--close{top:44px;right:44px}.gallery-control--previous{top:50%;left:44px;transform:translateY(-50%)}.gallery-control--next{top:50%;right:44px;transform:translateY(-50%)}.gallery-meta{z-index:2;width:min(560px,100vw - 180px);color:var(--text-secondary);text-align:center;pointer-events:none;justify-items:center;gap:3px;display:grid;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.gallery-meta p{margin:0}.gallery-meta-line{justify-content:center;align-items:center;gap:6px;max-width:100%;display:flex}.gallery-meta-line span:first-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gallery-gesture-hint{color:var(--text-secondary);letter-spacing:-.2px;font-size:12px;line-height:16px}.gallery-zoom-status{font-variant-numeric:tabular-nums;display:none}.gallery-gesture-copy--touch,.gallery-modal[data-zoomed=true] .gallery-gesture-copy{display:none}.gallery-modal[data-zoomed=true] .gallery-zoom-status{display:inline}@media (hover:none) and (pointer:coarse){.gallery-gesture-copy--touch{display:inline}.gallery-gesture-copy--pointer{display:none}}@keyframes hero-caret-blink{0%,45%{opacity:1}50%,to{opacity:0}}@media (max-width:720px){:root{--page-width:min(1406px, calc(100vw - 28px));--narrow-width:min(373px, calc(100vw - 28px));--hero-prompt-width:min(640px, calc(100vw - 28px));--text-size:13px;--text-line-height:17px}.page,.hero,.hero-shell,.hero-core,.hero-status{min-width:0}.portfolio{width:var(--page-width);padding:clamp(96px,21vh,168px) 0 64px}.hero+.portfolio{padding-top:0}.hero[data-route-kind=kitchen-sink]{padding:28px 0 20px}.portfolio-shell{gap:0}.portfolio-tabs{justify-content:space-between;gap:0;width:min(420px,100%)}.portfolio-panel{min-height:calc(100dvh - 96px)}.kitchen-hero-row{grid-template-columns:1fr;align-items:start;gap:16px}.kitchen-shell{gap:40px}.kitchen-summary-grid,.kitchen-foundation-grid{grid-template-columns:minmax(0,1fr)}.kitchen-header{gap:20px;padding-bottom:24px}.kitchen-preview-frame{padding:16px}.kitchen-inline-link-row{gap:16px}.kitchen-gallery-preview .gallery-modal{padding:64px 16px 48px}.kitchen-gallery-preview .gallery-image-stage{width:100%;height:min(52dvh,420px)}.kitchen-gallery-preview .gallery-control--close{top:16px;right:16px}.kitchen-gallery-preview .gallery-control--previous{left:12px}.kitchen-gallery-preview .gallery-control--next{right:12px}.kitchen-gallery-closed-stage{min-height:220px;padding:24px}.hero{min-height:540px;padding:12px 0 72px}.hero[data-mobile-keyboard=open]{min-height:var(--mobile-visible-height,540px);padding-top:var(--mobile-visible-padding,12px);padding-bottom:var(--mobile-visible-padding,12px)}.hero[data-mobile-keyboard=open] .hero-shell{min-height:var(--mobile-visible-inner-height,auto)}.hero[data-mobile-keyboard=open][data-mobile-keyboard-fit=centered] .hero-shell{place-items:center}.hero[data-mobile-keyboard=open][data-mobile-keyboard-fit=tight] .hero-shell{place-items:start center}.hero-core{width:var(--hero-prompt-width);gap:24px;max-width:calc(100vw - 28px);padding-top:8px}.hero-stack,.hero-active-controls{gap:24px}.hero-metrics{gap:24px;width:min(292px,100%);padding:0}.hero-core[data-state=typing-active] .hero-metrics--inline{gap:24px}.hero-metric{gap:4px}.hero-prompt{overflow-wrap:anywhere;text-wrap:pretty;width:100%}.hero-ready-copy,.hero-ready-cta,.hero-contact-row{overflow-wrap:anywhere;max-width:100%}.hero-contact-row{gap:24px}.hero-ready-copy{white-space:normal;text-wrap:initial}.hero-status{gap:24px}.hero-profile-tooltip{width:min(260px,100vw - 28px);bottom:calc(100% + 8px)}.hero-line-break{height:.3em}.projects{padding-bottom:112px}.writing{padding-bottom:72px}.project-shell{grid-template-columns:1fr;gap:8px}.work-footer{gap:36px;margin-top:220px;padding:0 14px}.work-footer-divider{height:17px}.writing-layout--index,.writing-layout--article{gap:40px;width:min(420px,100vw - 28px)}.writing-header{gap:24px}.writing-entry{gap:20px}.writing-article-body{gap:17px}.project-card{aspect-ratio:715/518;content-visibility:auto;contain-intrinsic-size:auto 72vw;border-radius:1px;height:auto}.project-card-image{max-width:calc(100% - 28px);height:140px}.project-card-image--panel{width:43%;max-width:43%;height:39%}.project-card-image--scale-up{width:60.2%;max-width:60.2%;height:54.6%}.project-card-image--scale-down{width:25.8%;max-width:25.8%;height:23.4%}.project-card-image--scale-down-20{width:34.4%;max-width:34.4%;height:31.2%}.project-card-image--full-bleed{width:100%;max-width:100%;height:100%}.project-card-image--compact{max-width:calc(100% - 44px);height:118px}.project-card-title,.project-card-year{display:none}.demos-layout{gap:16px;width:min(420px,100vw - 28px);padding-top:0}.demo-entry{gap:20px}.gallery-modal{--gallery-backdrop-blur:8px;padding:max(76px, calc(env(safe-area-inset-top) + 62px)) 14px max(92px, calc(env(safe-area-inset-bottom) + 78px));isolation:isolate}.gallery-image-stage{width:calc(100vw - 28px);height:min(72dvh,680px)}.gallery-modal[aria-modal=true] .gallery-image{max-width:calc(100vw - 28px);max-height:min(72dvh,680px)}.gallery-control{width:48px;min-height:48px}.gallery-control--close{top:max(14px, calc(env(safe-area-inset-top) + 10px));right:max(14px, calc(env(safe-area-inset-right) + 10px))}.gallery-control--previous{top:auto;bottom:max(14px, calc(env(safe-area-inset-bottom) + 10px));left:max(14px, calc(env(safe-area-inset-left) + 10px));transform:none}.gallery-control--next{top:auto;right:max(14px, calc(env(safe-area-inset-right) + 10px));bottom:max(14px, calc(env(safe-area-inset-bottom) + 10px));transform:none}.gallery-meta{bottom:max(19px, calc(env(safe-area-inset-bottom) + 15px));width:calc(100vw - 152px)}.gallery-gesture-copy--touch{display:inline}.gallery-gesture-copy--pointer{display:none}html[data-gallery-transition=close]::view-transition-new(root){animation-name:gallery-page-in-mobile}}@keyframes gallery-page-in-mobile{0%{opacity:0}to{opacity:1}}@media (max-width:950px) and (max-height:520px){.gallery-modal{--gallery-backdrop-blur:6px;padding:12px max(72px, calc(env(safe-area-inset-right) + 60px)) 12px max(72px, calc(env(safe-area-inset-left) + 60px))}.gallery-image-stage{width:calc(100vw - 152px);height:calc(100dvh - 24px)}.gallery-modal[aria-modal=true] .gallery-image{max-width:calc(100vw - 152px);max-height:calc(100dvh - 24px)}.gallery-control--close{top:max(10px, calc(env(safe-area-inset-top) + 8px));right:max(10px, calc(env(safe-area-inset-right) + 8px))}.gallery-control--previous{top:50%;bottom:auto;left:max(10px, calc(env(safe-area-inset-left) + 8px));transform:translateY(-50%)}.gallery-control--next{top:50%;right:max(10px, calc(env(safe-area-inset-right) + 8px));bottom:auto;transform:translateY(-50%)}.gallery-meta{display:none}}@media (prefers-reduced-motion:reduce){.gallery-modal{-webkit-backdrop-filter:none;transition:background-color .2s}@starting-style{.gallery-modal{-webkit-backdrop-filter:none}}::view-transition-group(gallery-panel){animation-duration:1ms}::view-transition-old(gallery-panel){animation-duration:1ms}::view-transition-new(gallery-panel){animation-duration:1ms}::view-transition-old(root){animation-duration:1ms}::view-transition-new(root){animation-duration:1ms}html[data-gallery-transition=open]::view-transition-old(root){animation-duration:1ms}html[data-gallery-transition=open]::view-transition-new(root){animation-duration:1ms}html[data-gallery-transition=close]::view-transition-old(root){animation-duration:1ms}html[data-gallery-transition=close]::view-transition-new(root){animation-duration:1ms}.hero-logo,.hero-ready-copy,.hero-ready-cta,.kitchen-hero-back,.kitchen-toc-link,.kitchen-toggle,.hero-metrics,.hero-profile-tooltip,.hero-prompt,.hero-char,.hero-reset,.project-card-title,.project-card-year,.portfolio-panel,.portfolio-tab,.project-card,.gallery-control,.gallery-image,.writing-entry,.writing-back,.hero-pace-indicator,.hero-caret,.hero-caret--pace,.hero-link:before,.hero-link:after,.hero-link-underline{transition:none}.hero-profile-tooltip{transform:translate(-50%)scale(1)}.hero-caret.is-visible:not(.hero-caret--pace){animation:none}html{scroll-behavior:auto}}

