*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:#0f172a;color:#e2e8f0}#root,.app{height:100vh}.app{display:flex}.app.loading,.app.error{align-items:center;justify-content:center;flex-direction:column;gap:1rem;padding:2rem}.sidebar{width:320px;min-width:280px;background:#1e293b;border-right:1px solid #334155;display:flex;flex-direction:column;overflow:hidden}.sidebar header{padding:1rem 1rem .5rem;border-bottom:1px solid #334155}.header-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sign-out{background:#334155;border:none;color:#e2e8f0;font-size:.7rem;padding:.25rem .5rem;border-radius:4px;cursor:pointer;flex-shrink:0}.sidebar h1{margin:0;font-size:1.1rem}.meta{margin:.25rem 0 0;font-size:.8rem;color:#94a3b8}.sidebar section{padding:.75rem 1rem;border-bottom:1px solid #334155}.sidebar h2{margin:0 0 .5rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8}.section-head{display:flex;align-items:center;gap:.5rem}.section-head h2{flex:1;margin:0}.section-head button{background:#334155;border:none;color:#e2e8f0;font-size:.7rem;padding:.2rem .5rem;border-radius:4px;cursor:pointer}.legend{display:flex;flex-wrap:wrap;gap:.35rem}.chip{display:flex;align-items:center;gap:.35rem;font-size:.75rem;padding:.25rem .5rem;border:1px solid;border-radius:999px}.chip-label{display:flex;align-items:center;gap:.35rem;cursor:pointer}.chip input[type=checkbox]{margin:0}.chip .color-swatch.source{width:.85rem;height:.85rem;flex-shrink:0}.customers{flex:1;overflow-y:auto}.customers ul{list-style:none;margin:0;padding:0}.customers li label{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;font-size:.85rem;cursor:pointer}.color-hint{margin:0 0 .35rem;font-size:.7rem;color:#64748b}.color-inputs{display:flex;gap:.2rem;flex-shrink:0}.color-swatch{width:1.1rem;height:1.1rem;padding:0;border:1px solid #475569;border-radius:3px;cursor:pointer;background:none}.color-swatch.state{border-radius:2px}.color-swatch.pin{border-radius:50%}.layer-toggles{display:flex;flex-direction:column;gap:.35rem}.layer-toggle{display:flex;align-items:center;gap:.5rem;font-size:.8rem;cursor:pointer}.customers .count{margin-left:auto;color:#64748b;font-size:.75rem}.popup-color{margin-top:.5rem;padding-top:.5rem;border-top:1px solid #e2e8f0}.popup-color label{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:#334155}.popup-color input[type=color]{width:2rem;height:1.5rem;padding:0;border:1px solid #cbd5e1;border-radius:4px;cursor:pointer}.customers li.under .count{color:#fbbf24}.meta.updated{color:#4ade80}.map-wrap{flex:1;min-height:0}.state-overlap-count-marker{background:transparent;border:none}.state-overlap-count{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background:#0f172ad1;color:#f8fafc;font-size:.85rem;font-weight:700;line-height:1;border:2px solid #f8fafc;box-shadow:0 1px 4px #00000059;pointer-events:none}code{background:#334155;padding:.25rem .5rem;border-radius:4px}.view-tabs{display:flex;gap:.35rem}.view-tabs button{flex:1;background:#334155;border:1px solid #475569;color:#e2e8f0;font-size:.7rem;padding:.3rem .4rem;border-radius:6px;cursor:pointer}.view-tabs button.active{background:#2563eb;border-color:#3b82f6}.lineup-sidebar-toolbar{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.5rem}.lineup-mode-tabs{margin-top:0}.lineup-focus-select{display:flex;flex-direction:column;gap:.2rem;font-size:.7rem;color:#94a3b8}.lineup-focus-select select{background:#0f172a;border:1px solid #475569;color:#e2e8f0;border-radius:4px;padding:.25rem .4rem;font-size:.75rem}.lineup-legend-hint{display:flex;flex-wrap:wrap;gap:.25rem;align-items:center}.lineup-tree{list-style:none;margin:0;padding:0}.lineup-tree>li{margin-bottom:.15rem}.lineup-tree-row{display:flex;align-items:center;gap:.25rem;min-width:0}.lineup-expand{width:1.25rem;height:1.25rem;flex-shrink:0;background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:.65rem;padding:0}.lineup-expand.spacer{visibility:hidden}.lineup-customer-label{display:flex;align-items:center;gap:.4rem;flex:1;min-width:0;font-size:.85rem;cursor:pointer}.lineup-code-parent{font-size:.82rem;flex:1}.lineup-nested{list-style:none;margin:.15rem 0 .35rem 1.1rem;padding:0;border-left:1px solid #334155}.lineup-nested>li{display:flex;align-items:center;gap:.35rem;padding:.2rem .35rem;font-size:.75rem;border-radius:4px;margin-bottom:.1rem}.lineup-nested>li.lineup-sold{background:#22c55e1f}.lineup-nested>li.lineup-opportunity{background:#3b82f61f}.lineup-nested>li.lineup-overlap{background:#fbbf241a}.lineup-code{font-size:.75rem}.lineup-supplier{color:#64748b;font-size:.68rem;flex:1;min-width:0}.lineup-nested-customer{display:flex;align-items:center;gap:.35rem;flex:1;cursor:pointer;font-size:.78rem}.lineup-unmapped-row{color:#94a3b8;font-size:.72rem;font-style:italic}.lineup-tag{display:inline-block;padding:.1rem .4rem;border-radius:999px;background:#334155;font-size:.65rem;flex-shrink:0}.lineup-tag-sold{background:#166534;color:#dcfce7}.lineup-tag-opportunity{background:#1d4ed8;color:#dbeafe}.lineup-tag-overlap{background:#b45309;color:#fef3c7}.mono{font-family:ui-monospace,monospace}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;background:#0f172a}.login-card{width:100%;max-width:400px;background:#1e293b;border:1px solid #334155;border-radius:12px;padding:2rem}.login-card h1{margin:0 0 .35rem;font-size:1.35rem}.login-subtitle{margin:0 0 1.5rem;color:#94a3b8;font-size:.9rem}.login-card label{display:block;margin-bottom:.35rem;font-size:.8rem;color:#94a3b8}.login-card input{width:100%;padding:.65rem .75rem;border:1px solid #475569;border-radius:8px;background:#0f172a;color:#e2e8f0;font-size:1rem;margin-bottom:1rem}.login-card input:disabled{opacity:.6}.login-card button{width:100%;padding:.7rem 1rem;border:none;border-radius:8px;background:#2563eb;color:#fff;font-size:.95rem;font-weight:600;cursor:pointer}.login-card button:disabled{opacity:.65;cursor:not-allowed}.login-message{margin:1rem 0 0;font-size:.85rem;line-height:1.4}.login-message.sent{color:#4ade80}.login-message.error{color:#f87171}
