:root,[data-theme=light]{--bg:#fff;--bg-primary:#fff;--bg-secondary:#f8f9fa;--surface:#fff;--surface-elevated:#fff;--surface-hover:#f5f5f5;--text:#000;--text-primary:#000;--text-muted:#666;--text-secondary:#333;--primary:#000;--primary-hover:#333;--accent:#000;--accent-hover:#333;--success:#000;--warning:#000;--error:#000;--border:#e0e0e0;--border-default:#e0e0e0;--border-strong:#ccc;--ring:#000;--focus:#000;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}[data-theme=dark]{--bg:#14120b;--bg-primary:#14120b;--bg-secondary:#1c1a13;--surface:#14120b;--surface-elevated:#1c1a13;--surface-hover:#252218;--text:#f7f7f4;--text-primary:#f7f7f4;--text-muted:#9d9a92;--text-secondary:#d4d2cc;--primary:#f7f7f4;--primary-hover:#d4d2cc;--accent:#f7f7f4;--accent-hover:#d4d2cc;--success:#f7f7f4;--warning:#f7f7f4;--error:#f7f7f4;--border:#2a271f;--border-default:#2a271f;--border-strong:#3d3930;--ring:#f7f7f4;--focus:#f7f7f4;--shadow-sm:0 1px 2px 0 #0000004d;--shadow-md:0 4px 6px -1px #0006,0 2px 4px -1px #0000004d;--shadow-lg:0 10px 15px -3px #00000080,0 4px 6px -2px #0006;--shadow-xl:0 20px 25px -5px #0009,0 10px 10px -5px #00000080}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;background-color:var(--bg);color:#000;color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;transition:background-color .3s ease,color .3s ease}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:focus-visible{outline:2px solid #000;outline:2px solid var(--focus);outline-offset:2px}.min-h-screen{min-height:100vh}.bg-gradient-to-br{background:linear-gradient(135deg,#f5f5f5,#fff 50%,#f5f5f5)}.text-center{text-align:center}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-16{margin-bottom:4rem}.p-2{padding:.5rem}.p-8{padding:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pt-20{padding-top:5rem}.text-5xl{font-size:3rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.rounded-xl{border-radius:.75rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.shadow-lg{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.max-w-4xl{max-width:56rem}.mx-auto{margin-left:auto;margin-right:auto}.bg-white{background-color:#fff;background-color:var(--bg)}.text-gray-800{color:#000;color:var(--text)}.text-gray-600{color:#666;color:var(--text-muted)}.fixed{position:fixed}.z-50{z-index:50}.top-6{top:1.5rem}.left-6{left:1.5rem}.flex{display:flex}.flex-col{flex-direction:column}.space-y-1>*+*{margin-top:.25rem}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}:root,[data-theme=light]{--button-inverted-bg:#14120b;--button-inverted-hover:#1c1a13;--button-inverted-text:#f7f7f4;--button-inverted-shadow:0 8px 25px #14120b4d;--button-inverted-shadow-hover:0 12px 30px #14120b66}[data-theme=dark]{--button-inverted-bg:#fff;--button-inverted-hover:#f8f9fa;--button-inverted-text:#14120b;--button-inverted-shadow:none;--button-inverted-shadow-hover:none}.theme-inverted-button{background:#14120b!important;background:var(--button-inverted-bg)!important;box-shadow:0 8px 25px #14120b4d!important;box-shadow:var(--button-inverted-shadow)!important;color:#f7f7f4!important;color:var(--button-inverted-text)!important}.theme-inverted-button:hover{background:#1c1a13!important;background:var(--button-inverted-hover)!important;box-shadow:0 12px 30px #14120b66!important;box-shadow:var(--button-inverted-shadow-hover)!important}@keyframes pulse{0%{opacity:.2;transform:scale(1)}50%{opacity:.4;transform:scale(1.05)}to{opacity:.2;transform:scale(1)}}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@media (max-width:1024px){.max-w-4xl{padding:0 1rem}}@media (max-width:768px){body{font-size:14px}.px-8{padding-left:1rem;padding-right:1rem}.px-4{padding-left:.5rem;padding-right:.5rem}.p-8{padding:1rem}.text-5xl{font-size:2rem}.text-2xl{font-size:1.25rem}.text-xl{font-size:1.1rem}.mb-16{margin-bottom:2rem}.mb-8{margin-bottom:1rem}}@media (max-width:480px){.text-5xl{font-size:1.5rem}.text-2xl{font-size:1.1rem}.text-xl{font-size:1rem}}.site-header{background:var(--bg-primary);border-bottom:1px solid var(--border);height:68px;inset:0 0 auto;position:fixed;z-index:1000}.site-header-inner{box-sizing:border-box;gap:20px;height:100%;justify-content:space-between;margin:0 auto;max-width:1120px;padding:0 32px}.site-brand,.site-header-inner{align-items:center;display:flex}.site-brand{color:var(--text-primary);font-size:12px;font-weight:500;gap:16px;text-decoration:none}.site-header-controls{align-items:center;display:flex;gap:24px}.site-navigation{align-items:center;display:flex;gap:26px}.site-navigation a{color:var(--text-muted);font-size:11px;padding:10px 0;text-decoration:none}.site-menu-toggle,.site-navigation a:hover,.site-navigation a[aria-current=page]{color:var(--text-primary)}.site-menu-toggle{background:#0000;border:1px solid var(--border);border-radius:4px;cursor:pointer;display:none;font:inherit;font-size:11px;min-height:36px;padding:0 10px}.site-footer a:focus-visible,.site-header a:focus-visible,.site-header button:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.site-skip-link{background:var(--text-primary);color:var(--bg-primary);padding:12px;position:absolute;text-decoration:none;top:-80px}.site-skip-link:focus{top:8px}.site-footer{background:var(--bg-primary);color:var(--text-muted)}.site-footer-inner{align-items:flex-start;box-sizing:border-box;display:flex;flex-direction:column;font-size:12px;gap:10px;justify-content:flex-start;margin:0 auto;max-width:1120px;padding:24px 32px}.site-footer nav{display:flex;flex-wrap:wrap;gap:22px}.site-footer a{color:var(--text-muted);padding:6px 0;text-decoration:none}.site-footer a:hover{color:var(--text-primary)}@media (max-width:600px){.site-header-inner{gap:12px;padding:0 22px}.site-brand{font-size:10px;gap:10px}.site-header-controls{gap:12px}.site-menu-toggle{display:block}.site-navigation{background:var(--bg-primary);border-bottom:1px solid var(--border);display:none;gap:26px;position:absolute;top:68px;inset-inline:0;padding:14px 22px}.site-navigation.is-open{display:flex}.site-navigation a{align-items:center;display:flex;font-size:12px;min-height:36px}.site-footer-inner{align-items:flex-start;flex-direction:column;gap:10px;padding:22px}.site-theme-toggle>span{display:none}}.experience-prose{color:var(--text-muted);font-size:16px;line-height:1.9;margin:0}.experience-prose a{color:var(--text-primary);text-decoration:none}.experience-prose a:hover{opacity:.75}.experience-prose a:focus-visible{outline:2px solid var(--ring);outline-offset:4px}@media (max-width:600px){.experience-prose{font-size:14px}}.home-page{margin:0 auto;max-width:1120px;padding:144px 32px 0}.home-page,.home-page *{box-sizing:border-box}.home-intro{max-width:720px;padding-bottom:4px}.home-intro h1{color:var(--text-primary);font-size:24px;font-weight:500;letter-spacing:-.025em;line-height:1.4;margin:0}.home-introduction{color:var(--text-muted);font-size:16px;line-height:1.85;margin:28px 0;max-width:620px}.home-story{max-width:720px}.home-story>p{color:var(--text-muted);font-size:16px;line-height:1.9;margin:0 0 24px}.home-story>p:last-child{margin-bottom:0}.home-story a{color:var(--text-primary);text-decoration:none}.home-story a:hover{opacity:.75}.home-page a:focus-visible{outline:2px solid var(--ring);outline-offset:5px}@media (max-width:850px){.home-page{padding-top:120px}}@media (max-width:600px){.home-page{padding:108px 22px 0}.home-introduction{font-size:14px;line-height:1.8;margin:22px 0}.home-story>p{font-size:14px;line-height:1.85}}@media (prefers-reduced-motion:reduce){.home-page *{transition:none}}.projects-page{box-sizing:border-box;margin:0 auto;max-width:1120px;padding:144px 32px 64px}.projects-page h1{color:var(--text-primary);font-size:24px;font-weight:500;letter-spacing:-.025em;margin:0 0 40px}.projects-list{list-style:none;margin:0;max-width:720px;padding:0}.projects-list li+li{margin-top:32px}.projects-entry-heading{align-items:baseline;display:flex;gap:24px;justify-content:space-between}.projects-entry-heading h2{font-size:16px;font-weight:500;line-height:1.6;margin:0;min-width:0}.projects-entry-heading a{color:var(--text-primary);text-decoration:none}.projects-entry-heading a:hover{opacity:.75}.projects-entry-heading a:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.projects-entry-heading time{color:var(--text-muted);flex-shrink:0;font-size:12px}.projects-list p{color:var(--text-muted);font-size:14px;line-height:1.8;margin:6px 0 0}@media (max-width:850px){.projects-page{padding-top:120px}}@media (max-width:600px){.projects-page{padding:108px 22px 36px}.projects-page h1{margin-bottom:32px}.projects-entry-heading{gap:16px}.projects-entry-heading h2{font-size:15px}.projects-list p{font-size:13px}.projects-list li+li{margin-top:28px}}.technical-project,.writing-post{--fig-bg:var(--bg-primary);--fig-zone:var(--bg-secondary);--fig-ink:var(--text-primary);--fig-live:#2251d1;--fig-store:#0f766e;--fig-notify:#b45309;--fig-error:#c0362c;--fig-mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}[data-theme=dark] .technical-project,[data-theme=dark] .writing-post{--fig-live:#8aa9ff;--fig-store:#5ccfc0;--fig-notify:#f0b35a;--fig-error:#ff8f80}.fig{margin:0 0 24px}.fig-scroll{background:var(--fig-bg);border:1px solid var(--border);border-radius:8px;overflow-x:auto}.fig-scroll:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.fig-svg{box-sizing:border-box;display:block;font-family:inherit;height:auto;min-width:820px;padding:12px;width:100%}.fig-box{fill:var(--fig-bg);stroke:var(--border-strong);stroke-width:1.2}.fig-sub{fill:var(--fig-zone);stroke:var(--border);stroke-width:1}.fig-dashed{fill:var(--fig-bg);stroke:var(--border-strong);stroke-width:1.2;stroke-dasharray:4 3}.fig-store{fill:var(--fig-bg);stroke:var(--fig-store);stroke-width:1.4}.fig-zone{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:5 4}.fig-thead,.fig-zone{fill:var(--fig-zone)}.fig-outline{fill:none;stroke:var(--border-strong);stroke-width:1.2}.fig-lifeline{stroke:var(--border-strong);stroke-width:1;stroke-dasharray:2 4;fill:none}.fig-activation{fill:var(--fig-live)}.fig-title{fill:var(--text-primary);font-size:14px;font-weight:600}.fig-chip,.fig-title-sm{font-size:13px}.fig-chip{fill:var(--text-primary)}.fig-cap,.fig-label,.fig-mono{fill:var(--text-muted);font-family:var(--fig-mono);font-size:11px}.fig-mono-strong{fill:var(--text-secondary)}.fig-cap{font-size:10.5px;letter-spacing:.06em}.fig-halo{stroke:var(--fig-bg);stroke-width:5px;stroke-linejoin:round;paint-order:stroke}.fig-text-ink{fill:var(--fig-ink)}.fig-text-live{fill:var(--fig-live)}.fig-text-store{fill:var(--fig-store)}.fig-text-notify{fill:var(--fig-notify)}.fig-line{fill:none;stroke-width:1.6}.fig-line-ink{stroke:var(--fig-ink)}.fig-line-live{stroke:var(--fig-live)}.fig-line-store{stroke:var(--fig-store)}.fig-line-notify{stroke:var(--fig-notify);stroke-dasharray:6 4}.fig-head-ink{fill:var(--fig-ink)}.fig-head-live{fill:var(--fig-live)}.fig-head-store{fill:var(--fig-store)}.fig-head-notify{fill:var(--fig-notify)}.technical-project .fig figcaption,.writing-post .fig figcaption{color:var(--text-muted);display:flex;flex-direction:column;font-size:12px;gap:8px;line-height:1.7;margin-top:12px}.fig-legend{display:flex;flex-wrap:wrap;gap:6px 24px}.fig-key{align-items:center;display:inline-flex;gap:8px;white-space:nowrap}.fig-key:before{border-top:2px solid var(--fig-ink);content:"";width:24px}.fig-key-live:before{border-color:var(--fig-live)}.fig-key-store:before{border-color:var(--fig-store)}.fig-key-notify:before{border-color:var(--fig-notify);border-top-style:dashed}.fig-caption{max-width:760px}.fig-columns{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.fig-pipeline{--rail:var(--fig-ink);border:1px solid var(--border);border-radius:8px;padding:20px}.fig-pipeline-live{--rail:var(--fig-live)}.fig-flow h3,.fig-pipeline h3{font-size:15px;font-weight:600;margin:0 0 8px}.technical-project .fig-path{background:none;color:var(--text-muted);display:block;font-size:11.5px;line-height:1.6;padding:0}.fig-pipeline ol{list-style:none;margin:18px 0 0;padding:0}.fig-pipeline li{padding:0 0 18px 26px;position:relative}.fig-pipeline li:last-child{padding-bottom:0}.fig-pipeline li:before{background:var(--fig-bg);border:2px solid var(--rail);border-radius:50%;content:"";height:9px;left:0;position:absolute;top:4px;width:9px;z-index:1}.fig-pipeline li:after{background:var(--border-strong);bottom:-4px;content:"";left:5.5px;position:absolute;top:10px;width:2px}.fig-pipeline li:last-child:after{display:none}.fig-pipeline strong{display:block;font-size:14px;font-weight:600;line-height:1.4}.fig-pipeline li span{color:var(--text-secondary);display:block;font-size:13px;line-height:1.7;margin-top:4px}.fig-flows{grid-gap:12px;display:grid;gap:12px}.fig-flow{border:1px solid var(--border);border-radius:8px;padding:18px 20px}.fig-flow ol{display:flex;flex-wrap:wrap;gap:10px 0;list-style:none;margin:12px 0 0;padding:0}.fig-flow li{align-items:center;display:flex}.fig-flow li:not(:last-child):after{color:var(--text-muted);content:"→";margin:0 10px}.fig-flow li span,.fig-flow-key span{border:1px solid var(--border-strong);border-radius:5px;color:var(--text-primary);font-size:13px;line-height:1.5;padding:6px 12px}.fig-flow li .fig-flow-check,.fig-flow-key .fig-flow-check{border-style:dashed;color:var(--text-secondary)}.fig-flow li .fig-flow-out,.fig-flow-key .fig-flow-out{border-color:var(--fig-notify);color:var(--fig-notify);font-weight:500}.technical-project .fig-flow code{background:none;padding:0}.fig-flow-key{display:flex;flex-wrap:wrap;font-size:12px;gap:8px 12px;margin:4px 0 0}.fig-flow-key span{color:var(--text-muted);font-size:11.5px;padding:2px 9px}.fig-table table{border-collapse:collapse;font-size:13px;line-height:1.6;min-width:640px;width:100%}.fig-table th{color:var(--text-muted);font-family:var(--fig-mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;padding:12px 16px;text-align:left;text-transform:uppercase}.fig-table td,.fig-table th{border-bottom:1px solid var(--border)}.fig-table td{color:var(--text-secondary);padding:11px 16px;vertical-align:top}.fig-table tr:last-child td{border-bottom:0}.fig-table td:nth-child(2){color:var(--text-muted);white-space:nowrap}.technical-project .fig-table code{background:none;color:var(--text-primary);padding:0;white-space:nowrap}@media (max-width:720px){.fig-columns{grid-template-columns:1fr}}.fig-keep{fill:var(--fig-bg);stroke:var(--fig-live);stroke-width:1.4}.fig-cost{fill:var(--fig-bg);stroke:var(--fig-notify);stroke-width:1.4;stroke-dasharray:5 4}.fig-rule{stroke:var(--border);stroke-width:1}.fig-text-error{fill:var(--fig-error)}.fig-glyph{fill:var(--fig-ink);stroke:var(--fig-ink);stroke-width:1.6}.fig-glyph-error{fill:var(--fig-error);stroke:var(--fig-error)}.fig-glyph-slow{fill:var(--fig-notify);stroke:var(--fig-notify)}.fig-glyph.is-lost{fill:var(--fig-bg)}.fig-glyph-norm.is-lost{stroke:var(--border-strong)}.technical-project{box-sizing:border-box;color:var(--text-primary);margin:0 auto;max-width:1120px;padding:120px 32px 64px}.technical-project a{color:var(--text-primary);text-decoration:none}.technical-project a:hover{opacity:.75}.technical-project a:focus-visible,.technical-project summary:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.technical-project-back{display:inline-block;font-size:12px;margin-bottom:32px}.technical-project-heading{align-items:baseline;display:flex;gap:24px;justify-content:space-between}.technical-project h1{font-size:32px;font-weight:550;letter-spacing:-.035em;margin:0}.technical-project-subtitle{color:var(--text-muted);font-size:14px;line-height:1.7;margin:12px 0 0}.technical-project time{color:var(--text-muted);font-size:12px;white-space:nowrap}.technical-project-overview{margin:24px 0;max-width:760px}.technical-project p:not(.technical-project-subtitle):not(.technical-project-stack){color:var(--text-secondary);font-size:15px;line-height:1.85;margin:0 0 16px}.technical-project-links{display:flex;flex-wrap:wrap;font-size:13px;gap:24px}.technical-project-stack{color:var(--text-muted);font-size:12px;line-height:1.8;margin:20px 0 40px}.technical-project h2{font-size:20px;font-weight:500;letter-spacing:-.025em;margin:0 0 20px}.technical-project-architecture>p{max-width:760px}.technical-project-details{margin-top:36px}.technical-project details{border-top:1px solid var(--border)}.technical-project details:last-child{border-bottom:1px solid var(--border)}.technical-project summary{cursor:pointer;display:flex;font-size:14px;gap:20px;justify-content:space-between;list-style:none;padding:20px 0}.technical-project summary::-webkit-details-marker{display:none}.technical-project details[open] summary span{transform:rotate(45deg)}.technical-project-detail-content{padding-bottom:8px}.technical-project-detail-content>p{max-width:760px}.technical-project-tradeoffs{color:var(--text-secondary);font-size:15px;line-height:1.85;margin:0 0 16px;max-width:760px;padding-left:20px}.technical-project-tradeoffs li+li{margin-top:12px}.technical-project code{background:var(--bg-secondary);border-radius:3px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em;overflow-wrap:anywhere;padding:2px 4px}@media (max-width:600px){.technical-project{padding:108px 22px 36px}.technical-project h1{font-size:28px}.technical-project-heading{gap:12px}.technical-project p:not(.technical-project-subtitle):not(.technical-project-stack){font-size:14px}.technical-project-back{margin-bottom:24px}}.writing-page{box-sizing:border-box;margin:0 auto;max-width:1120px;padding:144px 32px 64px}.writing-page h1{color:var(--text-primary);font-size:24px;font-weight:500;letter-spacing:-.025em;margin:0 0 40px}.writing-list{list-style:none;margin:0;max-width:720px;padding:0}.writing-list li+li{margin-top:32px}.writing-entry-heading{align-items:baseline;display:flex;gap:24px;justify-content:space-between}.writing-entry-heading h2{font-size:16px;font-weight:500;line-height:1.6;margin:0;min-width:0}.writing-entry-heading a{color:var(--text-primary);text-decoration:none}.writing-entry-heading a:hover{opacity:.75}.writing-entry-heading a:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.writing-entry-heading time{color:var(--text-muted);flex-shrink:0;font-size:12px}.writing-list p{color:var(--text-muted);font-size:14px;line-height:1.8;margin:6px 0 0}.writing-post{box-sizing:border-box;color:var(--text-primary);margin:0 auto;max-width:1120px;padding:120px 32px 64px}.writing-post a{color:var(--text-primary);text-decoration:none}.writing-post a:hover{opacity:.75}.writing-post a:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.writing-post-back{display:inline-block;font-size:12px;margin-bottom:32px}.writing-post-heading{align-items:baseline;display:flex;gap:24px;justify-content:space-between;margin-bottom:24px}.writing-post h1{font-size:32px;font-weight:550;letter-spacing:-.035em;margin:0}.writing-post time{color:var(--text-muted);font-size:12px;white-space:nowrap}.writing-post h2{font-size:20px;font-weight:500;letter-spacing:-.025em;margin:36px 0 16px}.writing-post>p{color:var(--text-secondary);font-size:15px;line-height:1.85;margin:0 0 16px;max-width:760px}.writing-post .fig{margin-top:24px}.writing-post>.writing-post-stack{color:var(--text-muted);font-size:12px;line-height:1.8;margin:40px 0 0}@media (max-width:850px){.writing-page{padding-top:120px}}@media (max-width:600px){.writing-page{padding:108px 22px 36px}.writing-page h1{margin-bottom:32px}.writing-entry-heading{gap:16px}.writing-entry-heading h2{font-size:15px}.writing-list p{font-size:13px}.writing-list li+li{margin-top:28px}.writing-post{padding:108px 22px 36px}.writing-post h1{font-size:28px}.writing-post-heading{gap:12px}.writing-post>p{font-size:14px}.writing-post-back{margin-bottom:24px}}
/*# sourceMappingURL=main.99f0732f.css.map*/