:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#eef1ec;color:#172026;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#ffffffbd,#fff0 280px),#eef1ec}button,input,select{font:inherit}button{cursor:pointer}.appShell{min-height:100vh;display:flex;flex-direction:column;padding:24px}.topBar{display:flex;align-items:end;justify-content:space-between;gap:16px;width:100%;margin:0 auto 18px;max-width:1640px}.topActions{display:inline-flex;align-items:center;justify-content:end;gap:12px;flex-wrap:wrap}.coffeeButton{display:inline-flex;width:162px;transition:transform .16s ease,filter .16s ease}.coffeeButton:hover{filter:saturate(1.08) brightness(1.02);transform:translateY(-1px)}.coffeeButton:focus-visible{border-radius:8px;outline:3px solid rgba(40,124,113,.28);outline-offset:3px}.coffeeButton img{display:block;width:100%;height:auto}h1,h2,p{margin:0}h1{font-size:clamp(2rem,4vw,4.6rem);line-height:.96;letter-spacing:0;color:#11181d}.graphHeader p{color:#5c686c}.filterBadge{display:inline-flex;align-items:center;gap:8px;min-height:34px;border:1px solid #c9d2cf;border-radius:999px;padding:7px 12px;background:#f9faf7;color:#334047;white-space:nowrap}.workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(520px,1fr) minmax(220px,280px);gap:18px;width:100%;max-width:1640px;margin:0 auto;flex:1 1 auto;min-height:0}.sidePanel,.legendPanel{border:1px solid #d4dcd8;background:#f9faf7d1;padding:16px;align-self:stretch}.sidePanel{display:flex;flex-direction:column;gap:18px}.panelGroup{display:grid;gap:14px}.panelGroup h2,.legendPanel h2,.graphHeader h2{font-size:.9rem;line-height:1.2;text-transform:uppercase;letter-spacing:.08em;color:#2b363b}.panelHeader,.graphHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.panelHeader{margin-bottom:2px}.control{display:grid;gap:6px}.control span{font-size:.78rem;color:#5b666a}.selectWrap{position:relative}.selectWrap svg{pointer-events:none;position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#5d686d}select,input{width:100%;min-height:38px;border:1px solid #cbd4d1;border-radius:6px;background:#fff;color:#172026;padding:8px 32px 8px 10px;outline:none}select{appearance:none;-webkit-appearance:none}input{padding-right:10px}select:focus,input:focus,button:focus-visible{border-color:#287c71;box-shadow:0 0 0 3px #287c7129}.filterList{display:grid;gap:8px}.materialFilterBlock{display:grid;gap:10px;padding-top:6px}.materialFilterActions{display:grid;grid-template-columns:1fr 1fr;gap:4px}.miniButton{min-height:26px;border:1px solid #c8d2ce;border-radius:999px;background:#fff;color:#263238;padding:4px 8px;font-size:.76rem;line-height:1}.miniButton:disabled{cursor:default;opacity:.45}.materialFilters{display:flex;flex-wrap:wrap;gap:4px}.materialChip{display:inline-grid;grid-template-columns:12px auto auto;align-items:center;gap:5px;min-height:26px;border:1px solid #cad4d0;border-radius:999px;background:#fff;color:#2c383d;padding:4px 8px;max-width:100%;font-size:.76rem;line-height:1}.filterRow{display:grid;gap:6px;padding:8px 10px;border-radius:8px;background:#f6f8f6;border:1px solid #d8e1dc}.filterRow:nth-of-type(2n){background:#fff}.filterRowTop{display:grid;grid-template-columns:minmax(0,1fr) 32px;gap:6px;align-items:start}.filterRowBottom{display:grid;grid-template-columns:74px minmax(0,1fr);gap:6px;align-items:center}.filterProperty select{min-height:34px}.removeFilter{width:32px;height:32px}.materialChip:not(.isActive){opacity:.45;background:#f0f3f1}.materialChip small{color:#667277;font-size:.68rem}.brandChip{grid-template-columns:16px auto auto}.brandLogo{position:relative;display:grid;place-items:center;width:14px;height:14px;overflow:hidden;border-radius:4px;background:#f8faf7;color:#536066;font-size:.58rem;font-weight:800;line-height:1;box-shadow:0 0 0 1px #00000029}.brandLogo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff}.materialSwatch{width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 1px #00000029}.operator select{padding-left:9px}.iconButton,.textButton{border:1px solid #c8d2ce;background:#fff;color:#263238;border-radius:6px;min-height:32px}.iconButton{display:inline-grid;place-items:center;width:34px;padding:0}.textButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:7px 10px}.metricRow{display:flex;align-items:baseline;gap:8px}.metricRow span{font-size:2.25rem;font-weight:760;line-height:1}.metricRow small{color:#667277}.metricSubrow{display:flex;align-items:baseline;gap:7px;color:#5c686c}.metricSubrow strong{color:#172026}.dataMeta{display:block;color:#667277;font-size:.82rem;margin-top:2px}.missingAxisDisclosure{font-size:.87rem;line-height:1.45}.missingAxisDisclosure summary{color:#287c71;cursor:pointer;font-weight:650}.missingAxisDisclosure summary:hover{color:#1f6259}.missingAxisDisclosure summary:focus-visible{border-radius:4px;outline:2px solid rgba(40,124,113,.35);outline-offset:2px}.missingAxisList{display:grid;gap:6px;max-height:220px;margin-top:8px;padding:8px;overflow:auto;border:1px solid #d8e1dc;border-radius:8px;background:#f8faf7}.missingAxisItem{display:grid;gap:2px;padding-bottom:6px;border-bottom:1px solid #e0e7e3}.missingAxisItem:last-child{padding-bottom:0;border-bottom:0}.missingAxisItem strong{color:#172026;font-size:.82rem}.missingAxisItem span{color:#5c686c;font-size:.78rem}.visualStage{display:grid;grid-template-rows:auto minmax(520px,1fr);gap:12px;min-width:0}.graphHeader{padding:0 4px}.graphHeader>div:first-child{display:grid;gap:4px}.graphTitleRow{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}.axisWarningDisclosure{flex:0 0 auto;min-width:0;color:#5f2b00}.axisWarningDisclosure summary{display:inline-flex;align-items:center;gap:10px;box-sizing:border-box;width:auto;padding:5px 8px;border:1px solid rgba(190,92,28,.5);border-radius:999px;background:#fff0c2;cursor:pointer;font-size:.72rem;line-height:1.2;list-style:none}.axisWarningDisclosure summary::-webkit-details-marker{display:none}.axisWarningDisclosure summary:focus-visible{outline:2px solid rgba(190,92,28,.85);outline-offset:2px}.axisWarningDisclosure strong{flex:0 0 auto;text-transform:uppercase;letter-spacing:.04em;font-size:.68rem}.axisWarningDisclosure p{display:none;margin:8px 0 0;padding:9px 10px;border:1px solid rgba(190,92,28,.4);border-radius:8px;background:#fff8df;color:#3f2600;font-size:.8rem;line-height:1.35}.axisWarningDisclosure[open] p{display:block}.graphCanvas{position:relative;min-height:560px;width:100%;border:1px solid #cbd5d0;background:linear-gradient(180deg,#ffffffb8,#ffffff75),#f8faf7;overflow:hidden}.graphCanvas>svg{position:absolute;inset:0;width:100%;height:100%}.threeCanvas canvas{display:block;width:100%;height:100%}.threeAxisLabels{position:absolute;inset:0;z-index:2;pointer-events:none}.threeAxisLabels span{position:absolute;left:0;top:0;max-width:min(390px,70%);border:1px solid rgba(124,135,145,.42);border-radius:999px;padding:5px 9px;background:#f8faf7e6;color:#263238;font-size:.72rem;font-weight:650;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 8px 22px #141e2214}.grid line{stroke:#dce3df;stroke-width:1}.axisLine,.axisTick{stroke:#6e7a7e;stroke-width:1.2}svg text{fill:#526065;font-size:.76rem}.axisLabel{fill:#253239;font-weight:680;font-size:.82rem}.point{transition:opacity .16s ease,r .16s ease,filter .16s ease,stroke-width .16s ease}.point.isHighlighted{opacity:1}.point.isDimmed{opacity:.32}.tooltip{position:absolute;z-index:4;display:grid;gap:4px;min-width:220px;max-width:min(320px,calc(100% - 32px));border:1px solid #b9c5c0;border-radius:8px;padding:10px 12px;background:#fffffff0;box-shadow:0 16px 34px #141e2221;color:#182329;pointer-events:none}.pointTooltip{width:min(320px,calc(100% - 32px))}.tooltip[hidden]{display:none}.tooltip span,.tooltip small{color:#526065;font-size:.82rem}.threeTooltip{right:auto;top:auto}.webglFallback{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-height:0}.webglWarning{display:grid;gap:4px;border:1px solid rgba(190,92,28,.48);border-radius:8px;padding:10px 12px;background:#fff6d8;color:#3f2600}.webglWarning strong{font-size:.9rem;line-height:1.25}.webglWarning span{color:#5f3b00;font-size:.82rem;line-height:1.35}.detailPanel{position:absolute;z-index:6;display:grid;gap:10px;width:min(320px,calc(100% - 32px));border:1px solid #aebbb6;border-radius:8px;padding:12px;background:#fffffffa;box-shadow:0 20px 46px #141e2233;color:#182329}.detailPanelHeader{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px}.detailPanelTitle{display:flex;flex-direction:column;gap:2px;min-width:0}.detailPanelHeader strong{line-height:1.25}.detailPanelHeader small{color:#6b7780;font-size:.78rem}.detailClose{width:26px;height:26px}.detailRows{display:grid;gap:4px}.detailRows span{color:#526065;font-size:.82rem;line-height:1.35}.detailActions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.detailActions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;border:1px solid #b6c2bd;border-radius:6px;background:#f8faf7;color:#1e3734;font-weight:700}.detailActions button:hover,.detailActions button:focus-visible{border-color:#287c71;background:#edf6f2}.detailActions button:disabled{cursor:not-allowed;opacity:.5}.legendPanel{min-width:0;display:grid;grid-template-rows:auto 1fr;gap:12px}.legendWrap{position:relative;min-height:0}.legend{display:flex;flex-direction:column;gap:6px;overflow:auto;padding-right:4px;max-height:calc(100vh - 190px)}.legendItem{display:grid;grid-template-columns:12px minmax(0,1fr);align-items:center;gap:8px;min-height:30px;border:0;border-radius:6px;background:transparent;color:#263238;padding:5px 6px;text-align:left}.legendItem:hover,.legendItem:focus-visible,.legendItem.isHighlighted{background:#eef3f0}.legendItem.isHighlighted{color:#101820;font-weight:700}.legendItem span{display:block;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 1px #00000029}.legendItem.isHighlighted span{box-shadow:0 0 0 2px #fff,0 0 0 4px #287c7175,0 8px 18px #287c712e}.emptyState,.noPoints{display:grid;place-items:center;min-height:100vh;padding:24px;color:#4d5a60;text-align:center}.noPoints{min-height:560px;border:1px solid #cbd5d0;background:#f8faf7}@media(min-width:1181px){.appShell{height:100vh}.sidePanel,.legendPanel{min-height:0;overflow-y:auto}.visualStage{min-height:0;grid-template-rows:auto 1fr}.graphCanvas{min-height:0}}@media(max-width:1180px){.workspace{grid-template-columns:minmax(250px,300px) minmax(480px,1fr)}.legendPanel{grid-column:1 / -1}.legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));max-height:none}}@media(max-width:820px){.appShell{padding:16px}.topBar{align-items:start;flex-direction:column}.topActions{justify-content:start}.workspace{grid-template-columns:1fr}.visualStage{grid-template-rows:auto minmax(500px,72vh)}.graphTitleRow{align-items:center;flex-direction:row;gap:8px}.graphCanvas,.noPoints{min-height:500px}.detailPanel{position:fixed;inset:auto 12px 12px;top:auto!important;left:12px!important;width:auto;max-height:min(56vh,420px);overflow:auto;border-radius:10px}}.reportButton{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:6px 12px;border:1px solid #c8d2ce;border-radius:6px;background:#fff;color:#263238;font-size:.82rem;font-weight:600;transition:border-color .16s ease,background .16s ease,transform .16s ease}.reportButton:hover{border-color:#287c71;background:#edf6f2;transform:translateY(-1px)}.aboutLink{display:inline-flex;align-items:center;min-height:34px;padding:6px 12px;border-radius:6px;color:#334047;font-size:.82rem;font-weight:600;text-decoration:none;transition:color .16s ease,background .16s ease}.aboutLink:hover{color:#11181d;background:#287c7114}.aboutLink:focus-visible{outline:3px solid rgba(40,124,113,.28);outline-offset:2px}.reportOverlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:#141e226b;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.reportDialog{width:min(520px,100%);max-height:calc(100vh - 48px);overflow:auto;border:1px solid #aebbb6;border-radius:10px;background:#fff;box-shadow:0 24px 56px #141e2247;padding:18px 18px 16px;display:grid;gap:14px}.reportHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.reportHeader h2{font-size:1.05rem;letter-spacing:0;text-transform:none;color:#11181d}.reportClose{border-color:transparent;background:transparent}.reportForm{display:grid;gap:12px}.reportField{display:grid;gap:4px}.reportField>span{font-size:.78rem;color:#5b666a}.reportField textarea{width:100%;min-height:110px;resize:vertical;border:1px solid #cbd4d1;border-radius:6px;background:#fff;color:#172026;padding:8px 10px;font:inherit;outline:none}.reportField textarea:focus{border-color:#287c71;box-shadow:0 0 0 3px #287c7129}.reportHoneypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0;pointer-events:none}.reportDiagnostics summary{cursor:pointer;color:#287c71;font-size:.82rem;font-weight:650}.reportDiagnostics summary:hover{color:#1f6259}.reportDiagnostics pre{margin:8px 0 0;padding:10px;border:1px solid #d8e1dc;border-radius:8px;background:#f8faf7;color:#2b363b;font-size:.74rem;line-height:1.4;max-height:200px;overflow:auto;white-space:pre-wrap;word-break:break-word}.reportError{margin:0;padding:9px 10px;border:1px solid rgba(190,92,28,.4);border-radius:8px;background:#fff8df;color:#3f2600;font-size:.82rem}.reportError a{color:#3f2600}.reportSuccess{display:grid;gap:12px}.reportSuccess p{font-size:.92rem;line-height:1.45}.reportActions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.reportActions .textButton{width:auto}.reportSubmit{border-color:#287c71;background:#287c71;color:#fff}.reportSubmit:hover:not(:disabled),.reportSubmit:focus-visible:not(:disabled){border-color:#1f6259;background:#1f6259}.reportSubmit:disabled{cursor:not-allowed;opacity:.55}@media(max-width:600px){.reportOverlay{padding:12px;align-items:end}.reportDialog{width:100%;max-height:90vh}}.reportOverlay.isFading{animation:reportOverlayFade .5s ease-in forwards}@keyframes reportOverlayFade{to{opacity:0}}.reportDialog.isLeaving{animation:reportDialogFly .5s cubic-bezier(.45,0,.65,.6) forwards;pointer-events:none}@keyframes reportDialogFly{to{transform:translate(140vw,-10%) rotate(8deg);opacity:0}}.reportSuccess{display:grid;justify-items:center;gap:14px;padding:18px 8px 8px;animation:reportSuccessIn .28s ease-out}.reportSuccess p{font-size:1rem;font-weight:650;color:#1f3833}.successCheck{width:96px;height:96px}.successCircle{fill:none;stroke:#287c71;stroke-width:4;stroke-dasharray:226;stroke-dashoffset:226;animation:successDrawCircle .38s ease-out forwards}.successPath{fill:none;stroke:#287c71;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:90;stroke-dashoffset:90;animation:successDrawCheck .32s .22s ease-out forwards}@keyframes successDrawCircle{to{stroke-dashoffset:0}}@keyframes successDrawCheck{to{stroke-dashoffset:0}}@keyframes reportSuccessIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
