:root{--bg:#f4f8f3;--surface:#fff;--surface-soft:#e8f3eb;--surface-strong:#d9ebdf;--ink:#1f2d25;--muted:#526459;--line:#cfe0d4;--primary:#2f6b4f;--primary-strong:#1f503a;--accent:#7fbf9a;--shadow:0 22px 60px #244d3917;--radius-lg:24px;--radius-md:16px;--content:1160px}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{color:var(--ink);background:linear-gradient(#2f6b4f09 1px, transparent 1px), linear-gradient(90deg, #2f6b4f09 1px, transparent 1px), var(--bg);text-rendering:optimizelegibility;background-size:32px 32px;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Yu Gothic UI,Yu Gothic,Meiryo,sans-serif;font-size:16px;line-height:1.75}a{color:inherit}img{max-width:100%;display:block}button,a{-webkit-tap-highlight-color:transparent}:where([id]){scroll-margin-top:96px}:focus-visible{outline-offset:4px;border-radius:6px;outline:3px solid #236746}.skip-link{z-index:100;color:#fff;background:var(--primary-strong);border-radius:10px;padding:10px 14px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.container{width:min(calc(100% - 40px), var(--content));margin-inline:auto}.section{padding:56px 0}.section--compact{padding:44px 0}.eyebrow{color:var(--primary);letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px;font-size:.75rem;font-weight:800}.section-heading{justify-content:space-between;align-items:end;gap:18px;margin-bottom:24px;display:flex}.section-heading h1,.section-heading h2{letter-spacing:-.02em;margin:0;font-size:clamp(1.3rem,2vw,1.6rem);line-height:1.3}.section-heading p{max-width:42rem;color:var(--muted);margin:0}.text-link{color:var(--primary-strong);text-underline-offset:5px;align-items:center;gap:8px;font-weight:750;text-decoration-thickness:1px;display:inline-flex}.button{border:1px solid var(--primary);color:#fff;background:var(--primary);border-radius:999px;justify-content:center;align-items:center;min-height:48px;padding:12px 20px;font-weight:750;text-decoration:none;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex}.button:hover{background:var(--primary-strong);transform:translateY(-2px);box-shadow:0 12px 24px #2f6b4f2e}.button--ghost{color:var(--primary-strong);background:0 0}.button--ghost:hover{color:#fff}.tag-list{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tag{color:var(--primary-strong);background:var(--surface-soft);border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:700}.card{border-radius:var(--radius-md);box-shadow:var(--shadow);background:#ffffffeb;border:1px solid #80a98f52}.page-hero{padding:36px 0 20px}.page-hero h1{letter-spacing:-.03em;max-width:900px;margin:0;font-size:clamp(1.5rem,2.5vw,1.9rem);line-height:1.25}.page-hero .lead{max-width:760px;color:var(--muted);margin:10px 0 0;font-size:.95rem}.content-grid{grid-template-columns:repeat(12,1fr);gap:24px;display:grid}.prose{color:var(--muted)}.prose h2,.prose h3{color:var(--ink);line-height:1.35}.prose h2{margin-top:1.7rem;font-size:1.25rem}.prose h3{margin-top:2rem}.prose strong{color:var(--ink)}.prose a{color:var(--primary-strong);text-underline-offset:4px}@media (width<=760px){.container{width:min(calc(100% - 28px), var(--content))}.section{padding:48px 0}.section-heading{flex-direction:column;align-items:start}}@media (width<=820px){:where([id]){scroll-margin-top:136px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.site-header[data-astro-cid-nen7h5rs]{z-index:30;backdrop-filter:blur(18px);background:#f4f8f3e0;border-bottom:1px solid #80a98f40;position:sticky;top:0}.header-inner[data-astro-cid-nen7h5rs]{grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;min-height:76px;display:grid}.brand[data-astro-cid-nen7h5rs]{letter-spacing:.02em;align-items:center;gap:10px;width:fit-content;font-weight:850;text-decoration:none;display:inline-flex}.brand-mark[data-astro-cid-nen7h5rs]{color:#fff;background:var(--primary);border-radius:10px;place-items:center;width:34px;height:34px;font-family:ui-monospace,monospace;display:grid}nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:6px;margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--muted);border-radius:999px;padding:8px 12px;font-size:.9rem;font-weight:700;text-decoration:none;display:block}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover,nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current]{color:var(--primary-strong);background:var(--surface-soft)}.github-link[data-astro-cid-nen7h5rs]{color:var(--primary-strong);text-underline-offset:5px;justify-self:end;font-weight:750}@media (width<=820px){.header-inner[data-astro-cid-nen7h5rs]{grid-template-columns:1fr auto;min-height:68px}nav[data-astro-cid-nen7h5rs]{grid-column:1/-1;min-width:0;margin:-4px 0 10px;position:relative}nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:0 40px 6px 0;overflow-x:auto}nav[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]{flex:none}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:focus-visible{outline-offset:-3px}nav[data-astro-cid-nen7h5rs]:after{content:"";pointer-events:none;background:linear-gradient(90deg,#f4f8f300,#f4f8f3f2);width:40px;position:absolute;top:0;bottom:6px;right:0}.github-link[data-astro-cid-nen7h5rs]{grid-area:1/2}}.site-footer[data-astro-cid-jo6i4kqk]{color:var(--muted);border-top:1px solid var(--line);background:#e8f2ea;padding:44px 0}.footer-inner[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:end;gap:24px;display:flex}.footer-inner[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]{margin:0}.footer-name[data-astro-cid-jo6i4kqk]{color:var(--ink);font-size:1.1rem;font-weight:850}.footer-inner[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--primary-strong);text-underline-offset:5px;font-weight:750}@media (width<=620px){.footer-inner[data-astro-cid-jo6i4kqk]{flex-direction:column;align-items:start}}
