:root{--text:#1f2933;--muted:#7b8794;--bg:#f4f5f7;--card:#fff;--border:#e1e4e8;--accent:#2563eb;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100vh}.topbar{background:var(--card);border-bottom:1px solid var(--border);align-items:center;gap:1rem;padding:.75rem 1.5rem;display:flex}.topbar nav{gap:1rem;display:flex}.topbar nav a.active{color:var(--text);font-weight:600}.topbar .spacer{flex:1}.topbar .who{color:var(--muted)}.content{max-width:960px;margin:1.5rem auto;padding:0 1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:8px;margin-bottom:1.25rem;padding:1.25rem}.card h2,.card h3{margin-top:0}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}input,select,textarea,button{font:inherit;border:1px solid var(--border);background:#fff;border-radius:6px;padding:.5rem .6rem}textarea{width:100%}button{background:var(--accent);color:#fff;border-color:var(--accent);cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button.link{color:var(--accent);background:0 0;border:none;padding:0}.table{border-collapse:collapse;width:100%;margin-top:.75rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:.5rem .6rem}.table th{color:var(--muted);font-size:.85rem;font-weight:600}.muted{color:var(--muted)}.error{color:#b91c1c}.badge{color:#334;background:#eef;border-radius:999px;padding:.1rem .5rem;font-size:.78rem;display:inline-block}.badge.new{color:#1e40af;background:#e0edff}.badge.contacted{color:#92400e;background:#fef3c7}.badge.qualified{color:#5b21b6;background:#ddd6fe}.badge.won,.badge.sent{color:#166534;background:#dcfce7}.badge.lost,.badge.failed{color:#991b1b;background:#fee2e2}.loglist{padding:0;list-style:none}.loglist li{border-bottom:1px solid var(--border);padding:.4rem 0}.login-wrap{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.login{flex-direction:column;gap:.6rem;width:320px;display:flex}.login input{width:100%}.row.spread{justify-content:space-between}button.danger{background:#b91c1c;border-color:#b91c1c}button.link.danger{color:#b91c1c;background:0 0}.dialer-status.connecting{color:#92400e;background:#fef3c7}.dialer-status.registered{color:#166534;background:#dcfce7}.dialer-status.error,.dialer-status.unconfigured{color:#991b1b;background:#fee2e2}.call-state.initiated,.call-state.new,.call-state.requesting,.call-state.trying,.call-state.ringing,.call-state.answering{color:#92400e;background:#fef3c7}.call-state.answered,.call-state.active{color:#166534;background:#dcfce7}.call-state.completed{color:#1e40af;background:#e0edff}.call-state.busy,.call-state.failed,.call-state.no_answer{color:#991b1b;background:#fee2e2}.incoming-banner{background:#e0edff;border:1px solid #93c5fd;border-radius:8px;justify-content:space-between;align-items:center;gap:1rem;margin:.75rem 0;padding:.6rem .9rem;display:flex}.caller-id{margin:.75rem 0;display:block}.number-input{letter-spacing:.04em;width:100%;margin-bottom:.75rem;font-size:1.2rem}.dialpad{grid-template-columns:repeat(3,1fr);gap:.5rem;max-width:280px;margin-bottom:.75rem;display:grid}.dialpad-key{color:var(--text);border:1px solid var(--border);background:#fff;padding:.75rem;font-size:1.2rem}.dialpad-key:hover{background:var(--bg)}.call-button{width:100%;max-width:280px;padding:.7rem;font-size:1.05rem}.in-call-controls{align-items:center}.disposition form{flex-direction:column;align-items:flex-start;gap:.6rem;display:flex}.call-dock{z-index:50;border:1px solid var(--border);background:#fff;border-radius:10px;align-items:center;gap:.6rem;max-width:min(92vw,460px);padding:.6rem .9rem;display:flex;position:fixed;bottom:1rem;right:1rem;box-shadow:0 6px 24px #0000002e}.call-dock.incoming{background:#e0edff;border-color:#93c5fd}.call-dock .spacer{flex:1}.call-dock .dock-number{font-weight:600}.call-dock .dock-arrow{color:var(--muted)}.map-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem;margin:.5rem 0 .75rem;display:grid}.map-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.map-row span{color:var(--muted)}.import-summary{margin:.75rem 0 .5rem}.warn-text{color:#92400e;font-weight:600}.preview-scroll{max-height:320px;overflow-y:auto}.preview-table .row-warn{background:#fffbeb}.preview-table .row-error{background:#fef2f2}.anomaly-tag{color:#92400e;background:#fef3c7;border-radius:6px;margin:0 .25rem .2rem 0;padding:.05rem .4rem;font-size:.78em;display:inline-block}
