:root{--bg: #f1f0e9;--surface: #fffbf2;--surface-low: #ebdfd0;--surface-2: #ebdfd0;--surface-variant:#ebdfd0;--surface-dim: #e3d5c2;--text: #262015;--text-muted: #5a4535;--text-subtle: #a08878;--primary: #dd733f;--primary-strong:#c25f2e;--secondary: #c5955f;--badge-bg: #ebdfd0;--badge-text: #b85c28;--outline: #dccab4;--outline-soft: #ebdfd0;--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "Inter", system-ui, sans-serif;--header-h: 64px;--gutter: 64px;--read: 760px;--sidebar: 260px;--radius: 16px;--radius-sm:10px}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}::selection{background:var(--badge-bg);color:var(--badge-text)}img{max-width:100%}.material-symbols-outlined{font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;vertical-align:middle}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.blog-main{width:100%;padding:40px var(--gutter) 96px;margin-top:28px;display:flex;flex-direction:column;flex:1 0 auto}.blog-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 28px;line-height:1.4;font-size:13px;color:var(--text-subtle)}.blog-crumbs a{color:var(--text-muted);text-decoration:none;font-weight:600;transition:color .2s}.blog-crumbs a:hover{color:var(--primary)}.blog-crumbs .material-symbols-outlined{font-size:16px;color:var(--text-subtle)}.blog-crumbs .crumb-current{color:var(--text-subtle);font-weight:500}.blog-cols{display:flex;gap:56px;align-items:flex-start}.toc-sidebar{position:sticky;top:calc(var(--header-h) + 32px);width:var(--sidebar);flex:0 0 var(--sidebar);max-height:calc(100vh - var(--header-h) - 64px);overflow:auto}.toc-sidebar h2.toc-title{font-family:var(--font-display);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--secondary);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--outline-soft)}.toc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.toc-list a{display:block;text-decoration:none;color:var(--text-muted);font-size:14px;line-height:1.4;padding:7px 12px;border-left:3px solid transparent;border-radius:0 8px 8px 0;transition:all .2s}.toc-list a:hover{background:var(--surface-variant);color:var(--text)}.toc-list a.lvl-3{padding-left:26px;font-size:13px;color:var(--text-subtle)}.toc-list a.active{color:var(--primary);font-weight:700;border-left-color:var(--primary);background:var(--surface-low)}article{flex:1 1 auto;min-width:0;max-width:var(--read);margin:0 auto}.post-header{margin-bottom:36px}.post-meta{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}.post-badge{background:color-mix(in srgb,var(--badge-bg) 60%,transparent);color:var(--badge-text);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border-radius:999px}.post-read{color:var(--text-subtle);font-size:13px;font-weight:500}.post-title{font-family:var(--font-display);font-weight:800;font-size:clamp(30px,5vw,46px);line-height:1.1;letter-spacing:-.02em;color:var(--text);margin:0 0 14px}.post-subtitle{font-size:19px;color:var(--text-muted);margin:0;line-height:1.55}.post-hero{margin-top:28px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--outline-soft);aspect-ratio:16/9;background:var(--surface-variant)}.post-hero img{width:100%;height:100%;object-fit:cover;display:block}.post-content{font-size:17px;color:var(--text)}.post-content>*:first-child{margin-top:0}.post-content h2{font-family:var(--font-display);font-weight:700;font-size:clamp(23px,3.2vw,28px);line-height:1.25;letter-spacing:-.01em;color:var(--text);margin:48px 0 16px;padding-bottom:10px;border-bottom:1px solid var(--surface-variant);scroll-margin-top:calc(var(--header-h) + 24px)}.post-content h3{font-family:var(--font-display);font-weight:700;font-size:21px;line-height:1.3;color:var(--text);margin:34px 0 12px;scroll-margin-top:calc(var(--header-h) + 24px)}.post-content h4{font-family:var(--font-body);font-weight:700;font-size:18px;color:var(--text);margin:26px 0 10px;scroll-margin-top:calc(var(--header-h) + 24px)}.post-content p{margin:0 0 18px}.post-content strong{font-weight:700;color:var(--text)}.post-content em{font-style:italic}.post-content a{color:var(--primary);font-weight:500;text-decoration:underline;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,var(--primary) 40%,transparent);transition:text-decoration-color .2s,color .2s}.post-content a:hover{color:var(--primary-strong);text-decoration-color:var(--primary-strong)}.post-content ul,.post-content ol{margin:0 0 20px;padding-left:26px}.post-content ul{list-style:disc}.post-content ol{list-style:decimal}.post-content li{margin:0 0 9px;line-height:1.6}.post-content ul li::marker{color:var(--primary)}.post-content ol li::marker{color:var(--primary);font-weight:700}.post-content li>ul,.post-content li>ol{margin:9px 0 0}.post-content img{display:block;width:100%;height:auto;margin:28px auto;border-radius:var(--radius);border:1px solid var(--outline-soft)}.post-content figure{margin:28px 0}.post-content figcaption{text-align:center;font-size:14px;color:var(--text-subtle);margin-top:10px}.post-content blockquote{margin:26px 0;padding:18px 22px;background:var(--surface-low);border-left:4px solid var(--primary);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--text-muted);font-style:italic}.post-content blockquote p:last-child{margin-bottom:0}.post-content hr{border:none;height:1px;background:var(--outline-soft);margin:40px 0}.post-content code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em;background:var(--surface-variant);padding:2px 6px;border-radius:6px;color:var(--secondary)}.post-content pre{background:var(--surface-2);border:1px solid var(--outline-soft);border-radius:var(--radius-sm);padding:18px 20px;overflow:auto;margin:22px 0}.post-content pre code{background:none;padding:0;color:var(--text);font-size:14px}.post-content table{width:100%;border-collapse:collapse;margin:24px 0;font-size:15px;border:1px solid var(--outline-soft);border-radius:var(--radius-sm);overflow:hidden}.post-content th,.post-content td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--outline-soft)}.post-content th{background:var(--surface-variant);font-weight:700}.post-content tr:last-child td{border-bottom:none}.post-content tr:nth-child(2n) td{background:var(--surface-low)}body.no-toc .toc-sidebar{display:none}body.no-toc main{justify-content:center}.m-dock{position:fixed;right:18px;bottom:18px;z-index:60;display:none;gap:10px;flex-direction:column;align-items:flex-end}.m-btn{display:inline-flex;align-items:center;gap:8px;background:var(--primary);color:#fff;border:none;cursor:pointer;font-family:var(--font-body);font-size:14px;font-weight:600;padding:12px 18px;border-radius:999px;box-shadow:0 6px 20px #9a410f47}.m-btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--outline);box-shadow:0 4px 14px #00000014;padding:11px 14px}.m-backdrop{position:fixed;inset:0;z-index:70;background:#211b1059;opacity:0;pointer-events:none;transition:opacity .25s}.m-backdrop.open{opacity:1;pointer-events:auto}.m-sheet{position:fixed;left:0;right:0;bottom:0;z-index:80;background:var(--surface);border-radius:20px 20px 0 0;padding:14px 20px 28px;max-height:72vh;overflow:auto;transform:translateY(100%);transition:transform .3s ease;box-shadow:0 -8px 30px #9a410f29}.m-sheet.open{transform:translateY(0)}.m-grip{width:44px;height:4px;background:var(--outline);border-radius:999px;margin:4px auto 16px}.m-sheet h2.toc-title{font-family:var(--font-display);font-size:16px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--secondary);margin:0 0 12px}.blog-index{display:block;width:100%;padding:56px var(--gutter) 96px;margin-top:28px;flex:1 0 auto}.blog-index-head{max-width:var(--read);margin:0 0 40px}.blog-index-head .eyebrow{display:inline-block;color:var(--badge-text);background:color-mix(in srgb,var(--badge-bg) 60%,transparent);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 12px;border-radius:999px;margin-bottom:16px}.blog-index-head h1{font-family:var(--font-display);font-weight:800;font-size:clamp(32px,5vw,48px);line-height:1.05;letter-spacing:-.02em;color:var(--text);margin:0 0 12px}.blog-index-head p{font-size:19px;color:var(--text-muted);margin:0;line-height:1.55}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:30px}.post-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--outline-soft);border-radius:var(--radius);overflow:hidden;text-decoration:none;color:inherit;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.post-card:hover{transform:translateY(-3px);box-shadow:0 12px 30px #9a410f1f;border-color:var(--outline)}.post-card-img{aspect-ratio:16/10;background:var(--surface-variant);overflow:hidden}.post-card-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease}.post-card:hover .post-card-img img{transform:scale(1.04)}.post-card-img.placeholder{display:flex;align-items:center;justify-content:center}.post-card-img.placeholder span{font-family:var(--font-display);font-weight:800;font-size:34px;color:var(--surface-dim)}.post-card-body{padding:22px 22px 24px;display:flex;flex-direction:column;flex:1 1 auto}.post-card-cat{align-self:flex-start;color:var(--badge-text);background:color-mix(in srgb,var(--badge-bg) 60%,transparent);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;margin-bottom:12px}.post-card h2{font-family:var(--font-display);font-weight:700;font-size:21px;line-height:1.25;letter-spacing:-.01em;color:var(--text);margin:0 0 8px}.post-card p{font-size:15px;color:var(--text-muted);margin:0 0 16px;line-height:1.5;flex:1 1 auto}.post-card-meta{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-subtle)}.post-card-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--text-subtle)}.blog-empty{max-width:var(--read);color:var(--text-muted);font-size:17px;padding:40px 0}@media(max-width:880px){.blog-main{padding:28px 20px 90px}.blog-cols{flex-direction:column;gap:0}.toc-sidebar{display:none}article{max-width:100%}body:not(.no-toc) .m-dock{display:flex}.m-dock .m-btn.top{display:none}.m-dock.scrolled .m-btn.top{display:inline-flex}.blog-index{padding:32px 20px 80px}.post-grid{grid-template-columns:1fr;gap:22px}}
