:root{color-scheme:light;--bg: #f8f4ec;--surface: #fffaf2;--text: #211f1b;--muted: #6f685e;--faint: #9a9184;--rule: #ded5c8;--rule-strong: #c9bba8;--accent: #285f4d;--accent-soft: #dfe9df;--selection: #e9d7a9;--shadow: 0 16px 40px rgba(54, 45, 35, .08);--max: 860px;--reading: 680px;--mono: "SFMono-Regular", "Cascadia Code", "Liberation Mono", Menlo, monospace;--serif: Georgia, "Times New Roman", serif;--sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{min-width:320px;background:var(--bg);font-family:var(--sans);color:var(--text);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-height:100vh;background:var(--bg)}::selection{background:var(--selection)}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--accent) 46%,transparent);text-underline-offset:.2em;transition:color .16s ease,text-decoration-color .16s ease}a:hover{color:var(--accent);text-decoration-color:var(--accent)}img,svg{max-width:100%}.site-shell{width:min(var(--max),calc(100% - 32px));margin:0 auto;min-height:100vh;border-left:1px solid color-mix(in srgb,var(--rule) 72%,transparent);border-right:1px solid color-mix(in srgb,var(--rule) 72%,transparent);padding:0 28px}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0 18px;border-bottom:1px solid var(--rule)}.brand{display:inline-flex;align-items:center;gap:10px;font-size:.88rem;text-decoration:none}.brand-mark{display:inline-grid;width:30px;height:30px;place-items:center;border:1px solid var(--accent);background:var(--surface);color:var(--accent);font-family:var(--serif);font-size:.86rem}.brand-name{color:var(--muted)}.site-nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:18px;font-size:.9rem}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a[aria-current=page],.site-nav a:hover{color:var(--text)}main{padding:42px 0 70px}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:18px;padding:24px 0 36px;border-top:1px solid var(--rule);color:var(--muted);font-size:.9rem}.footer-links{display:flex;flex-wrap:wrap;gap:14px}.eyebrow,.kicker,.meta,.row-meta,.tag-list{font-family:var(--mono);font-size:.74rem;line-height:1.6;color:var(--muted)}.eyebrow{margin:0 0 6px}.hero{padding-top:20px}.profile-card{display:grid;grid-template-columns:106px minmax(0,1fr);gap:24px;align-items:center;padding:20px;border:1px solid var(--rule);background:color-mix(in srgb,var(--surface) 84%,transparent);box-shadow:var(--shadow)}.avatar{display:grid;width:86px;aspect-ratio:1;place-items:center;border:1px solid var(--rule-strong);background:linear-gradient(135deg,var(--accent-soft),transparent 58%),var(--surface);color:var(--accent);font-family:var(--serif);font-size:2rem}.hero h1,.page-heading h1,.article-heading h1{margin:0;font-family:var(--serif);font-weight:500;letter-spacing:0;line-height:.98}.hero h1{max-width:760px;font-size:clamp(2.4rem,7vw,4.2rem);line-height:1}.profile-line{margin:10px 0 0;color:var(--muted);font-size:1.02rem}.hero-summary{max-width:690px;margin:28px 0 0;color:var(--muted);font-size:1.04rem;line-height:1.68}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.button{display:inline-flex;align-items:center;min-height:42px;padding:0 15px;border:1px solid var(--rule-strong);background:var(--surface);color:var(--text);font-size:.9rem;text-decoration:none;box-shadow:0 2px 10px #362d230d}.button.primary{border-color:var(--accent);background:var(--accent);color:var(--surface)}.home-index{display:grid;grid-template-columns:repeat(3,1fr);margin-top:54px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.home-index a{display:block;min-height:118px;padding:18px 16px 16px;border-right:1px solid var(--rule);text-decoration:none}.home-index a:last-child{border-right:0}.home-index span{display:block;margin-bottom:22px;font-family:var(--serif);font-size:1.55rem;line-height:1}.home-index small{display:block;max-width:160px;color:var(--muted);font-size:.88rem;line-height:1.45}.reading-groups{display:grid;gap:48px}.reading-group-header{display:flex;align-items:baseline;justify-content:space-between;gap:20px;padding-top:16px;border-top:1px dashed var(--rule-strong)}.reading-group-header h2{margin:0;font-family:var(--serif);font-size:clamp(1.6rem,3vw,2.3rem);font-weight:500;line-height:1.08}.reading-group-header p{margin:6px 0 0;color:var(--muted);line-height:1.6}.reading-group-header span{font-family:var(--mono);font-size:.78rem;color:var(--muted)}.reading-list{margin-top:18px;border-top:1px solid var(--rule)}.reading-row{display:grid;grid-template-columns:minmax(92px,.24fr) minmax(0,1fr);gap:22px;padding:18px 0;border-bottom:1px solid var(--rule)}.reading-source{margin-top:4px;font-family:var(--mono);font-size:.74rem}.section{margin-top:58px}.page-heading+.section{margin-top:0}.section-header,.page-heading{display:grid;grid-template-columns:minmax(92px,.24fr) minmax(0,1fr);gap:22px;align-items:baseline;padding-top:16px;border-top:1px dashed var(--rule-strong)}.section-header h2,.page-heading h1{margin:0}.section-header h2{font-family:var(--serif);font-size:clamp(1.65rem,3vw,2.35rem);font-weight:500;line-height:1.08}.section-header p,.page-heading p{max-width:620px;margin:0;color:var(--muted);line-height:1.7}.page-heading{margin-bottom:34px}.writing-hero{display:grid;grid-template-columns:minmax(0,1.38fr) minmax(210px,.62fr);gap:34px;align-items:start;padding-top:16px;border-top:1px dashed var(--rule-strong)}.writing-intro h1{max-width:650px;margin:0;font-family:var(--serif);font-size:clamp(2rem,4.8vw,3.4rem);font-weight:500;line-height:.98}.writing-intro p,.writing-topic-rail p,.writing-feature p{color:var(--muted);line-height:1.68}.writing-intro p{max-width:640px;margin:20px 0 0;font-size:1.04rem}.writing-topic-rail{padding-left:20px;border-left:1px solid var(--rule)}.writing-topic-rail .tag-list{margin-top:10px}.writing-topic-rail p{margin:14px 0 0;font-size:.92rem}.writing-feature{display:grid;grid-template-columns:minmax(0,1fr) minmax(128px,.2fr);gap:24px;margin-top:42px;padding:20px 0;border-top:2px solid var(--accent);border-bottom:1px solid var(--rule)}.writing-feature h2{max-width:600px;margin:8px 0 0;font-family:var(--serif);font-size:clamp(1.9rem,4vw,2.8rem);font-weight:500;line-height:1.05}.writing-feature h2 a{text-decoration:none}.writing-feature p{max-width:630px;margin:10px 0 0;font-size:1rem}.featured-tags span{border-color:color-mix(in srgb,var(--accent) 68%,var(--rule));background:var(--accent-soft);color:var(--accent)}.writing-feature-meta{padding-top:4px;font-family:var(--mono);font-size:.74rem;line-height:1.7;color:var(--muted)}.writing-list-header{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin-top:34px}.writing-list-header h2{margin:0;font-family:var(--serif);font-size:clamp(1.55rem,3vw,2.2rem);font-weight:500;line-height:1.08}.writing-list-header span{font-family:var(--mono);font-size:.78rem;color:var(--muted)}.page-heading h1,.article-heading h1{font-size:clamp(2.6rem,7vw,4.8rem)}.list{margin-top:20px;border-top:1px solid var(--rule)}.list-row{display:grid;grid-template-columns:minmax(92px,.24fr) minmax(0,1fr);gap:22px;padding:19px 0;border-bottom:1px solid var(--rule)}.row-content h3,.row-content h2{margin:0;font-size:1.06rem;line-height:1.35}.row-content h2 a,.row-content h3 a{text-decoration:none}.project-status{display:inline-block;margin:0 0 8px;font-family:var(--mono);font-size:.86rem;font-weight:700;line-height:1.4;color:var(--accent)}.project-row-highlight .row-content p{font-size:1rem}.project-row-highlight .tag-list{margin-top:14px}.row-content p{max-width:660px;margin:8px 0 0;color:var(--muted);line-height:1.62}.row-note{margin-top:12px}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.tag-list span,.tag-list a{border:1px solid var(--rule);padding:3px 8px;background:color-mix(in srgb,var(--surface) 68%,transparent);text-decoration:none}.split-note{display:grid;grid-template-columns:minmax(92px,.24fr) minmax(0,1fr);gap:22px;margin-top:22px;padding:18px 0;border:1px solid var(--rule);border-left:0;border-right:0;background:transparent}.split-note p{margin:0;color:var(--muted);line-height:1.65}.article-heading{max-width:var(--reading);margin:0 auto 44px}.article-heading h1{margin-top:18px}.article-description{margin:24px 0 0;color:var(--muted);font-size:1.18rem;line-height:1.65}.article-body{max-width:var(--reading);margin:0 auto;font-size:1.04rem;line-height:1.78}.article-body h2,.article-body h3{margin:2.2em 0 .65em;line-height:1.2}.article-body h2{font-family:var(--serif);font-size:1.8rem;font-weight:500}.article-body h3{font-size:1.18rem}.article-body p,.article-body ul,.article-body ol,.article-body pre{margin:1.1em 0}.article-body code{font-family:var(--mono);font-size:.9em}.article-body pre{overflow-x:auto;padding:18px;border:1px solid var(--rule);background:#211f1b;color:#fffaf2}.article-body pre.mermaid{display:flex;justify-content:center;padding:20px;background:var(--surface);color:var(--text)}.article-body pre.mermaid svg{max-width:100%;height:auto}.article-body table{width:100%;margin:1.4em 0;border-collapse:collapse;font-size:.95rem}.article-body th,.article-body td{padding:10px 12px;border:1px solid var(--rule);text-align:left;vertical-align:top}.article-body th{background:var(--accent-soft);color:var(--accent);font-family:var(--mono);font-size:.74rem;text-transform:uppercase}.article-body img{display:block;width:100%;margin:1.6em 0;border:1px solid var(--rule);background:var(--surface)}.article-body blockquote{margin:1.5em 0;padding-left:18px;border-left:2px solid var(--accent);color:var(--muted)}.article-footer{display:flex;flex-wrap:wrap;gap:14px;max-width:var(--reading);margin:52px auto 0;padding-top:18px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:.82rem;color:var(--muted)}.about-section{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:32px;align-items:start;margin-top:32px;padding-top:24px;border-top:1px dashed var(--rule-strong)}.about-prose p{max-width:560px;margin:0 0 16px;color:var(--muted);font-size:1.02rem;line-height:1.72}.about-prose p:last-child{margin-bottom:0}.about-rail{border-left:1px solid var(--rule);padding-left:22px}.rail-group{margin-bottom:18px}.rail-group:last-child{margin-bottom:0}.rail-label{font-family:var(--mono);font-size:.7rem;color:var(--faint);text-transform:uppercase;letter-spacing:.07em;margin:0 0 7px}.about-rail .tag-list span{font-family:var(--mono);font-size:.72rem;border:1px solid var(--rule);padding:3px 8px;background:color-mix(in srgb,var(--surface) 68%,transparent);color:var(--muted)}.about-rail .tag-list span.tag-accent{border-color:color-mix(in srgb,var(--accent) 50%,var(--rule));background:var(--accent-soft);color:var(--accent)}.outside-work{margin-top:32px;padding-top:20px;border-top:1px dashed var(--rule-strong);margin-left:-28px;margin-right:-28px;padding-left:28px;padding-right:28px}.outside-label{font-family:var(--mono);font-size:.7rem;color:var(--faint);text-transform:uppercase;letter-spacing:.07em;margin:0 0 14px}.hobby-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--rule)}.hobby-block{padding:22px 24px;border-right:1px solid var(--rule)}.hobby-block:last-child{border-right:0}.hobby-title{font-family:var(--serif);font-size:1.1rem;font-weight:500;margin:0 0 10px}.hobby-detail{font-size:.9rem;color:var(--muted);line-height:1.62;margin:0}@media(max-width:760px){.site-shell{width:min(100% - 20px,var(--max));padding:0 12px}.site-header{align-items:flex-start;flex-direction:column}.site-nav{justify-content:flex-start;row-gap:10px}main{padding:32px 0 56px}.hero{padding-top:8px}.profile-card{grid-template-columns:1fr;gap:16px;padding:16px}.avatar{width:72px;font-size:1.6rem}.hero h1{font-size:clamp(2.5rem,13vw,3.8rem)}.section{margin-top:48px}.home-index{grid-template-columns:1fr;margin-top:42px}.home-index a{min-height:auto;border-right:0;border-bottom:1px solid var(--rule)}.home-index a:last-child{border-bottom:0}.home-index span{margin-bottom:8px}.home-index small{max-width:100%}.reading-groups{gap:38px}.reading-group-header{align-items:flex-start}.section-header,.page-heading,.writing-hero,.writing-feature,.list-row,.split-note,.reading-row{grid-template-columns:1fr;gap:12px}.about-section{grid-template-columns:1fr;gap:24px}.about-rail{border-left:0;border-top:1px solid var(--rule);padding-left:0;padding-top:20px}.outside-work{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}.hobby-grid{grid-template-columns:1fr}.hobby-block{border-right:0;border-bottom:1px solid var(--rule)}.hobby-block:last-child{border-bottom:0}.writing-topic-rail{padding-left:0;padding-top:14px;border-left:0;border-top:1px solid var(--rule)}.writing-feature{margin-top:34px}.writing-list-header{align-items:flex-start;flex-direction:column;gap:6px}.list-row{padding:19px 0}.article-body div[style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}}.codex-pet[data-astro-cid-73d274el]{--pet-x: calc(100vw - 120px) ;--pet-y: calc(100vh - 128px) ;--sprite-y: 0px;position:fixed;left:0;top:0;z-index:30;transform:translate3d(var(--pet-x),var(--pet-y),0);transition:transform 5.8s linear;pointer-events:none}.codex-pet-button[data-astro-cid-73d274el]{position:relative;display:grid;width:96px;height:104px;place-items:center;border:0;background:transparent;cursor:pointer;pointer-events:auto}.codex-pet-button[data-astro-cid-73d274el]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.codex-pet-stage[data-astro-cid-73d274el]{position:relative;display:block;width:96px;height:104px;overflow:visible}.codex-pet-sprite[data-astro-cid-73d274el]{position:absolute;left:50%;bottom:0;display:block;width:192px;height:208px;margin-left:-96px;background-image:url(var(--spriteSheet));background-repeat:no-repeat;background-position:0 var(--sprite-y);background-size:1536px 1872px;filter:drop-shadow(0 10px 14px rgba(54,45,35,.16));transform:scale(.46);transform-origin:bottom center}.codex-pet-bubble[data-astro-cid-73d274el]{position:absolute;right:78px;bottom:84px;max-width:150px;padding:7px 9px;border:1px solid var(--rule-strong);background:var(--surface);color:var(--muted);font-family:var(--mono);font-size:.68rem;line-height:1.35;opacity:0;transform:translateY(4px);transition:opacity .18s ease,transform .18s ease;white-space:normal}.codex-pet[data-astro-cid-73d274el][data-side=left] .codex-pet-bubble[data-astro-cid-73d274el]{right:auto;left:78px}.codex-pet[data-astro-cid-73d274el][data-action=idle] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: 0px;animation:pet-idle 1.3s steps(6) infinite}.codex-pet[data-astro-cid-73d274el][data-action=running-right] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -208px;animation:pet-eight 1.3s steps(8) infinite}.codex-pet[data-astro-cid-73d274el][data-action=running-left] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -416px;animation:pet-eight 1.3s steps(8) infinite}.codex-pet[data-astro-cid-73d274el][data-action=waving] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -624px;animation:pet-four 1.2s steps(4) 2}.codex-pet[data-astro-cid-73d274el][data-action=jumping] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -832px;animation:pet-five 1.3s steps(5) 2}.codex-pet[data-astro-cid-73d274el][data-action=failed] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -1040px;animation:pet-eight 1.5s steps(8) 2}.codex-pet[data-astro-cid-73d274el][data-action=waiting] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -1248px;animation:pet-six 1.2s steps(6) 2}.codex-pet[data-astro-cid-73d274el][data-action=running] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -1456px;animation:pet-six 1.4s steps(6) 2}.codex-pet[data-astro-cid-73d274el][data-action=review] .codex-pet-sprite[data-astro-cid-73d274el]{--sprite-y: -1664px;animation:pet-six 1.4s steps(6) 2}.codex-pet[data-astro-cid-73d274el][data-action]:not([data-action=idle]):not([data-action=running-left]):not([data-action=running-right]) .codex-pet-bubble[data-astro-cid-73d274el]{opacity:1;transform:translateY(0)}@keyframes pet-idle{to{background-position:-1152px var(--sprite-y)}}@keyframes pet-four{to{background-position:-768px var(--sprite-y)}}@keyframes pet-five{to{background-position:-960px var(--sprite-y)}}@keyframes pet-six{to{background-position:-1152px var(--sprite-y)}}@keyframes pet-eight{to{background-position:-1536px var(--sprite-y)}}@media(max-width:760px){.codex-pet[data-astro-cid-73d274el]{display:none}}@media(prefers-reduced-motion:reduce){.codex-pet[data-astro-cid-73d274el]{transition:none}.codex-pet[data-astro-cid-73d274el][data-action] .codex-pet-sprite[data-astro-cid-73d274el],.codex-pet[data-astro-cid-73d274el][data-action] .codex-pet-button[data-astro-cid-73d274el]{animation:none}}
