:root{--brand-900:#24103d;--brand-800:#351356;--brand-700:#51207b;--brand-600:#6c32a0;--brand-100:#f0e9f8;--brand-50:#f8f5fb;--ink-900:#211d29;--ink-700:#5b5564;--ink-500:#86808d;--line:#e8e4ed;--surface:#fff;--canvas:#f5f4f7;--success:#16866a;--warning:#b86e13;--danger:#c34553;--sidebar-width:248px}*{box-sizing:border-box}html,body{min-height:100%}::view-transition-old(root){display:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}body{background:var(--canvas);color:var(--ink-900);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;text-rendering:optimizelegibility;margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.page-shell{background:var(--canvas);min-height:100vh}.dashboard-main{min-width:0;min-height:100vh;margin-left:var(--sidebar-width);background:var(--canvas)}.dashboard-sidebar{z-index:20;background:var(--brand-900);color:#fff;width:248px;position:fixed;inset:0 auto 0 0}.sidebar-inner{flex-direction:column;height:100%;display:flex}.sidebar-brand{align-items:center;gap:12px;padding:24px 20px 18px;display:flex}.sidebar-brand>span:last-child{flex-direction:column;gap:2px;display:flex}.sidebar-brand strong{font-size:17px}.sidebar-brand small{color:#ffffff7a;font-size:11px}.sidebar-menu.ant-menu-dark{background:0 0;border-inline-end:0;flex:1;padding:8px 10px}.sidebar-menu.ant-menu-dark .ant-menu-item,.sidebar-menu.ant-menu-dark .ant-menu-item-group-title{color:#ffffffad}.sidebar-menu.ant-menu-dark .ant-menu-item-selected{color:var(--brand-800);background:#fff}.sidebar-menu.ant-menu-dark .ant-menu-item-divider{border-color:#ffffff1a}.sidebar-foot{color:#ffffff7a;background:#ffffff0d;border:1px solid #ffffff1c;border-radius:10px;margin:14px;padding:12px 14px;font-size:11px}.sidebar-foot strong{color:#fff;margin-top:3px;font-size:13px;display:block}.dashboard-topbar{z-index:15;border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:18px;min-height:70px;padding:10px 28px;display:flex;position:sticky;top:0}.topbar-info{flex-direction:column;gap:2px;display:flex}.topbar-info span{color:var(--ink-500);font-size:11px}.topbar-info strong{text-overflow:ellipsis;white-space:nowrap;max-width:230px;font-size:12px;overflow:hidden}.user-button{align-items:center;gap:8px;height:42px;display:flex}.mobile-menu-button{display:none}.dashboard-content{z-index:1;contain:paint;isolation:isolate;background:var(--canvas);min-height:calc(100vh - 70px);padding:24px 28px 40px;position:relative}.dashboard-content>*{opacity:1;transition:none!important;animation:none!important}.page-heading{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:18px;display:flex}.page-heading h1{letter-spacing:-.02em;margin:0 0 6px;font-family:Georgia,Songti SC,serif;font-size:28px;line-height:1.25}.page-heading p{color:var(--ink-500);margin:0}.surface-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;box-shadow:0 2px 10px #24103d0a}.retention-controls{align-items:center;gap:28px;margin-bottom:18px;padding:14px 18px;display:flex}.retention-controls>div{align-items:center;gap:10px;display:flex}.retention-controls>div>span,.retention-controls small{color:var(--ink-500);font-size:12px}.retention-controls small{margin-left:auto}.retention-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0;display:grid}.retention-summary-grid>div{min-height:112px;padding:18px}.retention-winner{background:linear-gradient(135deg, var(--brand-900), var(--brand-600));color:#fff;flex-direction:column;display:flex}.retention-winner span,.retention-winner small{color:#ffffffb8;font-size:12px}.retention-winner strong{text-overflow:ellipsis;white-space:nowrap;margin:8px 0 2px;font-family:Georgia,Songti SC,serif;font-size:20px;overflow:hidden}.retention-table-card{padding:18px}.retention-table-card .chart-card-header p{color:var(--ink-500);margin:5px 0 0;font-size:12px}.retention-rank{width:28px;height:28px;color:var(--ink-700);background:#f0edf2;border-radius:8px;place-items:center;font-weight:700;display:inline-grid}.retention-rank.top{background:var(--brand-700);color:#fff}.retention-rank.muted{color:var(--ink-500);font-weight:400}.retention-name-cell,.retention-price-cell{flex-direction:column;gap:3px;display:flex}.retention-name-cell span,.retention-price-cell span{color:var(--ink-500);font-size:11px}.retention-value{font-family:Georgia,serif;font-size:17px}.retention-value.up{color:var(--danger)}.retention-value.down{color:var(--success)}@media (max-width:1100px){.retention-controls{flex-direction:column;align-items:flex-start;gap:12px}.retention-controls small{margin-left:0}.retention-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:680px){.retention-controls>div{flex-direction:column;align-items:flex-start;width:100%}.retention-controls .ant-segmented{width:100%}.retention-summary-grid{grid-template-columns:1fr}}.section-title{margin:0;font-size:16px;font-weight:650}.section-kicker{color:var(--brand-600);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:700}.sample-banner{color:#51207b;background:#f5effa;border:1px solid #d8cae9;border-radius:10px;margin-bottom:16px;padding:10px 14px;font-size:13px}.filter-card{margin-bottom:18px;padding:16px}.metric-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.metric-card{min-height:148px;padding:18px}.metric-label{color:var(--ink-500);font-size:13px}.metric-value{color:var(--ink-900);white-space:nowrap;margin:13px 0 11px;font-family:Georgia,Songti SC,serif;font-size:clamp(24px,2vw,31px);font-weight:700;line-height:1}.metric-value span{color:var(--ink-500);font-family:inherit;font-size:12px;font-weight:500}.metric-change{align-items:center;gap:5px;font-size:11px;display:flex}.metric-change span{color:var(--ink-500)}.metric-change.up{color:var(--danger)}.metric-change.down{color:var(--success)}.metric-change.neutral{color:var(--ink-500)}.ant-form.analytics-filter-form{grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:12px 16px;display:grid}.ant-form.analytics-filter-form .ant-form-item{min-width:0;margin:0}.analytics-filter-form .ant-form-item-control,.analytics-filter-form .ant-form-item-control-input,.analytics-filter-form .ant-form-item-control-input-content{min-width:0}.analytics-filter-form .ant-select,.analytics-filter-form .ant-input{width:100%;min-width:0}.analytics-filter-form .community-filter-item{grid-column:span 2}.analytics-filter-form .filter-actions .ant-form-item-control-input-content{white-space:nowrap}.mapping-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 14px;display:grid}.chart-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:18px;display:grid}.span-8{grid-column:span 8}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.chart-card{min-height:360px;padding:18px}.chart-card-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.login-page{background:#f4f1f7;grid-template-columns:minmax(360px,.9fr) minmax(520px,1.1fr);min-height:100vh;display:grid}.login-brand{background:var(--brand-900);color:#fff;flex-direction:column;justify-content:space-between;padding:52px;display:flex;position:relative;overflow:hidden}.login-brand:after{content:"";border:70px solid #ffffff0f;border-radius:50%;width:520px;height:520px;position:absolute;bottom:-210px;right:-180px}.brand-mark{align-items:center;gap:12px;font-size:18px;font-weight:700;display:inline-flex}.brand-mark-icon{width:38px;height:38px;color:var(--brand-800);background:#fff;border-radius:10px;place-items:center;font-family:Georgia,serif;font-size:22px;display:grid}.login-brand-copy{z-index:1;max-width:520px;position:relative}.login-brand-copy h1{margin:0 0 18px;font-family:Georgia,Songti SC,serif;font-size:clamp(38px,4.2vw,68px);font-weight:700;line-height:1.08}.login-brand-copy p{color:#ffffffad;max-width:420px;margin:0;font-size:16px;line-height:1.8}.login-panel{place-items:center;padding:40px;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:18px;width:min(420px,100%);padding:36px;box-shadow:0 24px 80px #24103d1a}.login-card h2{margin:0 0 8px;font-size:26px}.login-card>p{color:var(--ink-500);margin:0 0 26px}.legal-page{background:var(--canvas);min-height:100vh;padding:64px 24px}.legal-card{max-width:880px;margin:0 auto;padding:42px}.legal-card h1{font-family:Georgia,Songti SC,serif}.legal-card p,.legal-card li{color:var(--ink-700);line-height:1.8}.report-document{overflow:hidden}.report-cover{background:radial-gradient(circle at 90% 90%,#6c32a01a 0 18%,#0000 18.2%),linear-gradient(145deg,#fff 58%,#f1edf5 58%);flex-direction:column;justify-content:space-between;min-height:440px;padding:44px;display:flex}.report-cover h1{max-width:720px;color:var(--brand-900);margin:12px 0;font-family:Georgia,Songti SC,serif;font-size:clamp(38px,5vw,62px);line-height:1.1}.report-cover p{color:var(--ink-500);font-size:18px}.report-cover-meta{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.report-cover-meta span,.report-cover-meta small{color:var(--ink-500)}.report-section{border-top:1px solid var(--line);padding:34px 42px}.report-section h2{color:var(--brand-800);align-items:center;gap:10px;margin:0 0 22px;font-family:Georgia,Songti SC,serif;font-size:21px;display:flex}.report-section h2 span{background:var(--brand-700);color:#fff;place-items:center;width:34px;height:26px;font-family:Inter,sans-serif;font-size:11px;display:inline-grid}.report-kpis{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.report-kpis>div{background:var(--brand-50);border-radius:10px;flex-direction:column;justify-content:center;min-height:100px;padding:16px;display:flex}.report-kpis span{color:var(--ink-500);font-size:12px}.report-kpis strong{color:var(--brand-800);margin-top:8px;font-family:Georgia,serif;font-size:23px}.report-two-column{grid-template-columns:1fr 1fr;gap:24px;display:grid}.report-notes p{color:var(--ink-700);line-height:1.8}.map-alert{margin-bottom:16px}.map-workspace{background:linear-gradient(#fff3,#fff3),radial-gradient(circle at 72% 28%,#e8e0f1 0 2px,#0000 2.5px),#ece9ef;min-height:720px;position:relative;overflow:hidden}.community-map-root,.community-map-canvas{position:absolute;inset:0}.community-map-canvas{min-height:720px}.map-runtime-error{max-width:520px;color:var(--danger);background:#fff7f8f0;border:1px solid #f1c8cd;border-radius:10px;padding:10px 14px;font-size:13px;position:absolute;top:18px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #24103d1a}.map-loading{z-index:3;background:#ffffffdb;padding:42px;position:absolute;inset:0}.map-provider-placeholder{text-align:center;background:radial-gradient(circle,#6c32a012 0 26%,#0000 26.2%),linear-gradient(135deg,#f5f2f7,#ebe6ef);flex-direction:column;justify-content:center;align-items:center;padding:32px 420px 32px 350px;display:flex;position:absolute;inset:0}.map-provider-placeholder>.anticon{color:var(--brand-600);margin-bottom:14px;font-size:44px}.map-provider-placeholder h2{margin:0 0 10px;font-family:Georgia,Songti SC,serif;font-size:24px}.map-provider-placeholder p{max-width:520px;color:var(--ink-700);margin:0 0 24px;line-height:1.7}.map-provider-placeholder small{color:var(--ink-500);margin-top:14px}.map-search-panel,.map-detail-panel{z-index:5;flex-direction:column;display:flex;position:absolute;top:16px;bottom:16px;overflow:hidden;box-shadow:0 16px 46px #24103d26}.map-search-panel{width:318px;padding:16px;left:16px}.map-detail-panel{width:380px;padding:18px;right:16px;overflow-y:auto}.map-panel-title,.map-subheading,.map-geocode-footer{justify-content:space-between;align-items:center;gap:12px;display:flex}.map-panel-title,.map-metric-switch{margin-bottom:12px}.map-metric-switch .ant-segmented-item-label{padding-inline:5px;font-size:11px}.map-panel-title>div,.map-geocode-footer>div{flex-direction:column;min-width:0;display:flex}.map-panel-title strong{font-size:15px}.map-panel-title span,.map-geocode-footer span,.map-subheading span{color:var(--ink-500);font-size:11px}.map-community-list{flex:1;margin:12px -7px 0;padding:0 7px;overflow-y:auto}.map-community-row{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #f0edf2;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:8px;padding:12px 6px;display:grid;position:relative}.map-community-row:hover{background:var(--brand-50)}.map-community-row.selected{background:var(--brand-100);color:var(--brand-900);border-bottom-color:#0000;border-radius:8px;margin:2px 0}.map-rank{width:20px;height:20px;color:var(--ink-500);background:#f0edf2;border-radius:6px;place-items:center;font-size:10px;display:grid}.map-community-row:nth-child(-n+3) .map-rank,.map-community-row.selected .map-rank{background:var(--brand-700);color:#fff}.map-community-main,.map-community-metric{flex-direction:column;gap:3px;min-width:0;display:flex}.map-community-main strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.map-community-main small,.map-community-metric small,.map-latest-list small,.map-geocode-footer small{color:var(--ink-500);font-size:10px}.map-community-metric{text-align:right;align-items:flex-end}.map-community-metric strong{font-family:Georgia,serif;font-size:14px}.map-unlocated-dot{background:var(--warning);border-radius:50%;width:6px;height:6px;position:absolute;top:7px;right:2px}.map-geocode-footer{border-top:1px solid var(--line);background:var(--brand-50);margin:10px -16px -16px;padding:12px 16px}.map-detail-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.map-detail-heading h2{margin:10px 0 6px;font-family:Georgia,Songti SC,serif;font-size:23px}.map-detail-heading p{color:var(--ink-500);margin:0;font-size:11px;line-height:1.5}.map-location-status{color:var(--warning);background:#fff4df;border-radius:999px;flex:none;padding:4px 8px;font-size:10px}.map-location-status.ready{color:var(--success);background:#e9f7f2}.map-detail-metrics{background:var(--line);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:18px 0;display:grid;overflow:hidden}.map-detail-metrics>div{background:var(--brand-50);flex-direction:column;justify-content:center;min-height:74px;padding:12px;display:flex}.map-detail-metrics span{color:var(--ink-500);font-size:10px}.map-detail-metrics strong{margin-top:7px;font-family:Georgia,serif;font-size:17px}.map-detail-chart,.map-latest-list{border-top:1px solid var(--line);padding-top:15px}.map-subheading{margin-bottom:8px}.map-subheading strong{font-size:13px}.map-latest-list>div:not(.map-subheading){border-bottom:1px solid #f1eef3;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:11px;display:flex}.map-latest-list>div>span,.map-latest-list>div>strong{flex-direction:column;gap:2px;display:flex}.map-latest-list>div>strong{align-items:flex-end;font-family:Georgia,serif}.map-detail-actions{gap:8px;margin-top:16px;display:flex}.map-detail-actions .ant-btn{text-align:center;flex:1}@media (max-width:1200px){.ant-form.analytics-filter-form,.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:900px){:root{--sidebar-width:0px}.dashboard-content{padding:18px}.dashboard-sidebar{display:none}.dashboard-topbar{padding:10px 14px}.mobile-menu-button{display:inline-flex}.topbar-coverage{display:none}.login-page{grid-template-columns:1fr}.login-brand{min-height:280px;padding:32px}.login-panel{padding:28px 18px 48px}.map-workspace{min-height:0;box-shadow:none;background:0 0;border:0;flex-direction:column;gap:14px;display:flex;overflow:visible}.community-map-root,.community-map-canvas,.map-provider-placeholder,.map-search-panel,.map-detail-panel{width:100%;position:relative;inset:auto}.community-map-root,.community-map-canvas,.map-provider-placeholder{min-height:520px}.map-provider-placeholder{padding:32px}.map-search-panel,.map-detail-panel{min-height:520px;max-height:680px}.span-8,.span-6,.span-4{grid-column:span 12}}@media (max-width:640px){.ant-form.analytics-filter-form{grid-template-columns:1fr}.analytics-filter-form .community-filter-item{grid-column:span 1}.metric-grid{grid-template-columns:1fr}.page-heading{flex-direction:column}.login-card,.legal-card{padding:26px 22px}}@media print{.no-print,.dashboard-sidebar,.dashboard-topbar{display:none!important}.dashboard-main{margin-left:0}body{background:#fff}@page{size:A4;margin:12mm}.report-document{box-shadow:none;border:0}.report-cover{break-after:page;min-height:250mm}.report-section{break-inside:avoid}}
