/* Carrier UI 1.0.0. Presentation only; 36px fields and 24px pill actions. */
:root {
  font-family:Epilogue,-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;
  font-size:12px;line-height:1.5;color:#20354f;background:#f3f7fb;
  --blue:#006c99;--muted:#62758b;--line:#cadce9;--panel:#fafdff;--field:#fff;
  --row:#fff;--soft:#e5f2fa;--focus:#d27628;
}
*{box-sizing:border-box}
body{margin:0}
body>header{height:52px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{text-decoration:none;color:inherit;font-size:18px;font-weight:800;letter-spacing:-.5px;line-height:1.15}
.brand span{color:#e77824}
.brand small{display:block;font-size:8px;letter-spacing:1.6px;margin-top:3px}
a{color:var(--blue);text-underline-offset:3px}
.back{font-size:12px}
main{max-width:1600px;margin:16px auto;padding:0 18px 24px}
h1{font-size:22px;line-height:1.25;letter-spacing:-.4px;margin:2px 0 4px;font-weight:700}
h2{font-size:15px;line-height:1.4;margin:0;font-weight:700}
p{margin:0;color:var(--muted)}
.eyebrow{font-size:10px;letter-spacing:1px;font-weight:650;color:var(--blue)}
.page-heading,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.page-heading>div:first-child,.section-heading>div:first-child{min-width:0}
.page-heading p:not(.eyebrow),.section-heading p{font-size:12px;margin-top:3px}
.tools,.actions,.row-actions{display:flex;align-items:center;gap:6px}
button{box-sizing:border-box;flex:none;display:inline-flex;align-items:center;justify-content:center;gap:5px;width:auto;height:24px;min-height:24px;max-height:24px;padding:2px 12px;border:1px solid transparent;border-radius:999px;background:var(--blue);color:#fff;font:600 12px/18px Epilogue,-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;white-space:nowrap;cursor:pointer}
button.secondary{background:var(--soft);color:#254760;border-color:#d1e4f0}
button:hover:not(:disabled){filter:brightness(.95)}
button:disabled{opacity:.55;cursor:wait}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.table-scroll:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.stats{display:flex;align-items:center;gap:0;margin:12px 0;background:#eaf4fb;border:1px solid var(--line);border-radius:8px;padding:8px 0}
.stats>div{display:flex;align-items:center;gap:10px;min-width:0;padding:0 16px;border-right:1px solid var(--line)}
.stats>div:last-child{border-right:0}
.stats span{font-size:12px;color:var(--muted)}
.stats strong{font-size:16px;line-height:20px}
.stats strong.word{font-size:12px;font-weight:600}
.panel{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:12px;margin:0 0 12px;min-width:0}
.section-heading{margin-bottom:7px}
.section-heading p{max-width:880px}
.table-scroll{width:100%;overflow:auto;overscroll-behavior-x:contain;border-radius:7px}
table{width:100%;border-collapse:separate;border-spacing:0 5px;table-layout:fixed;text-align:left;font-size:12px;line-height:1.5}
.carrier-table{min-width:760px}
.assignment-table{min-width:760px}
.carrier-name{width:16%}.incoming-ips{width:42%}.outgoing-ips{width:28%}.carrier-actions{width:14%}
.assignment-name{width:23%}.assignment-direction{width:16%}.assignment-numbers{width:25%}.assignment-outbound{width:25%}.assignment-actions{width:11%}
th{padding:2px 10px 3px;color:var(--muted);font-size:11px;line-height:16px;font-weight:600;letter-spacing:.15px;vertical-align:bottom}
td{padding:7px 10px;vertical-align:middle;background:var(--row);border-block:1px solid var(--line);overflow-wrap:anywhere}
td:first-child{border-left:1px solid var(--line);border-radius:7px 0 0 7px}
td:last-child{border-right:1px solid var(--line);border-radius:0 7px 7px 0}
tbody tr:hover td{background:#f2f9fd}
td strong{display:block;font-size:12px;font-weight:650}
td small{display:block;font-size:10px;line-height:1.4;color:var(--muted);margin-top:2px}
.ip-list{white-space:normal;word-break:normal;overflow-wrap:anywhere;font-size:12px;line-height:1.65;font-variant-numeric:tabular-nums}
.row-actions{flex-wrap:nowrap;justify-content:flex-end}
th:last-child{text-align:right}
.assignment-table td:last-child{text-align:right}
.badge{display:inline-block;background:var(--soft);color:#09668e;border-radius:999px;padding:2px 8px;font-size:11px;line-height:18px;font-weight:600;white-space:nowrap}
.empty{padding:14px 10px;text-align:center;font-size:12px}
.note{display:flex;gap:10px;align-items:flex-start;background:#eaf4fb;border:1px solid var(--line);border-radius:8px;padding:9px 12px;margin:0 0 10px;font-size:12px}
.note strong{white-space:nowrap}
.footnote{font-size:11px;margin:5px 0 0}
#message{padding:8px 12px;border-radius:7px;background:#e5f5ed;color:#176341;margin:10px 0}
#message.error{background:#fff1ef;color:#a82f2d}
dialog{box-sizing:border-box;inset:0;margin:auto;width:420px;max-width:calc(100vw - 24px);height:fit-content;max-height:calc(100dvh - 24px);padding:12px;border:1px solid var(--line);border-radius:12px;overflow:auto;background:var(--panel);color:inherit;box-shadow:0 16px 60px #153a602e}
dialog::backdrop{background:#17395670}
.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.dialog-heading h2{font-size:16px}
button.icon{width:24px;padding:0;font-size:18px;line-height:20px;background:var(--soft);color:#29495e}
label{display:block;font-size:12px;font-weight:600;margin:0 0 9px;min-width:0}
input,select,textarea{box-sizing:border-box;display:block;width:100%;min-width:0;max-width:100%;margin:4px 0 0;padding:8px 16px;border:1px solid #bdcfdf;border-radius:7px;background:var(--field);color:inherit;font:400 14px/18px Epilogue,-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif}
input:not([type=checkbox]):not([type=hidden]),select{height:36px;min-height:36px;max-height:36px}
input::placeholder,textarea::placeholder{font:inherit;color:#71849a;opacity:1}
input[type=hidden]{display:none}
textarea{height:90px;min-height:72px;resize:vertical;padding:8px 16px;line-height:20px}
#port{max-width:140px}
#prefixNew{max-width:130px}
#patternNew{max-width:180px}
label small,small{display:block;margin-top:4px;color:var(--muted);font-size:10px;font-weight:400;line-height:1.5}
.field-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
fieldset{min-width:0;margin:0;padding:0;border:0}
legend{font-size:12px;font-weight:600;margin-bottom:5px;padding:0}
.check{display:flex;align-items:center;gap:6px;margin:0 0 4px;font-weight:400}
.check input{flex:none;display:inline-block;width:14px;height:14px;margin:0;padding:0;accent-color:var(--blue)}
.inline-note{font-size:11px;line-height:1.5;margin:1px 0 9px}
.actions{justify-content:flex-end;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:9px;margin-top:5px}
.form-feedback{font-size:11px;line-height:1.5;color:#a82f2d;white-space:pre-line;margin:0;min-height:0}
.form-feedback:not(:empty){margin-bottom:8px}
[hidden]{display:none!important}
@media(max-width:1050px){.carrier-name{width:17%}.incoming-ips{width:37%}.outgoing-ips{width:28%}.carrier-actions{width:18%}}
@media(max-width:700px){body>header{padding:0 12px}.brand{font-size:16px}.back{font-size:11px}main{margin:12px auto;padding:0 10px 20px}.page-heading,.section-heading{align-items:flex-start;flex-wrap:wrap;gap:8px}h1{font-size:20px}.stats{flex-wrap:wrap;row-gap:6px}.stats>div{padding:0 10px;gap:6px}.stats>div:last-child{flex-basis:100%;border-top:1px solid var(--line);padding-top:6px}.stats>div:nth-child(2){border-right:0}.panel{padding:9px}.note{flex-wrap:wrap;gap:3px}.tools{flex-wrap:wrap}}
@media(max-width:440px){.field-columns{grid-template-columns:minmax(0,1fr);gap:0}textarea{height:76px}.check{display:inline-flex;margin-right:10px}fieldset{margin-bottom:9px}.badge{font-size:11px}button{font-size:12px}}
@media(prefers-color-scheme:dark){:root{color:#dbe8f5;background:#101e2d;--panel:#182b3e;--field:#142537;--row:#182e43;--line:#35516a;--muted:#a2b7cb;--blue:#1592c0;--soft:#244960;--focus:#e8a560}.stats,.note{background:#1b344a}button.secondary,button.icon{color:#dbeaf7;border-color:#3b5c73}tbody tr:hover td{background:#203b52}.badge{color:#b9e6fa}input,select,textarea{border-color:#46647d}input::placeholder,textarea::placeholder{color:#a0b4c7}#message{background:#183d34;color:#afe9c5}#message.error{background:#482c31;color:#ffc4c1}.form-feedback{color:#ffb4ae}}
