:root{--bg:#0f172a;--panel:#1e293b;--panel-2:#273449;--text:#e2e8f0;--muted:#94a3b8;--border:#334155;--green:#22c55e;--red:#ef4444;--yellow:#eab308;--blue:#3b82f6;--orange:#f97316}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--blue);text-decoration:none}.nav{display:flex;gap:16px;align-items:center;padding:12px 20px;background:var(--panel);border-bottom:1px solid var(--border)}.nav a{color:var(--text);padding:6px 12px;border-radius:6px}.nav a:hover{background:var(--panel-2)}.container{padding:20px;max-width:1400px;margin:0 auto}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:10px;gap:10px}.card{border:1px solid var(--border);padding:14px}.card,.ext{background:var(--panel);border-radius:10px}.ext{padding:12px;text-align:center;border:1px solid var(--border)}.ext .num{font-size:22px;font-weight:700}.ext .st{font-size:12px;margin-top:4px;text-transform:uppercase;letter-spacing:.5px}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}.s-idle{border-left:4px solid var(--green)}.s-inuse{border-left:4px solid var(--red)}.s-ringing{border-left:4px solid var(--yellow)}.s-onhold{border-left:4px solid var(--orange)}.s-unavailable{border-left:4px solid var(--muted);opacity:.6}.s-unknown{border-left:4px solid var(--border)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.badge.green{background:rgba(34,197,94,.2);color:var(--green)}.badge.red{background:rgba(239,68,68,.2);color:var(--red)}.badge.yellow{background:rgba(234,179,8,.2);color:var(--yellow)}.badge.gray{background:rgba(148,163,184,.2);color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600}button,input,select{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:14px}button{cursor:pointer;background:var(--blue);border-color:var(--blue);font-weight:600;padding:4px 9px;font-size:12px}.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-bottom:16px}.filters label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.stat{font-size:28px;font-weight:700}.muted{color:var(--muted)}@keyframes flashAlert{0%,to{background:#7f1d1d}50%{background:#ef4444}}.alert-bar{display:flex;align-items:center;gap:14px;padding:14px 20px;border-radius:12px;margin-bottom:10px;color:#fff;font-weight:700;font-size:20px;animation:flashAlert 1s infinite}.alert-bar .small{font-size:13px;font-weight:500;opacity:.9}.trunk{display:flex;align-items:center;gap:20px;padding:18px 22px;border-radius:12px;background:var(--panel);border:1px solid var(--border);margin-bottom:8px}.trunk .big{font-size:40px;font-weight:800;line-height:1}.trunk .big .max{font-size:22px;font-weight:600;color:var(--muted)}.trunk-bar{flex:1 1;height:26px;border-radius:13px;background:var(--panel-2);overflow:hidden;display:flex}.trunk-seg{flex:1 1;margin:3px;border-radius:4px;background:var(--border)}.trunk-seg.on{background:var(--green)}.trunk-seg.on.warn{background:var(--yellow)}.trunk-seg.on.full{background:var(--red)}.section-title{margin:24px 0 10px;font-size:18px}.conn{margin-left:auto;font-size:13px}@keyframes spin{to{transform:rotate(1turn)}}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;flex:none}.loading{display:flex;align-items:center;gap:10px;color:var(--muted);padding:14px 0}@media (max-width:768px){.container{padding:14px}h1{font-size:22px}.section-title{font-size:16px;margin:18px 0 8px}.nav{flex-wrap:wrap;gap:8px 12px;padding:10px 14px}table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.trunk{flex-wrap:wrap;gap:12px;padding:14px}.trunk .big{font-size:32px}.trunk-bar{flex-basis:100%;order:3}.alert-bar{font-size:16px;padding:12px 14px;gap:10px}.stat{font-size:22px}.grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}.filters,.grid{gap:8px}.filters button,.filters input,.filters label,.filters select{width:100%}}@media (max-width:420px){.grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.ext .num{font-size:19px}}