:root{color-scheme:dark;--bg: #0f172a;--bg-elev: #1e293b;--bg-elev-2: #273449;--border: #334155;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--accent-strong: #0ea5e9;--danger: #f87171;--ok: #34d399;--warn: #fbbf24;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}h1{font-size:1.4rem;margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.login-page{min-height:100vh;display:grid;place-items:center;padding:1rem}.login-card{width:100%;max-width:22rem;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:2rem;display:flex;flex-direction:column;gap:1rem}.login-card .brand{letter-spacing:.02em}.login-card .subtitle{margin:-.5rem 0 .5rem;color:var(--muted);font-size:.9rem}.login-card label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.login-card input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.6rem .7rem;color:var(--text);font-size:.95rem}.login-card input:focus{outline:2px solid var(--accent);border-color:transparent}.btn-primary{background:var(--accent-strong);color:#04293a;font-weight:600;border:none;border-radius:8px;padding:.65rem 1rem}.btn-primary:hover:not(:disabled){background:var(--accent)}.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--bg-elev);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:1.25rem .9rem;gap:1rem}.sidebar .brand{font-weight:700;letter-spacing:.02em;padding:0 .35rem}.sidebar nav{display:flex;flex-direction:column;gap:.25rem}.nav-link{padding:.55rem .7rem;border-radius:8px;color:var(--muted);font-size:.92rem}.nav-link:hover{background:var(--bg-elev-2);color:var(--text)}.nav-link.active{background:var(--accent-strong);color:#04293a;font-weight:600}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:.5rem;padding:0 .35rem}.sidebar-footer .user{font-size:.85rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.45rem .7rem;font-size:.85rem}.btn-ghost:hover{border-color:var(--accent)}.content{padding:1.75rem 2rem;overflow:auto}.resource{display:flex;flex-direction:column;gap:1rem}.resource-head{display:flex;align-items:baseline;justify-content:space-between}.resource-head .count{color:var(--muted);font-size:.85rem}.table-wrap{border:1px solid var(--border);border-radius:10px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}thead th{text-align:left;background:var(--bg-elev);color:var(--muted);font-weight:600;padding:.7rem .9rem;border-bottom:1px solid var(--border);white-space:nowrap}tbody td{padding:.65rem .9rem;border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--bg-elev)}.muted{color:var(--muted);text-align:center;padding:1.5rem}.pager{display:flex;align-items:center;gap:1rem;justify-content:flex-end}.pager button{background:var(--bg-elev);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.4rem .8rem;font-size:.85rem}.pager button:hover:not(:disabled){border-color:var(--accent)}.pager span{color:var(--muted);font-size:.85rem}.resource-head-right{display:flex;align-items:center;gap:.8rem}.btn-sm{padding:.3rem .7rem;font-size:.8rem;border-radius:6px}.col-actions{white-space:nowrap;width:1%}.row-actions{display:flex;gap:.4rem;flex-wrap:wrap}.btn-danger{color:var(--danger)}.btn-danger:hover{border-color:var(--danger)}.form-page{display:flex;flex-direction:column;gap:1rem;max-width:640px}.form-grid{display:flex;flex-direction:column;gap:1rem}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.field-label{font-weight:600}.field .req{color:var(--danger)}.field-hint{font-size:.75rem;color:var(--muted);font-weight:400}.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .65rem;color:var(--text);font-size:.92rem;font-family:inherit}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);border-color:transparent}.field input:disabled,.field select:disabled{opacity:.6;cursor:not-allowed}.form-section{border:1px solid var(--border);border-radius:10px;padding:.9rem 1rem;display:flex;flex-direction:column;gap:.6rem}.form-section legend{color:var(--muted);font-size:.8rem;font-weight:600;padding:0 .4rem;text-transform:uppercase;letter-spacing:.03em}.check-list{display:flex;flex-direction:column;gap:.4rem}.check-item{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text)}.check-item input{width:auto}.limit-row{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem;align-items:center}.limit-row input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .6rem;color:var(--text);font-size:.88rem}.form-actions{display:flex;justify-content:flex-end;gap:.7rem;margin-top:.5rem;align-items:center}.form-actions .btn-ghost{text-align:center}.alert{border-radius:8px;padding:.6rem .8rem;font-size:.88rem}.alert.error{background:#f871711f;border:1px solid var(--danger);color:var(--danger)}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--bg-elev-2);color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.badge-active,.badge-provisioned,.badge-online{background:#34d39926;color:var(--ok)}.badge-inactive,.badge-suspended,.badge-offline,.badge-cancelled,.badge-canceled,.badge-revoked{background:#f8717126;color:var(--danger)}.badge-pending,.badge-provisioning,.badge-draft{background:#fbbf2426;color:var(--warn)}.m2m-section{margin-top:2rem;max-width:920px}.m2m-section h2{font-size:1.1rem;margin:0}.m2m-section .field-hint{margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#020617b3;display:grid;place-items:center;padding:1rem;z-index:50}.modal{width:100%;max-width:36rem;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.modal h2{font-size:1.15rem;margin:0}.modal-warning{margin:0;font-size:.85rem;line-height:1.45;color:var(--warn);background:#fbbf241a;border:1px solid var(--warn);border-radius:8px;padding:.7rem .8rem}.modal-warning code,.m2m-section code{background:var(--bg);padding:.05rem .3rem;border-radius:4px;font-size:.85em}.secret-field{display:flex;gap:.5rem;align-items:stretch}.secret-field input{flex:1;min-width:0;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .65rem;color:var(--text);font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.85rem}.secret-field input:focus{outline:2px solid var(--accent);border-color:transparent}.modal-actions{display:flex;justify-content:flex-end;gap:.7rem}.contact-row{display:grid;grid-template-columns:140px 1fr auto auto;gap:.5rem;align-items:center}.contact-row select,.contact-row input[type=text],.contact-row>input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .6rem;color:var(--text);font-size:.88rem}.address-card{border:1px solid var(--border);border-radius:8px;padding:.8rem;display:flex;flex-direction:column;gap:.6rem;background:var(--bg-elev)}.address-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.address-grid input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .6rem;color:var(--text);font-size:.88rem}.address-grid input:focus,.contact-row input:focus,.contact-row select:focus{outline:2px solid var(--accent);border-color:transparent}.address-actions{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
