:root{--paper:#f7f7f2;--ink:#242820;--muted:#73776a;--line:#dcded4;--accent:#52624c;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:5px}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,input:focus-visible,pre:focus-visible{outline:2px solid var(--accent);outline-offset:5px}header,main,footer{width:min(100% - 64px,1000px);margin-inline:auto}.header{height:132px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.wordmark{font-size:38px;font-weight:650;letter-spacing:-2px;text-decoration:none}.mark{color:var(--accent);font-size:12px;margin-left:9px;vertical-align:middle}.header nav{display:flex;align-items:center;gap:34px;font-size:14px}.header nav a{text-decoration:none}.language{border-left:1px solid var(--line);padding-left:32px}.intro{padding:95px 0 91px;max-width:680px}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.16em;color:var(--accent);margin:0 0 27px}.intro h1{font-size:clamp(34px,4.8vw,54px);line-height:1.6;font-weight:500;letter-spacing:.015em;margin:0 0 24px}.intro>p:last-child{font-size:16px;line-height:2.1;color:#626858;max-width:530px;margin:0}.section-label{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px}.section-label h2{font-size:14px;font-weight:500;margin:0}.section-label span{font-size:12px;color:var(--muted)}.post-card{position:relative;padding:35px 110px 42px 0;border-bottom:1px solid var(--line)}.post-meta{display:flex;gap:24px;align-items:center;font-size:11px;letter-spacing:.065em;color:var(--muted)}.post-card h3{font-size:25px;font-weight:500;line-height:1.75;margin:17px 0 12px;max-width:740px}.post-card h3 a{text-decoration:none}.arrow{display:inline-block;font-size:20px;color:var(--accent);margin-left:18px}.post-card p{max-width:640px;line-height:1.95;font-size:14px;color:#626858;margin:0}.post-index{position:absolute;right:4px;top:67px;font-size:48px;font-weight:300;color:#d0d4c6;letter-spacing:-.05em}footer{display:flex;align-items:center;gap:22px;padding:40px 0;margin-top:96px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}footer p{flex:1;line-height:1.8}.footer-dot{font-size:20px;font-weight:600;text-decoration:none;color:var(--ink)}.footer-dot span{font-size:7px;color:var(--accent);margin-left:5px}footer>a:last-child{white-space:nowrap;text-decoration:none}.article{max-width:760px;padding-top:56px}.back{display:inline-block;font-size:12px;text-decoration:none;color:var(--muted);margin-bottom:48px}.article h1{font-size:clamp(28px,4vw,42px);font-weight:500;line-height:1.65;letter-spacing:.015em;margin:22px 0}.byline{font-size:12px;color:var(--muted);padding-bottom:30px;margin:0 0 43px;border-bottom:1px solid var(--line)}.prose{font-size:16px;line-height:2.15;overflow-wrap:anywhere}.prose p{margin:0 0 1.65em}.prose .lead{font-size:18px;color:#3e4638}.prose h2{font-size:23px;line-height:1.65;font-weight:550;margin:2.6em 0 1em}.prose code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:#edefe6;padding:.15em .3em;border-radius:3px}.code{margin:30px 0;max-width:100%;border:1px solid var(--line);border-radius:4px;overflow:hidden}.code figcaption{font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px;padding:8px 16px;border-bottom:1px solid var(--line);color:var(--muted);overflow-wrap:anywhere}pre{margin:0;overflow-x:auto;padding:21px 18px;background:#eef0e7;line-height:1.8;font-size:12px;tab-size:2}.prose pre code{font-size:inherit;padding:0;background:none;white-space:pre}.demo{margin:32px 0;padding:24px 28px;border:1px solid #ccd2c0;border-radius:5px;background:#f0f2e9}.demo figcaption{font-size:12px;color:var(--accent);margin-bottom:24px}.estimate{max-width:400px;margin:auto}.estimate>label{font-size:14px}.stepper{display:flex;align-items:center;width:180px;justify-content:space-between;border:1px solid #bec6b2;border-radius:4px;margin:12px 0 24px;background:var(--paper)}button{width:48px;height:46px;border:0;background:transparent;color:var(--ink);font-size:20px;cursor:pointer}button:hover{background:#e2e7d8}button:disabled{opacity:.35;cursor:default}.stepper output{font-size:20px}.option{display:flex;align-items:center;gap:10px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.prose .total{display:flex;align-items:baseline;gap:10px;margin:24px 0 0;border-top:1px solid #ccd2c0;padding-top:18px}.total span:first-child{flex:1;font-size:13px}.total strong{font-size:36px;font-weight:500;line-height:1.4}.total span:last-child{font-size:11px}.sources{margin-top:56px;border-top:1px solid var(--line);font-size:13px;color:#626858}.sources h2{font-size:16px}.sources ul{padding-left:20px}.about{padding-top:85px;min-height:55vh}.about h1{margin-bottom:40px}.skip{position:absolute;top:-60px;left:16px;background:var(--paper);padding:10px;z-index:2}.skip:focus{top:12px}::selection{background:#dce3cf}
@media(max-width:600px){header,main,footer{width:calc(100% - 40px)}.header{height:92px}.wordmark{font-size:32px}.header nav{gap:20px;font-size:12px}.language{padding-left:18px}.intro{padding:60px 0 62px}.intro h1{font-size:34px;line-height:1.6}.intro>p:last-child{font-size:14px}.eyebrow{font-size:10px}.post-card{padding:28px 0 32px}.post-card h3{font-size:22px;line-height:1.7}.post-index{display:none}.post-card p{font-size:13px}.post-meta{gap:16px;font-size:10px}footer{flex-wrap:wrap;gap:14px;margin-top:65px;padding:28px 0}footer p{flex-basis:calc(100% - 60px);font-size:10px}.article{padding-top:32px}.back{margin-bottom:32px}.article h1{font-size:28px;line-height:1.65}.prose{font-size:15px;line-height:2.1}.prose .lead{font-size:16px}.prose h2{font-size:21px}.demo{padding:20px 18px}.code{margin-inline:0}pre{font-size:11px;padding:16px}.about{padding-top:55px}}
.sources summary{cursor:pointer;padding:20px 0;color:var(--accent)}.sources[open] summary{margin-bottom:6px}html[data-bf-navigating]{cursor:progress}html[data-bf-navigating]::before{content:"";position:fixed;top:0;left:0;right:0;height:2px;background:var(--accent);z-index:10}
