:root{--bg:#f6f7f9;--card:#fff;--ink:#16191f;--muted:#5f6b7a;--line:#d5dbe1;--accent:#ff9900;--blue:#147eba;--red:#d13212;--green:#1d8102}
@media (prefers-color-scheme:dark){:root{--bg:#0f1419;--card:#1a2129;--ink:#e9edf1;--muted:#9aa5b1;--line:#33404d}}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}
header{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:12px 24px;background:#232f3e;color:#fff;border-bottom:3px solid var(--accent)}
header a{color:#fff;text-decoration:none}.brand{display:flex;gap:8px;align-items:center;font-weight:700}
nav{display:flex;gap:16px}header form{margin-left:auto}header input{padding:6px 10px;border-radius:6px;border:0;min-width:240px}
main{max-width:1200px;margin:0 auto;padding:16px 24px}h1{font-size:24px;margin:8px 0 16px}h2{font-size:17px;margin:4px 0 8px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-bottom:24px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
table{border-collapse:collapse;width:100%;background:var(--card);border:1px solid var(--line);border-radius:8px;margin:8px 0 20px}
th,td{text-align:left;padding:6px 10px;border-top:1px solid var(--line);vertical-align:top}th{background:rgba(127,127,127,.12)}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px}a{color:var(--blue)}
.src{display:inline-block;padding:4px 10px;border-radius:6px;font-size:13px}.src.redis{background:rgba(29,129,2,.12);color:var(--green)}
.src.rds{background:rgba(20,126,186,.12);color:var(--blue)}
.lc{display:inline-block;padding:0 8px;border-radius:10px;font-size:12px;font-weight:700}.lc.spot{background:#ff9900;color:#16191f}.lc.od{background:#147eba;color:#fff}
button{padding:6px 12px;border-radius:6px;border:1px solid var(--blue);background:var(--blue);color:#fff;cursor:pointer;margin:2px 0}
button.danger{background:var(--red);border-color:var(--red)}td form{margin:0}
.egress{padding:6px 10px;border-left:3px solid var(--accent);background:rgba(255,153,0,.1)}.err{color:var(--red)}.hint{color:var(--muted);font-size:13px}
footer{max-width:1200px;margin:0 auto;padding:16px 24px 32px;color:var(--muted);font-size:13px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.gallery figure{margin:0}
.gallery img{width:100%;height:150px;object-fit:cover;border-radius:6px}.gallery figcaption{font-size:13px;margin-top:6px}
