:root{--blue:#2764e7;--blue-dark:#1749b8;--bg:#f4f6f9;--line:#dfe4ea;--text:#182230;--muted:#667085;--danger:#c62828;--green:#16794a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif}.topbar{height:58px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 24px;gap:32px}.brand{font-size:18px;font-weight:700;color:var(--text);text-decoration:none}.topbar nav{display:flex;gap:22px;flex:1}.topbar nav a,.userbox a{color:#475467;text-decoration:none}.userbox{display:flex;align-items:center;gap:14px}.userbox form{margin:0}.link-button{border:0;background:none;color:var(--blue);cursor:pointer;padding:0}.container{max-width:1600px;margin:0 auto;padding:24px}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:16px}.page-heading h1{margin:0 0 4px;font-size:24px}.muted{color:var(--muted);margin:0}.actions,.form-actions{display:flex;gap:10px;align-items:center}.button,button{border:0;border-radius:6px;padding:9px 15px;font-weight:600;text-decoration:none;cursor:pointer;display:inline-block}.primary{background:var(--blue);color:#fff}.primary:hover{background:var(--blue-dark)}.secondary{background:#e9effd;color:var(--blue)}.ghost{background:#fff;border:1px solid var(--line);color:#344054}.danger-button{background:#fee4e2;color:var(--danger)}.filters{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.filters input[type=search]{min-width:280px;flex:1}.filters input,.filters select,.stack-form input,.inline-form input,.form-grid input,.form-grid select,.form-grid textarea{border:1px solid #cdd5df;border-radius:6px;padding:9px 10px;background:#fff;color:var(--text)}.table-wrap{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid #edf0f3;vertical-align:top}th{background:#f8fafc;color:#475467;font-size:12px;position:sticky;top:0}td small{display:block;color:var(--muted)}tbody tr:hover{background:#f8fbff}.mono{font-family:Consolas,monospace}.badge{display:inline-block;border-radius:20px;padding:2px 8px;background:#edf2f7;font-size:12px}.status-approved,.nac-admitted{background:#dcfae6;color:#087443}.status-pending,.nac-pending{background:#fff3cd;color:#8a5b00}.status-disabled,.nac-cleared{background:#eee;color:#555}.danger{background:#fee4e2;color:#b42318}.row-actions a{margin-right:9px;color:var(--blue)}.empty{text-align:center;color:var(--muted);padding:36px}.pagination{display:flex;justify-content:space-between;padding:14px 2px;color:var(--muted)}.pagination a{margin-left:14px;color:var(--blue)}.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.form-grid label{display:flex;flex-direction:column;gap:6px}.form-grid label b{color:var(--danger)}.form-grid input,.form-grid select,.form-grid textarea{width:100%}.full{grid-column:1/-1}.form-actions{justify-content:flex-end}.form-errors,.error-text{color:var(--danger)}.detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);padding:1px}.detail-grid>div{background:#fff;padding:16px;min-height:80px}.detail-grid span{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}.detail-grid strong{font-weight:600}.wide{grid-column:span 2}h2{font-size:18px;margin:24px 0 10px}.login-card{max-width:410px;margin:80px auto;background:#fff;border:1px solid var(--line);border-radius:12px;padding:30px;box-shadow:0 8px 30px rgba(16,24,40,.06)}.login-card h1{margin:0 0 6px}.stack-form{display:flex;flex-direction:column;gap:16px;margin-top:24px}.stack-form label{display:flex;flex-direction:column;gap:6px}.message{padding:11px 14px;border-radius:6px;margin-bottom:14px;background:#e9effd;color:#1749b8}.message.error{background:#fee4e2;color:#b42318}.inline-form{display:flex;gap:10px}.inline-form input{min-width:280px}.result-card{margin-top:16px;border-radius:8px;padding:22px;background:#fff;border-left:5px solid #98a2b3}.result-card.available{border-color:var(--green)}.result-card.occupied{border-color:#e59b13}.result-card.unknown{border-color:var(--danger)}code{white-space:pre-wrap;font-size:12px}@media(max-width:900px){.topbar{padding:0 12px;gap:12px}.topbar nav{display:none}.container{padding:14px}.page-heading{align-items:flex-start;flex-direction:column}.form-grid,.detail-grid{grid-template-columns:1fr}.wide,.full{grid-column:auto}.filters{display:grid}.filters input[type=search]{min-width:0}.actions{flex-wrap:wrap}}

.delete-button{background:#b42318;color:#fff}.ip-map-section{margin-top:26px}.ip-summary-table a{color:var(--blue)}.static-map{margin-top:16px;padding:18px}.static-map-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.static-map-heading h2{margin:0 0 4px}.map-legend{display:flex;gap:8px;flex-wrap:wrap}.map-stat{display:inline-block;padding:5px 9px;border-radius:5px;font-weight:700}.map-stat.available{background:#dcfae6;color:#087443}.map-stat.occupied{background:#fee4e2;color:#b42318}.map-stat.total{background:#e9effd;color:#1749b8}.subnet-group{margin-top:18px}.subnet-group h3{font-size:14px;margin:0 0 8px;color:#475467}.ip-tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:5px}.ip-tile{display:block;border-radius:4px;padding:5px 7px;text-align:center;font:12px Consolas,monospace;text-decoration:none;border:1px solid transparent}.ip-tile.available{background:#dcfae6;color:#087443;border-color:#abefc6}.ip-tile.occupied{background:#fee4e2;color:#b42318;border-color:#fecdca}.ip-tile:hover{filter:brightness(.97)}

@media(max-width:900px){.static-map-heading{flex-direction:column}.ip-tile-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}}

.section-nav{display:flex;gap:8px;margin-bottom:20px;padding:6px;background:#e9effd;border-radius:8px;width:max-content}.section-nav a{padding:7px 12px;border-radius:6px;color:var(--blue);text-decoration:none;font-weight:600}.section-nav a:hover{background:#fff}.filter-grid{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;display:grid;grid-template-columns:minmax(260px,2fr) repeat(3,minmax(140px,1fr)) auto;gap:8px;margin-bottom:14px}.filter-grid input,.filter-grid select,.lookup-form input,.form-card input,.form-card select,.form-card textarea{width:100%;border:1px solid #cdd5df;border-radius:6px;padding:9px 10px;background:#fff;color:var(--text)}.form-card,.lookup-form{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px;max-width:900px}.form-card p,.lookup-form p{display:grid;grid-template-columns:180px 1fr;align-items:start;gap:10px}.form-card ul.errorlist,.lookup-form ul.errorlist{grid-column:2;color:var(--danger);margin:0}.notice-card{background:#f8fafc;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:8px;padding:14px 16px;margin:14px 0}.message.warning{background:#fff3cd;color:#8a5b00}.confirm-form{margin-top:16px}.confirm-form button,.form-card>button,.lookup-form>button,.filter-grid button{background:var(--blue);color:#fff}.inline-form{display:inline-flex;margin-left:8px}.inline-form .danger{padding:0}.actions .button:first-child,.actions button{background:var(--blue);color:#fff}
@media(max-width:900px){.section-nav{width:100%;overflow:auto}.filter-grid{grid-template-columns:1fr}.form-card p,.lookup-form p{grid-template-columns:1fr}.form-card ul.errorlist,.lookup-form ul.errorlist{grid-column:auto}}
.danger-zone{margin-top:18px;border-left:4px solid var(--danger);display:flex;justify-content:space-between;align-items:center;gap:20px}.danger-zone h2{margin:0 0 4px}.danger-zone form{margin:0}.summary-warning{border-left:4px solid #e59b13}.import-create{background:#dcfae6;color:#087443}.import-update{background:#fff3cd;color:#8a5b00}.import-differences{min-width:300px;white-space:normal}.import-differences div+div{margin-top:4px}.import-differences del{color:#b42318}.import-differences ins{color:#087443;text-decoration:none}.confirm-import-form{margin-top:16px}.update-confirm{display:block;background:#fff3cd;color:#694100;border:1px solid #f4d584;border-radius:8px;padding:12px 14px}.update-confirm input{margin-right:8px}
@media(max-width:900px){.danger-zone{align-items:flex-start;flex-direction:column}}
.badge.preallocated{margin-top:4px;background:#e9effd;color:#1749b8}
