@font-face{font-family:plexSans;src:url(../media/ibm_plex_sans_latin_400_normal-s.p.1-h52z97c7bce.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:plexSans;src:url(../media/ibm_plex_sans_latin_500_normal-s.p.2broe1i9movoa.woff2)format("woff2");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:plexSans;src:url(../media/ibm_plex_sans_latin_600_normal-s.p.11xxlm8n0_7w8.woff2)format("woff2");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:plexSans Fallback;src:local(Arial);ascent-override:101.35%;descent-override:27.19%;line-gap-override:0.0%;size-adjust:101.13%}.KLxV5W_className{font-family:plexSans,plexSans Fallback}.KLxV5W_variable{--font-plex-sans:"plexSans", "plexSans Fallback"}
@font-face{font-family:plexMono;src:url(../media/ibm_plex_mono_latin_400_normal-s.p.19gbeb610ur4n.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:plexMono;src:url(../media/ibm_plex_mono_latin_500_normal-s.p.25_05y-blbp24.woff2)format("woff2");font-display:swap;font-weight:500;font-style:normal}@font-face{font-family:plexMono Fallback;src:local(Arial);ascent-override:77.95%;descent-override:20.91%;line-gap-override:0.0%;size-adjust:131.49%}.GtkZ0q_className{font-family:plexMono,plexMono Fallback}.GtkZ0q_variable{--font-plex-mono:"plexMono", "plexMono Fallback"}
.site{--accent:#2148a8;--accent-2:#7a6ae0;--bg:#f7f7fd;--bg-end:#ecedf9;--page:radial-gradient(1000px 600px at 90% -10%, #4854d617, transparent 60%), radial-gradient(900px 560px at -5% 105%, #7a6ae012, transparent 60%), linear-gradient(180deg, #f7f7fd 0%, #f2f2fb 55%, #ecedf9 100%);--conn:#16181d1f;--packet-op:.5;--tint:#86a8f242;--label-op:.4;--node-op:.4;--data-op:.22;--ink:#16181d;--body:#33373f;--muted:#5a606b;--line:#e2e2de;--border:#cfcfca;--header-bg:#f7f7fdb8;--footer-bg:transparent;--scrim:#f2f2fb8c;--scrim-clear:#f2f2fb00;--grid-minor:#16181d06;--ok-bg:#e7f2eb;--ok:#2e8b57;--btn-bg:#16181d;--btn-fg:#fff;--font-sans:var(--font-plex-sans), "Helvetica Neue", Helvetica, sans-serif;--font-mono:var(--font-plex-mono), Menlo, monospace}:root[data-theme=dark] .site{--accent:#86a8f2;--accent-2:#a99bff;--bg:#0d1117;--bg-end:#121926;--page:radial-gradient(1100px 620px at 88% -8%, #86a8f21a, transparent 62%), linear-gradient(180deg, #0d1117 0%, #0f141c 55%, #121926 100%);--conn:#e8e8e30f;--packet-op:.32;--tint:#86a8f214;--label-op:.26;--node-op:.28;--data-op:.16;--ink:#e8e8e3;--body:#bcc0c7;--muted:#8e939d;--line:#262a30;--border:#3a3f47;--header-bg:#0d1117b8;--footer-bg:transparent;--scrim:#0f141c8c;--scrim-clear:#0f141c00;--grid-minor:#e8e8e305;--ok-bg:#17261e;--ok:#3fb37a;--btn-bg:#e8e8e3;--btn-fg:#111316}.site{background:var(--page);min-height:100vh;color:var(--ink);font-family:var(--font-sans);background-attachment:fixed;font-size:16px;line-height:1.6;position:relative}.site a{color:inherit;text-decoration:none}.site a:hover{opacity:.72}.site :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono{font-family:var(--font-mono)}.bg-layer{pointer-events:none;z-index:0;height:100vh;position:fixed;inset:0}.bg-network{opacity:.95;contain:strict;overflow:hidden}.bg-network .conn{fill:none;stroke:var(--conn);stroke-width:1px;stroke-linecap:round}.bg-network .node{fill:var(--bg);stroke:var(--accent);stroke-opacity:var(--node-op);stroke-width:1.2px}.bg-network .node-dot{fill:var(--accent);fill-opacity:var(--node-op)}.bg-network .hub{fill:var(--accent-2);fill-opacity:var(--node-op)}.bg-network .data{fill:var(--bg);stroke:var(--ink);stroke-opacity:var(--data-op)}.bg-network .label{font-family:var(--font-mono);fill:var(--muted);fill-opacity:var(--label-op);font-size:10px}.bg-network .label-lg{font-size:11px}.bg-network .packet{fill:none;stroke-opacity:var(--packet-op);stroke-width:1.6px;stroke-linecap:round;stroke-dasharray:10 90;animation:cubic-bezier(.45,0,.55,1) infinite packet}.bg-network .packet-a{stroke:var(--accent)}.bg-network .packet-b{stroke:var(--accent-2)}.bg-network .pulse{fill:none;stroke:var(--accent);stroke-opacity:var(--node-op);transform-box:fill-box;transform-origin:50%;animation:5s cubic-bezier(.2,.6,.3,1) infinite pulse}.bg-network .spark{font-family:var(--font-mono);fill:var(--accent);opacity:0;transform-box:fill-box;font-size:13px;animation:18s ease-in-out infinite spark}@keyframes packet{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0}}@keyframes pulse{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}@keyframes spark{0%{opacity:0;transform:translateY(0)}35%{opacity:.22}to{opacity:0;transform:translateY(-50px)}}@media (prefers-reduced-motion:reduce){.bg-network .packet,.bg-network .pulse,.bg-network .spark{animation:none}.bg-network .packet{opacity:0}.bg-network .spark{opacity:.25}}.bg-scrim{background:linear-gradient(90deg, var(--scrim-clear) 0%, var(--scrim-clear) 4%, var(--scrim) 30%, var(--scrim) 70%, var(--scrim-clear) 96%, var(--scrim-clear) 100%)}.bg-grid{background-color:var(--tint);background-image:linear-gradient(var(--grid-minor) 1px, transparent 1px), linear-gradient(90deg, var(--grid-minor) 1px, transparent 1px);background-size:12px 12px;-webkit-mask-image:radial-gradient(at 50% 45%,#000 45%,#0000 100%);mask-image:radial-gradient(at 50% 45%,#000 45%,#0000 100%)}.site-header{z-index:10;background:var(--header-bg);-webkit-backdrop-filter:blur(14px)saturate(140%);backdrop-filter:blur(14px)saturate(140%);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:1040px;margin:0 auto;padding:16px 32px;display:flex}.brand{align-items:center;gap:10px;min-height:44px;display:inline-flex}.brand-logo{object-fit:contain;width:auto;max-width:120px;height:28px;display:block}.brand-name{letter-spacing:-.025em;font-size:17px;font-weight:600}.brand-name span{color:var(--muted);font-weight:400}.site-nav{flex-wrap:wrap;align-items:center;gap:8px 28px;font-size:14px;display:flex}.site-nav a[aria-current=page]{color:var(--accent);font-weight:500}.theme-toggle{min-height:44px;color:var(--ink);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:8px;padding:0 14px;font-family:inherit;font-size:13px;display:inline-flex}.theme-toggle .when-light,.theme-toggle .when-dark{align-items:center;gap:8px;display:inline-flex}.theme-toggle .when-dark,:root[data-theme=dark] .theme-toggle .when-light{display:none}:root[data-theme=dark] .theme-toggle .when-dark{display:inline-flex}.site-main{z-index:1;max-width:1104px;margin:40px auto 64px;padding:0 24px;position:relative}.site-main-inner{padding:0 clamp(20px,4vw,48px)}.site-footer{z-index:1;background:var(--footer-bg);border-top:1px solid var(--line);position:relative}.site-footer-inner{max-width:1040px;font-family:var(--font-mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:0 auto;padding:24px 32px;font-size:12px;display:flex}.kicker{font-family:var(--font-mono);color:var(--muted);letter-spacing:.02em;font-size:13px}.tag{font-family:var(--font-mono);color:var(--accent);letter-spacing:.04em;font-size:12px}.stack-line{font-family:var(--font-mono);color:var(--muted);font-size:13px}.hero{flex-direction:column;gap:28px;padding:96px 0 80px;display:flex}.hero h1{letter-spacing:-.03em;max-width:820px;margin:0;font-size:clamp(36px,5vw,52px);font-weight:600;line-height:1.1}.page-hero{flex-direction:column;gap:20px;padding:88px 0 56px;display:flex}.page-hero h1{letter-spacing:-.03em;max-width:760px;margin:0;font-size:clamp(32px,4.2vw,44px);font-weight:600;line-height:1.15}.lead{color:var(--body);max-width:720px;margin:0;font-size:clamp(18px,2vw,21px);line-height:1.55}.status-pill{background:var(--ok-bg);border-radius:999px;align-self:flex-start;align-items:center;gap:10px;padding:6px 14px;font-size:14px;display:inline-flex}.status-dot{background:var(--ok);border-radius:50%;flex-shrink:0;width:8px;height:8px}.actions{flex-wrap:wrap;gap:12px;padding-top:8px;display:flex}.btn{border:1px solid var(--border);border-radius:8px;align-items:center;min-height:44px;padding:0 20px;font-size:15px;display:inline-flex}.btn-primary{background:var(--btn-bg);border-color:var(--btn-bg);font-weight:500;color:var(--btn-fg)!important}.section{flex-direction:column;gap:32px;padding:80px 0;display:flex}.section h2{letter-spacing:-.01em;margin:0;font-size:28px;font-weight:600}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.section-note{color:var(--muted);max-width:420px;margin:0;font-size:14px}.row{border-top:1px solid var(--line);flex-wrap:wrap;gap:12px 48px;padding-top:24px;display:flex}.row-label{flex:220px}.row-body{flex-direction:column;flex:999 480px;gap:12px;min-width:0;display:flex}.work-item{gap:24px 48px;padding:32px 0}.work-item h3{margin:0;font-size:20px;font-weight:600;line-height:1.35}.work-item-linked{position:relative}.work-item-link{color:inherit;text-decoration:none}.work-item-link:after{content:"";position:absolute;inset:0}.work-item-linked:hover .work-item-link,.work-item-link:focus-visible{text-underline-offset:4px;text-decoration:underline}.work-item-link:focus-visible{outline:none}.work-item-linked:has(.work-item-link:focus-visible){outline:2px solid var(--accent,currentColor);outline-offset:4px;border-radius:4px}.work-item-linked .markdown-body a{z-index:1;position:relative}.company{color:var(--muted);font-size:14px}.body-text{color:var(--body);margin:0}.bullets{color:var(--body);flex-direction:column;gap:6px;margin:0;padding-left:20px;display:flex}.bullets strong{color:var(--ink);font-weight:600}.role h3{margin:0;font-size:19px;font-weight:600}.stack-list{flex-direction:column;margin:0;display:flex}.stack-list>div{border-top:1px solid var(--line);flex-wrap:wrap;gap:4px 48px;padding:16px 0;display:flex}.stack-list>div:last-child{border-bottom:1px solid var(--line)}.stack-list dt{font-family:var(--font-mono);color:var(--muted);flex:220px;padding-top:2px;font-size:13px}.stack-list dd{flex:999 480px;margin:0}.contact-mail{font-family:var(--font-mono);text-underline-offset:4px;word-break:break-all;align-self:flex-start;align-items:center;min-height:44px;font-size:18px;display:inline-flex;color:var(--accent)!important;text-decoration:underline!important}.project{border-top:1px solid var(--line);flex-direction:column;gap:28px;padding:56px 0;scroll-margin-top:96px;display:flex}.project h2{letter-spacing:-.01em;margin:0;font-size:28px;font-weight:600}.project .summary{color:var(--body);max-width:720px;margin:0;font-size:18px}.project .row{border-top:0;gap:8px 48px;padding-top:0}.project .row-label{font-family:var(--font-mono);color:var(--muted);flex:200px;padding-top:3px;font-size:13px}.cards{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;display:grid}.card{border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:12px;padding:28px;display:flex}.card h3{margin:0;font-size:19px;font-weight:600}.cta-band{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding:72px 0 96px;display:flex}.about-hero{flex-wrap:wrap;align-items:flex-start;gap:40px 56px;padding:88px 0 64px;display:flex}.about-hero-text{flex-direction:column;flex:999 520px;gap:20px;min-width:0;display:flex}.about-title{letter-spacing:-.03em;margin:0;font-size:clamp(32px,4.2vw,44px);font-weight:600;line-height:1.15}.about-mark{aspect-ratio:4/5;border:1px solid var(--line);border-radius:12px;flex:240px;justify-content:center;align-items:center;max-width:300px;display:flex}.about-block{border-top:1px solid var(--line);flex-wrap:wrap;gap:12px 48px;padding:40px 0;display:flex}.about-block h2{letter-spacing:-.03em;flex:220px;margin:0;font-size:22px;font-weight:600}.about-block-body{flex-direction:column;flex:999 520px;gap:16px;min-width:0;display:flex}.principle{border-bottom:1px solid var(--line);flex-direction:column;gap:4px;padding-bottom:16px;display:flex}.principle-head{align-items:baseline;gap:14px;display:flex}.principle h3{margin:0;font-size:17px;font-weight:600}.principle p{color:var(--body);margin:0 0 0 32px}.path-row{flex-wrap:wrap;justify-content:space-between;gap:4px 16px;display:flex}@media (max-width:640px){.site-header-inner{padding:12px 16px}.site-nav{gap:4px 18px}.site-main{margin-top:16px;padding:0 8px}.hero{padding:48px 0}.page-hero,.about-hero{padding:48px 0 40px}.section{padding:56px 0}}:root:has(.site) body{background:#ecedf9}:root[data-theme=dark]:has(.site) body{background:#121926}.contact-form{flex-direction:column;gap:20px;min-width:0;max-width:640px;display:flex}.contact-field{flex-direction:column;gap:6px;display:flex}.contact-field label{font-family:var(--font-mono);color:var(--muted);font-size:13px}.contact-field input,.contact-field textarea{min-height:44px;color:var(--ink);border:1px solid var(--muted);background:0 0;border-radius:8px;max-width:100%;padding:10px 12px;font-family:inherit;font-size:16px}.contact-field textarea{resize:vertical;line-height:1.5}.contact-field [aria-invalid=true]{border-color:var(--accent);border-width:2px}.contact-count{font-family:var(--font-mono);color:var(--muted);align-self:flex-end;margin:0;font-size:12px}.contact-error{color:var(--ink);margin:0;font-size:14px}.contact-error:before{content:"! ";font-weight:700}.contact-status{min-height:0;color:var(--ink);font-size:15px}.contact-status:empty{display:none}.contact-privacy{color:var(--muted);font-size:14px}.contact-form .btn{cursor:pointer;color:var(--ink);background:0 0;align-self:flex-start;font-family:inherit}.contact-form .btn-primary{background:var(--btn-bg);color:var(--btn-fg)}.contact-form .btn:disabled{opacity:.6;cursor:not-allowed}.contact-hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.markdown-body{flex-direction:column;gap:12px;display:flex}.markdown-body h3,.markdown-body h4{color:var(--ink);margin:0;font-size:16px;font-weight:600}.markdown-body blockquote{border-left:2px solid var(--line);color:var(--body);margin:0;padding-left:16px}.markdown-body pre{margin:0;overflow-x:auto}.markdown-body a{color:inherit;text-decoration:underline}.card .markdown-body{flex-grow:1}.project-cover,.markdown-body img{border-radius:var(--radius-medium,.5rem);max-width:100%;height:auto;display:block}.project-cover{margin-bottom:8px}.video-block{max-width:100%;margin:0}.video-element{border-radius:var(--radius-medium,.5rem);background:var(--line);width:100%;max-width:100%;height:auto;display:block}.video-frame{aspect-ratio:16/9;position:relative}.video-frame iframe{border-radius:var(--radius-medium,.5rem);border:0;width:100%;height:100%;position:absolute;inset:0}.video-motion{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.video-toggle{min-height:44px}.project-detail{flex-direction:column;gap:24px;padding:48px 0 72px;display:flex}.project-detail h1{margin:0}.project-detail .back-link{align-self:flex-start;align-items:center;min-height:44px;text-decoration:underline;display:inline-flex}.project-detail .summary{max-width:700px;margin:0;font-size:19px}.project-title-link{color:inherit;text-decoration:none}.project-title-link:hover{text-decoration:underline}.about-video{margin-top:24px}.brand-logo-dark{display:none}:root[data-theme=dark] .brand-logo-dark{display:block}:root[data-theme=dark] .brand-logo-light.has-dark{display:none}.pagination{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:32px 0;display:flex}.project-tabs{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.project-tab{border:1px solid var(--line);min-height:40px;color:var(--body);border-radius:999px;align-items:center;padding:8px 16px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.project-tab:hover{border-color:var(--accent);color:var(--ink)}.project-tab.is-active{background:var(--ink);border-color:var(--ink);color:var(--bg,#fff)}
