@font-face{font-family:Zen Maru Gothic;src:url(/_astro/zen-maru-gothic-latin-300-normal.FL_LyY-W.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Zen Maru Gothic;src:url(/_astro/zen-maru-gothic-latin-400-normal.D528XlL5.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Zen Maru Gothic;src:url(/_astro/zen-maru-gothic-latin-500-normal.SHJzRquW.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Zen Maru Gothic;src:url(/_astro/zen-maru-gothic-latin-700-normal.CSiy1nnP.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--sky-top:#cfe3f7;--sky-mid:#e6f0fa;--paper:#f8fafd;--dawn:#fbdfcd;--sun:#f8bea073;--cloud:#ffffffe6;--ink:#263049;--ink-2:#46526e;--muted:#5d6884;--line:#dbe3ee;--accent:#2f69c2;--accent-ink:#fff;--card:#ffffffb8;--card-border:#fffffff2;--shadow:0 28px 60px -36px #2f5a9673;--chip-bg:#fde8da;--chip-ink:#864829;--orb-blue:#bcd7f6;--orb-peach:#f9cfb6;--font:"Zen Maru Gothic", ui-rounded, "Hiragino Maru Gothic ProN", system-ui, sans-serif;--text-sm:.875rem;--text-base:1.0625rem;--gutter:clamp(1.25rem, 5vw, 3rem);--section-space:clamp(5.5rem, 12vw, 9rem);--radius-card:28px;--ease:cubic-bezier(.22, 1, .36, 1);color-scheme:light}:root[data-theme=dark]{--sky-top:#141834;--sky-mid:#1b2042;--paper:#1a1e3b;--dawn:#3b2b49;--sun:#d6828c38;--cloud:#bac4f01f;--ink:#eef0fa;--ink-2:#c8cde6;--muted:#a3aaca;--line:#2f355a;--accent:#a9c6ff;--accent-ink:#141834;--card:#ffffff0d;--card-border:#ffffff17;--shadow:0 28px 60px -36px #000000b3;--chip-bg:#f2a27e29;--chip-ink:#f7caaf;--orb-blue:#7896e659;--orb-peach:#e68c964d;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--font);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-block-start:1.5rem}html,body{overflow-x:clip}body{background:linear-gradient(180deg, var(--sky-top) 0, var(--sky-mid) 40rem, var(--paper) 72rem, var(--paper) calc(100% - 48rem), var(--dawn) 100%);min-block-size:100svh;font-size:var(--text-base);margin:0;line-height:1.75}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--ink);text-wrap:balance;overflow-wrap:break-word;font-weight:500}h1{letter-spacing:-.02em;font-size:clamp(3rem,9vw,6.75rem);font-weight:300;line-height:1.04}h2{letter-spacing:-.01em;font-size:clamp(2rem,4.4vw,3rem);line-height:1.15}h3{font-size:1.625rem;line-height:1.25}p{text-wrap:pretty}a{color:inherit}button{font:inherit;color:inherit}[hidden]{display:none!important}::selection{background:var(--orb-peach);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:10px}main:focus{outline:none}.sr-only{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--ink);color:var(--paper);border-radius:999px;padding:.625rem 1.125rem;position:absolute;inset-block-start:1rem;inset-inline-start:var(--gutter);transform:translateY(-200%)}.skip-link:focus{transform:none}.page{max-inline-size:66rem;padding-inline:var(--gutter);margin-inline:auto;padding-block-end:max(1.5rem, env(safe-area-inset-bottom))}.btn{border:1px solid var(--card-border);background:var(--card);min-block-size:3rem;color:var(--ink);box-shadow:var(--shadow);white-space:nowrap;cursor:pointer;transition:transform .22s var(--ease), background-color .22s var(--ease);border-radius:999px;justify-content:center;align-items:center;padding:0 1.5rem;font-weight:500;text-decoration:none;display:inline-flex}.btn--solid{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn:active{transform:scale(.97)}.pill{border:1px solid var(--card-border);background:var(--card);min-block-size:2.75rem;font-size:var(--text-sm);cursor:pointer;border-radius:999px;align-items:center;gap:.5rem;padding:0 1rem;display:inline-flex}.text-link{min-block-size:2.75rem;color:var(--accent);text-underline-offset:.25em;align-items:center;font-weight:500;text-decoration-thickness:1px;display:inline-flex}.site-header,.header-actions,.site-nav{align-items:center;display:flex}.site-header{z-index:1;justify-content:space-between;gap:1rem;padding-block:1.25rem;position:relative}.header-actions{gap:.75rem}.site-nav{gap:.125rem}.wordmark{align-items:center;min-block-size:2.75rem;font-size:1.625rem;font-weight:500;text-decoration:none;display:inline-flex}.wordmark span{color:var(--accent)}.site-nav a{min-block-size:2.75rem;color:var(--ink-2);border-radius:999px;align-items:center;padding-inline:.875rem;font-size:.9375rem;text-decoration:none;display:inline-flex}.theme-toggle{color:var(--ink-2)}.theme-icon--sun{display:none}[data-theme=dark] .theme-icon--sun{display:block}[data-theme=dark] .theme-icon--moon{display:none}.hero{isolation:isolate;text-align:center;place-items:center;min-block-size:min(44rem,82svh);padding-block:3rem 5rem;display:grid;position:relative}.hero:before{content:"";z-index:-2;background:radial-gradient(closest-side, var(--sun), transparent);pointer-events:none;position:absolute;inset:25% 0 -15%}.clouds{z-index:-1;pointer-events:none;position:absolute;inset-block:0;inset-inline:calc(50% - 50vw);overflow:hidden}.cloud{background:var(--cloud);filter:blur(26px);border-radius:999px;position:absolute}.cloud--1{block-size:6.5rem;inline-size:26rem;inset-block-start:14%;inset-inline-start:2%}.cloud--2{block-size:5.5rem;inline-size:22rem;inset-block-start:62%;inset-inline-end:4%}.cloud--3{opacity:.8;block-size:4rem;inline-size:15rem;inset-block-start:4%;inset-inline-end:16%}.hero-text{max-inline-size:46rem}.hero-lead{color:var(--ink-2);margin-block-start:1.25rem;font-size:clamp(1.1875rem,2.2vw,1.5rem);line-height:1.6}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.875rem;margin-block-start:2.5rem;display:flex}.section{padding-block-start:var(--section-space)}.section--first{padding-block-start:clamp(3rem,8vw,5rem)}.section-head{max-inline-size:38rem}.section-head p{color:var(--ink-2);margin-block-start:.875rem;font-size:1.125rem}.page-title{font-size:clamp(2.5rem,6vw,4rem);font-weight:300;line-height:1.1}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.25rem,3vw,2rem);margin-block-start:2.75rem;display:grid}.project{isolation:isolate;border:1px solid var(--card-border);border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow);padding:clamp(1.75rem,3.5vw,2.5rem);position:relative;overflow:hidden}.project:before{content:"";z-index:-1;background:radial-gradient(circle, var(--orb-blue), transparent 68%);border-radius:50%;block-size:14rem;inline-size:14rem;position:absolute;inset-block-start:-5rem;inset-inline-end:-5rem}.project:nth-child(2):before{background:radial-gradient(circle, var(--orb-peach), transparent 68%)}.chip{background:var(--chip-bg);color:var(--chip-ink);border-radius:999px;align-items:center;padding:.25rem .875rem;font-size:.8125rem;font-weight:500;display:inline-flex}.project h3{margin-block-start:1.5rem;font-size:clamp(1.75rem,3vw,2.125rem)}.project-pitch{margin-block-start:.5rem;font-size:1.125rem;font-weight:500;line-height:1.5}.project-body{color:var(--ink-2);margin-block-start:.75rem}.now{grid-template-columns:minmax(0,1fr) minmax(0,1.8fr);gap:1.5rem clamp(2rem,6vw,5rem);display:grid}.now-updated{color:var(--muted);font-size:var(--text-sm);margin-block-start:.5rem}.now-list{margin:0;padding:0;list-style:none}.now-list li{border-block-start:1px solid var(--line);gap:.125rem;padding-block:1.25rem;padding-inline-start:1.75rem;display:grid;position:relative}.now-list li:last-child{border-block-end:1px solid var(--line)}.now-list li:before{content:"";background:var(--orb-peach);border-radius:50%;block-size:.625rem;inline-size:.625rem;position:absolute;inset-block-start:1.95rem;inset-inline-start:.25rem}.now-list strong{font-size:1.25rem;font-weight:500}.now-list span{color:var(--ink-2)}.log{margin:2.5rem 0 0;padding:0;list-style:none;position:relative}.log:before{content:"";background:var(--line);border-radius:2px;inline-size:2px;position:absolute;inset-block:1.75rem;inset-inline-start:calc(.75rem - 1px)}.log-entry{grid-template-columns:1.5rem minmax(0,1fr) auto;align-items:center;gap:1.25rem;padding-block:1rem;display:grid;position:relative}.log-dot{border:2px solid var(--muted);background:var(--paper);border-radius:50%;justify-self:center;block-size:.75rem;inline-size:.75rem}.log-entry--current .log-dot{border-color:var(--accent);background:var(--accent);block-size:1rem;inline-size:1rem;box-shadow:0 0 0 6px color-mix(in oklab, var(--accent) 18%, transparent)}.log-role{display:grid}.log-title{font-size:1.1875rem;font-weight:500;line-height:1.4}.log-company{color:var(--muted)}.log-years{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}.empty{border:1.5px dashed var(--line);border-radius:var(--radius-card);color:var(--muted);text-align:center;margin-block-start:2rem;padding:clamp(1.75rem,4vw,2.5rem);font-size:1.125rem}.posts{margin:2rem 0 0;padding:0;list-style:none}.posts li{border-block-start:1px solid var(--line)}.posts li:last-child{border-block-end:1px solid var(--line)}.post-link{grid-template-columns:8rem minmax(0,1fr);gap:.25rem 1.5rem;padding-block:1.25rem;text-decoration:none;display:grid}.post-link time{color:var(--muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;grid-row:span 2}.post-title{font-size:1.3125rem;font-weight:500;line-height:1.4}.post-description{color:var(--ink-2)}.post .page-title{max-inline-size:20ch;margin-block-start:1rem}.post-meta{color:var(--muted);margin-block-start:.75rem}.prose{max-inline-size:64ch;margin-block-start:2.5rem;font-size:1.125rem;line-height:1.85}.prose>*+*{margin-block-start:1.25em}.prose h2{margin-block-start:2em;font-size:1.875rem}.prose h3{margin-block-start:1.75em;font-size:1.375rem}.prose a{color:var(--accent);text-underline-offset:.2em}.prose code{font-size:.9em}.prose pre{border:1px solid var(--line);background:var(--card);border-radius:18px;padding:1.25rem;overflow-x:auto}.contact{text-align:center;padding-block-end:clamp(6rem,14vw,10rem)}.contact h2{font-size:clamp(2.75rem,7vw,4.75rem);font-weight:300;line-height:1.08}.contact-lead{max-inline-size:34rem;color:var(--ink-2);margin:1.25rem auto 0;font-size:clamp(1.125rem,2vw,1.3125rem)}.email{color:var(--accent);overflow-wrap:anywhere;text-underline-offset:.25em;margin-block-start:2rem;font-size:clamp(1.25rem,3.6vw,2rem);font-weight:500;text-decoration-thickness:1px;display:inline-block}.contact-actions{flex-wrap:wrap;justify-content:center;gap:.875rem;margin-block-start:1.75rem;display:flex}.site-footer{border-block-start:1px solid color-mix(in oklab, var(--ink) 12%, transparent);color:var(--muted);font-size:var(--text-sm);justify-content:space-between;align-items:center;gap:1rem;padding-block:1.25rem .5rem;display:flex}.social-links{gap:.25rem;display:flex}.social-link{block-size:2.75rem;inline-size:2.75rem;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;display:inline-flex}@media (hover:hover){.btn:hover{transform:translateY(-2px)}.btn:active{transform:scale(.97)}.site-nav a:hover,.pill:hover{background:var(--card);color:var(--ink)}.social-link:hover,.wordmark:hover,.post-link:hover .post-title{color:var(--accent)}}@media (width<=52rem){.work-grid,.now{grid-template-columns:minmax(0,1fr)}}@media (width<=44rem){.site-nav{display:none}.hero{min-block-size:min(38rem,78svh);padding-block:2rem 4rem}.cloud--1{inline-size:16rem}.cloud--2{inline-size:14rem}.cloud--3{inline-size:10rem}.log-entry{grid-template-columns:1.5rem minmax(0,1fr);align-items:start;gap:.25rem 1rem}.log-years{grid-column:2}.log-dot{margin-block-start:.5rem}.post-link{grid-template-columns:minmax(0,1fr)}.post-link time{grid-row:auto}}@media (width<=30rem){.hero-actions .btn,.contact-actions .btn{flex:100%}.site-footer{flex-direction:column-reverse;align-items:flex-start}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.cloud--1{animation:46s ease-in-out infinite alternate drift}.cloud--2{animation:58s ease-in-out -20s infinite alternate-reverse drift}.cloud--3{animation:38s ease-in-out -8s infinite alternate drift}.hero-text{animation:rise 1.1s var(--ease) both}}@keyframes drift{0%{translate:-2.5rem}to{translate:3rem}}@keyframes rise{0%{opacity:0;translate:0 .75rem}to{opacity:1;translate:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation:none!important}}
