.app-footer[data-v-255d76e2]{border-top:var(--hairline);background:var(--color-bg);padding:20px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px}.footer-meta[data-v-255d76e2],.footer-links[data-v-255d76e2]{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--color-muted)}.footer-links[data-v-255d76e2]{display:flex;align-items:center;justify-content:center;gap:clamp(14px,2vw,28px)}.footer-links a[data-v-255d76e2]{color:var(--color-ink-muted);text-decoration:none}.footer-links a[data-v-255d76e2]:hover,.footer-links a.router-link-active[data-v-255d76e2]{color:var(--color-crimson)}@media(max-width:680px){.app-footer[data-v-255d76e2]{align-items:flex-start;flex-direction:column;gap:12px}.footer-links[data-v-255d76e2]{flex-wrap:wrap;justify-content:flex-start}}.grain[data-v-263b43cc]{position:fixed;inset:0;pointer-events:none;z-index:200;mix-blend-mode:multiply;opacity:.06}.nav[data-v-bbde3d5a]{position:fixed;top:0;left:0;right:0;z-index:120;transition:background .5s,backdrop-filter .5s,border-color .5s;background:transparent;border-bottom:1px solid transparent}.nav.solid[data-v-bbde3d5a]{background:#0a0a0aeb;backdrop-filter:blur(14px);border-bottom-color:var(--color-dark-line)}.nav-inner[data-v-bbde3d5a]{display:flex;align-items:center;justify-content:space-between;padding:18px var(--gutter);position:relative;z-index:1}.brand[data-v-bbde3d5a]{font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 800;font-weight:800;font-size:17px;color:var(--color-paper);letter-spacing:-.02em;text-decoration:none}.nav.light:not(.solid) .brand[data-v-bbde3d5a]{color:var(--color-ink)}.nav-links[data-v-bbde3d5a]{display:flex;align-items:center;gap:clamp(16px,2vw,32px)}.nav-link[data-v-bbde3d5a]{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--color-muted);position:relative;text-decoration:none;transition:color .2s;white-space:nowrap}.nav.light:not(.solid) .nav-link[data-v-bbde3d5a]{color:var(--color-ink-muted)}.nav-num[data-v-bbde3d5a]{color:var(--color-crimson);margin-right:6px}.nav-link[data-v-bbde3d5a]:after{content:"";position:absolute;left:0;bottom:-4px;width:0;height:1px;background:var(--color-crimson);transition:width .3s ease}.nav.solid .nav-link[data-v-bbde3d5a]:hover,.nav.solid .nav-link.active[data-v-bbde3d5a]{color:var(--color-paper)}.nav.light:not(.solid) .nav-link[data-v-bbde3d5a]:hover,.nav.light:not(.solid) .nav-link.active[data-v-bbde3d5a]{color:var(--color-ink)}.nav-link[data-v-bbde3d5a]:hover:after,.nav-link.active[data-v-bbde3d5a]:after{width:100%}.burger[data-v-bbde3d5a]{display:none;background:none;border:none;color:var(--color-paper);cursor:pointer;padding:4px}.nav.light:not(.solid) .burger[data-v-bbde3d5a]{color:var(--color-ink)}.overlay[data-v-bbde3d5a]{position:fixed;inset:0;min-height:100dvh;background:var(--color-dark);display:flex;flex-direction:column;justify-content:center;gap:8px;padding:0 var(--gutter)}.overlay-link[data-v-bbde3d5a]{font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 700;font-weight:700;font-size:clamp(40px,12vw,72px);line-height:1.05;text-transform:uppercase;color:var(--color-paper);text-decoration:none;font-style:italic;display:flex;align-items:baseline;gap:16px}.overlay-link.active[data-v-bbde3d5a]{color:var(--color-crimson)}.overlay-num[data-v-bbde3d5a]{font-family:var(--font-mono);font-size:12px;font-style:normal;color:var(--color-crimson)}.menu-enter-active[data-v-bbde3d5a],.menu-leave-active[data-v-bbde3d5a]{transition:opacity .3s ease}.menu-enter-from[data-v-bbde3d5a],.menu-leave-to[data-v-bbde3d5a]{opacity:0}@media(max-width:820px){.nav-links.desktop[data-v-bbde3d5a]{display:none}.nav-inner[data-v-bbde3d5a]{min-height:var(--header-height);padding:max(10px,env(safe-area-inset-top)) max(var(--gutter),env(safe-area-inset-right)) 10px max(var(--gutter),env(safe-area-inset-left))}.burger[data-v-bbde3d5a]{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center}.overlay[data-v-bbde3d5a]{padding:calc(var(--header-height) + 24px) max(var(--gutter),env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(var(--gutter),env(safe-area-inset-left));justify-content:flex-start;overflow-y:auto}}.app-shell[data-v-7e889887]{display:flex;flex-direction:column;min-height:100vh}.main-content[data-v-7e889887]{flex:1;width:100%;padding-top:0}.icp-footer[data-v-7e889887]{flex:0 0 auto;padding:10px var(--gutter);background:var(--color-bg);text-align:center}.icp-link[data-v-7e889887]{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--color-muted);text-decoration:none}.icp-link[data-v-7e889887]:hover,.icp-link[data-v-7e889887]:focus-visible{color:var(--color-crimson)}.page-enter-active[data-v-7e889887],.page-leave-active[data-v-7e889887]{transition:opacity .35s ease}.page-enter-from[data-v-7e889887],.page-leave-to[data-v-7e889887]{opacity:0}@supports (padding: env(safe-area-inset-bottom)){.icp-footer[data-v-7e889887]{padding-bottom:calc(10px + env(safe-area-inset-bottom))}}:root{--bg-primary: #f5f2ee;--bg-secondary: #efecea;--bg-card: #efecea;--bg-card-hover: #e8e4df;--bg-code: #efecea;--text-primary: #0a0a0a;--text-secondary: #4a4540;--text-tertiary: #9a9087;--border-color: #d0cbc3;--border-color-light: #ded9d2;--accent: #7d0a1e;--accent-hover: #3a0a10;--accent-dim: rgba(125, 10, 30, .07);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 16px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);--shadow-card-hover: 0 6px 24px rgba(0, 0, 0, .1);--radius-sm: 2px;--radius-md: 3px;--radius-lg: 4px;--header-height: 64px;--transition-fast: .2s ease;--transition-normal: .3s ease;--transition-page: .5s cubic-bezier(.4, 0, .2, 1);--fs-page-title: clamp(2rem, 5vw, 3rem);--fs-body: clamp(.875rem, 1.5vw, .9375rem);--font-display: "Fraunces", "Noto Serif SC", "Source Han Serif SC", "Songti SC", Georgia, "Times New Roman", serif;--font-body: "Epilogue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-sans: "Epilogue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono: "DM Mono", "IBM Plex Mono", "SF Mono", "Fira Code", "Consolas", "PingFang SC", monospace;--color-bg: #f5f2ee;--color-surface: #efecea;--color-ink: #0a0a0a;--color-ink-muted: #4a4540;--color-crimson: #7d0a1e;--color-crimson-deep: #3a0a10;--color-paper: #f5f2ee;--color-hairline: #d0cbc3;--color-muted: #9a9087;--color-muted-2: #c0bab2;--color-dark: #0a0a0a;--color-dark-line: #1a1a1a;--color-dark-ghost: #141414;--font-serif: "Fraunces", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--gutter: clamp(24px, 6vw, 80px);--pad-section: clamp(32px, 5vw, 64px);--hairline: 1px solid var(--color-hairline)}html{position:relative}html:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:-1;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-ink);line-height:1.7;overflow-x:hidden}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-33.333%)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}img{max-width:100%;height:auto;display:block}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}::selection{background:#7d0a1e26;color:var(--color-ink)}.container,.container-narrow{width:100%;max-width:none;margin:0 auto;padding-inline:var(--gutter)}.page-title{font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 900;font-size:clamp(40px,7vw,96px);font-weight:900;letter-spacing:0;line-height:.95;margin-bottom:20px;color:var(--color-ink)}.page-subtitle{font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 400;font-size:clamp(18px,2vw,24px);color:var(--color-ink-muted);font-weight:400;font-style:italic;line-height:1.45}.tag{display:inline-block;padding:2px 10px;font-family:var(--font-mono);font-size:.75rem;font-weight:500;color:var(--text-secondary);background:transparent;border:1px solid var(--border-color);transition:all var(--transition-fast);cursor:default}.tag:hover{color:var(--accent);border-color:var(--accent)}.fade-in{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}.fade-in.visible{opacity:1;transform:translateY(0)}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 24px;font-family:var(--font-mono);font-size:.8125rem;font-weight:500;color:var(--color-ink);background:transparent;border:var(--hairline);cursor:pointer;transition:all var(--transition-fast);text-decoration:none;letter-spacing:.12em;text-transform:uppercase}.btn:hover{background:var(--color-dark);border-color:var(--color-dark);color:var(--color-paper);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-primary{background:var(--color-crimson);border-color:var(--color-crimson);color:var(--color-paper)}.btn-primary:hover{background:var(--color-dark);border-color:var(--color-dark);color:var(--color-paper)}.divider{width:100%;height:1px;background:var(--border-color);margin:48px 0;position:relative}.divider:after{content:"";position:absolute;bottom:-3px;left:0;width:100%;height:1px;background:var(--border-color)}.markdown-body{font-family:var(--font-sans);color:var(--color-ink);line-height:1.75;word-wrap:break-word;overflow-wrap:anywhere;font-size:17px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 600;font-weight:700;letter-spacing:0;margin-top:2.5em;margin-bottom:.75em;line-height:1.3;color:var(--color-ink);scroll-margin-top:calc(var(--header-height) + 16px)}.markdown-body h1{font-size:clamp(2rem,5vw,2.75rem);padding-bottom:.5em;border-bottom:2px solid var(--color-ink)}.markdown-body h2{font-size:clamp(1.25rem,2.5vw,1.5rem);padding-bottom:.4em;border-bottom:var(--hairline)}.markdown-body h3{font-size:clamp(1.125rem,2.5vw,1.375rem)}.markdown-body h4{font-size:1.125rem}.markdown-body p{margin-bottom:1.5em}.markdown-body a{color:var(--color-crimson);text-decoration:underline;text-underline-offset:3px;text-decoration-color:#7d0a1e4d;transition:text-decoration-color var(--transition-fast)}.markdown-body a:hover{text-decoration-color:var(--color-crimson)}.markdown-body strong{font-weight:700;color:var(--color-ink)}.markdown-body em{font-style:italic}.markdown-body ul,.markdown-body ol{margin-bottom:1.5em;padding-left:1.75em}.markdown-body li{margin-bottom:.5em}.markdown-body li>ul,.markdown-body li>ol{margin-top:.5em;margin-bottom:0}.markdown-body blockquote{margin:2em 0;padding:4px 0 4px 24px;border-left:3px solid var(--color-crimson);background:transparent;color:var(--color-crimson);font-family:var(--font-serif);font-variation-settings:"opsz" 144,"wght" 500;font-size:clamp(20px,2.4vw,30px);line-height:1.4;font-style:italic}.markdown-body blockquote p:last-child{margin-bottom:0}.callout-section{margin:2.5em 0;padding:20px 24px;border-left:4px solid var(--color-crimson);background:var(--color-surface);border-radius:0}.callout-section p:first-child{font-size:1.1em;font-weight:700;margin-bottom:.8em;color:var(--color-ink)}.callout-section p:last-child{margin-bottom:0}.markdown-body code{font-family:var(--font-mono);font-size:.85em;padding:2px 6px;background:var(--color-surface);border:var(--hairline);color:var(--color-crimson)}.markdown-body pre{margin:2em 0;overflow:hidden;border:var(--hairline);background:var(--color-surface)}.markdown-body pre code{display:block;padding:20px 24px;font-size:.8125rem;line-height:1.8;background:transparent;border:none;color:var(--color-ink);overflow-x:auto}.markdown-body table{width:100%;margin:2em 0;border-collapse:collapse;font-size:.875rem;display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.markdown-body .mermaid{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.markdown-body .mermaid svg{display:block;min-width:560px;max-width:none}.markdown-body th,.markdown-body td{padding:10px 16px;text-align:left;border-bottom:var(--hairline)}.markdown-body th{font-weight:600;background:var(--color-surface);color:var(--color-ink);border-bottom:2px solid var(--color-ink)}.markdown-body tr:hover td{background:var(--color-surface)}.markdown-body hr{margin:2.5em 0;border:none;height:1px;background:var(--color-hairline);position:relative}.markdown-body img{max-width:100%;margin:2em 0;border:var(--hairline);position:relative;display:block}.hljs{background:var(--color-surface)!important;color:var(--color-ink)!important}.hljs-keyword{color:#6b2fa0;font-weight:600}.hljs-string{color:#2e7d32}.hljs-number{color:#bf360c}.hljs-built_in{color:#8b0000}.hljs-comment{color:#999;font-style:italic}.hljs-function .hljs-title,.hljs-title.function_{color:#1565c0}.hljs-variable{color:#8b0000}.hljs-attr{color:#bf360c}.hljs-type{color:#6b2fa0}.hljs-params{color:var(--color-ink)}.hljs-meta{color:#00695c}.hljs-tag,.hljs-name{color:#8b0000}.hljs-attribute{color:#bf360c}.hljs-selector-tag{color:#8b0000}.hljs-selector-class{color:#bf360c}.hljs-selector-id{color:#1565c0}@media(max-width:768px){body{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}input,textarea,select,button{font-size:16px}.markdown-body pre{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.markdown-body table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.btn{min-height:44px;padding:12px 24px}.divider{margin:32px 0}}@media(max-width:820px){:root{--gutter: clamp(16px, 5vw, 24px);--header-height: calc(64px + env(safe-area-inset-top)) }html,body{max-width:100%;overflow-x:clip}.container,.container-narrow{padding-left:max(var(--gutter),env(safe-area-inset-left));padding-right:max(var(--gutter),env(safe-area-inset-right))}}@media(max-width:480px){.btn{padding:12px 20px;font-size:.8125rem}.divider{margin:24px 0}}
