:root{--bg: #0b0d10;--bg-soft: #121619;--bg-card: #161b20;--border: #232a31;--text: #e6e9ec;--text-soft: #a4adb6;--text-dim: #6c7680;--accent: #4d9fff;--accent-soft: rgba(77, 159, 255, .12);--green: #3fb950;--amber: #d29922;--red: #f85149;--radius: 10px;--maxw: 1080px;--pad: 1.25rem}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,pre{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.container{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}.site-header{position:sticky;top:0;z-index:20;background:#0b0d10d9;backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.site-header .row{display:flex;align-items:center;gap:1rem;height:60px}.brand{font-weight:700;color:var(--text);letter-spacing:-.01em;font-size:1.05rem}.brand:hover{text-decoration:none}.brand .dot{color:var(--accent)}.tagline{color:var(--text-dim);font-size:.85rem}.header-nav{margin-left:auto;display:flex;gap:1.1rem}.header-nav a{color:var(--text-soft);font-size:.9rem}.header-nav a:hover{color:var(--text);text-decoration:none}.site-footer{margin-top:4rem;border-top:1px solid var(--border);background:var(--bg-soft);color:var(--text-dim);font-size:.85rem}.site-footer .row{padding:1.5rem var(--pad);display:flex;flex-wrap:wrap;gap:.75rem 2rem}.disclosure{max-width:640px;line-height:1.5}h1,h2,h3{line-height:1.25;letter-spacing:-.02em}h1{font-size:clamp(1.8rem,4vw,2.6rem);margin:0 0 .5rem}h2{font-size:1.5rem;margin:2.5rem 0 1rem}h3{font-size:1.15rem;margin:1.5rem 0 .5rem}p{margin:0 0 1rem}.lead{color:var(--text-soft);font-size:1.1rem;max-width:60ch}ul{padding-left:1.25rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.85rem}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;transition:border-color .15s,transform .15s}.card:hover{border-color:var(--accent)}.card .name{font-weight:600;color:var(--text);font-size:1rem;display:flex;align-items:center;gap:.4rem}.card .name a{color:var(--text)}.card .name a:hover{color:var(--accent);text-decoration:none}.card .desc{color:var(--text-soft);font-size:.88rem;margin:.4rem 0 .7rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card .meta{display:flex;flex-wrap:wrap;gap:.4rem;font-size:.75rem}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .55rem;border-radius:999px;border:1px solid var(--border);background:var(--bg-soft);color:var(--text-soft);font-size:.75rem;white-space:nowrap}.chip.docker{color:var(--accent);border-color:#4d9fff66;background:var(--accent-soft)}.chip.license{color:var(--green)}.chip.warn{color:var(--amber);border-color:#d2992266}.cat-link{color:var(--text-soft)}.hero{padding:3rem 0 2rem}.hero .lead{margin-bottom:1.5rem}.search{display:flex;gap:.5rem;max-width:520px}.search input{flex:1;background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.7rem .9rem;font-size:.95rem}.search input:focus{outline:none;border-color:var(--accent)}.search input::placeholder{color:var(--text-dim)}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem}.cat-grid a{display:flex;justify-content:space-between;padding:.6rem .8rem;border-radius:8px;color:var(--text);background:var(--bg-card);border:1px solid var(--border)}.cat-grid a:hover{border-color:var(--accent);text-decoration:none}.cat-grid .count{color:var(--text-dim);font-size:.8rem}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.7rem .8rem;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:var(--bg-soft)}td a{color:var(--text)}td a:hover{color:var(--accent)}.app-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem 1rem}.app-header h1{margin:0}.app-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin:.8rem 0}.fact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem;margin:1.5rem 0}.fact{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.8rem .9rem}.fact .k{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em}.fact .v{color:var(--text);font-size:.95rem;margin-top:.2rem;word-break:break-word}.fact .v a{color:var(--accent)}.callout{border:1px solid var(--border);border-left:3px solid var(--accent);background:var(--bg-card);border-radius:8px;padding:1rem 1.1rem;margin:1.5rem 0}.callout .label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim)}.callout .body{margin-top:.3rem;color:var(--text-soft)}.callout .cta{display:inline-block;margin-top:.6rem;font-weight:600}.muted{color:var(--text-dim)}.dim{color:var(--text-soft)}.section{margin:2.5rem 0}.breadcrumb{color:var(--text-dim);font-size:.85rem;margin-bottom:.5rem}.breadcrumb a{color:var(--text-soft)}.tool-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.tool-card label{display:block;font-size:.85rem;color:var(--text-soft);margin-bottom:.3rem}.tool-card select,.tool-card input[type=text]{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:.55rem .7rem;font-size:.9rem}.tool-card select:focus,.tool-card input:focus{outline:none;border-color:var(--accent)}pre.output{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:1rem;overflow-x:auto;color:var(--text-soft);font-size:.85rem}.btn{display:inline-block;background:var(--accent);color:#07101a;border:none;border-radius:6px;padding:.55rem .9rem;font-weight:600;cursor:pointer;font-size:.9rem}.btn:hover{text-decoration:none;opacity:.92}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}@media(max-width:640px){.tagline{display:none}.header-nav{gap:.8rem}}
