:root{--color-bg:#fff;--color-bg-muted:#f7f9f8;--color-bg-subtle:#eef3f1;--color-fg:#0f1115;--color-fg-muted:#4b5563;--color-fg-dim:#8a94a4;--color-border:#e6eae8;--color-border-strong:#cdd5d1;--accent:#00dc82;--accent-hover:#00b86d;--accent-bg:rgba(0,220,130,.1);--accent-ring:rgba(0,220,130,.35);--code-bg:#eef3f1;--code-fg:#00b86d;--code-block-bg:#020420;--code-block-fg:#e6e6e6;--search-bg:#f7f9f8;--search-bg-focus:#fff;--search-border:#e6eae8;--search-fg:#4b5563;--font-sans:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Monaco,Consolas,"Liberation Mono",monospace;--header-h:56px;--layout-max:1400px;--sidebar-w:256px;--toc-w:240px;--content-w:768px;--gutter:2.5rem;--radius:6px;--radius-sm:4px;--shadow-sm:0 1px 2px rgba(15,17,21,.04);--shadow-md:0 8px 24px rgba(15,17,21,.08)}@media(prefers-color-scheme:dark){:root{--color-bg:#020420;--color-bg-muted:#0a0d20;--color-bg-subtle:#111527;--color-fg:#f3f4f6;--color-fg-muted:#9aa3b2;--color-fg-dim:#646b79;--color-border:#1a1d2e;--color-border-strong:#262a3d;--accent:#00dc82;--accent-hover:#1fe994;--accent-bg:rgba(0,220,130,.12);--accent-ring:rgba(0,220,130,.35);--code-bg:#111527;--code-fg:#00dc82;--code-block-bg:#0a0d20;--code-block-fg:#e6e6e6;--search-bg:#1a1f3a;--search-bg-focus:#1f2542;--search-border:#2a2f4a;--search-fg:#fff}}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1rem)}body{background:var(--color-bg);background-attachment:fixed;background-image:radial-gradient(ellipse 70% 50% at 50% -10%,var(--accent-bg),transparent 70%),linear-gradient(180deg,var(--color-bg-muted) 0,var(--color-bg) 25%);color:var(--color-fg);font-family:var(--font-sans);font-size:15px;line-height:1.65;margin:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none;transition:color .12s ease}a:hover{color:var(--accent-hover)}a:focus-visible,button:focus-visible,input:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--accent);outline-offset:2px}::-moz-selection{background:var(--accent-bg);color:var(--accent-hover)}::selection{background:var(--accent-bg);color:var(--accent-hover)}code{background:var(--code-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--code-fg);font-family:var(--font-mono);font-size:.88em;font-weight:500;padding:.15em .4em}input,select,textarea{font-size:16px}pre{background:var(--code-block-bg);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--code-block-fg);font-size:13.5px;line-height:1.6;margin:1.25rem 0;overflow-x:auto;padding:1rem 1.2rem}pre code{background:transparent;border:none;color:inherit;font-size:inherit;font-weight:400;padding:0}hr{background:linear-gradient(90deg,transparent 0,var(--color-border-strong) 50%,transparent 100%);border:none;height:1px;margin:2rem 0}.app-header{backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);background:color-mix(in srgb,var(--color-bg) 75%,transparent);border-bottom:1px solid transparent;-o-border-image:linear-gradient(90deg,transparent 0,var(--color-border-strong) 50%,transparent 100%) 1;border-image:linear-gradient(90deg,transparent 0,var(--color-border-strong) 50%,transparent 100%) 1;height:var(--header-h);position:sticky;top:0;z-index:40}.app-header-inner{align-items:center;display:flex;gap:1.5rem;height:100%;margin:0 auto;max-width:var(--layout-max);padding:0 1.5rem}.app-brand{align-items:center;display:inline-flex;font-size:15px;font-weight:700;gap:.55rem;letter-spacing:-.01em}.app-brand,.app-brand:hover{color:var(--color-fg)}.app-brand:before{background:linear-gradient(135deg,var(--accent) 0,var(--accent-hover) 100%);border-radius:4px;box-shadow:inset 0 0 0 1px #ffffff1a;content:"";display:inline-block;height:18px;width:18px}.app-header .tagline{color:var(--color-fg-dim);font-size:13px;margin:0}.app-header .search-slot{flex:0 1 360px;margin-left:auto;min-width:200px}.app-header .auth-slot{align-items:center;color:var(--color-fg-muted);display:flex;font-size:13px;gap:.6rem}.app-header .auth-slot--alone{margin-left:auto}.app-header .auth-user{color:var(--color-fg-muted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header .auth-link{background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-fg-muted);cursor:pointer;font:inherit;font-size:13px;font-weight:500;padding:.3rem .65rem;text-decoration:none;transition:color .12s ease,border-color .12s ease,background .12s ease}.app-header .auth-link:hover{background:var(--color-bg-subtle);border-color:var(--color-border-strong);color:var(--color-fg)}.user-menu{position:relative}.user-menu-trigger{align-items:center;background:transparent;border:1px solid var(--color-border-strong);border-radius:50%;color:var(--color-fg-muted);cursor:pointer;display:inline-flex;height:34px;justify-content:center;padding:0;transition:color .12s ease,border-color .12s ease,background .12s ease;width:34px}.user-menu-trigger.is-open,.user-menu-trigger:hover{background:var(--color-bg-subtle);border-color:var(--color-fg-muted);color:var(--color-fg)}.user-menu-panel{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);min-width:240px;padding:.4rem;position:absolute;right:0;top:calc(100% + 8px);z-index:60}.user-menu-header{border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:.15rem;margin-bottom:.35rem;padding:.55rem .7rem .7rem}.user-menu-label{color:var(--color-fg-dim);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.user-menu-email{color:var(--color-fg);font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-item{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-fg);cursor:pointer;display:flex;font:inherit;font-size:13.5px;gap:.6rem;padding:.5rem .7rem;text-align:left;transition:background .12s ease,color .12s ease;width:100%}.user-menu-item:hover{background:var(--accent-bg);color:var(--accent)}.user-menu-item svg{color:var(--color-fg-muted);flex-shrink:0}.user-menu-item:hover svg{color:var(--accent)}.app-shell{display:grid;gap:0 var(--gutter);grid-template-columns:var(--sidebar-w) minmax(0,1fr) var(--toc-w);margin:0 auto;max-width:var(--layout-max);padding:0 1.5rem}.app-shell--bare{grid-template-columns:minmax(0,1fr)}.app-shell--bare .app-main{justify-self:center;margin:0 auto;max-width:var(--content-w)}.app-sidebar{align-self:start;font-size:14px;max-height:calc(100vh - var(--header-h));overflow-y:auto;padding:1.75rem .5rem 3rem 0;position:sticky;scrollbar-width:thin;top:var(--header-h)}.app-main{justify-self:start;max-width:var(--content-w);min-width:0;padding:2rem 0 4rem;width:100%}.app-toc{align-self:start;color:var(--color-fg-muted);font-size:13px;max-height:calc(100vh - var(--header-h));overflow-y:auto;padding:1.75rem 0 3rem .5rem;position:sticky;top:var(--header-h)}.prose,.prose h1{color:var(--color-fg)}.prose h1{font-size:2.25rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:0 0 .75rem}.prose h2{border-top:1px solid var(--color-border);color:var(--color-fg);font-size:1.5rem;font-weight:600;letter-spacing:-.015em;line-height:1.3;margin:2.5rem 0 .85rem;padding-top:1rem}.prose h2:first-of-type{margin-top:2rem}.prose h3{font-size:1.15rem;font-weight:600;letter-spacing:-.01em;margin:1.75rem 0 .5rem}.prose h3,.prose p{color:var(--color-fg)}.prose p{margin:0 0 1rem}.prose ol,.prose ul{margin:0 0 1rem;padding-left:1.35rem}.prose li{margin-bottom:.35rem}.prose ul li::marker{color:var(--color-fg-dim)}.prose blockquote{background:var(--accent-bg);border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--color-fg-muted);font-style:normal;margin:1.25rem 0;padding:.1rem 1rem}.prose blockquote p{margin:.5rem 0}.prose strong{color:var(--color-fg);font-weight:600}.prose em{color:inherit}.prose .resume{color:var(--color-fg-muted);font-size:1.1rem;font-weight:400;line-height:1.6;margin:.25rem 0 2rem}.prose a{font-weight:500;text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-decoration-thickness:1px;text-underline-offset:3px}.prose a:hover{text-decoration-color:var(--accent)}.prose :where(h2,h3,h4){scroll-margin-top:calc(var(--header-h) + 1rem)}.breadcrumb{align-items:center;display:flex;flex-wrap:wrap;font-size:13px;gap:.3rem;margin-bottom:1.25rem}.breadcrumb,.breadcrumb a{color:var(--color-fg-muted)}.breadcrumb a{font-weight:500;text-decoration:none}.breadcrumb a:hover{color:var(--accent)}.breadcrumb .sep{color:var(--color-fg-dim)}.nav-tree{list-style:none;margin:0;padding:0}.nav-tree>li{margin-bottom:.5rem}.nav-section-toggle{align-items:center;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-fg);cursor:pointer;display:flex;font:inherit;font-size:14px;font-weight:600;gap:.45rem;padding:.4rem .65rem;text-align:left;transition:background .12s ease,color .12s ease;width:100%}.nav-section-toggle:hover{background:var(--color-bg-subtle)}.nav-section-toggle.is-active{color:var(--accent)}.nav-chevron{color:var(--color-fg-dim);flex-shrink:0;transition:transform .18s ease}.nav-section-toggle:hover .nav-chevron{color:var(--color-fg-muted)}.nav-chevron.is-open{transform:rotate(90deg)}.nav-icon{color:var(--color-fg-muted);flex-shrink:0;transition:color .12s ease}.nav-section-toggle:hover .nav-icon{color:var(--color-fg)}.nav-section-toggle.is-active .nav-icon{color:var(--accent)}.nav-tree ul{list-style:none;margin:.25rem 0 0;padding:0}.nav-tree ul a{border-radius:var(--radius-sm);color:var(--color-fg-muted);display:block;font-size:14px;font-weight:500;line-height:1.4;padding:.35rem .65rem .35rem .85rem;position:relative;transition:background .12s ease,color .12s ease}.nav-tree ul a:hover{background:var(--color-bg-subtle);color:var(--color-fg)}.nav-tree ul a.router-link-exact-active{background:linear-gradient(90deg,var(--accent-bg) 0,transparent 100%);color:var(--accent);font-weight:600}.nav-tree ul a.router-link-exact-active:before{background:var(--accent);border-radius:2px;bottom:4px;box-shadow:0 0 8px var(--accent-ring);content:"";left:0;position:absolute;top:4px;width:2px}.nav-tree ul ul{border-left:1px solid var(--color-border);margin-left:.65rem;margin-top:.1rem;padding-left:.75rem}.nav-tree ul ul a{font-size:13.5px;padding:.25rem .65rem}.toc-title{color:var(--color-fg-dim);font-size:11.5px;font-weight:600;letter-spacing:.08em;margin:0 0 .75rem .75rem;text-transform:uppercase}.toc-list{border-left:1px solid var(--color-border);list-style:none;margin:0;padding:0}.toc-list ul{list-style:none;margin:.1rem 0;padding-left:.75rem}.toc-list li{margin:0}.toc-list a{border-left:2px solid transparent;color:var(--color-fg-muted);display:block;font-weight:400;line-height:1.45;margin-left:-1px;padding:.2rem .75rem;transition:color .12s ease,border-color .12s ease}.toc-list a:hover{color:var(--color-fg)}.toc-list a.toc-active{border-left-color:var(--accent);color:var(--accent);font-weight:500}.search{position:relative}.search-field{align-items:center;background:var(--search-bg);border:1px solid var(--search-border);border-radius:var(--radius);display:flex;gap:.5rem;height:36px;padding:0 .75rem;transition:border-color .12s ease,background .12s ease}.search-field:focus-within{background:var(--search-bg-focus);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.search-field input{background:transparent;border:none;color:var(--color-fg);flex:1;font-family:inherit;font-size:16px;min-width:0;outline:none}.search-field input::-moz-placeholder{color:var(--search-fg);opacity:1}.search-field input::placeholder{color:var(--search-fg);opacity:1}.search-icon{color:var(--search-fg);flex-shrink:0}.search-kbd{align-items:center;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:3px;color:var(--color-fg-muted);display:inline-flex;flex-shrink:0;font-family:var(--font-mono);font-size:11px;gap:1px;padding:1px 6px}.search-panel{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);left:0;max-height:70vh;overflow-y:auto;position:absolute;right:0;top:calc(100% + 6px);z-index:50}.search-hits{list-style:none;margin:0;padding:.35rem}.search-hits li{padding:0}.search-hits a{border-radius:var(--radius-sm);color:var(--color-fg);display:block;padding:.55rem .75rem;text-decoration:none}.search-hits a:focus-visible,.search-hits a:hover{background:var(--accent-bg);color:var(--color-fg)}.search-hits .hit-title{display:block;font-size:14px;font-weight:600}.search-hits .hit-crumbs{color:var(--color-fg-muted);display:block;font-size:12px;margin-top:.1rem}.search-empty{color:var(--color-fg-muted);font-size:14px;padding:1rem .75rem}.listing{display:grid;gap:.5rem;list-style:none;margin:1rem 0 2.5rem;padding:0}.listing li{background:linear-gradient(180deg,var(--color-bg-muted) 0,var(--color-bg-subtle) 100%);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.15rem;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease,background .18s ease}.listing li:hover{background:linear-gradient(180deg,var(--color-bg) 0,var(--color-bg-subtle) 100%);border-color:color-mix(in srgb,var(--accent) 60%,var(--color-border));box-shadow:0 1px 2px #0000000a,0 0 0 1px var(--accent-ring),0 8px 24px -8px var(--accent-bg)}.listing .item-title{color:var(--color-fg);display:inline-block;font-size:15px;font-weight:600;text-decoration:none}.listing .item-title:hover{color:var(--accent)}.listing .item-meta{color:var(--color-fg-dim);display:block;font-size:12px;font-weight:500;margin-top:.2rem}.listing .item-desc{color:var(--color-fg-muted);display:block;font-size:14px;line-height:1.55;margin-top:.35rem}@media(max-width:1100px){.app-shell{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.app-toc{display:none}}@media(max-width:800px){.app-shell{grid-template-columns:minmax(0,1fr);padding:0 1rem}.app-sidebar{border-bottom:1px solid var(--color-border);margin-bottom:1rem;max-height:none;padding:1rem 0;position:static}.app-header-inner{padding:0 1rem}.app-header .tagline{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}.visually-hidden{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0;white-space:nowrap}
