:root{--bg:#f6f7f9;--panel:#fff;--ink:#1b1f24;--muted:#5f6b7a;--line:#e3e7ec;--accent:#0b5fff;--ok:#1f8a4c;--warn:#b26a00;--bad:#b3261e;--dry:#fff4d6;--prod:#ffe3e0;--int:#e3f0ff}*{box-sizing:border-box}body{color:var(--ink);background:var(--bg);margin:0;font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code{background:#eef1f5;border-radius:4px;padding:1px 5px;font-size:12px}.app{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side{color:#d1d5db;background:#111827;flex-direction:column;gap:6px;padding:18px 14px;display:flex}.side .brand{color:#fff;margin-bottom:10px;font-size:16px;font-weight:700}.side a{color:#d1d5db;border-radius:6px;padding:7px 10px;display:block}.side a.active{color:#fff;background:#1f2937}.side a:hover{background:#1f2937;text-decoration:none}.side .foot{color:#9ca3af;margin-top:auto;font-size:12px}.side .foot a{color:#93c5fd;padding:0;display:inline}.main{min-width:0;padding:0 28px 40px}.banner{border-bottom:1px solid var(--line);margin:0 -28px 18px;padding:10px 28px;font-weight:600}.banner.dry{background:var(--dry);color:#6b4a00}.banner.prod{background:var(--prod);color:#7a1d17}.banner.int{background:var(--int);color:#0b3d91}h1{margin:18px 0 6px;font-size:22px}h2{margin:22px 0 8px;font-size:16px}h3{margin:18px 0 6px;font-size:14px}.sub{color:var(--muted);margin:0 0 14px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:16px 18px}.cards{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:16px;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.card .k{color:var(--muted);font-size:12px}.card .v{margin-top:2px;font-size:24px;font-weight:700}table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:10px;width:100%;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:9px 10px}th{color:var(--muted);background:#fafbfc;font-size:12px;font-weight:600}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.pill{color:#374151;background:#eef1f5;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.pill.ok{color:var(--ok);background:#e6f4ec}.pill.warn{color:var(--warn);background:#fff4d6}.pill.bad{color:var(--bad);background:#fde8e6}.pill.info{color:#0b3d91;background:#e3f0ff}button,.btn{font:inherit;border:1px solid var(--line);cursor:pointer;color:var(--ink);background:#fff;border-radius:7px;padding:7px 12px;display:inline-block}button:hover,.btn:hover{background:#f3f4f6;text-decoration:none}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#0a4fd6}button.danger{background:var(--bad);color:#fff;border-color:var(--bad)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}input,select,textarea{font:inherit;border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 9px}textarea{width:100%;min-height:140px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}label{color:var(--muted);margin-bottom:3px;font-size:12px;display:block}.field{margin-bottom:10px}.err{color:var(--bad);white-space:pre-wrap;background:#fde8e6;border:1px solid #f5c2be;border-radius:7px;margin:8px 0;padding:8px 10px}.okmsg{color:var(--ok);background:#e6f4ec;border:1px solid #bfe3cd;border-radius:7px;margin:8px 0;padding:8px 10px}.note{color:var(--muted);font-size:12px}pre{color:#e2e8f0;background:#0f172a;border-radius:8px;padding:12px;font-size:12px;overflow:auto}.steps{flex-wrap:wrap;gap:6px;margin:8px 0 14px;display:flex}.step{background:#eef1f5;border-radius:6px;padding:4px 9px;font-size:12px}.step.done{color:var(--ok);background:#e6f4ec}.step.cur{background:var(--accent);color:#fff}.modal-bg{z-index:10;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:min(560px,92vw);padding:20px 22px}.center{max-width:520px;margin:12vh auto}
