:root{--bg: #12100e;--surface: #1c1a17;--surface-2: #262320;--border: #37322c;--text: #f0ece4;--text-dim: #a8a096;--accent: #e0a82e;--ok: #4f9d69;--warn: #d9932b;--danger: #c85a4e;--radius: 10px;font-family:Vazirmatn,Segoe UI,Tahoma,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:15px;line-height:1.7}button{font:inherit;cursor:pointer;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:10px 18px;transition:background .15s}button:hover:not(:disabled){background:#302c27}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:#221a06;border-color:var(--accent);font-weight:500}button.primary:hover:not(:disabled){background:#eeb63c}button.danger{border-color:var(--danger);color:var(--danger)}input,textarea,select{font:inherit;width:100%;padding:10px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text)}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}label{display:block;margin-bottom:14px}label>span{display:block;color:var(--text-dim);font-size:13px;margin-bottom:6px}.app{max-width:1100px;margin:0 auto;padding:24px 20px 64px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:18px;margin-bottom:24px;border-bottom:1px solid var(--border)}.topbar nav{display:flex;gap:8px}.topbar nav button.active{background:var(--surface-2);border-color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px 22px;margin-bottom:18px}.muted{color:var(--text-dim)}.mono{font-family:ui-monospace,Cascadia Mono,Consolas,monospace;letter-spacing:1px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grow{flex:1;min-width:220px}.spread{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.pill{display:inline-block;padding:3px 12px;border-radius:999px;font-size:13px}.pill.ok{background:#4f9d6929;color:var(--ok)}.pill.warning{background:#d9932b29;color:var(--warn)}.pill.expired{background:#c85a4e29;color:var(--danger)}.bigcode{font-family:ui-monospace,Consolas,monospace;font-size:30px;letter-spacing:3px;background:var(--bg);border:1px dashed var(--accent);border-radius:var(--radius);padding:16px;text-align:center;color:var(--accent)}table{width:100%;border-collapse:collapse}th,td{text-align:right;padding:12px 10px;border-bottom:1px solid var(--border)}th{color:var(--text-dim);font-weight:500;font-size:13px}.alert{border-radius:var(--radius);padding:12px 16px;margin-bottom:16px}.alert.error{background:#c85a4e24;color:#efa79c;border:1px solid rgba(200,90,78,.4)}.alert.info{background:#e0a82e1f;color:#f0cd80;border:1px solid rgba(224,168,46,.35)}.login{max-width:380px;margin:12vh auto}.center{text-align:center}.alert.warning{background:#d9932b1f;color:#f0cd80;border:1px solid rgba(217,147,43,.4)}.filters{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:18px}.filters label{margin-bottom:0;min-width:150px}.filters form{flex:1;min-width:260px;margin:0}.filters label.checkbox{display:flex;align-items:center;gap:8px;min-width:auto;padding-bottom:10px}.filters label.checkbox input{width:auto}.filters label.checkbox span{margin:0;color:var(--text);font-size:15px}.grid td{vertical-align:top}.grid .muted{font-size:13px}.row-warning>td{background:#d9932b12}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;white-space:nowrap}.badge.ok{background:#4f9d6929;color:var(--ok)}.badge.warning{background:#d9932b2e;color:var(--warn)}.pager{display:flex;align-items:center;gap:14px;justify-content:flex-end;margin-top:16px}.pairs{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0 0 16px}.pairs dt{color:var(--text-dim);font-size:13px}.pairs dd{margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;z-index:10}.modal{max-width:460px;width:100%;margin:0;max-height:90vh;overflow:auto}.actions{display:flex;gap:10px;justify-content:flex-end}
