:root{--lagoon:#0fa3b1;--lagoon-deep:#097985;--lagoon-tint:#e6f6f8;--sky:#b5e2fa;--sky-tint:#eaf6fd;--bone:#f9f7f3;--paper:#fff;--mist:#f3efe7;--wheat:#eddea4;--wheat-tint:#faf3d6;--coral:#f7a072;--coral-deep:#e07a4a;--coral-tint:#fde6d4;--ink:#0e1e26;--ink-soft:#4b6470;--ink-mute:#8aa0aa;--ink-faint:#c2d0d7;--delta-up:#1a7f37;--delta-up-bg:#2ea04314;--delta-up-border:#2ea04338;--delta-down:#cf222e;--delta-down-bg:#cf222e0f;--delta-down-border:#cf222e2e;--line:#0f1e2814;--line-strong:#0f1e2824;--grad-aurora:linear-gradient(96deg, #b5e2fa 0%, #0fa3b1 38%, #eddea4 70%, #f7a072 100%);--grad-lagoon:linear-gradient(135deg, #14b8c6 0%, #0fa3b1 50%, #097985 100%);--text-aurora:linear-gradient(95deg, #0fa3b1 0%, #14b8c6 40%, #f7a072 100%);--shadow-sm:0 1px 2px #0f1e280a, 0 1px 1px #0f1e280a;--shadow-md:0 4px 12px #0f1e280f, 0 1px 2px #0f1e280a;--shadow-lg:0 18px 48px #0f1e281a, 0 2px 6px #0f1e280d;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:12px;--r-pill:999px;--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bone);min-height:100%;color:var(--ink);font-family:var(--font-sans)}body{background:linear-gradient(180deg, #fbfaf7 0%, var(--bone) 100%);min-height:100%;margin:0}a{color:inherit}button,input{font:inherit}.shell{width:min(1440px,100vw - 32px);margin:0 auto;padding:18px 0 36px}.topbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;padding-bottom:12px;display:flex}.brand{flex-direction:column;gap:4px;display:flex}.eyebrow{color:var(--ink-mute);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.breadcrumb{color:var(--lagoon-deep);font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:7px;margin:0;font-size:11px;font-weight:650;display:flex}.breadcrumb b{color:var(--ink-faint);margin-right:7px;font-weight:500}.title{color:var(--ink);margin:0;font-size:clamp(22px,3vw,32px);font-weight:700;line-height:1.05}.title a{color:inherit;text-decoration:none}.title a:hover{color:var(--lagoon-deep)}.subtle{color:var(--ink-soft);font-size:13px;line-height:1.5}.button{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);min-height:30px;color:var(--ink-soft);white-space:nowrap;justify-content:center;align-items:center;padding:5px 10px;font-size:12px;font-weight:650;text-decoration:none;display:inline-flex}.button.primary{background:var(--grad-lagoon);color:#fff;border-color:#0000}.dashboard-layout{grid-template-columns:172px minmax(0,1fr);align-items:start;gap:14px;display:grid}.dashboard-main{min-width:0}.section-rail{border:1px solid var(--line);border-radius:var(--r-md);background:#ffffffd1;gap:8px;padding:6px;display:grid;position:sticky;top:18px}.section-tabs{gap:3px;display:grid}.section-tab{border-radius:var(--r-sm);width:100%;color:var(--ink-soft);text-align:left;background:0 0;border:0;gap:2px;padding:8px 9px;text-decoration:none;display:grid}.section-tab:hover,.section-tab:focus-visible,.section-tab.active{background:var(--lagoon-tint);color:var(--lagoon-deep);outline:none}.section-tab span{font-size:13px;font-weight:650;line-height:1.1}.section-tab small{color:var(--ink-mute);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10.5px;line-height:1.2}.section-tab.signout{border-top:1px solid var(--line);border-radius:0 0 var(--r-sm) var(--r-sm);cursor:pointer}.board{border:1px solid var(--line);border-radius:var(--r-md);background:#ffffffeb;margin-bottom:14px;padding:12px;scroll-margin-top:18px}.board-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:10px;padding:2px 2px 10px;display:flex}.board-head h2,.board-head h3{color:var(--ink);margin:0;font-size:15px;font-weight:650}.filters{justify-items:end;gap:6px;display:grid}.toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.ctl{border:1px solid var(--line);border-radius:var(--r-sm);min-height:30px;color:var(--ink-soft);white-space:nowrap;background:#ffffffc7;align-items:center;gap:7px;padding:5px 9px;font-size:12px;font-weight:560;line-height:1;text-decoration:none;display:inline-flex}.ctl.active{background:var(--lagoon-tint);color:var(--lagoon-deep);border-color:#0fa3b138}.ca{color:var(--ink-faint);font-family:var(--font-mono);font-size:10px}.custom-range{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.date-input{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);width:126px;min-height:30px;color:var(--ink);padding:5px 9px;font-size:12px}.grid{gap:16px;display:grid}.console-grid,.table-stack{gap:10px;display:grid}.table-pair{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:10px;display:grid}.console-grid.two,.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.northstar-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr);gap:10px;display:grid}.curve-stack{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.viz{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);min-width:0;padding:12px}.kpi{border-radius:var(--r-md);min-height:176px;position:relative;overflow:hidden}.kpi:before{content:"";background:var(--grad-aurora);opacity:.16;filter:blur(42px);pointer-events:none;width:70%;height:220%;position:absolute;inset:-70% 20% auto auto}.kpi>*{z-index:1;position:relative}.metric-label,.viz-label{color:var(--ink-mute);letter-spacing:.14em;text-transform:uppercase;margin:0 0 8px;font-size:9.5px;font-weight:700}.table-caption .viz-label{margin:0}.role{color:var(--ink-faint);font-family:var(--font-mono);letter-spacing:.04em;text-transform:none;font-size:10px;font-weight:500}.kpi-number{letter-spacing:-.02em;background:var(--text-aurora);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;align-items:baseline;gap:10px;margin-top:6px;font-size:clamp(44px,6vw,68px);font-weight:750;line-height:.95;display:inline-flex}.kpi-number.compact{letter-spacing:-.02em;font-size:clamp(32px,4vw,46px)}.fig{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.unit{color:var(--ink-mute);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-size:.48em;font-weight:600}.tile-value{color:var(--ink);margin-top:7px;font-size:24px;font-weight:650;line-height:1}.northstar-main .tile-value{background:var(--text-aurora);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(42px,5vw,62px);font-weight:760}.note{color:var(--ink-soft);margin:8px 0 0;font-size:12px;line-height:1.5}.delta-chip{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--mist);width:fit-content;color:var(--ink-soft);font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:8px 0 0;padding:3px 6px;font-size:10.5px;line-height:1;display:inline-flex}.delta-chip.delta-up{border-color:var(--delta-up-border);background:var(--delta-up-bg);color:var(--delta-up)}.delta-chip.delta-down{border-color:var(--delta-down-border);background:var(--delta-down-bg);color:var(--delta-down)}.chart-frame{width:100%;min-width:0;height:132px;min-height:132px;margin-top:16px;position:relative}.trend-panel{align-content:space-between;min-height:226px;display:grid}.trend-svg{width:100%;height:132px;display:block;overflow:visible}.trend-grid line{stroke:var(--line-strong);stroke-width:1px}.trend-grid text,.trend-axis text{fill:var(--ink-mute);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:10px}.trend-area{pointer-events:none}.trend-line{fill:none;stroke:var(--lagoon);stroke-dasharray:1;stroke-dashoffset:1px;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.4px;pointer-events:none;animation:.72s ease-out forwards chart-draw}.trend-active{opacity:0;pointer-events:none;transition:opacity var(--dur-flick,.12s) ease-out}.chart-frame:hover .trend-active,.chart-frame:focus-within .trend-active{opacity:1}.trend-active line{stroke:var(--lagoon);stroke-dasharray:3 3;stroke-width:1.5px}.trend-active circle{fill:var(--paper);stroke:var(--lagoon);stroke-width:2.5px}.trend-hit{fill:#0000;cursor:crosshair}.chart-tooltip{z-index:4;border-radius:var(--r-md);background:var(--ink);min-width:210px;color:var(--paper);font-family:var(--font-mono);font-variant-numeric:tabular-nums;opacity:0;pointer-events:none;transition:opacity var(--dur-flick,.12s) ease-out;border:1px solid #b5e2fa33;padding:10px 12px;position:absolute;transform:translate(-50%);box-shadow:0 10px 28px #0e1e262e,0 2px 8px #0e1e261f}.chart-frame:hover .chart-tooltip,.chart-frame:focus-within .chart-tooltip{opacity:1}.chart-tooltip p{margin:0}.chart-tooltip-date{color:var(--sky);font-size:12px;font-weight:800;line-height:1.1}.chart-tooltip-value{color:var(--paper);font-size:18px;font-weight:800;line-height:1.05;margin-top:7px!important}.chart-tooltip-value span{color:var(--ink-faint);text-transform:uppercase;font-size:11px;font-weight:700}.chart-tooltip-delta{color:var(--ink-faint);font-size:11px;font-weight:650;line-height:1.2;margin-top:7px!important}.detail-actions{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;display:flex}.profile-info{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);margin-bottom:12px;padding:14px 16px}.profile-info-layout{align-items:start;gap:16px;display:flex}.profile-avatar{object-fit:cover;background:var(--mist);border:2px solid var(--line);border-radius:50%;flex:none;width:52px;height:52px}.profile-avatar.profile-avatar-cover{border-radius:var(--r-md);width:80px;height:56px}.profile-avatar-placeholder{display:block}.profile-body{flex:1;min-width:0}.profile-headline{align-items:center;gap:8px;margin-bottom:10px;display:flex}.profile-name{color:var(--ink);margin:0;font-size:16px;font-weight:700;line-height:1.2}.profile-provider{color:var(--ink-mute);background:var(--mist);border-radius:var(--r-sm);text-transform:uppercase;letter-spacing:.06em;padding:2px 6px;font-size:10px;font-weight:600}.provider-google{color:#4285f4;background:#4285f41a}.provider-github{color:#24292f;background:#24292f14}.provider-wechat{color:#07c160;background:#07c1601a}.provider-email{color:var(--ink-mute);background:var(--mist)}.profile-desc{color:var(--ink-mute);margin:0 0 8px;font-size:12px;line-height:1.4}.corr-matrix{min-width:0}.corr-matrix th{text-align:center;font-size:9px}.corr-cell{font-size:11px;font-weight:600;text-align:center!important}.corr-label{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;font-size:10px;font-weight:700}.profile-grid{grid-template-columns:auto 1fr auto 1fr auto 1fr;align-items:baseline;gap:4px 14px;margin:0;display:grid}.profile-grid dt{color:var(--ink-mute);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;font-size:10px;font-weight:700}.profile-grid dd{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:all;user-select:all;margin:0;font-size:12px;overflow:hidden}@keyframes chart-draw{to{stroke-dashoffset:0}}.table-wrap{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);overflow-x:auto}.table-caption{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;min-height:42px;padding:8px 10px 8px 12px;display:flex}.table-caption .viz-label{min-width:0}.table-tools{flex:none;justify-content:flex-end;padding:0;display:flex}.table-filter{border:1px solid var(--line);border-radius:var(--r-sm);width:150px;min-height:26px;color:var(--ink);background:#ffffffc7;outline:none;padding:4px 8px;font-size:11px}.table-filter:focus{border-color:#0fa3b161;box-shadow:0 0 0 2px #0fa3b11a}.table-pager{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:8px;padding:6px 10px;font-size:11px;display:flex}.table-pager[hidden]{display:none}.pager-btn{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);min-height:24px;color:var(--ink);cursor:pointer;padding:2px 10px;font-size:11px}.pager-btn:disabled{opacity:.35;cursor:default}.pager-info{color:var(--ink-faint)}.spender-table table{min-width:680px}.session-creator-table table,.returning-skill-table table{min-width:640px}.skill-session-table table{min-width:860px}.creator-rank-table table{min-width:620px}.spender-table th,.spender-table td,.session-creator-table th,.session-creator-table td,.returning-skill-table th,.returning-skill-table td{padding-left:10px;padding-right:10px}table{border-collapse:collapse;table-layout:fixed;width:100%;min-width:760px}table.col-resized{width:auto;min-width:100%}table.col-resized td{max-width:none}th{background:var(--mist);color:var(--ink-mute);text-align:left;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;padding:8px 10px;font-size:10px;font-weight:700;position:relative;overflow:hidden}th[data-sort=asc]:after{content:" ↑";color:var(--lagoon-deep)}th[data-sort=desc]:after{content:" ↓";color:var(--lagoon-deep)}th[data-server-sort=true]{cursor:default}th[data-server-sort=true] .th-sort-link{color:inherit;text-decoration:none;display:inline-block}th[data-server-sort=true] .th-sort-link:hover,th[data-server-sort=true][aria-sort=ascending] .th-sort-link,th[data-server-sort=true][aria-sort=descending] .th-sort-link{color:var(--lagoon-deep)}.sortable-table-shell{position:relative}.sortable-table-shell[data-sort-pending=true] tbody{opacity:.45;transition:opacity .12s ease-out}.sortable-table-shell[data-sort-pending=true] th[data-server-sort=true] .th-sort-link{cursor:progress}.sort-loading-overlay{pointer-events:none;z-index:2;align-items:center;gap:6px;display:flex;position:absolute;top:8px;right:12px}.sort-spinner{border:2px solid var(--lagoon-deep,#0e7490);border-top-color:#0000;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite sort-spin}@keyframes sort-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.sort-spinner{border-top-color:var(--lagoon-deep,#0e7490);opacity:.4;animation:none}}.col-resize-handle{cursor:col-resize;-webkit-user-select:none;user-select:none;width:6px;height:100%;position:absolute;top:0;right:0}.col-resize-handle:hover,.col-resize-handle.active{background:var(--lagoon-tint)}td{border-top:1px solid var(--line);color:var(--ink-soft);vertical-align:middle;white-space:nowrap;text-overflow:ellipsis;max-width:280px;padding:8px 10px;font-size:12px;line-height:1.35;overflow:hidden}td strong{color:var(--ink);font-size:12px;font-weight:650}.links{flex-wrap:wrap;gap:6px;display:flex}.mini-link{color:var(--lagoon-deep);font-size:11.5px;font-weight:650;text-decoration:none}.leaderboard{gap:2px;display:grid}.lb-row{color:inherit;border-bottom:1px solid #0f1e280d;grid-template-columns:28px minmax(0,1fr) 92px;align-items:center;gap:10px;padding:8px 0;text-decoration:none;display:grid}.lb-row strong{color:var(--ink);font-size:12px;font-weight:650}.lb-row:last-child{border-bottom:0}.lb-row:hover,.drill-row:hover td{background:#e6f6f880}.drill-link,.drill-row td:first-child{position:relative}.drill-link:after,.drill-row td:first-child:after{content:"›";color:var(--ink-faint);opacity:0;transition:opacity var(--dur-flick,.12s) ease-out;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.drill-link:hover:after,.drill-row:hover td:first-child:after{opacity:1}.row-name{color:var(--ink);font-size:12px;font-weight:650;line-height:1.35;text-decoration:none}.row-name:hover{color:var(--lagoon-deep)}.session-creator-table .row-name,.returning-skill-table .row-name{overflow-wrap:anywhere}.cell-sub{color:var(--ink-mute);margin-top:3px;font-size:10px;line-height:1.2}.status-badge{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--mist);color:var(--ink-soft);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-transform:uppercase;white-space:nowrap;align-items:center;padding:1px 6px;font-size:9px;line-height:1.4;display:inline-flex}.status-badge.is-today{background:var(--lagoon-tint);color:var(--lagoon-deep);border-color:#0fa3b138}.status-badge.is-returning{color:#1a7f37;background:#2ea04314;border-color:#2ea04338}.status-badge.is-inactive{background:var(--coral-tint);color:var(--coral-deep);border-color:#f7a0724d}.status-badge.is-ok{border-color:var(--delta-up-border);background:var(--delta-up-bg);color:var(--delta-up)}.status-badge.is-warn{background:var(--wheat-tint);color:var(--coral-deep);border-color:#eddea48c}.status-badge.is-bad{border-color:var(--delta-down-border);background:var(--delta-down-bg);color:var(--delta-down)}.rank{color:var(--ink-faint);text-align:center;font-size:12px}.bar{border-radius:var(--r-pill);background:var(--mist);height:6px;margin-top:6px;overflow:hidden}.bar i{border-radius:inherit;background:var(--grad-lagoon);height:100%;display:block}.bar-table{overflow-x:auto}.bar-table .data-bar-row{--bar-pct:0%;--bar-r:15;--bar-g:163;--bar-b:177;background:linear-gradient(90deg, rgba(var(--bar-r), var(--bar-g), var(--bar-b), .13) 0%, rgba(var(--bar-r), var(--bar-g), var(--bar-b), .08) var(--bar-pct), transparent var(--bar-pct), transparent 100%)}.bar-table .data-bar-row:nth-child(2n){background:linear-gradient(90deg, rgba(var(--bar-r), var(--bar-g), var(--bar-b), .15) 0%, rgba(var(--bar-r), var(--bar-g), var(--bar-b), .09) var(--bar-pct), #ffffff42 var(--bar-pct), #ffffff42 100%)}.bar-table .data-bar-row:hover td{background:rgba(var(--bar-r), var(--bar-g), var(--bar-b), .06)}.bar-table.bar-green .data-bar-row{--bar-r:58;--bar-g:138;--bar-b:92}.bar-primary{align-items:center;gap:9px;min-width:0;display:flex}.bar-table .rank{color:var(--ink-faint);flex:0 0 22px;justify-content:flex-end;display:inline-flex}.bar-table .emphasis{color:var(--ink);font-weight:700}.heat{gap:5px;display:grid}.heat-row{grid-template-columns:96px repeat(3,minmax(60px,1fr));align-items:center;gap:5px;display:grid}.heat-label{color:var(--ink-soft);font-family:var(--font-mono);font-size:11px}.heat-cell{border-radius:var(--r-sm);min-height:30px;color:var(--lagoon-deep);font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font-size:12px;display:flex}.kpi-strip{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid;overflow:hidden}.board-summary{grid-template-columns:minmax(220px,.9fr) minmax(0,2.1fr);align-items:stretch;gap:10px;display:grid}.section-hero{min-height:104px}.kpi-cell{border-right:1px solid var(--line);background:var(--paper);min-width:0;padding:10px 12px}.kpi-cell:last-child{border-right:0}.board-section,.board>.curve-stack,.board>.kpi-strip{margin-top:10px}.unavailable{background:var(--coral-tint);color:var(--coral-deep);border-color:#f7a07259}.loading-rail{gap:8px}.loading-tab,.loading-line,.loading-block{border-radius:var(--r-sm);background:var(--mist);position:relative;overflow:hidden}.loading-tab{height:42px;display:block}.loading-line{width:260px;height:20px;margin-bottom:18px}.loading-line.wide{width:min(420px,100%)}.loading-grid{grid-template-columns:minmax(320px,1.45fr) repeat(2,minmax(0,1fr));gap:16px;display:grid}.loading-block{min-height:132px}.loading-block.hero{grid-row:span 2;min-height:280px}.loading-tab:after,.loading-line:after,.loading-block:after{content:"";background:linear-gradient(90deg,#0000,#ffffffb8,#0000);animation:1.2s ease-out infinite loading-sweep;position:absolute;inset:0;transform:translate(-100%)}@keyframes loading-sweep{to{transform:translate(100%)}}.login-shell{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--line);border-radius:var(--r-xl);background:var(--paper);width:min(420px,100%);box-shadow:var(--shadow-lg);padding:28px}.field{gap:8px;margin-top:16px;display:grid}.field label{color:var(--ink-soft);font-size:12px;font-weight:650}.field input{border:1px solid var(--line-strong);border-radius:var(--r-md);min-height:44px;color:var(--ink);outline:none;padding:10px 12px}.field input:focus{border-color:#0fa3b173;box-shadow:0 0 0 3px #0fa3b11f}.login-card .button{width:100%;min-height:44px;margin-top:18px}@media (max-width:980px){.grid.overview,.console-grid.overview,.console-grid.two,.northstar-grid,.curve-stack,.grid.two,.grid.three,.grid.four{grid-template-columns:1fr}.topbar,.board-head{flex-direction:column;align-items:flex-start}.dashboard-layout{grid-template-columns:1fr}.section-rail{padding:7px;position:static}.section-tabs{display:flex;overflow-x:auto}.section-tab{flex:none;min-width:126px}.section-tab.signout{border-top:1px solid var(--line);border-radius:var(--r-sm);border-left:0}.board-summary,.loading-grid{grid-template-columns:1fr}.loading-block.hero{grid-row:auto;min-height:180px}}@media (max-width:520px){.table-caption{flex-direction:column;align-items:flex-start;gap:7px}.table-tools,.table-filter{width:100%}}.sankey-wrap{min-height:120px}.sankey-wrap svg{width:100%;height:auto;display:block}.sankey-link{transition:stroke-opacity .15s}.sankey-link:hover{stroke-opacity:.35!important}.cs-root{flex-shrink:0;position:relative}.cs-trigger-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cs-trigger{cursor:pointer}.cs-tags{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.cs-tag{text-overflow:ellipsis;white-space:nowrap;border-radius:var(--r-pill);background:var(--lagoon-tint);max-width:120px;color:var(--lagoon-deep);border:1px solid #0fa3b138;align-items:center;gap:3px;padding:2px 7px;font-size:11px;font-weight:600;line-height:1.3;display:inline-flex;overflow:hidden}.cs-tag-more{color:var(--ink-mute);border-color:var(--line);background:var(--mist)}.cs-tag-x{width:14px;height:14px;color:var(--lagoon-deep);cursor:pointer;background:0 0;border:0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:13px;line-height:1;display:inline-flex}.cs-tag-x:hover{background:#0fa3b12e}.cs-popover{z-index:20;border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper);width:240px;box-shadow:var(--shadow-md);position:absolute;top:calc(100% + 6px);right:0;overflow:hidden}.cs-search{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);background:0 0;outline:none;padding:8px 10px;font-size:12px;display:block}.cs-search::placeholder{color:var(--ink-mute)}.cs-list{max-height:220px;padding:4px 0;overflow-y:auto}.cs-option{cursor:pointer;color:var(--ink-soft);align-items:center;gap:7px;padding:5px 10px;font-size:13px;line-height:1.3;display:flex}.cs-option:hover{background:var(--lagoon-tint);color:var(--lagoon-deep)}.cs-option input[type=checkbox]{width:14px;height:14px;accent-color:var(--lagoon);cursor:pointer;flex-shrink:0;margin:0}.cs-option-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.cs-empty{color:var(--ink-mute);text-align:center;padding:12px 10px;font-size:12px}.cs-footer{border-top:1px solid var(--line);align-items:center;gap:6px;padding:6px 10px;display:flex}.cs-footer-btn{color:var(--lagoon-deep);cursor:pointer;background:0 0;border:0;padding:2px 4px;font-size:11px;font-weight:650}.cs-footer-btn:hover{color:var(--lagoon)}.cs-apply{border-radius:var(--r-sm);background:var(--grad-lagoon);color:#fff;border:1px solid #0000;margin-left:auto;padding:4px 12px}.cs-apply:disabled{opacity:.4;cursor:default}.cs-clear-btn{color:var(--ink-mute);cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:2px 6px;font-size:11px;font-weight:600;text-decoration:underline}.cs-clear-btn:hover{color:var(--delta-down)}.sentiment-dot{border-radius:50%;width:8px;height:8px;display:inline-block}.sentiment-positive{background:var(--delta-up)}.sentiment-negative{background:var(--delta-down)}.event-excerpt{text-overflow:ellipsis;white-space:nowrap;max-width:240px;color:var(--ink-soft);font-size:12px;overflow:hidden}th.col-positive,td.col-positive{color:var(--delta-up)}th.col-negative,td.col-negative{color:var(--delta-down)}[data-tip]{cursor:help;position:relative}th[data-tip]{-webkit-text-decoration:underline dotted var(--ink-faint);text-decoration:underline dotted var(--ink-faint);text-underline-offset:3px}[data-tip]:after{content:attr(data-tip);border-radius:var(--r-sm);background:var(--ink);color:#fff;white-space:normal;pointer-events:none;opacity:0;z-index:10;width:max-content;max-width:260px;margin-top:6px;padding:6px 10px;font-size:11px;font-weight:400;line-height:1.4;transition:opacity .12s;position:absolute;top:100%;left:50%;transform:translate(-50%)}[data-tip]:hover:after{opacity:1}.pivot-tabs{gap:2px;margin-top:4px;display:flex}.pivot-tab{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink-mute);cursor:pointer;padding:3px 10px;font-size:11px;font-weight:600}.pivot-tab:hover{color:var(--lagoon-deep);border-color:var(--lagoon-tint)}.pivot-tab.active{background:var(--lagoon);color:#fff;border-color:var(--lagoon)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--lagoon-deep)}.label-tag{white-space:nowrap;border:none;border-radius:4px;margin-bottom:2px;margin-right:3px;padding:2px 7px;font-size:10px;font-weight:500;line-height:14px;display:inline-block}.retention-charts{padding:16px 0}.billing-chart-panel{border-radius:var(--radius,8px);background:var(--surface-card,#fff);border:1px solid var(--border,#e5e5e5);flex-direction:column;gap:8px;min-height:220px;padding:14px 16px;display:flex}.billing-chart-header{flex-direction:column;gap:2px;display:flex}.bar-cell{position:relative;overflow:hidden}.bar-fill{pointer-events:none;background:#3a8a5c1f;border-radius:2px;position:absolute;inset:2px 0}.bar-label{position:relative}@keyframes spin{to{transform:rotate(360deg)}}.ctl-spin{animation:.8s linear infinite spin;display:inline-block}@media (prefers-reduced-motion:reduce){.loading-tab:after,.loading-line:after,.loading-block:after,.ctl-spin{animation:none}}.admin-modal-backdrop{z-index:900;background:#0e1e2659;justify-content:center;align-items:center;animation:.12s ease-out modal-fade-in;display:flex;position:fixed;inset:0}.admin-modal{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);width:min(420px,100vw - 32px);max-height:calc(100vh - 64px);overflow:visible}.admin-modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:14px 16px 10px;display:flex}.admin-modal-head h3{color:var(--ink);margin:0;font-size:14px;font-weight:700}.admin-modal-close{cursor:pointer;color:var(--ink-mute);border-radius:var(--r-sm);background:0 0;border:none;padding:2px 4px;font-size:16px;line-height:1}.admin-modal-close:hover{background:var(--mist);color:var(--ink)}.admin-modal-body{padding:14px 16px 16px}.admin-modal-body fieldset{border:none;margin:0;padding:0}.admin-modal-body legend{color:var(--ink-mute);text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px;font-size:10px;font-weight:700}.admin-radio-group{gap:12px;margin-bottom:12px;display:flex}.admin-radio-group label{color:var(--ink-soft);cursor:pointer;align-items:center;gap:4px;font-size:12px;display:flex}.admin-field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.admin-field select,.admin-field input[type=text],.admin-field input[type=number],.admin-field input[type=datetime-local]{width:100%;font-size:12px;font-family:var(--font-sans);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);padding:6px 8px;transition:border-color .12s}.admin-field select:focus,.admin-field input:focus{border-color:var(--lagoon);outline:none;box-shadow:0 0 0 2px #0fa3b11f}.admin-field-hint{color:var(--ink-mute);font-size:10px;font-family:var(--font-mono)}.admin-field input[type=datetime-local]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.admin-field input[type=datetime-local]:invalid,.admin-field input[type=datetime-local][value=""]{color:var(--ink-mute);font-weight:400}.admin-modal-footer{align-items:center;gap:10px;padding:0 16px 16px;display:flex}.admin-btn{border-radius:var(--r-sm);cursor:pointer;border:none;padding:6px 14px;font-size:12px;font-weight:650;transition:opacity .12s}.admin-btn:disabled{opacity:.45;cursor:not-allowed}.admin-btn-primary{background:var(--grad-lagoon);color:#fff}.admin-btn-primary:hover:not(:disabled){opacity:.88}.admin-msg{font-size:11px;line-height:1.35}.admin-msg-ok{color:var(--delta-up)}.admin-msg-err{color:var(--delta-down)}.admin-listbox{position:relative}.admin-listbox-trigger{width:100%;font-size:12px;font-family:var(--font-sans);color:var(--ink);background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-sm);cursor:pointer;text-align:left;align-items:center;gap:6px;padding:6px 10px;transition:border-color .12s;display:flex}.admin-listbox-trigger>span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.admin-listbox-trigger:hover{border-color:var(--lagoon)}.admin-listbox-trigger:after{content:"▾";color:var(--ink-mute);font-size:10px}.admin-listbox-menu{z-index:920;background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-md);max-height:220px;box-shadow:var(--shadow-lg);animation:80ms ease-out modal-fade-in;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto}.admin-listbox-item{cursor:pointer;align-items:center;gap:8px;padding:7px 10px;font-size:12px;transition:background 60ms;display:flex}.admin-listbox-item:hover{background:var(--bone)}.admin-listbox-item[data-selected=true]{background:color-mix(in srgb, var(--lagoon) 8%, transparent)}.admin-listbox-item-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.admin-listbox-item-meta{font-size:10px;font-family:var(--font-mono);color:var(--ink-mute);white-space:nowrap}.campaign-status{letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border-radius:3px;padding:1px 5px;font-size:9px;font-weight:700;line-height:1.5;display:inline-block}.campaign-status-active{background:color-mix(in srgb, var(--delta-up) 14%, transparent);color:var(--delta-up)}.campaign-status-expired,.campaign-status-exhausted{background:color-mix(in srgb, var(--delta-down) 14%, transparent);color:var(--delta-down)}.campaign-status-scheduled{background:color-mix(in srgb, var(--lagoon) 14%, transparent);color:var(--lagoon)}.admin-modal-tabs{border-bottom:1px solid var(--line);margin:0 16px;display:flex}.admin-modal-tab{color:var(--ink-mute);cursor:pointer;text-align:center;background:0 0;border:none;border-bottom:2px solid #0000;flex:1;padding:8px 0;font-size:12px;font-weight:650;transition:color .1s,border-color .1s}.admin-modal-tab[data-active=true]{color:var(--lagoon);border-bottom-color:var(--lagoon)}.admin-modal-tab:hover:not([data-active=true]){color:var(--ink-soft)}.admin-btn-secondary{background:var(--bone);color:var(--ink-soft);border:1px solid var(--line-strong)}.admin-btn-secondary:hover:not(:disabled){background:var(--mist)}.admin-field-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.admin-field>label{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:4px;font-size:10px;font-weight:700;display:block}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}
