:root{--color-bg: #fffbf4;--color-surface: #fff;--color-text: #1a1a1a;--color-text-muted: #555;--color-text-on-dark: #f3f3f3;--color-text-muted-on-dark: #b8bcc2;--text-primary: #E6EAF0;--text-secondary: #AAB2BF;--color-text-inverse: #e8e8e8;--color-text-inverse-muted: #9fa3a9;--color-accent: #0066cc;--color-accent-hover: #004499;--color-border: #e0e0e0;--font-sans: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--font-mono: ui-monospace, monospace;--max-width: 72rem;--space-unit: .25rem;--space-1: calc(var(--space-unit) * 2);--space-2: calc(var(--space-unit) * 4);--space-3: calc(var(--space-unit) * 6);--space-4: calc(var(--space-unit) * 8);--space-5: calc(var(--space-unit) * 12);--radius: .375rem}.offscreen{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}*,*:before,*:after{box-sizing:border-box}html{font-size:.94rem;scroll-behavior:smooth}body{margin:0;font-family:var(--font-sans);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased}:focus{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.skip-link{position:absolute;top:0;left:0;z-index:100;padding:var(--space-1) var(--space-2);background:var(--color-text);color:var(--color-surface);font-weight:600;text-decoration:none;transform:translateY(-100%);transition:transform .2s ease}.skip-link:focus{transform:translateY(0)}a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}img{max-width:100%;height:auto;display:block}:root{--page-gutter: var(--space-2)}@media(min-width:48rem){:root{--page-gutter: var(--space-3)}}.section{margin-top:var(--space-4)}.section:first-child{margin-top:0}.section h1,.section h2,.section h3{margin:0 0 var(--space-2)}.section__header{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.section__header h1,.section__header h2,.section__header h3{margin:0}.section__title-action{font-size:.9rem;font-weight:400;color:var(--color-text-muted)}.section p,.section ul{margin:0 0 var(--space-2)}.section ul{list-style:none;margin:0;padding:0}.section li{margin-bottom:var(--space-1);padding-left:0}.section li:last-child{margin-bottom:0}.section p:last-child,.section ul:last-child{margin-bottom:0}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-shell__main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding-inline:var(--page-gutter);padding-block:0}@media(max-width:48rem){.section:first-child{margin-top:var(--space-4)}}.project-card{position:relative;padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border)}.project-card:before{content:"";position:absolute;left:0;top:0;height:100%;width:6px;background:transparent;border-radius:0;pointer-events:none}.project-card--accordion:hover:before,.project-card--accordion:has(.project-card__trigger:focus-visible):before{background:var(--inkText)}.project-card--expanded:before{background:var(--inkText)}.project-card__summary-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.project-card__summary-heading{min-width:0;flex:1}.project-card__share{flex-shrink:0;align-self:flex-start}.project-card__title{margin:0 0 var(--space-2);font-size:1.25rem;font-weight:400;transition:font-weight .12s ease-out}.project-card__title a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}.project-card__title a:hover{text-decoration-thickness:2px}.project-card__meta{margin:0 0 var(--space-2);font-size:.9rem;color:var(--color-text-muted);transition:opacity .12s ease-out;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.project-card__share{font-size:.85rem;color:var(--color-text-muted-on-dark);display:inline-flex;align-items:center;justify-content:center;min-height:2rem;padding:.4rem .7rem;background:#ffffff05;border:1px solid rgba(255,255,255,.1);text-decoration:none;white-space:nowrap;width:auto;flex-shrink:0;transition:background .1s ease-out,border-color .1s ease-out}.project-card__share:hover{background:#1f1f1f;border-color:#3a3a3a}.project-card__share-inner{display:inline-flex;align-items:center;gap:.35rem}.project-card__share-inner svg{width:14px;height:14px}.project-card__problem{margin:0 0 var(--space-2);color:var(--color-text)}.project-card__stack{margin:0 0 var(--space-2);font-size:.85rem;color:var(--color-text-muted);font-family:var(--font-mono);transition:opacity .12s ease-out}.project-card__scope{font-size:.9rem;font-weight:500;color:var(--color-bg);opacity:.8;margin-bottom:var(--space-3)!important}.project-card__link{font-weight:500}.project-card--accordion{padding:0;overflow:hidden}.project-card__trigger{display:block;width:100%;padding:var(--space-3);text-align:left;font:inherit;color:inherit;background:var(--color-surface);border:none;cursor:pointer}.project-card__trigger:hover{outline:none}.project-card__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-card--accordion:hover,.project-card--expanded{border-color:var(--color-border)}.project-card--expanded .project-card__title{font-weight:600}.project-card--expanded .project-card__meta{opacity:.65}.project-card--expanded .project-card__stack{opacity:.7}.project-card__panel{border-top:1px solid var(--color-border)}.project-card__panel[hidden]{display:none}.project-card__panel-inner{padding-block:var(--space-4);padding-inline:var(--space-3);background:var(--color-bg)}.project-card__panel-intro-main h4,.project-card__panel-left h4{font-weight:600;font-size:1.05rem}.project-card__panel-header{border:none;background:transparent;padding:0}.project-card__panel-header-main,.project-card__panel-demo{min-width:0}.project-card__panel-demo--hero{margin-top:var(--space-3);padding:0;background:transparent;border:none}.project-card__demo-actions{display:flex;flex-direction:column;gap:var(--space-3)}.project-card__reference{width:100%}.project-card__demo-left{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.project-card__demo-primary{display:inline-flex;align-items:center;justify-content:center;min-height:2.5rem;padding:.7rem 1rem;color:#f3f3f3;background:#171717;border:1px solid #2a2a2a;text-decoration:none;font-weight:600;white-space:nowrap;width:auto;flex-shrink:0;transition:background .12s ease-out,border-color .12s ease-out}.project-card__demo-primary:hover{background:#1f1f1f;border-color:#3a3a3a}.project-card__demo-primary:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.project-card__demo-secondary{display:flex;flex-direction:column;gap:.5rem;padding-left:0}.project-card__panel .project-card__panel-demo .project-card__demo-secondary a{color:var(--color-text-muted-on-dark);text-decoration:underline;text-underline-offset:.18em}.project-card__panel .project-card__panel-demo .project-card__demo-secondary a:hover{color:var(--color-text-on-dark)}.project-card__reference-grid{display:grid;grid-template-columns:1fr;gap:var(--space-2)}.project-card__reference-grid:has(>:nth-child(2)){grid-template-columns:1fr 1fr}.project-card__reference figure{margin:0}.project-card__reference img{border:1px solid var(--color-text-muted);width:100%;height:auto}.project-card__panel-intro{display:block;margin-bottom:var(--space-4)}.project-card__panel-intro-main{min-width:0}.project-card__intro{padding-top:var(--space-3);padding-bottom:var(--space-3);max-width:62ch}.project-card__intro-text{padding:20px 0}.project-card__system-visual{margin:0;margin-bottom:var(--space-4)}.project-card__system-visual img,.project-card__system-visual svg{display:block;width:100%;height:auto}.project-card__system-visual figcaption{color:var(--color-text-muted-on-dark);margin-top:var(--space-1);font-size:.91rem;line-height:1.25}.project-card__panel-grid{display:block}.project-card__panel-left,.project-card__panel-right{min-width:0}.project-card__panel-right{font-size:.88rem;margin-top:var(--space-5);color:var(--color-text-muted-on-dark);max-width:none;line-height:1.3}.project-card__panel-right h4{font-size:.78em;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.project-card__panel-right ul{gap:6px}.project-card__panel-right ul li{margin-bottom:.55rem}@media(min-width:56rem){.project-card__panel-header{display:block}.project-card__panel-demo--hero{margin-top:0}.project-card__demo-actions{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:var(--space-4);align-items:start}.project-card__demo-left{flex-wrap:nowrap}.project-card__reference{width:auto}.project-card__panel-intro{display:block}.project-card__panel-grid{display:grid;grid-template-columns:minmax(0,1.5fr) 280px;gap:var(--space-5);align-items:start}.project-card__reference p{text-align:center}.project-card__approach-section--with-image{grid-template-columns:minmax(0,1fr) 17rem;gap:var(--space-4)}.project-card__visual-image:hover{transform:scale(2.25);position:relative;z-index:5}.project-card__reference-grid img:hover{transform:scale(1.5);position:relative;z-index:5}.project-card__system-visual{margin-bottom:var(--space-4)}.project-card__system-visual img,.project-card__system-visual svg{display:block;width:100%;height:auto}.project-card__system-visual figcaption{color:var(--color-text-muted-on-dark);margin-top:var(--space-1);font-size:.91rem;line-height:1.25}}.project-card__section{margin-bottom:var(--space-4)}.project-card__section:last-child{margin-bottom:0}.project-card__panel-heading{margin:0 0 var(--space-2);font-size:1rem;font-weight:600}.project-card__subheading{margin:0 0 var(--space-1);font-size:.96rem;font-weight:500;color:var(--color-text-on-dark)}.project-card__outcome{margin:0}.project-card__approach-sections{display:grid;gap:var(--space-4)}.project-card__approach-section{min-width:0}.project-card__approach-content>p{margin:0}.project-card__approach-section--with-image{display:grid;gap:var(--space-3);align-items:start}.project-card__approach-figure{margin:0}.project-card__approach-figure figcaption{font-size:.8rem;line-height:1.2;color:var(--color-text-muted-on-dark);margin-top:2px}.project-card__approach-figure .project-card__visual-image{display:block;width:100%;height:auto}.project-card__visuals{display:grid;gap:var(--space-3)}.project-card__visual{margin:0}.project-card__visual-image{display:block;width:100%;height:auto;border:1px solid var(--color-text-muted-on-dark);background:var(--color-surface)}.project-card__visuals figcaption{font-size:.75rem;font-weight:500;color:var(--color-text-inverse);margin-top:var(--space-2);margin-bottom:var(--space-3)}.project-card__section p,.project-card__approach-content p,.intro-text{font-size:.94rem;line-height:1.55}.project-card__visuals figcaption p:first-child{margin-bottom:4px}.project-card__panel-meta{margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border);font-size:.875rem;color:var(--color-text-muted);font-family:var(--font-mono);opacity:.92}.project-card__panel-meta-stack{margin:0}.project-card__panel-meta a{color:inherit}.project-card__panel-meta a:hover{opacity:1;text-decoration-thickness:2px}.project-card__panel-inner ul{list-style:none;margin:0;padding-left:0}.project-card__panel-inner ul li{position:relative;padding-left:1.25rem;margin-bottom:var(--space-1)}.project-card__panel-inner ul li:last-child{margin-bottom:0}.project-card__panel-inner ul li:before{content:"·";position:absolute;left:0;top:.05em;color:var(--panel-list-marker, var(--color-text-muted))}.project-card__summary{display:block}:root{--ink: #0f1115;--inkText: #fffbf4;--inkMuted: rgba(255, 255, 255, .72);--inkSurface: rgba(255, 255, 255, .04);--inkBorder: rgba(255, 255, 255, .08)}.masthead{position:relative;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);padding-block:clamp(1.25rem,3vw,2rem);padding-inline:var(--page-gutter);overflow:visible;background:var(--ink);color:var(--inkText)}.masthead:after{content:"";position:absolute;left:0;right:0;bottom:-3rem;height:3rem;background:var(--ink);transform:skewY(-2deg);transform-origin:left;pointer-events:none}.masthead__inner{position:relative;z-index:1;max-width:var(--max-width);margin:0 auto}.masthead__name{font-weight:600;font-size:clamp(2rem,5vw,2.75rem);line-height:1.15;letter-spacing:.01em}.home-hero{margin-top:var(--space-5);margin-bottom:var(--space-5)}.home-hero__headline{font-size:clamp(1.75rem,4vw,2.5rem);line-height:1.1;margin:0;text-wrap:balance}.home-hero__kicker{color:var(--color-text-muted);font-size:1rem;font-weight:600;letter-spacing:.02em;margin:var(--space-2) 0 var(--space-4);text-transform:lowercase;text-wrap:balance}.home-hero__tagline{margin:0;font-size:1.125rem;color:var(--color-text-muted);max-width:68ch;text-wrap:pretty}.home-hero__tagline p{margin:0 0 var(--space-2)}.home-hero__tagline p:first-child{font-weight:500;color:var(--color-text)}.home-hero__Tagline p:last-child{margin-bottom:0}.home-hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.pillars{list-style:none;margin:0;padding:0}.pillars li{margin-bottom:var(--space-2);padding-left:0}.pillars li:last-child{margin-bottom:0}.band{position:relative;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);overflow:hidden}.band__inner{max-width:var(--max-width);margin:0 auto;padding-block:var(--space-5);padding-inline:var(--page-gutter);position:relative;z-index:1}.band--dark.band--work{background:var(--ink);color:var(--inkText);line-height:1.65}.band--work:before{content:"";position:absolute;top:0;left:0;right:0;height:5rem;background:var(--color-bg);transform:skewY(2.5deg);transform-origin:top right;pointer-events:none}.band--work .section__header{position:relative;z-index:1}.band--work .work-expand-toggle{color:var(--inkMuted);background:none;border:none;padding:0;font:inherit;font-size:.9rem;cursor:pointer;text-decoration:none}.band--work .work-expand-toggle:hover{color:var(--inkText);text-decoration:underline}.band--work .work-expand-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.band--work .work-intro{color:var(--inkMuted)}.band--work .project-list{position:relative;z-index:1}.band--work .project-card{background:var(--inkSurface);border-color:var(--inkBorder)}.band--work .project-card__trigger{background:var(--inkSurface);color:inherit}.band--work .project-card__title{color:var(--inkText)}.band--work .project-card__meta,.band--work .project-card__stack{color:var(--inkMuted)}.band--work .project-card__problem{color:var(--inkText)}.band--work .project-card__panel{border-top-color:var(--inkBorder)}.band--work .project-card__panel-inner{background:#00000026}.band--work .project-card__panel-inner ul li:before{color:var(--inkMuted)}.band--work .project-card__panel-heading,.band--work .project-card__outcome{color:var(--inkText)}.band--work .project-card__trigger:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-expand-toggle{padding:0;font:inherit;font-size:.9rem;color:var(--color-text-muted);background:none;border:none;cursor:pointer;text-decoration:none}.work-expand-toggle:hover{color:var(--color-text);text-decoration:underline}.work-expand-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.work-intro{margin:0 0 var(--space-4);color:var(--color-text-muted);max-width:62ch}.project-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3)}.project-grid{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:var(--space-3)}@media(min-width:48rem){.project-grid{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}}.resume-intro{margin:0 0 var(--space-4)}.band--dark.band--close{margin-top:3.25rem;background:var(--ink);color:var(--inkText);overflow:visible}.band--close:before{content:"";position:absolute;left:0;right:0;top:-3rem;height:3rem;background:var(--ink);transform:skewY(-1.8deg);transform-origin:right;pointer-events:none}.band--close .band__inner{padding-block:clamp(2.25rem,5vw,3.5rem)}.band--close .contact-heading{margin:0 0 var(--space-2);font-size:clamp(1.25rem,2.4vw,1.6rem);font-weight:600}.band--close .contact-links{margin:0;font-size:clamp(1.1rem,2.2vw,1.35rem);line-height:1.5}.band--close .contact-links a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.band--dark a,.band--dark a:visited,.band--dark a:hover{color:inherit}.band--dark a:hover{text-decoration-thickness:2px}
