*{margin:0;padding:0;box-sizing:border-box}:root{--bg-app: #060910;--bg-app-mid: #0c1220;--bg-surface: #111827;--bg-surface-2: #161f2e;--bg-elevated: #1c2738;--bg-hover: #243044;--bg-input: #0d1118;--border: #2d3a4f;--border-strong: #3d4f6a;--text: #e8ecf4;--text-muted: #94a3b8;--text-subtle: #6b7c94;--accent: #8b9cff;--accent-hover: #b4befe;--accent-deep: #4f46e5;--gradient-header: linear-gradient(135deg, #3730a3 0%, #5b21b6 48%, #6d28d9 100%);--gradient-table-head: linear-gradient(135deg, #4c1d95 0%, #5b21b6 50%, #6d28d9 100%);--gradient-total: linear-gradient(135deg, #5b21b6 0%, #7c3aed 100%);--gradient-btn: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);--shadow-lg: 0 20px 50px rgba(0, 0, 0, .55);--shadow-card: 0 4px 28px rgba(0, 0, 0, .45);--radius: 12px;--radius-sm: 8px;--success-bg: rgba(34, 197, 94, .16);--success-text: #4ade80;--danger-bg: rgba(248, 113, 113, .14);--danger-text: #fca5a5;--warn-bg: rgba(250, 204, 21, .12);--warn-text: #fcd34d;--info-bg: rgba(129, 140, 248, .14);--info-text: #a5b4fc;--neutral-bg: rgba(148, 163, 184, .1);--neutral-text: #cbd5e1}html{color-scheme:dark}#root{min-height:100vh}body{font-family:DM Sans,Segoe UI,system-ui,sans-serif;background:radial-gradient(ellipse 90% 55% at 50% -8%,rgba(99,102,241,.22),transparent 52%),linear-gradient(168deg,var(--bg-app-mid) 0%,var(--bg-app) 42%,#030508 100%);min-height:100vh;padding:20px;color:var(--text);-webkit-font-smoothing:antialiased}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:20px}.login-box{background:var(--bg-surface);padding:40px;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);width:100%;max-width:400px}.login-box h1{text-align:center;background:linear-gradient(135deg,#c4b5fd,#a78bfa,#818cf8);-webkit-background-clip:text;background-clip:text;color:transparent;margin-bottom:30px;font-size:2rem;font-weight:700;letter-spacing:-.02em}.login-form-group{margin-bottom:20px}.login-form-group label{display:block;margin-bottom:8px;color:var(--text-muted);font-weight:600;font-size:.9rem}.login-form-group input{width:100%;padding:12px 15px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease;background:var(--bg-input);color:var(--text)}.login-form-group input:focus{outline:none;border-color:var(--accent-deep);box-shadow:0 0 0 3px #6366f140}.login-form-group input::placeholder{color:var(--text-subtle)}.login-btn{width:100%;padding:12px;background:var(--gradient-btn);color:#fff;border:none;border-radius:var(--radius-sm);font-size:1.1rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;margin-top:10px}.login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #7c3aed59}.login-btn:active{transform:translateY(0)}.login-error{color:var(--danger-text);font-size:.9rem;margin-top:10px;text-align:center;min-height:20px}.hidden{display:none!important}.dashboard-page{max-width:1400px;margin:0 auto}.dashboard-container{max-width:1400px;margin:0 auto;background:var(--bg-surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-card);overflow:hidden}.dashboard-header{position:relative;background:var(--gradient-header);color:#f8fafc;padding:30px;text-align:center}.dashboard-header-sticky{position:sticky;top:0;z-index:500;border-radius:var(--radius) var(--radius) 0 0;box-shadow:0 8px 32px #00000059}.dashboard-container-body{border-radius:0 0 12px 12px}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999;background:#060910d1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}.loading-spinner{width:44px;height:44px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:dashboard-spin .75s linear infinite}@keyframes dashboard-spin{to{transform:rotate(360deg)}}.loading-text{font-weight:600;color:var(--text-muted)}.dashboard-header h1{font-size:2.5rem;font-weight:600;letter-spacing:1px}.logout-btn{position:absolute;top:30px;right:30px;padding:10px 20px;background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.3);border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .3s ease}.logout-btn:hover{background:#ffffff4d;border-color:#ffffff80;transform:translateY(-2px)}.product-selection{padding:30px;background:var(--bg-surface-2);border-bottom:1px solid var(--border)}.product-buttons{display:flex;gap:15px;justify-content:center;flex-wrap:wrap}.product-buttons-with-hint{flex-direction:column;align-items:center}.product-buttons-row{display:flex;gap:15px;justify-content:center;flex-wrap:wrap;width:100%}.product-meta-strip{padding:16px 30px;background:#6366f114;border-bottom:1px solid var(--border);font-size:.95rem;color:var(--text)}.product-meta-strip p{margin:6px 0}.product-meta-id{color:var(--text-muted);font-weight:500}.product-btn{padding:12px 40px;font-size:1.1rem;font-weight:600;border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--accent);border-radius:var(--radius-sm);cursor:pointer;transition:background .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease;text-transform:uppercase;letter-spacing:.5px}.product-btn:hover{background:#6366f133;border-color:var(--accent-deep);color:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 20px #6366f133}.product-btn.active{background:var(--gradient-btn);border-color:transparent;color:#fff;box-shadow:0 6px 22px #7c3aed59}.no-products{padding:20px;text-align:center;color:var(--text-muted);font-style:italic}.date-filter{padding:30px;background:var(--bg-surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:15px;flex-wrap:wrap}.date-filter-range{align-items:flex-end}.filter-field{display:flex;flex-direction:column;gap:6px}.filter-field label{font-size:.85rem;font-weight:600;color:var(--text-muted)}.filter-field-grow{flex:1;min-width:180px}.filters-panel{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px 24px;padding:20px 30px;background:var(--bg-surface-2);border-bottom:1px solid var(--border)}.filter-select{padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:1rem;min-width:150px;background:var(--bg-input);color:var(--text)}.filter-text{width:100%;min-width:200px}.toggle-hourly{display:flex;align-items:center;gap:8px;font-size:.95rem;font-weight:600;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;margin-bottom:4px}.toggle-hourly input{accent-color:var(--accent-deep)}.date-filter label{font-size:1.1rem;font-weight:600;color:var(--text)}.date-input{padding:10px 15px;font-size:1rem;border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;transition:border-color .2s ease,box-shadow .2s ease;background:var(--bg-input);color:var(--text)}.date-input:focus{border-color:var(--accent-deep);box-shadow:0 0 0 2px #6366f133}.fetch-btn{padding:10px 30px;font-size:1rem;font-weight:600;background:var(--gradient-btn);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.fetch-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 24px #7c3aed59}.fetch-btn:disabled{opacity:.75;cursor:not-allowed;transform:none}.contact-section{padding:30px;background:var(--bg-surface);border-bottom:1px solid var(--border)}.contact-section h2{color:var(--text);margin-bottom:20px;font-size:1.8rem;font-weight:700;letter-spacing:-.02em}.contacts-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-surface-2)}.contacts-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-height:420px;overflow-y:auto}.contacts-table{width:100%;border-collapse:collapse;font-size:.95rem}.contacts-table thead{position:sticky;top:0;z-index:2;background:var(--gradient-table-head);color:#f1f5f9}.contacts-table th{text-align:left;padding:14px 16px;font-weight:600;border-bottom:2px solid rgba(255,255,255,.25);white-space:nowrap}.contacts-th-action{text-align:center;width:6rem}.contacts-table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text)}.contacts-table tbody tr:nth-child(2n){background:#ffffff05}.contacts-table tbody tr:hover{background:#6366f11a}.contacts-td-mobile{font-variant-numeric:tabular-nums;white-space:nowrap}.contacts-td-action{text-align:center}.contacts-col-meta,.contacts-td-meta{max-width:10rem;font-size:.88rem;word-break:break-word}.contacts-col-domain,.contacts-td-domain{max-width:12rem;font-size:.88rem;word-break:break-all}.view-btn-compact{padding:6px 14px;font-size:.85rem}.status-pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.82rem;font-weight:600;white-space:nowrap}.status-success{background:var(--success-bg);color:var(--success-text);border:1px solid rgba(74,222,128,.25)}.status-failed{background:var(--danger-bg);color:var(--danger-text);border:1px solid rgba(248,113,113,.25)}.status-initiated{background:var(--warn-bg);color:var(--warn-text);border:1px solid rgba(251,191,36,.2)}.status-unknown{background:var(--neutral-bg);color:var(--neutral-text);border:1px solid var(--border)}.status-neutral{background:var(--info-bg);color:var(--info-text);border:1px solid rgba(165,180,252,.2)}.contact-list-container{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.contact-list-header{display:grid;grid-template-columns:1fr auto;background:var(--bg-surface-2);padding:15px 20px;font-weight:600;color:var(--text);border-bottom:1px solid var(--border)}.col-mobile{grid-column:1}.col-action{grid-column:2;text-align:center}.contact-list{max-height:400px;overflow-y:auto}.contact-item{display:grid;grid-template-columns:1fr auto;padding:15px 20px;border-bottom:1px solid var(--border);align-items:center;transition:background .2s ease}.contact-item:hover{background:var(--bg-hover)}.contact-item:last-child{border-bottom:none}.contact-mobile{font-size:1rem;color:var(--text)}.view-btn{padding:8px 20px;background:var(--gradient-btn);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600;transition:transform .2s ease,box-shadow .2s ease}.view-btn:hover{transform:translateY(-2px);box-shadow:0 6px 18px #7c3aed59}.no-data{padding:40px;text-align:center;color:var(--text-muted);font-style:italic}.modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;background-color:#000000b8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal.open{display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;overflow-y:auto}.modal-content{background-color:var(--bg-elevated);border:1px solid var(--border-strong);margin:0;padding:22px 24px 20px;border-radius:var(--radius);width:100%;max-width:500px;max-height:min(calc(100vh - 32px),640px);overflow-y:auto;box-shadow:var(--shadow-lg);position:relative;animation:modalSlideIn .3s ease;flex-shrink:0}.modal-content-wide{max-width:440px}.modal-content-wide .contact-details{gap:6px}.modal-content-wide .detail-item{gap:2px}.modal-content-wide .detail-item-divider{margin-top:4px;padding-top:10px;border-top:1px solid var(--border)}.modal-content-wide .detail-label{font-size:.72rem;letter-spacing:.35px;line-height:1.2}.modal-content-wide .detail-value{font-size:.95rem;line-height:1.35;padding:5px 8px}.detail-item-divider{margin-top:8px;padding-top:16px;border-top:1px solid var(--border)}@keyframes modalSlideIn{0%{transform:translateY(-50px);opacity:0}to{transform:translateY(0);opacity:1}}.close-modal{position:absolute;right:14px;top:14px;font-size:2rem;font-weight:700;color:var(--text-muted);cursor:pointer;transition:color .2s ease;background:none;border:none;line-height:1}.close-modal:hover{color:var(--text)}.modal-content h2{color:var(--text);margin:0 0 12px;padding-right:36px;font-size:1.35rem;line-height:1.25}.contact-details{display:flex;flex-direction:column;gap:12px}.detail-item{display:flex;flex-direction:column;gap:4px}.detail-label{font-weight:600;color:var(--accent);font-size:.9rem;text-transform:uppercase;letter-spacing:.5px}.detail-value{font-size:.92rem;line-height:1.45;color:var(--text);padding:8px 10px;background:var(--bg-input);border-radius:6px;border:1px solid var(--border);border-left:3px solid var(--accent-deep);font-family:JetBrains Mono,ui-monospace,monospace}.analytics-section{padding:30px;background:var(--bg-surface);border-bottom:1px solid var(--border)}.analytics-section h2{color:var(--text);margin-bottom:20px;font-size:1.8rem;font-weight:700;letter-spacing:-.02em}.analytics-header{margin-bottom:20px;padding:15px;background:var(--bg-surface-2);border-radius:var(--radius-sm);border:1px solid var(--border)}.analytics-header p{margin:5px 0;color:var(--text)}.table-container{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.table-container-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius-sm)}.analytics-hourly-panel{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface-2);box-shadow:var(--shadow-card);overflow:hidden}.analytics-hourly-scroll{overflow:auto;max-height:min(72vh,640px);-webkit-overflow-scrolling:touch;scrollbar-gutter:stable}.analytics-hourly-scroll::-webkit-scrollbar{height:10px;width:10px}.analytics-hourly-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}.analytics-hourly-scroll::-webkit-scrollbar-track{background:var(--bg-input)}.analytics-table-caption{padding:14px 18px 10px;font-weight:600;color:var(--text);font-size:.95rem;border-bottom:1px solid var(--border);margin:0}.analytics-table-24h{--metric-col-width: 13.5rem;--total-col-width: 5.25rem;--hour-col-width: 3.35rem;min-width:max-content;width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem}.analytics-table-24h col.col-metric{width:var(--metric-col-width)}.analytics-table-24h col.col-total{width:var(--total-col-width)}.analytics-table-24h col.col-hour{width:var(--hour-col-width);min-width:var(--hour-col-width)}.analytics-table-24h thead{position:sticky;top:0;z-index:3}.analytics-table-24h thead th{padding:14px 10px;font-weight:600;font-size:.82rem;letter-spacing:.02em;text-align:center;vertical-align:middle;border-bottom:2px solid rgba(255,255,255,.25);border-right:1px solid rgba(255,255,255,.18);white-space:nowrap}.analytics-table-24h thead th:last-child{border-right:none}.analytics-table-24h .th-metric-inner{display:block;max-width:12rem;line-height:1.35;text-align:left;font-size:.88rem}.analytics-table-24h .th-hour-label{display:inline-block;font-variant-numeric:tabular-nums;padding:4px 2px}.analytics-table-24h tbody th.td-metric,.analytics-table-24h tbody td{padding:14px 12px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:middle}.analytics-table-24h tbody td:last-child{border-right:none}.analytics-table-24h tbody th.td-metric{text-align:left;font-weight:600;color:var(--text);line-height:1.4;background:var(--bg-elevated)}.analytics-table-24h tbody tr:nth-child(2n) th.td-metric{background:var(--bg-surface-2)}.analytics-table-24h .num-cell{text-align:center;font-variant-numeric:tabular-nums;font-weight:500;color:var(--text);min-width:var(--hour-col-width)}.analytics-table-24h tbody td.hour-band-a{background:#ffffff08}.analytics-table-24h tbody td.hour-band-b{background:#ffffff0f}.analytics-table-24h tbody tr:hover th.td-metric{background:var(--bg-hover)}.analytics-table-24h tbody tr:hover td.hour-cell{background:#6366f11f!important}.analytics-table-24h tbody tr:hover td.total-column{filter:brightness(1.05)}.analytics-table-24h .sticky-col-metric{position:sticky;left:0;z-index:2;min-width:var(--metric-col-width);max-width:15rem;box-shadow:6px 0 14px -6px #00000080}.analytics-table-24h thead .sticky-col-metric{z-index:4;background:var(--gradient-table-head);color:#f1f5f9;text-align:left;padding-left:16px;padding-right:12px}.analytics-table-24h .sticky-col-total{position:sticky;left:var(--metric-col-width);z-index:2;box-shadow:6px 0 14px -6px #00000073}.analytics-table-24h thead .sticky-col-total{z-index:4;background:var(--gradient-total);color:#f8fafc}.analytics-table-24h tbody .sticky-col-total.total-column{z-index:2}.analytics-table-24h:not(.is-hourly) .sticky-col-total{position:static;box-shadow:none;left:auto}.analytics-header-compact .analytics-sub{font-size:.88rem;color:var(--text-muted);margin-top:8px;line-height:1.45}.analytics-header-compact code{font-family:JetBrains Mono,ui-monospace,monospace;background:var(--bg-input);border:1px solid var(--border);padding:2px 6px;border-radius:4px;font-size:.85em;color:var(--accent)}.analytics-empty{padding:16px 0}.dsp-block{margin-bottom:28px}.dsp-block-title{font-size:1.15rem;margin:18px 0 12px;color:var(--text);display:flex;align-items:center;flex-wrap:wrap;gap:10px}.dsp-name{color:var(--accent);font-weight:700}.dsp-sep{color:var(--text-subtle);font-weight:400}.dsp-domain{color:var(--text-muted)}.analytics-table{width:100%;border-collapse:collapse;background:var(--bg-surface-2);min-width:800px}.analytics-table thead{background:var(--gradient-table-head);color:#f1f5f9}.analytics-table th{padding:15px;text-align:center;font-weight:600;border:1px solid rgba(255,255,255,.2)}.analytics-table td{padding:12px 15px;text-align:center;border:1px solid var(--border);color:var(--text)}.analytics-table:not(.analytics-table-24h) tbody tr:nth-child(2n){background:#ffffff05}.analytics-table:not(.analytics-table-24h) tbody tr:hover{background:var(--bg-hover)}.analytics-table:not(.analytics-table-24h) tbody tr td:first-child{font-weight:600;text-align:left;background:var(--bg-elevated)}.analytics-table-24h tbody tr:nth-child(2n){background:transparent}.analytics-table-24h tbody tr:hover{background:transparent}.analytics-table th.total-column,.analytics-table td.total-column{background:var(--gradient-total);color:#f8fafc;font-weight:700;font-size:1.05em}.analytics-table tbody tr td.total-column{background:var(--gradient-total);color:#f8fafc;font-weight:700}.download-section{padding:30px;background:var(--bg-surface-2);border-top:1px solid var(--border);display:flex;gap:15px;justify-content:center;flex-wrap:wrap}.download-btn{padding:12px 30px;font-size:1rem;font-weight:600;background:linear-gradient(135deg,#059669,#10b981);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;text-transform:uppercase;letter-spacing:.5px}.download-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px #10b98159}@media(max-width:768px){.dashboard-header h1{font-size:1.8rem}.product-btn{padding:10px 30px;font-size:1rem}.date-filter{flex-direction:column;align-items:flex-start}.date-filter label,.date-input,.fetch-btn{width:100%}.contact-list-header,.contact-item{grid-template-columns:1fr;gap:10px}.col-action{text-align:left}.modal-content{width:100%;max-width:none;max-height:calc(100vh - 24px);padding:18px 16px 16px}.modal-content-wide{max-width:none}.modal-content h2{font-size:1.2rem;margin-bottom:10px}.analytics-table{font-size:.85rem}.analytics-table-24h{--metric-col-width: 11.25rem;--total-col-width: 4.75rem;--hour-col-width: 2.95rem;font-size:.8rem}.analytics-table-24h thead th{padding:10px 6px;font-size:.75rem}.analytics-table-24h tbody th.td-metric,.analytics-table-24h tbody td{padding:10px 8px}.analytics-hourly-scroll{max-height:58vh}.analytics-table:not(.analytics-table-24h) th,.analytics-table:not(.analytics-table-24h) td{padding:8px}.download-btn{width:100%}}@media(max-width:480px){body{padding:10px}.login-box{padding:30px 20px}.login-box h1{font-size:1.5rem;margin-bottom:20px}.dashboard-header{padding:20px}.dashboard-header h1{font-size:1.5rem}.logout-btn{position:static;margin-top:15px;width:100%}.product-selection,.date-filter,.contact-section,.analytics-section,.download-section{padding:20px}.analytics-table{font-size:.75rem;min-width:600px}}
