@font-face{font-family:sans;src:url(../media/InstrumentSans-s.p.1jfqw11iq041i.ttf)format("truetype");font-display:swap}@font-face{font-family:sans Fallback;src:local(Arial);ascent-override:93.97%;descent-override:24.22%;line-gap-override:0.0%;size-adjust:103.22%}.sans_ce4607db-module__-m0-ka__className{font-family:sans,sans Fallback}.sans_ce4607db-module__-m0-ka__variable{--font-sans:"sans", "sans Fallback"}
@font-face{font-family:"serif";src:url(../media/InstrumentSerif_Regular-s.p.0accj_e91w0ot.ttf)format("truetype");font-display:swap;font-weight:400}@font-face{font-family:serif Fallback;src:local(Arial);ascent-override:128.92%;descent-override:40.37%;line-gap-override:0.0%;size-adjust:76.79%}.serif_d75477b3-module__sR9TdW__className{font-family:"serif",serif Fallback;font-weight:400}.serif_d75477b3-module__sR9TdW__variable{--font-serif:"serif", "serif Fallback"}
.preview-section{max-width:1160px;margin:0 auto;padding:0 24px}.work-preview{background:#1b2944;border-radius:18px;padding:48px;position:relative;overflow:hidden}.preview-landscape{object-fit:cover;object-position:center 57%}.work-preview:after{content:"";pointer-events:none;background:linear-gradient(#17284c05,#0b1b2a30);position:absolute;inset:0}.preview-window{z-index:1;background:var(--panel);border:1px solid #ffffff50;border-radius:12px;position:relative;overflow:hidden;box-shadow:0 25px 65px #0005}.preview-toolbar{border-bottom:1px solid var(--line);height:42px;color:var(--muted);justify-content:space-between;align-items:center;gap:20px;padding:0 20px;font-size:11px;display:flex}.window-dots{gap:5px;display:flex}.window-dots i{background:var(--line);border-radius:50%;width:7px;height:7px}.window-dots i:first-child{background:#e3a2a0}.window-dots i:nth-child(2){background:#e6c782}.window-dots i:last-child{background:#94b69c}.preview-live{align-items:center;gap:6px;font-size:10px;display:flex}.preview-live i{background:#57936c;border-radius:50%;width:5px;height:5px}.preview-tabs{border-bottom:1px solid var(--line);background:var(--panel);justify-content:center;gap:8px;padding:13px 16px;display:flex}.preview-tabs button{color:var(--muted);background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:8px;padding:7px 16px;font-size:12px;display:inline-flex}.preview-tabs button[aria-selected=true]{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:0 1px 2px #00000006}.preview-tabs button>span{font-size:17px;line-height:1}.preview-panel{grid-template-columns:40% 60%;min-height:350px;display:grid}.preview-copy{align-self:center;padding:40px 16px 36px 38px;animation:.35s both content-in}.preview-company{color:var(--muted);margin-bottom:10px;font-size:11px;display:inline-block}.preview-copy h2{font-family:var(--font-serif), serif;letter-spacing:-.7px;white-space:pre-line;font-size:37px;font-weight:400;line-height:1.1}.preview-copy>p{color:var(--muted);max-width:270px;margin-top:14px;font-size:12px;line-height:1.75}.text-link{color:var(--ink);border-bottom:1px solid var(--line);align-items:center;gap:14px;margin-top:20px;padding-bottom:3px;font-size:11px;display:inline-flex}.preview-illustration{background:radial-gradient(ellipse at center, var(--accent-soft), transparent 70%);min-height:350px;animation:.5s cubic-bezier(.2,.8,.2,1) both illustration-in;position:relative;overflow:hidden}.illustration-caption{color:var(--muted);opacity:.8;font-size:9px;position:absolute;bottom:10px;right:17px}.mini-browser{background:var(--panel);border:1px solid var(--line);width:295px;height:218px;box-shadow:var(--shadow);border-radius:10px;position:absolute;top:57px;left:14px;transform:rotate(-5deg)}.mini-browser-top{border-bottom:1px solid var(--line);justify-content:space-between;padding:12px 15px;font-size:9px;display:flex}.mini-browser-top span:first-child{font-weight:600}.mini-calendar{padding:13px 15px}.mini-calendar>p{font-size:12px;font-weight:500}.calendar-days{justify-content:space-between;gap:6px;margin:10px 0;display:flex}.calendar-days>span{text-align:center;color:var(--muted);font-size:7px}.calendar-days b{color:var(--ink);border-radius:4px;margin-top:4px;padding:1px 6px;font-size:11px;font-weight:500;display:block}.calendar-days .is-today{background:var(--ink);color:var(--bg)}.calendar-event{background:var(--accent-soft);border-radius:4px;align-items:center;gap:7px;margin-top:5px;padding:7px 8px;font-size:9px;display:flex}.calendar-event i{background:#6c83da;border-radius:3px;align-self:stretch;width:3px}.calendar-event small{color:var(--muted);margin-left:auto;font-size:7px}.calendar-event.second{background:var(--surface)}.calendar-event.second i{background:#a0b193}.mini-phone{background:var(--panel);border:5px solid #27272a;border-radius:26px;width:157px;height:299px;position:absolute;top:22px;left:54%;transform:rotate(7deg);box-shadow:0 15px 30px #0002,0 0 0 1px #ffffff30}.phone-notch{background:#27272a;border-radius:0 0 8px 8px;width:49px;height:10px;position:absolute;top:0;left:50%;transform:translate(-50%)}.phone-content{padding:21px 12px 9px}.phone-content>strong{letter-spacing:-1px;font-size:19px}.phone-content>strong span{color:var(--muted)}.phone-content>p{color:var(--muted);margin-top:13px;font-size:7px}.phone-content>h3{margin-top:3px;font-size:14px;font-weight:500;line-height:1.3}.phone-label{color:var(--muted);margin-top:17px;margin-bottom:5px;font-size:7px;display:block}.phone-event{border:1px solid var(--line);border-radius:7px;padding:9px;font-size:9px}.phone-event small{color:var(--muted);margin-top:2px;font-size:7px;display:block}.avatar-stack{margin-top:9px;display:flex}.avatar-stack i{border:1px solid var(--panel);color:#55658b;background:#dae1f7;border-radius:50%;place-items:center;width:16px;height:16px;margin-right:-4px;font-size:6px;font-style:normal;display:grid}.avatar-stack i:nth-child(2){color:#756246;background:#e2d9cd}.phone-action{background:var(--ink);color:var(--bg);border-radius:5px;justify-content:space-between;margin-top:8px;padding:6px 8px;font-size:7px;display:flex}.phone-nav{color:var(--muted);justify-content:space-around;margin-top:12px;font-size:11px;display:flex}.phone-home{background:var(--ink);border-radius:8px;width:38px;height:3px;position:absolute;bottom:5px;left:50%;transform:translate(-50%)}.floating-note{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:8px;align-items:center;gap:8px;padding:10px 15px;font-size:10px;display:flex;position:absolute;bottom:35px;left:20px;transform:rotate(-3deg)}.floating-note>span{color:#459364}.notes-preview{border:1px solid var(--line);background:var(--panel);width:335px;max-width:calc(100% - 45px);box-shadow:var(--shadow);border-radius:10px;margin:23px auto;transform:rotate(2deg)}.notes-bar{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:10px 15px;font-size:10px;display:flex}.notes-bar>span:last-child{color:#57936c;margin-left:auto;font-size:8px}.notes-body{padding:18px 23px}.notes-kicker{color:var(--muted);font-size:8px}.notes-body h3{font-family:var(--font-serif), serif;font-size:26px;font-weight:400}.meeting-avatars{align-items:center;margin:8px 0 16px;display:flex}.meeting-avatars i{border:1px solid var(--panel);background:var(--accent-soft);border-radius:50%;place-items:center;width:20px;height:20px;margin-right:-4px;font-size:7px;font-style:normal;display:grid}.meeting-avatars>span{color:var(--muted);margin-left:10px;font-size:8px}.notes-body h4{margin:10px 0 5px;font-size:10px;font-weight:500}.notes-body>p:not(.notes-kicker){color:var(--muted);font-size:9px}.note-line{background:var(--line);border-radius:4px;width:95%;height:4px;margin-top:7px}.note-line.short{width:69%}.note-task{align-items:center;gap:6px;margin:5px 0;display:flex}.note-task span{color:#57936c}.notes-footer{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:7px;margin-top:12px;padding-top:10px;font-size:8px;display:flex}.workflow-preview{max-width:350px;margin:25px auto;padding:0 15px}.workflow-prompt{align-items:center;gap:10px;display:flex}.workflow-avatar{color:#56648a;background:#e0e7f8;border-radius:50%;place-items:center;width:28px;height:28px;font-size:11px;display:grid}.workflow-prompt p{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 15px;font-size:11px}.workflow-wire{background:var(--line);width:1px;height:25px;margin:auto}.workflow-node{border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:12px;padding:14px;display:flex}.workflow-node>span{color:var(--accent);font-size:25px}.workflow-node strong{font-size:10px;font-weight:500}.workflow-node small{color:var(--muted);font-size:8px;display:block}.workflow-node>i{color:#5b9b6c;margin-left:auto;font-style:normal}.workflow-branches{grid-template-columns:1fr 1fr;gap:14px;display:grid}.workflow-branches>div{border:1px solid var(--line);background:var(--panel);text-align:center;border-radius:8px;padding:12px}.workflow-branches>div>span{font-size:23px;line-height:24px}.workflow-branches img{object-fit:contain}.workflow-branches p{margin-top:5px;font-size:10px}.workflow-branches small{color:var(--muted);font-size:8px}.workflow-status{color:var(--muted);justify-content:center;align-items:center;gap:6px;margin-top:18px;font-size:10px;display:flex}.workflow-status i{background:#57936c;border-radius:50%;width:5px;height:5px}
:root{--bg:#fff;--ink:#171717;--intro-ink:#000;--muted:#626262;--line:#e5e5e5;--surface:#f5f5f5;--panel:#fff;--accent:#171717;--accent-soft:#ebebeb;--motion-line:#383c42;--motion-particle:#3b82f6;--github-0:#eff2f5;--github-1:#aceebb;--github-2:#4ac26b;--github-3:#2da44e;--github-4:#116329;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#000;--ink:#f5f5f5;--intro-ink:#f5f5f5;--muted:#a3a3a3;--line:#262626;--surface:#171717;--panel:#0a0a0a;--accent:#f5f5f5;--accent-soft:#262626;--motion-line:#8994a5;--motion-particle:#5ea4ff;--github-0:#151b23;--github-1:#033a16;--github-2:#196c2e;--github-3:#2ea043;--github-4:#56d364;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{isolation:isolate;background:var(--bg);color:var(--ink);font-family:var(--font-sans), sans-serif;-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.65}::selection{background:var(--accent-soft);color:var(--ink)}h1,h2,h3,h4,h5,p{margin:0}a{color:inherit;text-underline-offset:4px;text-decoration:none}a:hover{text-decoration:underline}button,a,summary{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:4px;border-radius:4px}svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:16px;height:16px}.site-shell{z-index:1;width:100%;max-width:672px;margin:0 auto;padding:88px 24px 140px;position:relative}.skip-link{z-index:100;background:var(--panel);border:1px solid var(--line);padding:10px 16px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:10px}.hero{grid-template-columns:minmax(0,1fr) 120px;align-items:center;gap:24px;min-height:124px;display:grid;position:relative}.hero-avatar{object-fit:cover;border-radius:8px;width:120px;height:120px}.hero h1{color:var(--intro-ink);letter-spacing:-1.7px;font-size:clamp(34px,4vw,46px);font-weight:400;line-height:1.15}.hero-tagline{margin-top:10px;font-size:16px}.site-background{z-index:0;pointer-events:none;opacity:.7;position:fixed;inset:0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000,#000000b3 calc(50% - 400px),#00000024 calc(50% - 312px) calc(50% + 312px),#000000b3 calc(50% + 400px),#000);mask-image:linear-gradient(90deg,#000,#000000b3 calc(50% - 400px),#00000024 calc(50% - 312px) calc(50% + 312px),#000000b3 calc(50% + 400px),#000)}.hero-lines{stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;width:100%;height:100%;display:block}.section{margin-top:40px;scroll-margin-top:32px}.section h2{letter-spacing:-.4px;margin-bottom:14px;font-size:21px;font-weight:600;line-height:1.3}.about p{color:var(--muted)}.about p+p{margin-top:14px}.summary-text{color:var(--muted)}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.experience-item{scroll-margin-top:32px}.experience-item>summary{align-items:flex-start;gap:16px;padding:12px 0;display:flex}.experience-item:first-child>summary{padding-top:0}.experience-logo{border:1px solid var(--line);background:#fff;border-radius:50%;flex:0 0 46px;justify-content:center;align-items:center;width:46px;height:46px;display:flex;overflow:hidden}.experience-logo img{object-fit:contain;width:46px;height:46px;padding:7px}.experience-logo-cal img{padding:0}.experience-summary{flex:1;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:2px 8px;min-width:0;display:grid}.experience-heading{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.experience-heading h3{font-size:16px;font-weight:600;line-height:1.5}.experience-badge{background:var(--surface);white-space:nowrap;border-radius:4px;padding:1px 5px;font-size:11px}.experience-chevron{width:10px;height:10px;color:var(--muted);transition:transform .2s}.experience-item[open]>summary .experience-chevron{transform:rotate(90deg)}.period{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:2px;font-size:13px}.experience-summary>p{grid-column:1/-1;font-size:14px;line-height:1.5}.experience-teaser{color:var(--muted);grid-column:1/-1;margin-top:3px;font-size:14px;line-height:1.6}.experience-detail{margin:8px 0 26px 62px;font-size:15px}.experience-detail>p{color:var(--muted);margin-bottom:20px}.experience-notes{color:var(--muted);margin:0 0 20px}.experience-notes a{color:var(--ink);text-decoration:underline}.work-list{border-top:1px solid var(--line)}.work-item{border-bottom:1px solid var(--line);scroll-margin-top:32px}.work-item>summary{align-items:flex-start;gap:10px;padding:16px 0;display:flex}.work-icon{color:var(--muted);flex:0 0 20px;padding-top:3px;display:flex}.work-icon svg{width:18px;height:18px}.work-summary{flex:1;min-width:0}.work-title-row{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.work-summary h4{font-size:16px;font-weight:600;line-height:1.5}.work-summary p{color:var(--muted);margin-top:3px;font-size:14px;line-height:1.6}.work-action{color:var(--muted);flex-shrink:0;padding-top:4px}.work-action svg{transition:transform .2s}.work-item[open]>summary .work-action svg{transform:rotate(180deg)}.work-body{padding:4px 0 24px 30px}.story-block h5{margin-bottom:8px;font-size:14px;font-weight:600}.story-block p,.built-list{color:var(--muted);font-size:15px;line-height:1.7}.built-list{margin:14px 0 0;padding-left:18px}.built-list li+li{margin-top:7px}.story-context-grid{gap:22px;margin-top:24px;display:grid}.story-resources{border-top:1px solid var(--line);margin-top:22px;padding-top:16px}.tools{color:var(--muted);flex-wrap:wrap;gap:4px 10px;font-size:13px;display:flex}.tool-list{flex-wrap:wrap;gap:0 5px;margin:0;padding:0;list-style:none;display:flex}.tool-list li:not(:last-child):after{content:","}.proof-links{flex-wrap:wrap;gap:8px 18px;margin:14px 0 0;padding:0;list-style:none;display:flex}.proof-links a{min-height:32px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);align-items:center;gap:4px;font-size:14px;display:inline-flex}.proof-links a:hover{text-decoration-color:currentColor}.proof-links svg{width:12px;height:12px}.proof-links-numbered{padding-left:22px;list-style:decimal;display:block}.proof-links-numbered li{padding-left:4px}.proof-links-numbered li+li{margin-top:3px}.proof-links-numbered li::marker{color:var(--muted);font-size:14px}.proof-links-numbered a{max-width:100%}.project-release{border-left:2px solid var(--line);margin-bottom:20px;padding-left:12px;font-size:14px}.project-status{color:var(--muted);font-size:11px}.skills-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.skills-list li{background:var(--ink);color:var(--bg);border-radius:5px;padding:3px 8px;font-size:12px;font-weight:500;line-height:1.5}.github-activity{margin:0}.github-caption{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-bottom:10px;font-size:11px;display:flex}.github-caption a{align-items:center;gap:7px;min-height:28px;display:inline-flex}.github-total{color:var(--muted);margin:0;font-size:11px}.github-frame{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:19px}.github-calendar{scrollbar-width:thin;overflow-x:auto}.github-activity svg{stroke:none;width:100%;min-width:680px;height:auto;display:block}.github-month,.github-weekday{fill:var(--muted);font-family:inherit;font-size:11px}.github-day{fill:var(--activity-color)}.github-level-0{--activity-color:var(--github-0)}.github-level-1{--activity-color:var(--github-1)}.github-level-2{--activity-color:var(--github-2)}.github-level-3{--activity-color:var(--github-3)}.github-level-4{--activity-color:var(--github-4)}.github-legend{color:var(--muted);justify-content:flex-end;align-items:center;gap:4px;margin-top:10px;font-size:10px;display:flex}.github-legend-cell{background:var(--activity-color);border-radius:2px;width:10px;height:10px}.github-legend>span:first-child{margin-right:3px}.github-legend>span:last-child{margin-left:3px}.github-caption,.github-total{font-size:12px}.github-frame{background:var(--bg);border-radius:8px;padding:12px}.github-activity svg{min-width:560px}.contact p{color:var(--muted)}.contact-email{overflow-wrap:anywhere;margin-top:12px;font-size:15px;text-decoration:underline;display:inline-block}.dock-wrap{z-index:30;bottom:calc(16px + env(safe-area-inset-bottom));pointer-events:none;justify-content:center;display:flex;position:fixed;left:0;right:0}.bottom-dock{pointer-events:auto;border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 92%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:999px;align-items:center;gap:2px;padding:6px;display:flex;box-shadow:0 2px 4px #00000005,0 12px 28px #0000000c}.dock-item,.dock-theme{justify-content:center;align-items:center;width:40px;height:40px;display:flex;position:relative}.dock-item,.theme-toggle{color:var(--ink);border-radius:50%;transition:transform .2s,background-color .2s}.dock-item svg{width:18px;height:18px}.dock-divider{background:var(--line);width:1px;height:24px;margin:0 4px}.theme-toggle{background:0 0;border:0;width:40px;height:40px;padding:10px;display:none}:root[data-theme] .theme-toggle{justify-content:center;align-items:center;display:flex}.theme-toggle svg{width:19px;height:19px}.dock-tooltip{opacity:0;visibility:hidden;pointer-events:none;white-space:nowrap;color:var(--bg);background:var(--ink);border-radius:5px;padding:3px 8px;font-size:12px;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px)}.dock-item:focus-visible .dock-tooltip,.dock-theme:focus-within .dock-tooltip{opacity:1;visibility:visible;transform:translate(-50%)}@media (hover:hover) and (pointer:fine){.dock-item:hover,.dock-theme:hover .theme-toggle{background:var(--surface);text-decoration:none;transform:translateY(-3px)scale(1.13)}.dock-item:hover .dock-tooltip,.dock-theme:hover .dock-tooltip{opacity:1;visibility:visible;transform:translate(-50%)}}.not-found{padding:40px 0}.not-found h1{margin:12px 0;font-size:32px;font-weight:500}.not-found p{color:var(--muted)}.primary-link{margin-top:20px;text-decoration:underline;display:inline-block}@media (max-width:600px){.site-shell{padding:48px 20px 132px}.hero{grid-template-columns:minmax(0,1fr) 88px;gap:20px;min-height:92px}.hero-avatar{width:88px;height:88px}.hero h1{letter-spacing:-1.2px;font-size:36px}.site-background{opacity:.12;-webkit-mask-image:none;mask-image:none}.section{margin-top:34px}.experience-item>summary{gap:12px}.experience-logo,.experience-logo img{width:40px;height:40px}.experience-logo{flex-basis:40px}.experience-summary{grid-template-columns:1fr;gap:2px}.period{grid-row:3;padding:0;font-size:12px}.experience-summary>p{grid-row:2}.experience-teaser{margin-top:4px}.experience-detail{margin-top:10px;margin-left:0}.work-body{padding-left:0}.dock-item,.dock-theme,.theme-toggle{width:34px;height:38px}.bottom-dock{padding:5px}.theme-toggle{padding:8px}.dock-divider{margin:0 3px}}@media (max-width:420px){.hero{grid-template-columns:minmax(0,1fr) 72px;gap:16px}.hero-avatar{width:72px;height:72px}.hero h1{letter-spacing:-.9px;font-size:clamp(24px,7vw,30px)}.hero-tagline{font-size:14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
