*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:#0f172a;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;overflow:hidden}.app{height:100%;position:relative}.app canvas{display:block}.sidebar{z-index:20;background:#fffffff2;border:1px solid #e2e8f0;border-radius:12px;flex-direction:column;gap:14px;width:280px;padding:16px;display:flex;position:absolute;top:12px;bottom:12px;left:12px;overflow-y:auto;box-shadow:0 10px 30px #0f172a1a}.sidebar-header h1{margin:0;font-size:17px}.sidebar-header p{color:#64748b;margin:2px 0 0;font-size:12.5px}.filters{flex-direction:column;gap:12px;display:flex}.filter-group{flex-direction:column;gap:5px;display:flex}.filter-label{color:#475569;text-transform:uppercase;letter-spacing:.03em;font-size:12px;font-weight:600}.segmented{background:#f1f5f9;border-radius:8px;gap:2px;padding:3px;display:flex}.segmented button{font:inherit;color:#475569;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1;padding:5px 8px;font-size:13px}.segmented button.active{color:#0f172a;background:#fff;font-weight:600;box-shadow:0 1px 3px #0f172a1f}.range-pair{flex-direction:column;gap:2px;display:flex}.range-pair input{accent-color:#2563eb;width:100%;margin:0}.text-input{width:100%;font:inherit;border:1px solid #cbd5e1;border-radius:8px;padding:7px 10px;font-size:13px}.text-input:focus{border-color:#2563eb;outline:2px solid #93c5fd}.text-input--error{border-color:#ef4444}.search-box{position:relative}.search-suggestions{background:#fff;border:1px solid #e2e8f0;border-radius:8px;max-height:220px;margin:4px 0 0;padding:4px;list-style:none;overflow-y:auto;box-shadow:0 6px 16px #0f172a1f}.search-suggestions button{text-align:left;width:100%;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 8px;font-size:13px;display:block}.search-suggestions button:hover{background:#eff6ff}.search-error{color:#dc2626;margin-top:4px;font-size:12.5px}.legend{flex-direction:column;gap:3px;display:flex}.legend-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.legend-header h3{color:#475569;text-transform:uppercase;letter-spacing:.03em;margin:0;font-size:12px;font-weight:600}.legend-clear{color:#2563eb;cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px;font-weight:600}.legend-row{font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;grid-template-columns:14px 1fr auto;grid-template-areas:"swatch name count""bar bar bar";align-items:center;gap:3px 8px;padding:6px;display:grid}.legend-row:hover{background:#f1f5f9}.legend-row--inactive{opacity:.35}.legend-swatch{border-radius:4px;grid-area:swatch;width:14px;height:14px}.legend-name{white-space:nowrap;text-overflow:ellipsis;grid-area:name;font-size:13px;overflow:hidden}.legend-count{color:#64748b;font-variant-numeric:tabular-nums;grid-area:count;font-size:12px}.legend-bar{background:#f1f5f9;border-radius:2px;grid-area:bar;height:4px;overflow:hidden}.legend-bar-fill{border-radius:2px;height:100%;display:block}.sync-status{color:#64748b;border-top:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:10px;font-size:12.5px;display:flex}.sync-error{color:#dc2626;font-weight:600}.sync-warning{color:#d97706;font-weight:600}.sync-refresh{font:inherit;color:#334155;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:7px;padding:4px 10px;font-size:12.5px;font-weight:600}.sync-refresh:hover{background:#f1f5f9}.login-gate{background:linear-gradient(160deg,#f8fafc,#e2e8f0);justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;flex-direction:column;gap:14px;width:320px;padding:28px;display:flex;box-shadow:0 20px 50px #0f172a1f}.login-card h1{margin:0;font-size:19px}.login-card p{color:#64748b;margin:-8px 0 4px;font-size:13px}.login-card label{color:#475569;text-transform:uppercase;letter-spacing:.03em;flex-direction:column;gap:5px;font-size:12px;font-weight:600;display:flex}.login-error{color:#dc2626;font-size:13px}.login-submit{color:#fff;font:inherit;cursor:pointer;background:#2563eb;border:none;border-radius:8px;padding:9px;font-weight:600}.login-submit:hover{background:#1d4ed8}.login-submit:disabled{opacity:.6;cursor:default}.overlay{z-index:10;pointer-events:none;gap:8px;display:flex;position:absolute}.overlay>*{pointer-events:auto}.overlay-top{top:12px;left:50%;transform:translate(-50%)}.preset-buttons{background:#ffffffeb;border:1px solid #e2e8f0;border-radius:10px;gap:4px;padding:4px;display:flex;box-shadow:0 4px 12px #0f172a14}.preset-buttons button{font:inherit;color:#334155;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 12px;font-weight:600}.preset-buttons button:hover{background:#e2e8f0}.tooltip{z-index:30;pointer-events:none;color:#f8fafc;will-change:transform;background:#0f172aeb;border-radius:8px;max-width:260px;padding:7px 10px;position:fixed;top:0;left:0}.tooltip-code{font-size:13px;font-weight:700}.tooltip-meta{color:#cbd5e1;margin-top:2px;font-size:12px}.detail-panel{z-index:20;background:#fffffff5;border:1px solid #e2e8f0;border-radius:12px;width:320px;max-height:calc(100% - 24px);padding:16px;position:absolute;top:12px;right:12px;overflow-y:auto;box-shadow:0 10px 30px #0f172a1f}.detail-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.detail-header h2{margin:0;font-size:17px}.detail-close{color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:22px;line-height:1}.detail-close:hover{background:#f1f5f9}.detail-warning{color:#92400e;background:#fef3c7;border:1px solid #fbbf24;border-radius:8px;margin-bottom:10px;padding:8px 10px;font-size:12.5px}.detail-status{border:1.5px solid;border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 10px;font-weight:600;display:flex}.detail-status--none{color:#64748b;border-style:dashed;font-weight:500}.status-swatch{border-radius:4px;flex:none;width:14px;height:14px}.detail-row{border-bottom:1px solid #f1f5f9;justify-content:space-between;gap:12px;padding:5px 0;display:flex}.detail-label{color:#64748b}.detail-value{text-align:right;font-weight:500}.detail-link{color:#2563eb;margin-top:12px;font-weight:600;text-decoration:none;display:inline-block}.detail-link:hover{text-decoration:underline}
