*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f8f9fb;--surface: #ffffff;--border: #e2e6ea;--text: #1a202c;--text-muted: #718096;--accent: #4f46e5;--accent-hover: #4338ca;--danger: #e53e3e;--success: #38a169;--radius: 8px;--shadow: 0 1px 4px rgba(0,0,0,.08);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:15px;line-height:1.6;min-height:100vh}a{color:var(--accent);text-decoration:none}button{font-family:var(--font);cursor:pointer}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:2.5rem 2rem;width:100%;max-width:400px}.auth-card h1{font-size:1.5rem;font-weight:700;margin-bottom:.25rem}.auth-card .subtitle{color:var(--text-muted);font-size:.875rem;margin-bottom:1.5rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.35rem;color:var(--text)}.form-group input{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:.9375rem;font-family:var(--font);color:var(--text);background:var(--surface);transition:border-color .15s;outline:none}.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4f46e51f}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.25rem;border-radius:6px;font-size:.9375rem;font-weight:500;border:none;transition:background .15s,opacity .15s;cursor:pointer}.btn-primary{background:var(--accent);color:#fff;width:100%}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-sm{padding:.35rem .75rem;font-size:.8125rem}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-outline:hover{background:var(--bg)}.error-msg{color:var(--danger);font-size:.875rem;margin-top:.75rem;text-align:center}.toggle-link{margin-top:1.25rem;text-align:center;font-size:.875rem;color:var(--text-muted)}.toggle-link button{background:none;border:none;color:var(--accent);font-size:inherit;cursor:pointer;padding:0;font-family:var(--font)}.dash-shell{min-height:100vh;display:flex;flex-direction:column}.dash-header{background:var(--surface);border-bottom:1px solid var(--border);padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:10}.dash-header .logo{font-weight:700;font-size:1.1rem;color:var(--text);letter-spacing:-.01em}.dash-header .spacer{flex:1}.dash-header select{padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;font-family:var(--font);font-size:.875rem;background:var(--surface);color:var(--text);cursor:pointer}.dash-content{padding:1.5rem;max-width:1200px;margin:0 auto;width:100%}.toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;flex-wrap:wrap}.toolbar h2{font-size:1.1rem;font-weight:600}.toolbar .spacer{flex:1}.range-btn{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.3rem .75rem;font-size:.8125rem;font-family:var(--font);color:var(--text-muted);cursor:pointer;transition:all .12s}.range-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;margin-bottom:1.5rem}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1rem;box-shadow:var(--shadow)}.kpi-card .kpi-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.35rem}.kpi-card .kpi-value{font-size:2rem;font-weight:700;line-height:1.1;color:var(--text)}.section-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem 1rem;margin-bottom:1rem}.section-card h3{font-size:.875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:1rem}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:680px){.two-col{grid-template-columns:1fr}}.uplot-wrap{width:100%}.bar-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.bar-list-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.bar-list-item .bar-label{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.bar-list-item .bar-count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.8125rem;white-space:nowrap}.bar-track{height:6px;background:var(--bg);border-radius:3px;flex:2;min-width:40px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:3px;opacity:.7}.map-container{width:100%;border-radius:6px;overflow:hidden}.empty-state{text-align:center;color:var(--text-muted);padding:2rem;font-size:.9rem}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:3rem;color:var(--text-muted);font-size:.9rem}.add-site-form{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}.add-site-form .form-group{margin-bottom:0;flex:1;min-width:160px}.goals-table{width:100%;border-collapse:collapse;font-size:.875rem}.goals-table th{text-align:left;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.25rem .5rem;border-bottom:1px solid var(--border)}.goals-table td{padding:.4rem .5rem;border-bottom:1px solid var(--border);color:var(--text);font-variant-numeric:tabular-nums}.goals-table tr:last-child td{border-bottom:none}.goals-type{color:var(--text-muted);font-size:.8125rem}.goal-delete-btn{background:none;border:none;font-size:1rem;color:var(--text-muted);cursor:pointer;padding:0 .25rem;line-height:1;border-radius:3px;font-family:var(--font)}.goal-delete-btn:hover{color:var(--danger);background:#e53e3e14}.add-goal-details{margin-top:1rem}.add-goal-summary{font-size:.8125rem;color:var(--accent);cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.add-goal-summary::-webkit-details-marker{display:none}.add-goal-form{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem}.add-goal-form .form-group{margin-bottom:0}.add-goal-form select{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:6px;font-size:.9375rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none}@keyframes rt-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.realtime-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.realtime-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--success);flex-shrink:0;animation:rt-pulse 2s ease-in-out infinite}.realtime-count{font-size:.9375rem;color:var(--text)}.realtime-loading{font-size:.75rem;color:var(--text-muted);margin-left:auto}.realtime-body{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}@media(max-width:680px){.realtime-body{grid-template-columns:1fr}}.realtime-sparkline{min-height:60px}.realtime-sparkline-empty{display:flex;align-items:center;justify-content:center;height:60px;font-size:.8125rem;color:var(--text-muted)}.realtime-recent-header{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.4rem}.realtime-recent-list{list-style:none;max-height:140px;overflow-y:auto;display:flex;flex-direction:column;gap:.2rem}.realtime-recent-item{display:flex;align-items:center;gap:.5rem;font-size:.8125rem;padding:.15rem 0;border-bottom:1px solid var(--border)}.realtime-recent-item:last-child{border-bottom:none}.realtime-recent-time{font-variant-numeric:tabular-nums;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.realtime-recent-path{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}.realtime-recent-country{color:var(--text-muted);font-size:.75rem;white-space:nowrap;flex-shrink:0}.realtime-recent-empty{font-size:.8125rem;color:var(--text-muted);padding:.5rem 0}.funnel-list{list-style:none;display:flex;flex-direction:column;gap:.25rem;margin-bottom:.5rem}.funnel-list-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .6rem;border-radius:6px;border:1px solid var(--border);cursor:pointer;font-size:.875rem;transition:background .12s,border-color .12s}.funnel-list-item:hover{background:var(--bg)}.funnel-list-item.active{border-color:var(--accent);background:#4f46e50f}.funnel-list-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.funnel-steps-viz{list-style:none;display:flex;flex-direction:column;gap:.5rem}.funnel-step-row{display:flex;flex-direction:column;gap:.2rem}.funnel-step-meta{display:flex;align-items:center;gap:.5rem;font-size:.8125rem}.funnel-step-num{width:1.25rem;height:1.25rem;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:700;flex-shrink:0}.funnel-step-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}.funnel-step-count{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600;flex-shrink:0}.funnel-step-rate{color:var(--success);font-variant-numeric:tabular-nums;font-size:.75rem;flex-shrink:0}.funnel-step-drop{color:var(--danger);font-variant-numeric:tabular-nums;font-size:.75rem;flex-shrink:0}.funnel-bar-track{height:8px;background:var(--bg);border-radius:4px;overflow:hidden}.funnel-bar-fill{height:100%;background:var(--accent);border-radius:4px;opacity:.75;transition:width .3s ease}.funnel-steps-builder{display:flex;flex-direction:column;gap:.4rem}.funnel-steps-label{font-size:.8125rem;font-weight:500;color:var(--text-muted)}.funnel-step-builder-row{display:flex;align-items:center;gap:.4rem}.funnel-step-builder-row select{padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;font-size:.8125rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none;flex-shrink:0}.funnel-step-builder-row input{flex:1;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;font-size:.8125rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none}.funnel-step-builder-row input:focus{border-color:var(--accent)}.retention-grid-wrap{overflow-x:auto;margin-bottom:.75rem}.retention-grid{border-collapse:collapse;font-size:.8125rem;min-width:100%}.retention-grid th{text-align:center;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.25rem .5rem;border-bottom:1px solid var(--border);white-space:nowrap}.ret-cohort-col{text-align:left!important;min-width:90px}.ret-day-col{min-width:52px}.ret-cohort-label{color:var(--text-muted);font-size:.75rem;font-variant-numeric:tabular-nums;white-space:nowrap;padding:.3rem .5rem;border-bottom:1px solid var(--border)}.ret-cell{text-align:center;padding:.3rem .4rem;border-bottom:1px solid var(--border);border-left:1px solid var(--border);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background-color .15s}.ret-cell-empty{background:var(--bg)!important}.retention-grid tr:last-child td{border-bottom:none}.retention-note{font-size:.75rem;color:var(--text-muted);margin-top:.5rem;line-height:1.5}.settings-panel{display:flex;flex-direction:column;gap:0}.settings-btn-active{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}.settings-field-group{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.25rem}.settings-label{font-size:.875rem;font-weight:500;color:var(--text)}.settings-hint{font-size:.75rem;color:var(--text-muted);margin:0}.settings-input-number{width:120px;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;font-size:.9375rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none}.settings-input-number:focus{border-color:var(--accent)}.settings-input-wide{width:100%;max-width:480px;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;font-size:.9375rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none}.settings-input-wide:focus{border-color:var(--accent)}.settings-msg-ok{font-size:.875rem;color:var(--success)}.path-rules-list{display:flex;flex-direction:column;gap:.35rem}.path-rule-row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.path-rule-input{flex:1;min-width:130px;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;font-size:.8125rem;font-family:var(--font);color:var(--text);background:var(--surface);outline:none}.path-rule-input:focus{border-color:var(--accent)}.path-rule-arrow{color:var(--text-muted);font-size:.875rem;flex-shrink:0}.revealed-key-box{background:#4f46e50d;border:1px solid rgba(79,70,229,.3);border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem}.revealed-key-warning{font-size:.8125rem;font-weight:600;color:var(--accent);margin-bottom:.5rem}.revealed-key-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.revealed-key-value{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;font-size:.8125rem;color:var(--text);word-break:break-all;flex:1}.api-usage-hint{margin-top:1.25rem;padding-top:1rem;border-top:1px solid var(--border)}.api-usage-hint-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.4rem}.api-usage-hint-code{display:block;font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;font-size:.8125rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.5rem .75rem;overflow-x:auto;white-space:nowrap}.logout-btn{background:none;border:none;font-size:.8125rem;color:var(--text-muted);cursor:pointer;font-family:var(--font);padding:.25rem .5rem;border-radius:4px}.logout-btn:hover{background:var(--bg);color:var(--text)}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}
