:root{color-scheme:light dark;--bg:#ffffff;--surface:#ffffff;--surface-2:#f7f7f7;--border:#ebebeb;--border-strong:#d4d4d4;--fg:#0a0a0a;--fg-muted:#666666;--fg-subtle:#999999;--accent:#0070f3;--accent-fg:#ffffff;--warn:#c2410c;--warn-bg:rgba(251,191,36,0.08);--muted:var(--fg-muted);--card:var(--surface);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--font-sans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;--font-mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--leading-tight:1.25;--leading-normal:1.5;--leading-relaxed:1.65;--r-sm:4px;--r-md:6px;--r-lg:8px;--r-xl:12px;--shadow-sm:0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 12px rgba(0,0,0,0.06);--ring-focus:0 0 0 3px rgba(0,112,243,0.25);--ease-out:cubic-bezier(0.16,1,0.3,1);--t-fast:120ms;--t-base:200ms;--nav-h:52px;--max-w:1280px}@media (prefers-color-scheme:dark){:root{--bg:#0a0a0a;--surface:#111111;--surface-2:#1a1a1a;--border:#1f1f1f;--border-strong:#2e2e2e;--fg:#ededed;--fg-muted:#a1a1a1;--fg-subtle:#707070;--accent:#3b82f6;--accent-fg:#ffffff;--warn:#f59e0b;--warn-bg:rgba(245,158,11,0.08);--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow-md:0 4px 12px rgba(0,0,0,0.5);--ring-focus:0 0 0 3px rgba(59,130,246,0.3)}}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none;transition:color var(--t-fast) var(--ease-out)}a:hover{text-decoration:underline}:focus-visible{outline:none;box-shadow:var(--ring-focus);border-radius:var(--r-sm)}button{font-family:inherit}.wikilink-missing{color:var(--fg-subtle);font-style:italic;border-bottom:1px dashed var(--border-strong)}.topnav{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:var(--s-1);height:var(--nav-h);padding:0 var(--s-5);background:color-mix(in srgb,var(--bg) 80%,transparent);backdrop-filter:saturate(180%) blur(8px);-webkit-backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border)}.topnav .brand{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--weight-semibold,600);color:var(--fg);margin-right:var(--s-4);letter-spacing:-.01em}.topnav .brand:hover{text-decoration:none;opacity:.85}.topnav .nav-link{position:relative;padding:var(--s-2) var(--s-3);color:var(--fg-muted);font-size:var(--text-sm);border-radius:var(--r-md);transition:color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.topnav .nav-link:hover{color:var(--fg);background:var(--surface-2);text-decoration:none}.topnav .nav-link.active{color:var(--fg)}.topnav .nav-link.active:after{content:"";position:absolute;left:var(--s-3);right:var(--s-3);bottom:-14px;height:2px;background:var(--fg);border-radius:2px 2px 0 0}.topnav .grow{flex:1 1}.topnav .icon-btn{background:transparent;border:0;color:var(--fg-muted);font-size:var(--text-sm);padding:var(--s-2) var(--s-3);border-radius:var(--r-md);cursor:pointer;transition:color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.topnav .icon-btn:hover{color:var(--fg);background:var(--surface-2)}.page{padding:var(--s-6) var(--s-5)}.card-wall,.page{max-width:var(--max-w);margin:0 auto}.card-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:var(--s-4);gap:var(--s-4);padding:var(--s-5)}.card{position:relative;display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--s-4) var(--s-5);color:inherit;transition:border-color var(--t-fast) var(--ease-out),transform var(--t-fast) var(--ease-out),box-shadow var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.card,.card:hover{text-decoration:none}.card:hover{border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-md)}.card:active{transform:translateY(0)}.card h3{margin:0 0 var(--s-2);font-size:var(--text-md);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.01em;color:var(--fg)}.card .meta{margin:var(--s-1) 0 0;color:var(--fg-muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.card .eyebrow{display:inline-flex;align-items:center;gap:var(--s-1);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-subtle);margin-bottom:var(--s-2)}.card .tag-row{display:flex;flex-wrap:wrap;gap:var(--s-1);margin-top:var(--s-3)}.card .tag{padding:2px var(--s-2);color:var(--fg-muted);border:1px solid var(--border);border-radius:var(--r-sm);line-height:1.4}.card .tag,.card .verdict{display:inline-block;font-size:var(--text-xs);background:var(--surface-2)}.card .verdict{padding:1px var(--s-2);font-weight:600;color:var(--fg);border:1px solid var(--border-strong);border-radius:var(--r-sm);font-family:var(--font-mono)}.hub-card{display:flex;flex-direction:column;gap:var(--s-2);min-height:120px;padding:var(--s-5)}.hub-card .hub-glyph{font-size:22px;line-height:1;margin-bottom:var(--s-2)}.hub-card h3{font-size:var(--text-lg);display:flex;align-items:baseline;gap:var(--s-2)}.hub-card .hub-count{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--fg-subtle);font-weight:400}.note{max-width:760px;margin:0 auto;padding:var(--s-8) var(--s-5);line-height:var(--leading-relaxed);font-size:var(--text-md)}.note h1,.note h2,.note h3,.note h4{line-height:var(--leading-tight);letter-spacing:-.015em;font-weight:600;margin-top:var(--s-8);margin-bottom:var(--s-3)}.note h1{font-size:var(--text-3xl);margin-top:0}.note h2{font-size:var(--text-2xl)}.note h3{font-size:var(--text-xl)}.note h4{font-size:var(--text-lg)}.note ol,.note p,.note ul{margin:0 0 var(--s-4)}.note ol,.note ul{padding-left:var(--s-6)}.note li{margin:var(--s-1) 0}.note blockquote{margin:var(--s-4) 0;padding:var(--s-2) var(--s-4);color:var(--fg-muted);border-left:3px solid var(--border-strong);background:var(--surface-2);border-radius:0 var(--r-md) var(--r-md) 0}.note code{font-size:.9em;border:1px solid var(--border);padding:1px 6px;border-radius:var(--r-sm)}.note code,.note pre{font-family:var(--font-mono);background:var(--surface-2)}.note pre{font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--s-4);overflow-x:auto;line-height:1.55}.note pre code{background:transparent;border:0;padding:0}.note table{border-collapse:collapse;width:100%;font-size:var(--text-sm);margin:var(--s-4) 0}.note td,.note th{border:1px solid var(--border);padding:var(--s-2) var(--s-3);text-align:left}.note th{background:var(--surface-2);font-weight:600}.note hr{border:0;border-top:1px solid var(--border);margin:var(--s-8) 0}.note img{max-width:100%;border-radius:var(--r-md)}.category-header{display:flex;align-items:baseline;gap:var(--s-3);padding:var(--s-6) var(--s-5) var(--s-3);max-width:var(--max-w);margin:0 auto;font-size:var(--text-sm);color:var(--fg-muted)}.category-header .title{color:var(--fg);font-size:var(--text-2xl);font-weight:600;letter-spacing:-.015em}.category-header .sep{color:var(--fg-subtle)}.category-header .grow{flex:1 1}.category-header .warn{color:var(--warn)}.category-header a{color:var(--fg-muted);font-size:var(--text-sm)}.category-header a:hover{color:var(--fg);text-decoration:none}.section-header{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-8) var(--s-5) var(--s-2);max-width:var(--max-w);margin-left:auto;margin-right:auto;padding:0 var(--s-5);font-size:var(--text-md);font-weight:600;color:var(--fg);letter-spacing:-.01em}.section-header .count{color:var(--fg-subtle);font-weight:400;font-size:var(--text-sm);font-family:var(--font-mono)}.section-ungrouped .section-header{color:var(--warn)}.section-ungrouped .card-wall{background:var(--warn-bg);border:1px dashed var(--border-strong);border-radius:var(--r-lg);margin:0 var(--s-5);padding:var(--s-3)}.index-panel{max-width:var(--max-w);margin:0 auto;padding:0 var(--s-5)}.index-panel summary{display:inline-flex;align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);margin-left:calc(var(--s-3) * -1);border-radius:var(--r-md);font-size:var(--text-sm);color:var(--fg-muted);cursor:pointer;list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.index-panel summary::-webkit-details-marker{display:none}.index-panel summary:hover{color:var(--fg);background:var(--surface-2)}.index-panel summary:focus-visible{outline:none;box-shadow:var(--ring-focus)}.index-panel-chevron{flex:0 0 auto;color:var(--fg-subtle);transition:transform var(--t-base) var(--ease-out),color var(--t-fast) var(--ease-out)}.index-panel summary:hover .index-panel-chevron{color:var(--fg-muted)}.index-panel[open] .index-panel-chevron{transform:rotate(90deg)}.index-panel-body{margin-top:var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;animation:index-panel-in var(--t-base) var(--ease-out)}.index-panel-body .note{padding:var(--s-5) var(--s-6);font-size:var(--text-base);max-width:none;margin:0}.index-panel-body .note>:first-child{margin-top:0}.index-panel-body .note>:last-child{margin-bottom:0}.index-panel-body .note h1{font-size:var(--text-xl)}.index-panel-body .note h2{font-size:var(--text-lg)}.index-panel-body .note h3{font-size:var(--text-md)}@keyframes index-panel-in{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}.search-box{position:relative}.search-box input{width:240px;height:32px;padding:0 var(--s-3);font-family:inherit;font-size:var(--text-sm);color:var(--fg);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.search-box input::placeholder{color:var(--fg-subtle)}.search-box input:hover{border-color:var(--border-strong)}.search-box input:focus{border-color:var(--accent);background:var(--surface);outline:none;box-shadow:var(--ring-focus)}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--s-5);background:radial-gradient(1200px 600px at 50% -10%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%),var(--bg)}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:var(--s-8) var(--s-6);box-shadow:var(--shadow-md)}.login-brand{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:600;color:var(--fg);letter-spacing:-.01em}.login-tagline{margin:var(--s-2) 0 var(--s-6);color:var(--fg-muted);font-size:var(--text-sm)}.login-form{display:flex;flex-direction:column;gap:var(--s-2)}.login-input{height:38px;padding:0 var(--s-3);font-family:inherit;font-size:var(--text-base);color:var(--fg);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.login-input::placeholder{color:var(--fg-subtle)}.login-input:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:var(--ring-focus)}.login-submit{height:38px;font-family:inherit;font-size:var(--text-base);font-weight:500;color:var(--accent-fg);background:var(--accent);border:1px solid var(--accent);border-radius:var(--r-md);cursor:pointer;transition:opacity var(--t-fast) var(--ease-out),transform var(--t-fast) var(--ease-out)}.login-submit:hover{opacity:.92}.login-submit:active{transform:translateY(1px)}.login-error{margin:var(--s-3) 0 0;color:var(--warn);font-size:var(--text-sm)}@media (max-width:640px){.topnav{padding:0 var(--s-3);gap:0;overflow-x:auto}.topnav .brand{margin-right:var(--s-2)}.topnav .nav-link{padding:var(--s-2)}.search-box input{width:140px}.card-wall{padding:var(--s-3);gap:var(--s-3)}.category-header{padding:var(--s-5) var(--s-3) var(--s-2)}.section-header{margin-left:var(--s-3);margin-right:var(--s-3);padding:0}}