@import"https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap";:root{--color-primary: #4A4AFF;--color-orange: #FF6600;--color-green: #80E078;--color-pink: #FFC7CE;--color-sidebar-bg: #10188e;--color-sidebar-hover: #1a22a3;--color-sidebar-border: #1a22a3;--color-sidebar-text: #b7b7ff;--color-sidebar-text-active: #fff;--color-accent: #4A4AFF;--color-accent-hover: #3a3ae0;--color-accent-light: rgba(74, 74, 255, .1);--color-bg: #F6F8FC;--color-surface: #FFFFFF;--color-text-primary: #4C4C4C;--color-text-secondary: #6e6e6e;--color-text-muted: #8E8E93;--color-border: #e2e8f0;--color-border-light: #f1f5f9;--color-gap-extreme: #08BDBA;--color-gap-good: #48BC66;--color-gap-moderate: #F59E0B;--color-gap-poor: #EF143F;--color-alert: #EF143F;--color-alert-bg: #fef2f2;--color-opportunity: #F59E0B;--color-opportunity-bg: #fefce8;--color-strength: #48BC66;--color-strength-bg: #f0fdf4;--font-family: "Poppins", -apple-system, "Segoe UI", Roboto, sans-serif;--font-size-xs: 11px;--font-size-sm: 13px;--font-size-base: 14px;--font-size-md: 15px;--font-size-lg: 18px;--font-size-xl: 24px;--font-size-2xl: 32px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-normal: 1.5;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .08);--sidebar-width: 256px;--header-height: 64px;--transition-fast: .15s ease;--transition-normal: .2s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-bg);line-height:var(--line-height-normal);-webkit-font-smoothing:antialiased}.layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--color-sidebar-bg);color:var(--color-sidebar-text);display:flex;flex-direction:column;overflow-y:auto}.sidebar-brand{padding:var(--space-6);border-bottom:1px solid var(--color-sidebar-border);display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;text-decoration:none;color:inherit;cursor:pointer;transition:opacity var(--transition-fast)}.sidebar-brand:hover{opacity:.85}.sidebar-logo{width:100%;max-width:180px;height:auto;border-radius:var(--radius-md);object-fit:contain}.sidebar-brand h1{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:#fff;letter-spacing:-.02em}.sidebar-brand span{font-size:var(--font-size-xs);color:var(--color-text-muted);display:block;margin-top:var(--space-1)}.sidebar nav{flex:1;padding:var(--space-3) 0;display:flex;flex-direction:column;gap:var(--space-1)}.sidebar nav a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-6);color:var(--color-sidebar-text);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border-left:3px solid transparent;transition:all var(--transition-fast)}.sidebar nav a:hover{background:var(--color-sidebar-hover);color:var(--color-sidebar-text-active)}.sidebar nav a.active{background:var(--color-sidebar-hover);border-left-color:var(--color-accent);color:var(--color-sidebar-text-active)}.sidebar nav a svg{width:18px;height:18px;flex-shrink:0;opacity:.7}.sidebar nav a.active svg,.sidebar nav a:hover svg{opacity:1}.sidebar-footer{padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-sidebar-border);font-size:var(--font-size-xs);color:var(--color-text-muted);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.sidebar-footer-logo{height:36px;width:auto;border-radius:4px;object-fit:contain;margin-right:var(--space-4)}.content{flex:1;overflow-y:auto;padding:var(--space-8)}.page-header{margin-bottom:var(--space-6)}.page-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:-.02em;line-height:var(--line-height-tight)}.page-header p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-1)}.page-header-centered{text-align:center}.filter-bar{display:flex;gap:var(--space-3);align-items:center;padding:var(--space-4) 0;margin-bottom:var(--space-6);border-bottom:1px solid var(--color-border-light);flex-wrap:wrap}.filter-bar label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.filter-bar select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-8) var(--space-2) var(--space-3);font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text-primary);cursor:pointer;transition:border-color var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' stroke='%2394a3b8' fill='none' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.filter-bar select:hover{border-color:var(--color-accent)}.filter-bar select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}.filter-group{display:flex;align-items:center;gap:var(--space-2)}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.kpi-card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light)}.kpi-card .kpi-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-2)}.kpi-card .kpi-value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.kpi-card .kpi-detail{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--space-1)}.heatmap-container{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);overflow-x:auto;margin-bottom:var(--space-6)}.heatmap-container h2{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);padding:var(--space-5) var(--space-5) var(--space-3);color:var(--color-text-primary)}.heatmap-title-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:0 var(--space-5) var(--space-2) 0;flex-wrap:wrap}.heatmap-title-row h2{padding-bottom:0}.heatmap-sort-btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--font-size-xs, 12px);font-weight:var(--font-weight-semibold, 600);padding:6px 12px;border-radius:var(--radius-sm, 6px);cursor:pointer;transition:all .15s ease;white-space:nowrap}.heatmap-sort-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.heatmap-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.heatmap-table th{padding:var(--space-3) var(--space-3);text-align:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);border-bottom:2px solid var(--color-border);white-space:nowrap;position:relative;cursor:pointer;transition:color var(--transition-fast)}.heatmap-table th:hover{color:var(--color-accent)}.heatmap-table th:first-child{text-align:left;padding-left:var(--space-5);position:sticky;left:0;background:var(--color-surface);z-index:2;min-width:140px;cursor:default}.heatmap-table td{padding:var(--space-3);text-align:center;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);border-bottom:1px solid var(--color-border-light);transition:transform var(--transition-fast);cursor:default;white-space:nowrap}.heatmap-table td:first-child{text-align:left;padding-left:var(--space-5);font-weight:var(--font-weight-medium);color:var(--color-text-primary);position:sticky;left:0;background:var(--color-surface);z-index:1;cursor:pointer}.heatmap-table td:first-child:hover{color:var(--color-accent)}.heatmap-table tr:hover td{filter:brightness(.95)}.heatmap-table .row-tpl td{font-weight:var(--font-weight-bold);border-bottom:2px solid var(--color-border)}.heatmap-table .row-tpl td:first-child{font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.gap-cell{border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);display:inline-block;min-width:56px}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);margin-bottom:var(--space-6)}.card h2{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-4)}.trend-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap}.trend-header h2{margin-bottom:0}.range-pills{display:inline-flex;background:var(--color-border-light);border-radius:999px;padding:3px;gap:2px}.range-pill{border:none;background:transparent;padding:4px 12px;font-size:var(--font-size-xs, 12px);font-weight:var(--font-weight-semibold, 600);color:var(--color-text-secondary, #64748b);border-radius:999px;cursor:pointer;transition:background .15s ease,color .15s ease}.range-pill:hover{color:var(--color-text-primary)}.range-pill.active{background:var(--color-surface);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--space-6);margin-bottom:var(--space-6)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:999px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold)}.badge-alert{background:var(--color-alert-bg);color:var(--color-alert)}.badge-opportunity{background:var(--color-opportunity-bg);color:var(--color-opportunity)}.badge-strength{background:var(--color-strength-bg);color:var(--color-strength)}.opportunity-section{margin-bottom:var(--space-8)}.opportunity-section h2{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);margin-bottom:var(--space-4);display:flex;align-items:center;gap:var(--space-2)}.opportunity-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-3)}.opportunity-card{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-4);border:1px solid var(--color-border-light);display:flex;justify-content:space-between;align-items:center;transition:box-shadow var(--transition-fast)}.opportunity-card:hover{box-shadow:var(--shadow-md)}.opportunity-card.clickable{cursor:pointer}.opportunity-card.clickable:hover{border-color:var(--color-accent)}.opportunity-card .opp-info h3{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.opportunity-card .opp-info p{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.opportunity-card .opp-value{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);text-align:right}.opportunity-card .opp-trend{font-size:var(--font-size-xs);color:var(--color-text-muted)}.back-link{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-muted);text-decoration:none;margin-bottom:var(--space-4);transition:color var(--transition-fast)}.back-link:hover{color:var(--color-accent)}.detail-header{display:flex;align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-2)}.detail-header h1{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.detail-header .detail-gap{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.product-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.product-table th{text-align:left;padding:var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border)}.product-table td{padding:var(--space-3);border-bottom:1px solid var(--color-border-light);color:var(--color-text-primary)}.product-table tr:hover td{background:var(--color-bg)}.opportunities-home{margin-top:var(--space-6)}.opportunities-home .section-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin-bottom:var(--space-4)}.opp-sections-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--space-4)}.opportunity-section.compact{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-5);border:1px solid var(--color-border-light);box-shadow:var(--shadow-sm);margin-bottom:0}.opportunity-section.compact h3{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.opportunity-section.compact .opportunity-list{grid-template-columns:1fr;gap:var(--space-2)}.opportunity-section.compact .opportunity-card{padding:var(--space-3)}.opportunity-section.compact .opportunity-card .opp-info h4{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.opportunity-section.compact .opportunity-card .opp-info p{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.opportunity-section.compact .opp-value{font-size:var(--font-size-md)}.detail-store-tag{color:var(--color-accent);font-weight:var(--font-weight-semibold)}.product-table-wrapper{overflow-x:auto}.detail-controls{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) 0;margin-bottom:var(--space-4);border-bottom:1px solid var(--color-border-light);flex-wrap:wrap}.detail-controls .filter-group{display:flex;align-items:center;gap:var(--space-2)}.detail-controls label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.detail-controls select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-8) var(--space-2) var(--space-3);font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text-primary);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5l3 3 3-3' stroke='%2394a3b8' fill='none' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.detail-controls select:hover{border-color:var(--color-accent)}.detail-controls select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}.view-toggle{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.view-toggle button{padding:var(--space-2) var(--space-4);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);border:none;background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.view-toggle button:not(:last-child){border-right:1px solid var(--color-border)}.view-toggle button.active{background:var(--color-accent);color:#fff}.view-toggle button:hover:not(.active){background:var(--color-bg)}.toggle-btn{padding:var(--space-2) var(--space-4);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);min-width:52px}.toggle-btn.toggle-off{background:var(--color-surface);color:var(--color-text-muted)}.toggle-btn.toggle-on{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.detail-table-container{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border-light);overflow:auto;max-height:calc(100vh - 260px)}.detail-table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.detail-table thead{position:sticky;top:0;z-index:3}.detail-table th{padding:var(--space-3);text-align:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:var(--color-surface);border-bottom:2px solid var(--color-border);white-space:nowrap;text-transform:uppercase;letter-spacing:.03em}.detail-table th.col-product{text-align:left;min-width:280px;position:sticky;left:0;z-index:4}.detail-table th.col-category{text-align:left;min-width:160px}.detail-table th.col-price,.detail-table th.col-store{min-width:100px}.detail-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-light);text-align:center;white-space:nowrap}.detail-table td.col-product{text-align:left;font-weight:var(--font-weight-medium);color:var(--color-text-primary);position:sticky;left:0;background:var(--color-surface);z-index:1;max-width:320px;overflow:hidden;text-overflow:ellipsis}.detail-table td.col-category{text-align:left;color:var(--color-text-secondary);font-size:var(--font-size-xs)}.detail-table td.col-price{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.detail-table td.col-store{font-weight:var(--font-weight-medium)}.detail-table tr:hover td,.detail-table tr:hover td.col-product{background:var(--color-bg)}.gap-badge{font-weight:var(--font-weight-semibold)}.detail-table th.col-avg{min-width:80px}.detail-table td.col-avg{text-align:center;font-weight:var(--font-weight-bold)}.detail-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--transition-fast)}.detail-table th.sortable:hover{color:var(--color-accent)}.text-green{color:var(--color-gap-good)}.text-red{color:var(--color-gap-poor)}.text-muted{color:var(--color-text-muted)}.text-center{text-align:center}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}
