*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0b0d;--surface:#111318;--surface2:#181c22;--surface3:#1e2330;--border:#252c3a;--border2:#2e3848;--accent:#00e5a0;--accent2:#05f;--accent3:#ff6b35;--text:#e8ecf0;--text2:#8a95a3;--text3:#4a5568;--red:#ff4545;--yellow:#ffd166;--green:#00e5a0;--font-head:"Syne", sans-serif;--font-body:"DM Sans", sans-serif;--font-mono:"DM Mono", monospace;--radius:8px;--radius-lg:14px;--shadow:0 4px 24px #00000080}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.app-shell{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:0;display:flex;overflow:hidden}.sidebar-logo{border-bottom:1px solid var(--border);padding:24px 20px 20px}.logo-mark{font-family:var(--font-head);letter-spacing:-.5px;color:var(--text);font-size:22px;font-weight:800}.logo-mark span{color:var(--accent)}.logo-sub{color:var(--text3);letter-spacing:2px;text-transform:uppercase;margin-top:2px;font-size:10px}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.nav-section-label{color:var(--text3);letter-spacing:2px;text-transform:uppercase;padding:12px 20px 6px;font-size:10px}.nav-item{color:var(--text2);cursor:pointer;text-align:left;background:0 0;border:none;border-left:2px solid #0000;align-items:center;gap:10px;width:100%;padding:10px 20px;font-size:13.5px;font-weight:400;text-decoration:none;transition:color .15s,background .15s;display:flex}.nav-item:hover{color:var(--text);background:var(--surface2)}.nav-item.active{color:var(--accent);border-left-color:var(--accent);background:#00e5a00f}.nav-item svg{opacity:.7;flex-shrink:0}.nav-item.active svg{opacity:1}.sidebar-footer{border-top:1px solid var(--border);padding:14px 0 16px}.sidebar-user{color:var(--text3);grid-template-columns:14px 1fr;align-items:start;gap:8px;min-width:0;padding:0 20px 10px;display:grid}.sidebar-user-email{color:var(--text2);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.sidebar-user-role{color:var(--text3);letter-spacing:1.5px;text-transform:uppercase;font-size:10px}.sidebar-logout{padding-top:8px;padding-bottom:8px;font-size:12px}.main-content{flex-direction:column;flex:1;display:flex;overflow:hidden}.auth-shell{background:var(--bg);place-items:center;min-height:100vh;padding:28px;display:grid}.auth-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(420px,100%);box-shadow:var(--shadow);gap:14px;padding:28px;display:grid}.auth-brand{align-items:center;gap:12px;margin-bottom:6px;display:flex}.auth-brand svg{color:var(--accent)}.auth-copy{color:var(--text2);margin-top:4px}.form-label{color:var(--text3);letter-spacing:1px;text-transform:uppercase;font-size:11px}.alert{border-radius:var(--radius);padding:10px 12px;font-size:13px}.alert-error{color:var(--red);background:#ff454517;border:1px solid #ff454540}.page-header{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;justify-content:space-between;align-items:center;padding:24px 32px 20px;display:flex}.page-title{font-family:var(--font-head);letter-spacing:-.3px;font-size:22px;font-weight:700}.page-body{flex:1;padding:28px 32px;overflow-y:auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:20px;padding:24px}.card-title{font-family:var(--font-head);color:var(--text);align-items:center;gap:8px;margin-bottom:16px;font-size:15px;font-weight:600;display:flex}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;margin-bottom:24px;display:grid}.stat-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.stat-label{color:var(--text3);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:8px;font-size:11px}.stat-value{font-family:var(--font-mono);color:var(--accent);font-size:26px;font-weight:500;line-height:1}.stat-value.blue{color:var(--accent2)}.stat-value.orange{color:var(--accent3)}.stat-value.red{color:var(--red)}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;font-size:13px;font-weight:500;font-family:var(--font-body);border:none;align-items:center;gap:6px;padding:9px 16px;transition:all .15s;display:inline-flex}.btn-primary{background:var(--accent);color:#000}.btn-primary:hover{background:#00ffb3}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border2)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-danger{color:var(--red);border:1px solid var(--red);background:0 0}.btn-danger:hover{background:#ff45451a}.btn-ghost{color:var(--text2);border:1px solid var(--border);background:0 0}.btn-ghost:hover{color:var(--text);border-color:var(--border2)}.input{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);width:100%;font-size:13px;font-family:var(--font-body);outline:none;padding:9px 12px;transition:border .15s}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--text3)}select.input{appearance:none;cursor:pointer}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12.5px}th{background:var(--surface2);color:var(--text3);letter-spacing:1px;text-transform:uppercase;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:10.5px;font-weight:500}td{border-bottom:1px solid var(--border);color:var(--text2);white-space:nowrap;padding:10px 14px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--surface2);color:var(--text)}.badge{font-size:11px;font-weight:500;font-family:var(--font-mono);border-radius:4px;align-items:center;padding:2px 8px;display:inline-flex}.badge-green{color:var(--accent);background:#00e5a01f}.badge-blue{color:#4d8dff;background:#0055ff1f}.badge-red{color:var(--red);background:#ff45451f}.badge-gray{background:var(--surface2);color:var(--text3)}.badge-orange{color:var(--accent3);background:#ff6b351f}.dropzone{border:2px dashed var(--border2);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:var(--surface2);padding:48px 32px;transition:all .2s}.dropzone:hover,.dropzone.active{border-color:var(--accent);background:#00e5a00a}.dropzone-icon{color:var(--accent);margin-bottom:12px}.dropzone-text{color:var(--text2);font-size:14px}.dropzone-hint{color:var(--text3);margin-top:4px;font-size:12px}.mapping-row{border-bottom:1px solid var(--border);grid-template-columns:1fr 32px 1fr;align-items:center;gap:10px;padding:8px 0;display:grid}.mapping-row:last-child{border-bottom:none}.csv-col{background:var(--surface2);border:1px solid var(--border);font-family:var(--font-mono);color:var(--text2);text-overflow:ellipsis;border-radius:6px;padding:8px 12px;font-size:12px;overflow:hidden}.arrow-icon{color:var(--text3);text-align:center}.progress-bar{background:var(--surface2);border-radius:2px;height:4px;margin:8px 0;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;height:100%;transition:width .3s}.progress-bar-lg{border-radius:4px;height:8px;margin:18px 0 10px}.progress-bar-indeterminate .progress-fill{transition:none}.progress-fill-indeterminate{animation:1.1s ease-in-out infinite progress-indeterminate}@keyframes progress-indeterminate{0%{transform:translate(-120%)}to{transform:translate(240%)}}.upload-progress-card{text-align:center;max-width:560px;margin:0 auto 20px;padding:42px}.upload-progress-icon{border-radius:var(--radius);width:48px;height:48px;color:var(--accent);background:#00e5a014;border:1px solid #00e5a033;justify-content:center;align-items:center;margin-bottom:16px;display:inline-flex}.upload-progress-title{font-family:var(--font-head);margin-bottom:6px;font-size:18px;font-weight:600}.upload-progress-detail{color:var(--text2);overflow-wrap:anywhere;font-size:13px}.upload-progress-meta{color:var(--text3);font-family:var(--font-mono);justify-content:space-between;align-items:center;gap:12px;font-size:11px;display:flex}.filter-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.filter-label{color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;font-size:11px;display:block}.contacts-filters,.contacts-results{background:linear-gradient(180deg, #ffffff04, #fff0) var(--surface)}.contacts-filter-grid{margin-bottom:14px}.contacts-search-input{position:relative}.contacts-search-icon{color:var(--text3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.contacts-query-input{padding-left:38px}.contacts-filter-actions{flex-wrap:wrap;justify-content:space-between;row-gap:12px}.contacts-filter-buttons{flex-wrap:wrap}.contacts-results-summary{color:var(--text3);margin-top:12px;font-size:12px}.contacts-results-loading{justify-content:center;padding:40px;display:flex}.contacts-spinner-lg{width:28px;height:28px}.contacts-results .table-wrap{margin:0 -24px;padding:0 24px}.contacts-result-row{cursor:pointer}.contacts-result-row:focus-visible{outline:none}.contacts-result-row:focus-visible td{color:var(--text);background:#00e5a014;box-shadow:inset 0 1px #00e5a0a6,inset 0 -1px #00e5a0a6}.contacts-result-row:focus-visible td:first-child{box-shadow:inset 2px 0 #00e5a0d9,inset 0 1px #00e5a0a6,inset 0 -1px #00e5a0a6}.contacts-result-row:focus-visible td:last-child{box-shadow:inset -2px 0 #00e5a0d9,inset 0 1px #00e5a0a6,inset 0 -1px #00e5a0a6}.contacts-result-name{color:var(--text);font-weight:500}.contacts-location-cell{color:inherit;align-items:center;gap:6px;display:inline-flex}.contacts-result-tags,.contacts-tag-row{flex-wrap:wrap;gap:6px;display:flex}.contacts-pagination{border-top:1px solid var(--border);justify-content:center;align-items:center;gap:12px;margin-top:18px;padding-top:16px;display:flex}.contacts-pagination-label{color:var(--text2);font-size:13px}.contacts-detail-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:500;background:#050608c7;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.contacts-detail-modal{width:min(960px,100%);max-height:85vh;margin-bottom:0;padding:28px;overflow-y:auto;box-shadow:0 24px 60px #00000073}.contacts-detail-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.contacts-detail-title{font-family:var(--font-head);letter-spacing:-.3px;font-size:22px;font-weight:700}.contacts-detail-subtitle{color:var(--text2);margin-top:6px;font-size:13px}.contacts-detail-close{flex-shrink:0;padding:8px 10px}.contacts-detail-loading{justify-content:center;padding:56px 0;display:flex}.contacts-detail-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px;display:grid}.contacts-detail-field{border:1px solid var(--border);border-radius:var(--radius);background:#ffffff04;min-height:64px;padding:12px 14px}.contacts-detail-label,.contacts-source-label{color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;font-size:10px}.contacts-detail-value{color:var(--text);overflow-wrap:anywhere;font-size:13px}.contacts-detail-section{border:1px solid var(--border);background:#ffffff03;border-radius:12px;margin-bottom:18px;padding:18px}.contacts-phone-list,.contacts-source-list{gap:10px;display:grid}.contacts-phone-row{background:var(--surface2);border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.contacts-phone-number{color:var(--text);font-size:14px}.contacts-source-row{border:1px solid var(--border);background:var(--surface2);border-radius:8px;padding:14px}.contacts-source-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.contacts-source-title{color:var(--text);font-weight:600}.contacts-source-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.contacts-json-block{border:1px solid var(--border);color:var(--text2);white-space:pre-wrap;word-break:break-word;background:#0d1015;border-radius:8px;margin:0;padding:12px;font-size:11px;line-height:1.5;overflow-x:auto}.toast-container{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius);color:var(--text);box-shadow:var(--shadow);align-items:center;gap:10px;min-width:280px;padding:12px 16px;font-size:13px;animation:.2s slideIn;display:flex}.toast.success{border-left:3px solid var(--accent)}.toast.error{border-left:3px solid var(--red)}.toast.info{border-left:3px solid var(--accent2)}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.tabs{border-bottom:1px solid var(--border);gap:2px;margin-bottom:24px;display:flex}.tab{color:var(--text2);cursor:pointer;font-size:13px;font-family:var(--font-body);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 18px;transition:all .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.flex{display:flex}.flex-col{flex-direction:column;display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.text-accent{color:var(--accent)}.text-muted{color:var(--text2)}.text-dim{color:var(--text3)}.text-mono{font-family:var(--font-mono)}.text-sm{font-size:12px}.text-xs{font-size:11px}.font-head{font-family:var(--font-head)}.bold{font-weight:600}.full-width{width:100%}.row{align-items:center;gap:12px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;color:var(--text3);padding:60px 20px}.empty-state svg{opacity:.3;margin-bottom:12px}@media (width<=900px){.contacts-detail-overlay{align-items:stretch;padding:16px}.contacts-detail-modal{width:100%;max-height:none;padding:22px}.contacts-results .table-wrap{margin:0 -20px;padding:0 20px}}@media (width<=720px){.page-header{padding:20px 20px 16px}.page-body,.card{padding:20px}.contacts-pagination{justify-content:space-between}}@media (width<=560px){.contacts-detail-header{flex-direction:column}.contacts-detail-close{align-self:flex-end}.contacts-detail-grid,.contacts-source-grid{grid-template-columns:1fr}.contacts-results .table-wrap{margin:0 -16px;padding:0 16px}.contacts-pagination{flex-wrap:wrap}}
