:root{--canvas: #010102;--surface-1: #0f1011;--surface-2: #141516;--surface-3: #18191a;--surface-4: #191a1b;--hairline: #23252a;--hairline-strong: #34343a;--hairline-tertiary: #3e3e44;--ink: #f7f8f8;--ink-muted: #d0d6e0;--ink-subtle: #8a8f98;--ink-tertiary: #62666d;--primary: #5e6ad2;--on-primary: #ffffff;--primary-hover: #828fff;--primary-focus: #5e69d1;--brand-secure: #7a7fad;--success: #27a644;--overlay: #000000;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-pill: 9999px;--space-xxs: 4px;--space-xs: 8px;--space-sm: 12px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-xxl: 48px;--space-section: 96px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Courier New", monospace;--nav-height: 56px;--sidebar-width: 288px;--content-max: 760px;--layout-max: 1280px;--focus-ring: 0 0 0 2px rgba(94, 105, 209, .5);--ease-out: cubic-bezier(.22, 1, .36, 1);--dur: .2s}*,*:before,*:after{box-sizing:border-box}*{margin:0}html,body,#root{height:100%}body{background:var(--canvas);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.5;letter-spacing:-.05px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,picture,svg{display:block;max-width:100%}button,input{font:inherit;color:inherit}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}::selection{background:#5e6ad252;color:var(--ink)}*{scrollbar-width:thin;scrollbar-color:var(--hairline-strong) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:var(--radius-pill)}*::-webkit-scrollbar-track{background:transparent}.app{min-height:100%}.app-main{padding-top:var(--nav-height);min-height:100vh;transition:padding-left var(--dur) var(--ease-out)}@media (min-width: 1024px){.app-main.with-pinned-sidebar{padding-left:var(--sidebar-width)}}.container{width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-xl) var(--space-lg) var(--space-section)}.container.wide{max-width:var(--layout-max)}.navbar{position:fixed;inset:0 0 auto 0;z-index:60;height:var(--nav-height);display:flex;align-items:center;gap:var(--space-sm);padding:0 var(--space-md);background:#010102cc;-webkit-backdrop-filter:saturate(140%) blur(12px);backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid var(--hairline)}.navbar-brand{display:flex;align-items:center;gap:var(--space-xs);font-size:15px;font-weight:600;letter-spacing:-.3px;color:var(--ink);white-space:nowrap}.navbar-brand:hover{color:var(--ink)}.brand-dot{width:18px;height:18px;border-radius:var(--radius-sm);background:var(--primary);box-shadow:inset 0 0 0 1px #ffffff1f}.navbar-links{display:flex;align-items:center;gap:var(--space-xxs);margin-left:var(--space-md)}.navbar-links a{padding:6px 10px;border-radius:var(--radius-md);font-size:14px;color:var(--ink-subtle);transition:color var(--dur),background var(--dur)}.navbar-links a:hover,.navbar-links a.active{color:var(--ink);background:var(--surface-2)}.navbar-spacer{flex:1}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--ink-muted);cursor:pointer;transition:background var(--dur),color var(--dur),border-color var(--dur)}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.hamburger{position:relative;width:18px;height:12px}.hamburger span{position:absolute;left:0;width:100%;height:1.6px;border-radius:2px;background:currentColor;transition:transform var(--dur) var(--ease-out),opacity var(--dur),top var(--dur) var(--ease-out)}.hamburger span:nth-child(1){top:0}.hamburger span:nth-child(2){top:5.2px}.hamburger span:nth-child(3){top:10.4px}.hamburger.open span:nth-child(1){top:5.2px;transform:rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){top:5.2px;transform:rotate(-45deg)}.sidebar{position:fixed;top:var(--nav-height);left:0;bottom:0;z-index:55;width:var(--sidebar-width);display:flex;flex-direction:column;background:var(--canvas);border-right:1px solid var(--hairline);transform:translate(-102%);visibility:hidden;transition:transform var(--dur) var(--ease-out),visibility 0s var(--dur)}.sidebar.open{transform:translate(0);visibility:visible;transition:transform var(--dur) var(--ease-out),visibility 0s}@media (min-width: 1024px){.sidebar.pinned{box-shadow:none}}.sidebar-head{padding:var(--space-md) var(--space-md) var(--space-xs);font-size:12px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-tertiary)}.sidebar-scroll{flex:1;overflow-y:auto;padding:0 var(--space-xs) var(--space-lg)}.sidebar-group-label{padding:var(--space-md) var(--space-sm) var(--space-xxs);font-size:12px;color:var(--ink-tertiary)}.sidebar-link{display:block;width:100%;text-align:left;padding:7px var(--space-sm);border:none;border-radius:var(--radius-md);background:transparent;color:var(--ink-subtle);font-size:14px;line-height:1.35;cursor:pointer;position:relative;transition:background var(--dur),color var(--dur);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sidebar-link:hover,.sidebar-link.active{background:var(--surface-2);color:var(--ink)}.sidebar-link.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--primary)}.sidebar-date{display:block;margin-top:2px;font-size:12px;color:var(--ink-tertiary)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#00000080;opacity:0;pointer-events:none;transition:opacity var(--dur)}.scrim.show{opacity:1;pointer-events:auto}.card{background:var(--surface-1);border:1px solid var(--hairline);border-radius:var(--radius-lg);box-shadow:inset 0 1px #ffffff0a;transition:background var(--dur),border-color var(--dur),transform var(--dur) var(--ease-out)}.card.hover:hover{background:var(--surface-2);border-color:var(--hairline-strong)}.btn{display:inline-flex;align-items:center;gap:var(--space-xs);padding:8px 14px;border-radius:var(--radius-md);font-size:14px;font-weight:500;line-height:1.2;cursor:pointer;border:1px solid transparent;transition:background var(--dur),color var(--dur),border-color var(--dur)}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-hover);color:var(--on-primary)}.btn-secondary{background:var(--surface-1);color:var(--ink);border-color:var(--hairline)}.btn-secondary:hover{background:var(--surface-2)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--ink-muted);font-size:12px;line-height:1.4}.eyebrow{font-size:13px;font-weight:500;letter-spacing:.4px;text-transform:uppercase;color:var(--primary)}.muted{color:var(--ink-subtle)}.tiny{font-size:12px;color:var(--ink-tertiary)}.hero{padding:var(--space-xxl) 0 var(--space-xl)}.hero h1{font-size:clamp(34px,5vw,56px);font-weight:600;line-height:1.1;letter-spacing:-1.8px;margin:var(--space-sm) 0 var(--space-md)}.hero p{font-size:18px;color:var(--ink-subtle);max-width:56ch}.post-list{display:grid;gap:var(--space-md);margin-top:var(--space-lg)}.post-card{display:block;padding:var(--space-lg);color:var(--ink)}.post-card h3{font-size:22px;font-weight:500;letter-spacing:-.4px;margin-bottom:var(--space-xxs)}.post-card .excerpt{color:var(--ink-subtle);font-size:15px;margin:var(--space-xs) 0 var(--space-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-card .meta{display:flex;align-items:center;gap:var(--space-sm);font-size:12px;color:var(--ink-tertiary)}.post-card:hover{color:var(--ink)}.archive-year{margin:var(--space-xl) 0 var(--space-sm);font-size:13px;font-weight:500;letter-spacing:.4px;color:var(--ink-tertiary);text-transform:uppercase}.archive-row{display:flex;align-items:baseline;gap:var(--space-md);padding:12px 0;border-bottom:1px solid var(--hairline);color:var(--ink)}.archive-row:hover{color:var(--primary-hover)}.archive-row time{flex-shrink:0;width:96px;font-family:var(--font-mono);font-size:13px;color:var(--ink-tertiary)}.post-header{padding:var(--space-xxl) 0 var(--space-lg);border-bottom:1px solid var(--hairline);margin-bottom:var(--space-xl)}.post-header h1{font-size:clamp(30px,4vw,40px);font-weight:600;line-height:1.15;letter-spacing:-1px;margin:var(--space-sm) 0}.post-header .meta{display:flex;align-items:center;gap:var(--space-sm);color:var(--ink-tertiary);font-size:13px}.back-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-subtle);margin-bottom:var(--space-md)}.back-link:hover{color:var(--ink)}.markdown{font-size:16px;line-height:1.7;color:var(--ink-muted);overflow-wrap:break-word}.markdown>*:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{color:var(--ink);font-weight:600;line-height:1.25;margin:1.8em 0 .6em}.markdown h1{font-size:30px;letter-spacing:-.6px}.markdown h2{font-size:24px;letter-spacing:-.5px;padding-bottom:8px;border-bottom:1px solid var(--hairline)}.markdown h3{font-size:20px;letter-spacing:-.4px}.markdown h4{font-size:17px}.markdown p{margin:0 0 1.1em}.markdown a{color:var(--primary);text-decoration:none;border-bottom:1px solid transparent}.markdown a:hover{color:var(--primary-hover);border-bottom-color:currentColor}.markdown ul,.markdown ol{margin:0 0 1.1em;padding-left:1.4em}.markdown li{margin:.35em 0}.markdown li::marker{color:var(--ink-tertiary)}.markdown li.task-list-item{list-style:none;margin-left:-1.4em}.markdown .task-list-item input{margin-right:8px;accent-color:var(--primary)}.markdown blockquote{margin:0 0 1.1em;padding:2px 0 2px var(--space-md);border-left:2px solid var(--hairline-strong);color:var(--ink-subtle)}.markdown hr{border:none;border-top:1px solid var(--hairline);margin:var(--space-xl) 0}.markdown img{border-radius:var(--radius-lg);border:1px solid var(--hairline);margin:var(--space-md) 0}.markdown code{font-family:var(--font-mono);font-size:.86em;background:var(--surface-2);border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:.15em .4em;color:var(--ink)}.markdown pre{margin:0 0 1.2em}.markdown pre code{background:transparent;border:none;padding:0;font-size:13px}.table-wrap{overflow-x:auto;margin:0 0 1.2em;border:1px solid var(--hairline);border-radius:var(--radius-lg)}.markdown table{width:100%;border-collapse:collapse;font-size:14px}.markdown th,.markdown td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--hairline)}.markdown thead th{background:var(--surface-1);color:var(--ink);font-weight:500}.markdown tbody tr:last-child td{border-bottom:none}.markdown tbody tr:hover{background:var(--surface-1)}.codeblock{position:relative;border:1px solid var(--hairline);border-radius:var(--radius-lg);background:var(--surface-1);overflow:hidden;margin:0 0 1.2em;box-shadow:inset 0 1px #ffffff0a}.codeblock-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 14px;border-bottom:1px solid var(--hairline);background:var(--surface-1)}.codeblock-lang{font-family:var(--font-mono);font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-tertiary)}.copy-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink-subtle);font-size:12px;cursor:pointer;transition:background var(--dur),color var(--dur)}.copy-btn:hover{background:var(--surface-2);color:var(--ink)}.copy-btn.copied{color:var(--success)}.codeblock pre{margin:0!important;border:none!important;background:transparent!important;padding:14px 16px!important;font-size:13px!important;line-height:1.6!important;overflow-x:auto}.state-view{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-md);padding:var(--space-section) var(--space-lg);text-align:center;color:var(--ink-subtle)}.state-view .state-title{font-size:20px;font-weight:500;color:var(--ink)}.spinner{width:28px;height:28px;border-radius:50%;border:2px solid var(--hairline-strong);border-top-color:var(--primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.compare-grid{display:grid;gap:var(--space-xl)}.compare-block{border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-1);box-shadow:inset 0 1px #ffffff0a}.compare-block .compare-title{padding:12px 16px;font-size:13px;font-weight:500;color:var(--ink-muted);border-bottom:1px solid var(--hairline);background:var(--surface-1)}.compare-cols{display:grid;grid-template-columns:1fr 1fr}@media (max-width: 860px){.compare-cols{grid-template-columns:1fr}}.compare-pane{min-width:0;padding:var(--space-md)}.compare-pane.src{background:var(--canvas);border-right:1px solid var(--hairline)}@media (max-width: 860px){.compare-pane.src{border-right:none;border-bottom:1px solid var(--hairline)}}.compare-pane .pane-label{display:block;margin-bottom:var(--space-sm);font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--ink-tertiary)}.compare-pane pre.raw{margin:0;font-family:var(--font-mono);font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--ink-muted)}.compare-pane.out .markdown{font-size:15px}.page-head{padding:var(--space-xxl) 0 var(--space-lg)}.page-head h1{font-size:clamp(28px,4vw,40px);font-weight:600;letter-spacing:-1px;margin:var(--space-sm) 0}.page-head p{color:var(--ink-subtle);max-width:62ch}@media (max-width: 768px){.navbar-links{display:none}.container{padding:var(--space-lg) var(--space-md) var(--space-xxl)}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
