@font-face{font-family:OpenRunde;src:url(/fonts/openrunde-regular.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:OpenRunde;src:url(/fonts/openrunde-medium.woff2)format("woff2");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:OpenRunde;src:url(/fonts/openrunde-semibold.woff2)format("woff2");font-style:normal;font-weight:600;font-display:swap}:root{color-scheme:light;--space-2:2px;--space-4:4px;--space-8:8px;--space-12:12px;--space-16:16px;--space-24:24px;--space-32:32px;--space-48:48px;--space-64:64px;--space-96:96px;--space-128:128px;--control-28:28px;--control-30:30px;--control-32:32px;--control-34:34px;--control-36:36px;--radius-full:9999px;--paper:#fff;--paper-rgb:255 255 255;--ink-rgb:0 0 0;--activity-0:#0000000a;--activity-1:#a7f3d0;--activity-2:#34d399;--activity-3:#059669;--activity-4:#065f46;--ink:#000;--muted:rgb(var(--ink-rgb) / .6);--line:rgb(var(--ink-rgb) / .08);--font:"OpenRunde", sans-serif;--content-width:560px;--motion-fast:.18s;--motion-base:.28s;--motion-work:.52s;--motion-work-caption:.2s;--motion-work-caption-delay:60ms;--motion-detail:.44s;--ease-gentle:cubic-bezier(.4, 0, .2, 1);--ease-flow:cubic-bezier(.22, 1, .36, 1)}:root[data-theme=dark]{color-scheme:dark;--paper:#000;--ink:#fff;--paper-rgb:0 0 0;--ink-rgb:255 255 255;--line:#ffffff24;--activity-0:#ffffff14;--activity-1:#064e3b;--activity-2:#047857;--activity-3:#10b981;--activity-4:#6ee7b7}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper:#000;--ink:#fff;--paper-rgb:0 0 0;--ink-rgb:255 255 255;--line:#ffffff24;--activity-0:#ffffff14;--activity-1:#064e3b;--activity-2:#047857;--activity-3:#10b981;--activity-4:#6ee7b7}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--paper);min-height:100svh;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;transition:background-color var(--motion-base) var(--ease-flow), color var(--motion-base) var(--ease-flow);flex-direction:column;margin:0;display:flex;position:relative}button,input,select,textarea{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}a{color:inherit;text-decoration:none}a,button{transition:color var(--motion-fast) var(--ease-flow), background-color var(--motion-base) var(--ease-flow), border-color var(--motion-base) var(--ease-flow), opacity var(--motion-fast) var(--ease-flow), transform var(--motion-fast) var(--ease-flow)}@media (hover:hover){.contact-cta:hover svg{transform:translate(2px)}}.floating-header nav a:active,.contact-cta:active{transform:scale(.97)}.social-link:active,.footer-links a:active,.language-switch a:active{opacity:.65}button,.social-link,.contact-cta{border-radius:var(--radius-full)}.floating-header,main,footer{width:min(var(--content-width), calc(100% - var(--space-64)));margin-left:auto;margin-right:auto}.floating-header{justify-content:space-between;align-items:center;gap:var(--space-24);top:var(--space-24);z-index:10;height:var(--control-36);margin-top:var(--space-32);flex-shrink:0;display:flex;position:sticky}.floating-header nav{align-items:center;gap:var(--space-4);width:max-content;height:var(--control-36);padding:var(--space-4);border-radius:var(--radius-full);background:rgb(var(--paper-rgb) / .9);box-shadow:0 0 0 1px rgb(var(--ink-rgb) / .08), 0 2px 4px rgb(var(--ink-rgb) / .025);backdrop-filter:blur(12px);transition:background-color var(--motion-base) var(--ease-flow), box-shadow var(--motion-base) var(--ease-flow);display:flex}.floating-header button,.floating-header nav a,.contact-cta{height:var(--control-28);padding:0 var(--space-16);font-size:12px;font-weight:400;line-height:var(--space-16);border:0;justify-content:center;align-items:center;display:inline-flex}.floating-header button,.floating-header nav a{border-radius:var(--radius-full);color:rgb(var(--ink-rgb) / .55);background:0 0;flex:none}.floating-header nav a:hover{color:var(--ink);background:rgb(var(--ink-rgb) / .04)}.floating-header button:disabled{opacity:1;cursor:default}.contact-cta{height:var(--control-32);gap:var(--space-8);padding:0 var(--space-12);background:var(--ink);color:var(--paper);flex-shrink:0}.contact-cta:hover{background:rgb(var(--ink-rgb) / .8)}.contact-cta svg{transition:transform var(--motion-base) var(--ease-flow);display:block}main{margin-top:var(--space-64);margin-bottom:var(--space-64);flex:1;min-width:0}h1{margin:0 0 var(--space-16);letter-spacing:-1px;font-size:32px;font-weight:500;line-height:40px}p{color:var(--muted);font-size:16px;font-weight:400;line-height:var(--space-24);letter-spacing:-.15px;margin:0}.github-activity{width:min(480px,100%);margin-top:var(--space-64);position:relative}.activity-tooltip{z-index:5;max-width:100%;padding:6px var(--space-12);border-radius:var(--radius-full);background:var(--ink);color:var(--paper);font-size:10px;line-height:var(--space-16);white-space:nowrap;pointer-events:none;opacity:1;transition:opacity var(--motion-fast) var(--ease-flow), display var(--motion-fast) allow-discrete;position:absolute}.activity-tooltip[hidden]{opacity:0;display:none}@starting-style{.activity-tooltip:not([hidden]){opacity:0}}.activity-day{cursor:default}.activity-day:focus-visible{outline:1px solid var(--ink);outline-offset:var(--space-2)}.activity-heading{justify-content:space-between;align-items:baseline;gap:var(--space-16);margin-bottom:var(--space-24);display:flex}.activity-heading h2{font-size:12px;font-weight:400;line-height:var(--space-16);margin:0}.activity-heading>span{font-size:10px;font-weight:400;line-height:var(--space-16);color:rgb(var(--ink-rgb) / .56)}.activity-scroll{scrollbar-width:thin;scrollbar-color:rgb(var(--ink-rgb) / .18) transparent;max-width:100%;overflow:auto hidden}.activity-scroll:focus-visible{outline:1px solid rgb(var(--ink-rgb) / .3);outline-offset:var(--space-4)}.activity-chart{width:100%;height:auto;display:block}.chart-label{fill:rgb(var(--ink-rgb) / .45);font-family:var(--font);font-size:8px;font-weight:400}.chart-weekday{font-size:7px}.selected-work{margin-top:var(--space-64);scroll-margin-top:var(--space-24)}.selected-work>h2{margin:0 0 var(--space-24);font-size:12px;font-weight:400;line-height:var(--space-16)}.work-stack{--card-width:min(480px, calc(100vw - 128px));--card-offset:calc(var(--card-width) + var(--space-24));column-gap:var(--space-24);width:calc(50vw + 50% - var(--space-16));overflow-clip-margin:var(--space-4);isolation:isolate;display:grid;overflow:clip}.work-item{width:var(--card-width);padding-bottom:var(--space-16);background:var(--paper);border-radius:var(--space-8);transform:translateX(calc(var(--card-offset) * var(--work-order)));z-index:0;transition:background-color var(--motion-base) var(--ease-flow);grid-area:1/1;position:relative}.work-item.is-active{z-index:1}.work-select{z-index:2;border-radius:var(--space-8);cursor:pointer;background:0 0;border:0;width:100%;padding:0;position:absolute;inset:0}.work-select:focus-visible{outline-offset:var(--space-4)}.work-preview{border:1px solid var(--line);border-radius:var(--space-12);background:rgb(var(--ink-rgb) / .008);flex-direction:column;display:flex;overflow:hidden}.window-bar{height:var(--control-32);border-bottom:1px solid rgb(var(--ink-rgb) / .05);background:rgb(var(--ink-rgb) / .015);color:rgb(var(--ink-rgb) / .45);font-size:10px;line-height:var(--space-16);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.window-controls{left:var(--space-12);gap:var(--space-4);display:flex;position:absolute}.window-controls i{width:var(--space-8);height:var(--space-8);border-radius:var(--radius-full);border:1px solid rgb(var(--ink-rgb) / .08);background:#ff5f57}.window-controls i:nth-child(2){background:#febc2e}.window-controls i:nth-child(3){background:#28c840}.window-content{flex:1;min-height:0;overflow:hidden}.work-stack .work-preview{height:304px}.work-preview img{max-width:100%;display:block}.nomicam-preview{justify-content:center;align-items:center;gap:var(--space-24);padding:var(--space-24);display:flex}.nomicam-preview img{border-radius:var(--space-12);width:auto;height:100%;box-shadow:0 0 0 1px rgb(var(--ink-rgb) / .08), 0 4px 16px rgb(var(--ink-rgb) / .04)}.studio-preview{align-items:center;display:flex}.studio-preview img{object-fit:contain;object-position:center;width:100%;height:100%}.work-item h3{margin:var(--space-16) 0 var(--space-8);letter-spacing:-.1px;font-size:14px;font-weight:500;line-height:20px}.work-item p{letter-spacing:0;max-width:440px;font-size:13px;line-height:20px}.work-item h3,.work-item p{opacity:0;visibility:hidden;transition:opacity var(--motion-base) var(--ease-gentle), transform var(--motion-work-caption) var(--ease-gentle), visibility var(--motion-base), color var(--motion-base) var(--ease-flow);transform:translateY(4px)}.work-item.is-active h3,.work-item.is-active p{opacity:1;visibility:visible;transition-duration:var(--motion-work-caption), var(--motion-work-caption), 0s, var(--motion-base);transition-delay:var(--motion-work-caption-delay), var(--motion-work-caption-delay), 0s, 0s;transform:translateY(0)}.work-preview{transition:border-color var(--motion-base) var(--ease-flow), background-color var(--motion-base) var(--ease-flow)}@media (hover:hover){.work-item:has(.work-select:hover) .work-preview{border-color:rgb(var(--ink-rgb) / .16)}}.work-select:active+.work-preview{border-color:rgb(var(--ink-rgb) / .24)}footer{margin-bottom:var(--space-32);padding-top:var(--space-16);border-top:1px solid var(--line)}footer:focus{outline:none}footer:focus-visible{outline:2px solid rgb(var(--ink-rgb) / .25);outline-offset:var(--space-8)}.social-links{align-items:center;column-gap:var(--space-24);row-gap:var(--space-8);flex-wrap:wrap;display:flex}.social-link{justify-content:center;align-items:center;gap:var(--space-8);height:var(--control-32);color:rgb(var(--ink-rgb) / .65);font-size:11px;font-weight:400;line-height:var(--space-16);background:0 0;border:0;padding:0;display:inline-flex}.social-link:hover{color:var(--ink)}.social-link svg{flex-shrink:0;display:block}.footer-links{gap:var(--space-24);margin-top:var(--space-8);flex-wrap:wrap;display:flex}.footer-links a{min-height:var(--control-28);color:rgb(var(--ink-rgb) / .45);font-size:11px;line-height:var(--space-16);align-items:center;display:inline-flex}.footer-links a:hover{color:var(--ink)}.copyright{margin-top:var(--space-16);color:rgb(var(--ink-rgb) / .56);font-size:10px;font-weight:400;line-height:var(--space-16);letter-spacing:0}.privacy-content{max-width:480px}.privacy-content section{margin-top:var(--space-32)}.privacy-content h2{margin:0 0 var(--space-8);font-size:14px;font-weight:500;line-height:20px}.privacy-content p{font-size:14px;line-height:var(--space-24)}.privacy-content a{text-underline-offset:var(--space-4);text-decoration:underline}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:var(--space-4)}::selection{background:rgb(var(--ink-rgb) / .12)}.measure-ruler{pointer-events:none;background-image:repeating-linear-gradient(to bottom,rgb(var(--ink-rgb) / .22) 0 1px,transparent 1px 64px),repeating-linear-gradient(to bottom,rgb(var(--ink-rgb) / .14) 0 1px,transparent 1px 16px),repeating-linear-gradient(to bottom,rgb(var(--ink-rgb) / .08) 0 1px,transparent 1px 4px);background-repeat:no-repeat;background-size:16px 100%,10px 100%,4px 100%;width:40px;position:absolute;inset:0 auto 0 0;overflow:hidden}#ruler-labels{position:absolute;inset:0}#ruler-labels span{transform:translateY(var(--space-4));color:rgb(var(--ink-rgb) / .3);font-size:6px;line-height:var(--space-8);font-variant-numeric:tabular-nums;font-weight:400;position:absolute;left:20px}@media (width<=700px){.measure-ruler{width:20px}#ruler-labels{display:none}}@media (width<=600px){.floating-header{top:var(--space-16);margin-top:var(--space-24)}main{margin-top:var(--space-48);margin-bottom:var(--space-64)}h1{font-size:28px;line-height:var(--space-32)}p{font-size:15px;line-height:var(--space-24)}footer{margin-bottom:var(--space-24)}.activity-heading{gap:var(--space-8)}.activity-heading>span{font-size:9px}.github-activity,.selected-work{margin-top:var(--space-48)}.work-stack{--card-offset:calc(var(--card-width) + var(--space-16));column-gap:var(--space-16)}.work-stack .work-preview{height:240px}.nomicam-preview{gap:var(--space-16);padding:var(--space-24) var(--space-16)}.nomicam-preview img{width:calc((100% - var(--space-16)) / 2);object-fit:contain;height:auto;max-height:100%}}@media (prefers-reduced-transparency:reduce){.floating-header nav{background:var(--paper);-webkit-backdrop-filter:none}}.language-switch{gap:var(--space-16);margin-top:var(--space-12);display:flex}.language-switch a{min-height:var(--control-28);font-size:11px;line-height:var(--space-16);color:rgb(var(--ink-rgb) / .45);align-items:center;display:inline-flex}.language-switch a[aria-current=page],.language-switch a:hover{color:var(--ink)}.footer-meta{justify-content:space-between;align-items:center;gap:var(--space-8) var(--space-24);margin-top:var(--space-8);flex-wrap:wrap;display:flex}.footer-meta .footer-links,.footer-meta .language-switch{margin-top:0}.pixel-character{z-index:12;cursor:grab;touch-action:none;user-select:none;background:0 0;border:0;justify-content:center;align-items:center;width:88px;height:80px;padding:0;display:flex;position:fixed;top:184px;left:max(48px,50vw - 424px)}.pixel-character img{object-fit:contain;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;display:block}.pixel-character.is-dragging{cursor:grabbing}@media (width<=800px){.pixel-character{top:auto;left:auto;right:var(--space-16);bottom:var(--character-bottom,var(--space-24));width:64px;height:56px}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.footer-bottom{justify-content:space-between;align-items:center;gap:var(--space-8) var(--space-16);margin-top:var(--space-16);flex-wrap:wrap;display:flex}.footer-bottom .copyright{margin-top:0}.theme-switch{flex-shrink:0;margin-left:auto;position:relative}.theme-trigger{justify-content:space-between;align-items:center;gap:var(--space-8);min-width:112px;height:var(--control-28);padding:0 var(--space-12);color:rgb(var(--ink-rgb) / .65);border:1px solid var(--line);background:var(--paper);font-size:11px;line-height:var(--space-16);cursor:pointer;display:inline-flex}.theme-trigger svg{flex-shrink:0;display:block}.theme-trigger [data-theme-label]{text-align:left;flex:1}.theme-chevron{transition:transform var(--motion-base) var(--ease-flow)}.theme-trigger[aria-expanded=true] .theme-chevron{transform:rotate(180deg)}.theme-trigger:hover,.theme-trigger[aria-expanded=true]{color:var(--ink);border-color:rgb(var(--ink-rgb) / .24)}.theme-trigger:active{background:rgb(var(--ink-rgb) / .06)}.theme-menu{z-index:20;right:0;bottom:calc(100% + var(--space-8));min-width:144px;padding:var(--space-4);border:1px solid var(--line);border-radius:var(--space-16);background:var(--paper);color:var(--ink);opacity:1;transform-origin:100% 100%;transition:opacity var(--motion-fast) var(--ease-flow), transform var(--motion-base) var(--ease-flow), display var(--motion-base) allow-discrete, background-color var(--motion-base) var(--ease-flow), border-color var(--motion-base) var(--ease-flow);position:absolute;transform:translateY(0);box-shadow:0 8px 24px #00000014}.theme-menu[hidden]{opacity:0;pointer-events:none;display:none;transform:translateY(4px)}@starting-style{.theme-menu:not([hidden]){opacity:0;transform:translateY(4px)}}.theme-option{justify-content:space-between;align-items:center;gap:var(--space-12);width:100%;height:var(--control-28);padding:0 var(--space-12);color:rgb(var(--ink-rgb) / .65);font-size:11px;line-height:var(--space-16);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}.theme-option:hover,.theme-option:focus-visible{background:rgb(var(--ink-rgb) / .06);color:var(--ink)}.theme-option:focus-visible{outline:1px solid rgb(var(--ink-rgb) / .24);outline-offset:-1px}.theme-option:active{background:rgb(var(--ink-rgb) / .1)}.theme-option[aria-checked=true]{color:var(--ink)}.theme-check{opacity:0;transition:opacity var(--motion-fast) var(--ease-flow);flex-shrink:0}.theme-option[aria-checked=true] .theme-check{opacity:1}.chart-label,.activity-day,.chart-legend rect{transition:fill var(--motion-base) var(--ease-flow)}.window-bar{transition:background-color var(--motion-base) var(--ease-flow), color var(--motion-base) var(--ease-flow), border-color var(--motion-base) var(--ease-flow)}.home-blog{margin-top:var(--space-64)}.section-heading{justify-content:space-between;align-items:center;gap:var(--space-16);margin-bottom:var(--space-24);display:flex}.section-heading h2{font-size:12px;font-weight:400;line-height:var(--space-16);margin:0}.all-posts{align-items:center;gap:var(--space-8);height:var(--control-28);padding:0 var(--space-12);border:1px solid var(--line);border-radius:var(--radius-full);color:rgb(var(--ink-rgb) / .65);font-size:11px;display:inline-flex}.all-posts:hover{color:var(--ink);border-color:rgb(var(--ink-rgb) / .24)}.all-posts:active{background:rgb(var(--ink-rgb) / .04)}.blog-strip{justify-content:start;gap:var(--space-24);width:calc(50vw + 50% - var(--space-16));padding:var(--space-4) var(--space-4) var(--space-16);scrollbar-width:none;grid-auto-columns:min(248px,100vw - 128px);grid-auto-flow:column;margin:-4px;display:grid;overflow-x:auto}.blog-strip::-webkit-scrollbar{display:none}.blog-grid{gap:var(--space-32) var(--space-24);width:calc(50vw + 50% - var(--space-16));margin-top:var(--space-32);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.blog-card{min-width:0}.blog-card>a{border-radius:var(--space-12);display:block}.blog-preview{height:192px}.blog-preview-content{justify-content:center;gap:var(--space-12);padding:var(--space-24);flex-direction:column;flex:1;display:flex}.preview-kicker{color:rgb(var(--ink-rgb) / .7);margin-bottom:var(--space-4);font-size:13px;line-height:20px}.preview-decision{align-items:center;gap:var(--space-8);font-size:10px;line-height:var(--space-16);color:rgb(var(--ink-rgb) / .56);display:flex}.preview-box{width:var(--space-12);height:var(--space-12);border:1px solid rgb(var(--ink-rgb) / .2);border-radius:var(--space-4);flex-shrink:0}.blog-card-meta{justify-content:space-between;gap:var(--space-4) var(--space-12);color:rgb(var(--ink-rgb) / .56);margin-top:var(--space-16);font-size:10px;line-height:var(--space-16);flex-wrap:wrap;display:flex}.blog-card h3{margin:var(--space-8) 0;letter-spacing:-.1px;font-size:14px;font-weight:500;line-height:20px}.blog-card p{letter-spacing:0;font-size:12px;line-height:20px}.blog-card>a:hover .work-preview{border-color:rgb(var(--ink-rgb) / .24)}.blog-card>a:active .work-preview{border-color:rgb(var(--ink-rgb) / .4)}.blog-empty{margin-top:var(--space-24);font-size:14px}.article-content{width:min(720px, calc(50vw + 50% - var(--space-32)))}.article-heading{margin-bottom:var(--space-32)}.article-meta{gap:var(--space-8);margin-bottom:var(--space-16);font-size:11px;line-height:var(--space-16);letter-spacing:0;flex-wrap:wrap;display:flex}.article-heading h1{letter-spacing:-.8px;max-width:680px;font-size:32px;line-height:40px}.article-byline{align-items:center;gap:var(--space-16);display:flex}.article-author{font-size:12px;line-height:var(--space-16);letter-spacing:0}.article-body>p,.article-body>ul,.article-body>ol{max-width:640px;margin:var(--space-16) 0;color:rgb(var(--ink-rgb) / .78);letter-spacing:-.1px;font-size:16px;line-height:28px}.article-body strong{font-weight:600}.article-body em{color:rgb(var(--ink-rgb) / .6)}.article-body a{text-decoration:underline;text-decoration-color:rgb(var(--ink-rgb) / .3);text-underline-offset:var(--space-4)}.article-body a:hover{text-decoration-color:var(--ink)}.article-body h2{max-width:640px;margin:var(--space-48) 0 var(--space-16);font-size:22px;font-weight:500;line-height:var(--space-32);letter-spacing:-.35px;scroll-margin-top:var(--space-24)}.article-body h3{max-width:640px;margin:var(--space-32) 0 var(--space-12);font-size:17px;font-weight:500;line-height:var(--space-24);letter-spacing:-.2px}.article-body li{margin:var(--space-8) 0}.article-body blockquote{margin:var(--space-24) 0;padding-left:var(--space-16);border-left:1px solid var(--line)}.article-table{margin:var(--space-24) 0;border:1px solid var(--line);border-radius:var(--space-12);scrollbar-width:thin;scrollbar-color:rgb(var(--ink-rgb) / .2) transparent;max-width:100%;overflow-x:auto}.article-table:focus-visible{outline:2px solid var(--ink);outline-offset:var(--space-4)}.article-table table{border-collapse:collapse;text-align:left;width:100%;min-width:640px;font-size:13px;line-height:20px}.article-table th,.article-table td{padding:var(--space-12) var(--space-16);vertical-align:top;border-bottom:1px solid var(--line)}.article-table th{background:rgb(var(--ink-rgb) / .025);font-weight:500}.article-table td{color:rgb(var(--ink-rgb) / .75)}.article-table tbody tr:last-child td{border-bottom:0}.article-contact{margin-top:var(--space-32)}.planning-checklist:focus{outline:none}.planning-checklist{scroll-margin-top:var(--space-24);margin:var(--space-24) 0}.checklist-progress{margin-bottom:var(--space-16);font-size:12px;line-height:20px}.checklist-progress-track{height:var(--space-4);margin-top:var(--space-12);border-radius:var(--radius-full);background:rgb(var(--ink-rgb) / .08);overflow:hidden}.checklist-progress-track span{background:var(--ink);border-radius:inherit;width:0;height:100%;transition:width var(--motion-base) var(--ease-flow);display:block}.checklist-table-wrap{margin-top:var(--space-16);border:1px solid var(--line);border-radius:var(--space-12);overflow-x:auto}.planning-table{border-collapse:collapse;table-layout:fixed;text-align:left;width:100%;font-size:13px;line-height:20px}.planning-table thead th{padding:var(--space-12);background:rgb(var(--ink-rgb) / .025);font-size:11px;font-weight:500}.planning-table thead th:first-child{width:52px}.planning-table thead th:nth-child(2){width:32%}.planning-table thead th:nth-child(4){width:144px}.planning-table tbody th{font-weight:400}.planning-table tbody th,.planning-table td{vertical-align:top;padding:var(--space-16) var(--space-12);border-top:1px solid var(--line)}.planning-table tr.is-ready{background:rgb(var(--ink-rgb) / .018)}.planning-toggle{width:var(--control-28);height:var(--control-28);cursor:pointer;justify-content:center;align-items:center;margin:-6px;display:inline-flex}.planning-toggle .check-input{margin:0}.check-input{appearance:none;width:var(--space-16);height:var(--space-16);border:1px solid rgb(var(--ink-rgb) / .3);border-radius:var(--space-4);background:var(--paper);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-flow), background-color var(--motion-fast) var(--ease-flow);flex-shrink:0;place-content:center;margin:2px 0 0;display:inline-grid}.check-input:hover{border-color:var(--ink)}.check-input:checked{border-color:var(--ink);background:var(--ink)}.check-input:checked:after{content:"";border:solid var(--paper);border-width:0 0 1.5px 1.5px;width:8px;height:4px;margin-top:-2px;transform:rotate(-45deg)}.check-input:focus-visible{outline:2px solid var(--ink);outline-offset:var(--space-4)}.planning-table textarea,.planning-table input[type=text]{width:100%;padding:var(--space-8) var(--space-12);border:1px solid var(--line);border-radius:var(--space-8);color:var(--ink);font-size:12px;line-height:var(--space-16);transition:border-color var(--motion-fast) var(--ease-flow);background:0 0}.planning-table textarea{resize:vertical;min-height:64px;display:block}.planning-table input[type=text]{height:var(--control-32);border-radius:var(--radius-full)}.planning-table textarea::placeholder,.planning-table input::placeholder{color:rgb(var(--ink-rgb) / .5)}.planning-table textarea:hover,.planning-table input[type=text]:hover{border-color:rgb(var(--ink-rgb) / .24)}.planning-table textarea:focus-visible,.planning-table input[type=text]:focus-visible{outline:2px solid var(--ink);outline-offset:var(--space-2)}.checklist-actions{justify-content:space-between;align-items:center;gap:var(--space-12);margin-top:var(--space-16);flex-wrap:wrap;display:flex}.save-draft{min-height:var(--control-28);align-items:center;gap:var(--space-8);font-size:11px;line-height:var(--space-16);cursor:pointer;display:inline-flex}.save-draft .check-input{margin:0}.checklist-action-buttons{gap:var(--space-8);display:flex}.checklist-actions button,.checklist-confirm button{height:var(--control-28);padding:0 var(--space-12);border:1px solid var(--line);background:var(--paper);color:rgb(var(--ink-rgb) / .75);cursor:pointer;font-size:11px}.checklist-actions button:hover,.checklist-confirm button:hover{color:var(--ink);border-color:rgb(var(--ink-rgb) / .3)}.checklist-actions button:active,.checklist-confirm button:active{background:rgb(var(--ink-rgb) / .06)}.checklist-confirm{align-items:center;gap:var(--space-8);padding:var(--space-12);margin-top:var(--space-12);border:1px solid var(--line);border-radius:var(--space-12);flex-wrap:wrap;display:flex}.checklist-confirm p{letter-spacing:0;flex-basis:100%;font-size:12px;line-height:20px}.checklist-status{margin-top:var(--space-8);min-height:var(--space-16);color:rgb(var(--ink-rgb) / .6);font-size:11px;line-height:var(--space-16);letter-spacing:0}[data-checklist-enhanced][hidden],.checklist-confirm[hidden]{display:none}@media (width<=960px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.home-blog{margin-top:var(--space-48)}.blog-strip{gap:var(--space-16)}.blog-grid{grid-template-columns:minmax(0,1fr);width:100%}.article-content{width:100%}.article-heading h1{font-size:28px;line-height:36px}.article-body>p,.article-body>ul,.article-body>ol{font-size:15px;line-height:26px}.article-body h2{margin-top:var(--space-32);font-size:20px;line-height:28px}.planning-table{display:block}.planning-table thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.planning-table tbody{display:block}.planning-table tr{gap:var(--space-12);padding:var(--space-16);border-top:1px solid var(--line);grid-template-columns:16px minmax(0,1fr);display:grid}.planning-table tr:first-child{border-top:0}.planning-table td,.planning-table tbody th{border:0;padding:0;display:block}.planning-table .planning-ready{grid-area:1/1/4}.planning-table tbody th,.planning-table td[data-label]{grid-column:2}.planning-table td[data-label]:before{content:attr(data-label);margin-bottom:var(--space-4);color:rgb(var(--ink-rgb) / .6);font-size:11px;display:block}.planning-table textarea{min-height:64px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.article-author{align-items:center;gap:var(--space-8);color:rgb(var(--ink-rgb) / .7);transition:color var(--motion-fast) var(--ease-flow);display:inline-flex}.article-author img{border-radius:var(--radius-full);object-fit:cover}.article-author:hover{color:var(--ink)}.author-portrait{border-radius:var(--radius-full);object-fit:cover;margin-bottom:var(--space-24);display:block}.author-label{margin-bottom:var(--space-8);font-size:11px;line-height:16px}.author-heading h1{margin-bottom:var(--space-8);font-size:32px;line-height:40px}.author-role{font-size:14px;line-height:24px}.author-bio{margin:var(--space-24) 0}.author-bio p{margin-bottom:var(--space-12);font-size:15px;line-height:26px}.author-writing{margin:var(--space-48) 0 var(--space-32)}.author-writing h2{font-size:18px;font-weight:500;line-height:28px}.author-posts{margin:var(--space-16) 0 0;padding:0;list-style:none}.author-posts li{border-top:1px solid var(--line)}.author-posts a{padding:var(--space-16) 0;display:block}.author-posts time{color:var(--muted);font-size:11px;line-height:16px}.author-posts h3{margin:var(--space-8) 0;font-size:15px;font-weight:500;line-height:24px}.author-posts p{font-size:13px;line-height:22px}.author-posts a:hover h3{text-underline-offset:4px;text-decoration:underline;text-decoration-color:var(--line)}.footer-meta .language-switch{margin-left:auto}.experience-section{margin-top:var(--space-64);scroll-margin-top:var(--space-24)}.experience-section .section-heading{margin-bottom:var(--space-24)}.gallery-controls{gap:var(--space-8);display:flex}.gallery-controls button{height:var(--control-28);width:var(--control-28);border:1px solid var(--line);color:var(--muted);background:var(--paper);cursor:pointer;transition:color var(--motion-fast) var(--ease-flow), border-color var(--motion-fast) var(--ease-flow), background-color var(--motion-fast) var(--ease-flow), transform var(--motion-fast) var(--ease-flow);justify-content:center;align-items:center;padding:0;display:inline-flex}.gallery-controls button:hover{color:var(--ink);border-color:rgb(var(--ink-rgb) / .24)}.gallery-controls button:active{background:rgb(var(--ink-rgb) / .04);transform:scale(.96)}.experience-image{background:#fff;justify-content:center;align-items:center;display:flex}.experience-image img{object-fit:contain;width:100%;height:100%}.experience-card h3{justify-content:space-between;align-items:center;gap:var(--space-16);display:flex}.experience-link{z-index:3;align-items:center;gap:var(--space-8);min-height:var(--control-28);display:inline-flex;position:relative}.experience-link svg{color:var(--muted);transition:transform var(--motion-base) var(--ease-flow)}.experience-link:hover svg{transform:translate(1px,-1px)}.experience-years{color:var(--muted);font-size:11px;font-weight:400}.experience-invitation{justify-content:center;align-items:center;gap:var(--space-16);color:rgb(var(--ink-rgb) / .45);flex-direction:column;font-size:13px;display:flex}@media (width<=600px){.experience-section{margin-top:var(--space-48)}}.experience-mail{z-index:3;width:var(--control-36);height:var(--control-36);border-radius:var(--radius-full);color:inherit;transition:color var(--motion-fast) var(--ease-flow), background-color var(--motion-fast) var(--ease-flow), transform var(--motion-fast) var(--ease-flow);justify-content:center;align-items:center;display:inline-flex;position:relative}.experience-mail:hover{color:var(--ink);background:rgb(var(--ink-rgb) / .04)}.experience-mail:active{transform:scale(.96)}.experience-card h3{z-index:3;position:relative}.project-picture{display:contents}.selected-work .work-item h3{z-index:3;position:relative}.article-body .citation{vertical-align:super;margin-left:2px;font-size:.7em;line-height:0}.article-body .citation a{color:rgb(var(--ink-rgb) / .6);padding:0 2px;text-decoration:none}.article-body .citation a:hover{color:var(--ink)}input,select,textarea{min-width:0;max-width:100%}@media (width<=960px),(any-pointer:coarse){:root input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),:root select,:root textarea{font-size:max(16px,1em);line-height:var(--space-24)}.planning-table input[type=text]{height:var(--control-36);padding-block:var(--space-4)}.planning-table textarea{min-height:88px}}
