:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f8fa;--panel:#fff;--line:#dde3ea;--text:#18202a;--muted:#66717f;--subtle:#eef3f6;--teal:#0f9f8f;--blue:#2d6cdf;--amber:#df9f2f;--danger:#c94848;--success:#148361}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}.page{min-height:100vh}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-stack{gap:12px;width:min(100%,420px);display:grid}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;gap:20px;width:min(100%,420px);padding:32px;display:grid;box-shadow:0 24px 80px #18202a14}.forgot-row{justify-content:center;display:flex}.link-button{color:var(--teal);cursor:pointer;background:0 0;border:0;padding:6px;font-size:.92rem;font-weight:700}.login-card h1,.login-card h2,.login-card p{margin:0}.login-card p{color:var(--muted)}.login-message{color:var(--danger);background:#c9484814;border:1px solid #c948484d;border-radius:8px;padding:11px 12px;font-size:.92rem;line-height:1.45}.login-message[data-tone=success]{color:var(--success);background:#14836114;border-color:#14836147}.login-card label{color:var(--muted);gap:8px;font-size:.95rem;display:grid}.login-card input{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:6px;padding:12px 14px}.login-card button{color:#fff;background:var(--teal);cursor:pointer;border:0;border-radius:6px;padding:12px 16px}.dashboard{width:min(1360px,100% - 32px);margin:0 auto;padding:28px 0 40px}.topbar,.monthly-report{justify-content:space-between;align-items:center;gap:16px;display:flex}.monthly-report-copy{flex:1;gap:8px;min-width:0;display:grid}.topbar h1{margin:0;font-size:32px;line-height:1.15}.title-stack{gap:8px;min-width:0;display:grid}.title-stack p{color:var(--teal);margin:0;font-size:.88rem;font-weight:700}.sync-meta{color:var(--muted);align-items:center;gap:8px;font-size:.9rem;display:flex}.sync-meta strong{color:var(--text);font-weight:700}.topbar-actions{align-items:center;gap:10px;min-width:0;display:flex}.range-form{align-items:center;gap:8px;display:flex}.topbar-actions span,.topbar-actions a,.topbar-actions select,.topbar-actions button,.monthly-report button{border:1px solid var(--line);background:var(--panel);white-space:nowrap;border-radius:8px;min-height:42px;padding:10px 12px}.topbar-actions a{color:var(--text);text-decoration:none}.range-form select{min-width:118px}.status-badge{color:var(--muted);align-items:center;gap:8px;display:inline-flex;position:relative}.status-badge:before{content:"";background:var(--muted);border-radius:999px;width:8px;height:8px}.status-badge[data-status=connected]:before{background:var(--success)}.status-badge[data-status=failed]:before,.status-badge[data-status=revoked]:before{background:var(--danger)}.status-badge[data-status=not_connected]:before{background:var(--amber)}.action-link{font-weight:700}.topbar-actions button,.monthly-report button{background:var(--text);color:#fff}.topbar-actions button:disabled,.monthly-report button:disabled{cursor:not-allowed;opacity:.55}.notice{color:var(--danger);background:#c9484814;border:1px solid #c9484859;border-radius:8px;margin-top:16px;padding:12px 14px}.setup-callout{background:#fff9ec;border:1px solid #df9f2f61;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;margin-top:18px;padding:16px 18px;display:flex}.setup-callout strong{margin-bottom:4px;display:block}.setup-callout p{color:var(--muted);margin:0;line-height:1.45}.setup-callout a{color:#fff;background:var(--text);border-radius:8px;flex:none;padding:10px 14px;font-weight:700;text-decoration:none}.tab-bar{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:2px;margin-top:22px;display:flex}.tab-button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 20px;font-size:.96rem;font-weight:700}.tab-button:hover{color:var(--text)}.tab-button[data-active=true]{color:var(--teal);border-bottom-color:var(--teal)}.tab-panel{margin-top:8px}.overview-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}.fx-rate{color:var(--muted);margin:18px 0 0;font-size:.9rem;font-weight:700}.fx-rate+.kpi-grid{margin-top:12px}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0;display:grid}.kpi-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:0 1px 2px #18202a0a,0 10px 28px #18202a0d}.kpi-card{border-top:3px solid var(--subtle);gap:7px;min-width:0;display:grid}.kpi-card:first-child{border-top-color:var(--teal)}.kpi-card:nth-child(2){border-top-color:var(--blue)}.kpi-card:nth-child(3){border-top-color:var(--amber)}.kpi-card:nth-child(4){border-top-color:var(--success)}.kpi-label,.kpi-card small,.panel-heading p,.monthly-report p,.monthly-report span{color:var(--muted)}.kpi-label{font-size:.9rem;font-weight:700}.kpi-card strong{overflow-wrap:anywhere;min-width:0;font-size:32px;line-height:1.1}.kpi-card small{line-height:1.35}.kpi-card em{color:var(--success);font-style:normal}.kpi-card em[data-tone=negative]{color:var(--danger)}.dashboard-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr);gap:12px;display:grid}.app-table-panel{grid-row:span 3;min-width:0}.panel-heading h2,.monthly-report h2{margin:0 0 4px;font-size:22px;line-height:1.2}.panel-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.panel-heading>strong{color:var(--text);font-size:1rem}.panel-heading p,.monthly-report p{margin:0;line-height:1.45}.app-table-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.app-table-toolbar input{border:1px solid var(--line);width:min(320px,100%);min-height:40px;color:var(--text);background:#fff;border-radius:8px;padding:9px 11px}.platform-filter{flex-wrap:wrap;gap:6px;display:inline-flex}.platform-filter button,.filter-clear-link{border:1px solid var(--line);background:var(--panel);min-height:40px;color:var(--muted);cursor:pointer;border-radius:8px;padding:8px 11px;font-weight:600;text-decoration:none}.platform-filter button[data-active=true]{color:var(--teal);background:#117a6514;border-color:#117a6552;font-weight:900}.filter-clear-link{color:var(--text)}.ai-report{gap:10px;margin-top:2px;display:grid}.ai-report-badge{background:#117a6514;border:1px solid #117a6538;border-radius:999px;width:max-content;padding:4px 8px;font-size:.78rem;font-weight:800;color:var(--teal)!important}.ai-report h3{color:var(--text);margin:0;font-size:1.1rem;line-height:1.25}.ai-report-lists{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.ai-report-lists strong{color:var(--text);font-size:.9rem;display:block}.ai-report-lists ul{margin:8px 0 0;padding-left:18px}.ai-report-lists li{color:var(--text);margin-top:6px;line-height:1.45}.monthly-change-list{flex-wrap:wrap;gap:8px;display:flex}.monthly-change-list span{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:999px;padding:6px 9px;font-size:.86rem;font-weight:700}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:620px;margin-top:18px}th,td{border-top:1px solid var(--line);text-align:left;padding:14px 8px}th{color:var(--muted);font-size:.88rem;font-weight:700}th a{color:inherit;font-weight:600;text-decoration:none}th a[data-active=true]{color:var(--text);font-weight:900}td{vertical-align:top}.numeric{text-align:right;white-space:nowrap}.strong-cell{color:var(--text);font-weight:800}.app-name{color:var(--text);font-weight:800;text-decoration:none;display:block}.app-name[data-selected=true]{color:var(--teal)}td small{color:var(--muted);margin-top:4px;font-size:.82rem;display:block}.platform-badge{border:1px solid var(--line);background:var(--subtle);color:var(--muted);border-radius:999px;margin-top:5px;padding:2px 8px;font-size:.72rem;font-weight:800;display:inline-block}.platform-badge[data-platform=android]{color:var(--success);background:#1483611a;border-color:#14836147}.platform-badge[data-platform=ios]{color:var(--blue);background:#2d6cdf1a;border-color:#2d6cdf47}.trend-line{background:linear-gradient(135deg,#0000 10%,#0f9f8f29),linear-gradient(#0f9f8f14,#0000);border-radius:8px;width:100%;height:168px;margin-top:18px}.trend-line polyline{fill:none;stroke:var(--teal);stroke-linecap:round;stroke-linejoin:round;stroke-width:3px;vector-effect:non-scaling-stroke}.empty-copy{color:var(--muted);margin:18px 0 0}.bar-row{gap:8px;margin-top:16px;display:grid}.bar-row div{grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.bar-row strong,.ranking li>strong{width:26px;height:26px;color:var(--muted);background:var(--subtle);border-radius:999px;place-items:center;font-size:.82rem;display:grid}.bar-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.bar-row em{color:var(--text);font-style:normal;font-weight:800}.bar-row i{background:var(--teal);border-radius:999px;max-width:100%;height:12px;display:block}.ranking{gap:12px;margin:18px 0 0;padding:0;list-style:none;display:grid}.ranking li{align-items:center;gap:12px;min-width:0;display:flex}.ranking li div{min-width:0}.ranking li div>span{font-weight:800;display:block}.ranking li em{color:var(--muted);margin-top:4px;font-style:normal;display:block}.monthly-report{background:linear-gradient(#fff,#f8fbfb);margin-top:12px}.report-link{width:max-content;color:var(--teal);font-size:.9rem;font-weight:700;text-decoration:none}.report-body{margin-top:12px}.report-body h2{margin:0;font-size:22px;line-height:1.25}.report-summary{color:var(--text);margin:12px 0 0;font-size:1rem;line-height:1.7}.report-section{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.report-section h3{color:var(--text);margin:0;font-size:1.05rem}.report-section p{color:var(--text);margin:10px 0 0;line-height:1.7}.report-section ul{margin:10px 0 0;padding-left:20px}.report-section li{color:var(--text);margin-top:8px;line-height:1.6}.report-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}@media (max-width:900px){.topbar,.monthly-report{flex-direction:column;align-items:flex-start}.ai-report-lists{grid-template-columns:1fr}.topbar-actions,.range-form{width:100%;display:grid}.sync-meta{flex-wrap:wrap}.topbar-actions span,.topbar-actions a,.topbar-actions select,.topbar-actions button,.monthly-report button{width:100%}.kpi-grid,.dashboard-grid,.report-grid,.overview-grid{grid-template-columns:1fr}.setup-callout{flex-direction:column;align-items:flex-start}.setup-callout a{text-align:center;width:100%}}.legal-links{justify-content:center;gap:16px;font-size:.85rem;display:flex}.legal-links a,.legal-footer a{color:var(--muted)}.legal-page{min-height:100vh;padding:48px 16px}.legal-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;width:min(100%,760px);margin:0 auto;padding:32px;line-height:1.7}.legal-card h1{margin:4px 0 0;font-size:1.75rem}.legal-card h2{margin:28px 0 8px;font-size:1.1rem}.legal-card p,.legal-card ul{margin:0 0 8px}.legal-card ul{padding-left:20px}.legal-card code{background:var(--subtle);word-break:break-all;border-radius:4px;padding:1px 6px;font-size:.85em}.legal-card a{color:var(--blue)}.legal-eyebrow,.legal-meta{color:var(--muted);margin:0;font-size:.9rem}.legal-intro{margin-top:20px}.legal-footer{border-top:1px solid var(--line);flex-wrap:wrap;gap:16px;margin-top:32px;padding-top:16px;font-size:.9rem;display:flex}@media (max-width:600px){.legal-page{padding:16px}.legal-card{padding:20px}}.backfill-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;margin:0 0 16px;padding:12px 16px}.backfill-panel summary{cursor:pointer;font-weight:600}.backfill-panel p{color:var(--muted);margin:8px 0;font-size:.9rem}.backfill-panel form{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.backfill-panel label{color:var(--muted);gap:4px;font-size:.85rem;display:grid}.backfill-panel input{border:1px solid var(--line);border-radius:6px;padding:6px 8px}.backfill-panel button{background:var(--teal);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:7px 14px}.backfill-panel button:disabled{opacity:.6;cursor:default}.backfill-status[data-state=done]{color:var(--success)}.backfill-status[data-state=error]{color:var(--danger)}
