var Ce=i=>(i?.identityStatus==="revealed"||i?.identityStatus===void 0&&i?.group==="Revealed models")&&!!i.revealedName?.trim();function ne(i){return Ce(i)?i.stealthName||(i.name!==i.revealedName?i.name:""):""}function de(i){return Ce(i)?i.revealedName.trim():i?.name||""}function oe(i){let e=ne(i);return e?`Stealth name: ${e}`:""}var Le=i=>String(i??"").normalize("NFKD").toLowerCase().replace(/\p{M}/gu,"").replace(/[^\p{L}\p{N}]/gu,"");function Te(i=""){return String(i).split(",").map(e=>e.trim().split(/\s+/).map(Le).filter(Boolean)).filter(e=>e.length)}function qe(i,e){if(!i.length)return!0;let t=e.filter(o=>typeof o=="string"&&o).map(Le);return i.some(o=>o.every(s=>t.some(a=>a.includes(s))))}function Ne(i){let e=ne(i);return{...i,...e?{stealthName:e}:{},name:de(i)}}var me=`@font-face{font-family:'SM Map';src:url('./stealthmark-map-font.ttf') format('truetype');font-display:swap}\r .metric-controls [data-metric]{display:flex;align-items:center;justify-content:center;gap:6px;min-height:38px}\r .plot-axis-label{position:absolute;display:flex;align-items:center;gap:6px;max-width:calc(100% - 78px);font-size:13px;font-weight:400;line-height:1.3;padding:4px 0;min-height:30px;color:var(--sm-map-muted);white-space:nowrap}\r .plot-axis-label.metric-caption{font-weight:600}.plot-axis-label[data-emphasized=true]{color:var(--sm-map-ink)}\r .plot-axis-label.axis-y{top:0;left:64px}.plot-axis-label.axis-x{bottom:0;right:24px}\r .metric-label .metric-caption{display:flex;align-items:center;gap:5px;font-size:inherit;line-height:inherit;padding:4px 0;text-align:left}\r @media(max-width:580px){.plot-axis-label{font-size:12px}.metric-controls [data-metric]{min-height:40px}}\r :host{display:block;contain:style;--sm-map-accent:#a65b38;--sm-map-surface:#fbfaf4;--sm-map-ink:#213a2e;--sm-map-muted:#647567;--sm-map-line:#dce1d4;--sm-map-radius:var(--radius-structure,6px);color:var(--sm-map-ink);font-family:'SM Map','DM Sans',system-ui,sans-serif;line-height:1.45;text-align:left}\r :host([hidden]){display:none}*{box-sizing:border-box}button,input,select{font:inherit}button,a,input,select,summary{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--sm-map-accent)}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button,select{color:inherit}a{color:inherit;text-underline-offset:4px}button{border:0;background:transparent}h2,h3,p{margin:0}[hidden]{display:none!important}\r .map{position:relative;padding:24px 28px 16px;border:1px solid var(--sm-map-line);border-radius:var(--sm-map-radius);background:var(--sm-map-surface);color:var(--sm-map-ink);overflow:visible}.map[data-theme=dark]{--sm-map-surface:#142821;--sm-map-ink:#f5f5e9;--sm-map-muted:#aebeb2;--sm-map-line:#385246;--sm-map-accent:#e7ae79}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--sm-map-line)}.brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700;letter-spacing:-.5px}.brand svg{width:31px;height:31px;flex:none}.top-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.segmented{display:flex;background:color-mix(in srgb,var(--sm-map-line) 35%,transparent);border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);padding:3px;gap:2px}.segmented button{font-size:11px;border-radius:var(--radius-control,4px);padding:7px 11px;white-space:nowrap;color:var(--sm-map-muted)}.segmented button[aria-pressed=true]{background:var(--sm-map-surface);color:var(--sm-map-ink);box-shadow:0 1px 3px #15291912}.share{position:relative}.share-trigger{display:flex;align-items:center;gap:7px;font-size:12px;padding:8px 0 8px 8px}.share-trigger svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5}.share-menu{position:absolute;z-index:5;right:0;top:calc(100% + 8px);padding:7px;min-width:192px;background:var(--sm-map-surface);border:1px solid var(--sm-map-line);box-shadow:0 12px 28px #14281f1a;border-radius:var(--radius-control,4px)}.share-menu button,.share-menu a{display:block;text-align:left;width:100%;padding:10px 12px;border-radius:var(--radius-control,4px);font-size:12px;text-decoration:none}.share-menu button:hover,.share-menu a:hover{background:color-mix(in srgb,var(--sm-map-line) 35%,transparent)}.heading{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin:23px 0 14px}.heading h2{font-size:clamp(21px,2.4vw,29px);letter-spacing:-1px;font-weight:600;line-height:1.15}.caption{font-size:11px;color:var(--sm-map-muted)}.composition{display:grid;grid-template-columns:minmax(0,1fr) 235px;gap:24px;align-items:start}.plot{position:relative;min-width:0;touch-action:pan-y}.plot>svg{display:block;max-width:100%;height:auto;width:100%;font-family:'SM Map',sans-serif!important}.plot svg g[data-map-point].hovered circle:not(.marker-ring,.reference-ring),.plot svg g[data-map-point].hovered>path:first-child{stroke:var(--sm-map-accent);stroke-width:3}.focus-bracket{transition:opacity .18s}.tooltip{position:absolute;z-index:3;pointer-events:none;max-width:min(260px,90%);padding:12px 14px;background:var(--sm-map-ink);color:var(--sm-map-surface);border-radius:var(--radius-control,4px);box-shadow:0 8px 18px #14281f20;font-size:11px}.tooltip strong{display:block;font-size:13px;margin-bottom:6px}.tooltip .tip-values{display:flex;gap:12px;white-space:nowrap}.tooltip small{display:block;margin-top:7px;opacity:.72}.inspector{min-height:315px;padding:19px 0 0 22px;border-left:1px solid var(--sm-map-line)}.kicker{font-size:9px;letter-spacing:1.5px;text-transform:uppercase;color:var(--sm-map-muted);font-weight:650}.anchor-name{font-size:15px;line-height:1.35;font-weight:650;margin:7px 0 10px;overflow-wrap:anywhere}.overall{font-size:62px;line-height:1;letter-spacing:-4px;font-weight:600;font-variant-numeric:tabular-nums}.overall small{font-size:12px;letter-spacing:0;margin-left:5px;font-weight:500;color:var(--sm-map-muted)}.rank{font-size:11px;color:var(--sm-map-muted);margin-top:9px}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.metric-label{font-size:10px;color:var(--sm-map-muted)}.metric-value{font-size:24px;letter-spacing:-.7px;font-weight:550;font-variant-numeric:tabular-nums;margin-top:2px}.metric:first-child .metric-value{color:#39685b}.map[data-theme=dark] .metric:first-child .metric-value{color:#98c7b6}.metric:last-child .metric-value{color:var(--sm-map-accent)}.projected-badge{display:inline-flex;align-items:center;gap:5px;border:1px dashed #b47f3680;border-radius:var(--radius-label,999px);color:var(--sm-map-accent);font-size:9px;letter-spacing:.8px;padding:3px 5px;margin:4px 0 7px;text-transform:uppercase}.range-note,.coverage{font-size:10px;color:var(--sm-map-muted);line-height:1.5;margin-top:5px}.peer{border-top:1px solid var(--sm-map-line);margin-top:18px;padding-top:12px;min-height:74px}.peer strong{font-size:12px;display:block}.peer-values{display:flex;flex-wrap:wrap;gap:9px;font-size:11px;margin-top:6px;color:var(--sm-map-muted)}.peer-values b{font-weight:600;color:var(--sm-map-ink)}.evidence-link{display:inline-block;font-size:11px;margin-top:17px;text-decoration:none}.evidence-link:hover{text-decoration:underline}.family-count{font-size:32px;letter-spacing:-1.5px;margin-top:15px}.empty-note{font-size:12px;color:var(--sm-map-muted);margin-top:10px}.range-controls{display:flex;gap:10px;align-items:center;font-size:10px;color:var(--sm-map-muted);padding:9px 0 12px;flex-wrap:wrap}.range-controls button{font-size:10px;text-decoration:underline;text-underline-offset:3px;padding:5px;color:var(--sm-map-ink)}.legend{display:flex;gap:14px;flex-wrap:wrap;margin-left:auto}.legend span{display:flex;align-items:center;gap:5px}.dot{width:7px;height:7px;border-radius:50%;background:#91a38c}.dot.hollow{background:transparent;border:1.5px solid #91a38c}.dot.forecast{background:transparent;border:1.5px solid #b47f36;border-radius:0;transform:rotate(45deg)}.bottom{border-top:1px solid var(--sm-map-line);padding-top:13px;display:flex;gap:18px;align-items:start;flex-wrap:wrap}.data{flex:1;min-width:0}.data summary,.settings summary{font-size:11px;cursor:pointer;color:var(--sm-map-muted);padding:3px 0}.data summary{color:var(--sm-map-ink)}.search{width:100%;padding:9px 11px;margin:12px 0 7px;background:var(--sm-map-surface);color:inherit;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);font-size:12px}.table-wrap{max-height:300px;overflow:auto;scrollbar-width:thin}table{border-collapse:collapse;width:100%;font-size:11px;font-variant-numeric:tabular-nums}th{font-size:9px;text-align:right;font-weight:500;color:var(--sm-map-muted);padding:8px 6px;border-bottom:1px solid var(--sm-map-line)}th:first-child{text-align:left}td{padding:7px 6px;border-bottom:1px solid color-mix(in srgb,var(--sm-map-line) 65%,transparent);text-align:right}td:first-child{text-align:left}td button{text-align:left;color:var(--sm-map-ink);padding:5px 0;font-size:11px;width:100%}td button:hover{text-decoration:underline}tr[aria-current=true]{background:color-mix(in srgb,var(--sm-map-line) 30%,transparent)}.table-projected{color:var(--sm-map-accent);font-size:9px;margin-left:6px}.settings{position:relative}.settings-panel{position:absolute;right:0;bottom:calc(100% + 10px);z-index:5;min-width:280px;width:320px;max-width:calc(100vw - 50px);padding:18px;background:var(--sm-map-surface);border:1px solid var(--sm-map-line);border-radius:var(--radius-structure,6px);box-shadow:0 10px 30px #14281f1a}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.settings label{font-size:10px;color:var(--sm-map-muted);display:block}.settings select,.settings input{display:block;width:100%;margin-top:5px;padding:7px;border:1px solid var(--sm-map-line);background:var(--sm-map-surface);color:inherit;border-radius:var(--radius-control,4px);font-size:11px;min-width:0}.settings .wide{grid-column:1/-1}.projection-action{font-size:11px;color:var(--sm-map-accent);padding:12px 0 0;text-decoration:underline}.overlay{position:absolute;inset:0;z-index:6;background:color-mix(in srgb,var(--sm-map-surface) 92%,transparent);backdrop-filter:blur(6px);padding:24px 28px;border-radius:var(--sm-map-radius);overflow:auto}.overlay-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.overlay-head h3{font-size:20px;letter-spacing:-.5px}.close{width:36px;height:36px;font-size:24px}.picker-list{max-height:380px;overflow:auto}.picker-row{display:flex;align-items:center;gap:12px;font-size:12px;min-height:44px;padding:8px 0;border-bottom:1px solid var(--sm-map-line);cursor:pointer}.picker-row input{accent-color:var(--sm-map-accent);width:16px;height:16px}.picker-row span{flex:1}.picker-row small{color:var(--sm-map-muted)}.primary{padding:10px 16px;background:var(--sm-map-ink);color:var(--sm-map-surface);border-radius:var(--radius-control,4px);font-size:12px;margin-top:16px}.chooser{position:absolute;z-index:4;left:20px;right:20px;top:45px;padding:15px 18px;background:var(--sm-map-surface);border:1px solid var(--sm-map-line);box-shadow:0 12px 30px #14281f20;border-radius:var(--radius-control,4px)}.chooser p{font-size:10px;color:var(--sm-map-muted);margin-bottom:9px}.chooser button{display:flex;gap:12px;justify-content:space-between;width:100%;text-align:left;padding:12px 0;border-bottom:1px solid var(--sm-map-line);font-size:12px}.chooser button:last-child{border:0}.chooser small{white-space:nowrap;color:var(--sm-map-muted)}.status{font-size:11px;color:var(--sm-map-accent);min-height:1.5em;margin-top:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.projection-form{max-width:530px}.projection-form label{display:block;font-size:11px;color:var(--sm-map-muted);margin-top:10px}.projection-form input,.projection-form textarea{width:100%;padding:9px 10px;margin-top:5px;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);background:var(--sm-map-surface);color:inherit;font:inherit;font-size:12px}.projection-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:10px}.projection-grid .row-label{grid-column:1/-1;font-size:11px;font-weight:600;margin-top:12px}.projection-grid label{margin-top:0}.projection-form .remove-projection{color:var(--sm-map-accent);font-size:11px;padding:8px 0}.no-points{position:absolute;inset:60px 35px auto 70px;font-size:14px;max-width:36ch;color:var(--sm-map-muted)}.overview .composition{grid-template-columns:minmax(0,1fr) 235px}\r @media(max-width:760px){.map{padding:20px}.top-actions{gap:9px}.segmented button{padding:7px 8px}.composition,.overview .composition{grid-template-columns:minmax(0,1fr) 200px;gap:16px}.inspector{padding-left:16px}.overall{font-size:52px}}\r @media(max-width:580px){.map{padding:18px 14px 12px}.top{gap:12px;padding-bottom:14px}.brand{font-size:16px}.top-actions{width:100%;justify-content:space-between}.heading{margin:19px 0 10px;gap:7px}.heading h2{font-size:23px}.composition,.overview .composition{display:flex;flex-direction:column;gap:10px}.plot{width:100%}.inspector{order:-1;width:100%;min-height:0;border-left:0;padding:0 0 12px;display:grid;grid-template-columns:1fr 1fr;gap:0 16px;border-bottom:1px solid var(--sm-map-line)}.inspector .kicker,.inspector .anchor-name,.inspector .projected-badge{grid-column:1}.anchor-name{font-size:13px;margin:4px 0 7px}.overall{font-size:43px;letter-spacing:-2.5px;grid-column:1}.rank{grid-column:1;margin-top:6px;font-size:10px}.metrics{grid-column:2;grid-row:1/5;margin-top:0;align-self:center;gap:10px}.metric-value{font-size:24px}.metric-label{font-size:10px}.peer{grid-column:1/-1;margin-top:12px;min-height:0;padding-top:10px;display:flex;flex-wrap:wrap;gap:5px 12px}.peer .kicker{width:100%}.peer-values{margin-top:0}.evidence-link{grid-column:1/-1;margin-top:8px}.family-count,.empty-note,.coverage,.range-note{grid-column:1/-1}.legend{margin-left:0}.bottom{gap:12px}.settings-panel{bottom:calc(100% + 8px)}.overlay{padding:18px 15px}.tooltip{max-width:220px;font-size:10px}.tooltip strong{font-size:12px}.table-wrap{max-height:250px}td{padding:6px 4px}th{padding:8px 4px}.picker-list{max-height:330px}.status{font-size:10px}}\r @media(prefers-reduced-motion:reduce){.focus-bracket{transition:none}.overlay{backdrop-filter:none}}@media(forced-colors:active){.map,.share-menu,.chooser,.settings-panel{border:1px solid CanvasText}.plot svg{forced-color-adjust:none}.projected-badge{border-style:dashed}}\r .family-count small{display:block;font-size:11px;letter-spacing:0;margin-top:4px;color:var(--sm-map-muted)}\r .overall-range{font-size:10px;color:var(--sm-map-muted);margin-top:6px;grid-column:1/-1}\r .no-points{position:static;min-height:260px;max-width:none;padding:45px 28px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px}.no-points h3{font-size:24px;font-weight:550;letter-spacing:-.6px;color:var(--sm-map-ink)}.no-points .unscored-members{max-width:38ch;font-size:12px;line-height:1.8}.no-points .primary{margin:0 16px 0 0}.no-points a{font-size:11px;display:inline-block;padding:10px 0}\r \r /* The data remains quiet; the reading hierarchy and actions carry the emphasis. */\r .brand{font-size:18px}.segmented button,.share-trigger{font-size:12px}.caption{font-size:12px}.heading{align-items:center}.heading h2{font-size:clamp(24px,2.5vw,32px)}.heading .caption{flex-basis:100%;order:3}.estimate-cta{margin-left:auto;flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:8px;border-radius:var(--radius-control,4px);color:var(--sm-map-muted)}.estimate-cta svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.estimate-cta:hover,.estimate-cta:focus-visible{color:var(--sm-map-ink);background:color-mix(in srgb,var(--sm-map-line) 35%,transparent)}.composition,.overview .composition{grid-template-columns:minmax(0,1fr) 252px}.inspector{padding-top:9px;min-height:0}.kicker{font-size:10px}.anchor-name{font-size:17px}.rank,.metric-label,.range-note,.coverage,.overall-range,.evidence-link{font-size:12px}.metrics{gap:14px;margin-top:18px}.metric-value{font-size:29px}.family-summary{padding-bottom:13px;margin-bottom:16px;border-bottom:1px solid var(--sm-map-line)}.family-summary strong{font-size:16px;display:block;margin:4px 0}.family-summary p:last-child{font-size:12px;color:var(--sm-map-muted)}.comparison-story{margin-top:20px;padding-top:16px;border-top:1px solid var(--sm-map-line)}.comparison-story>strong{display:block;font-size:13px;margin:5px 0 12px}.delta-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.delta-grid span{display:block;font-size:11px;color:var(--sm-map-muted)}.delta-grid b{display:block;font-size:19px;font-weight:550;margin-top:3px}.range-controls,.range-controls button,.data summary,.settings summary{font-size:12px}.legend{gap:13px}.dot{width:8px;height:8px}table,td button{font-size:12px}th{font-size:11px;font-weight:550;max-width:140px;line-height:1.4}th:first-child{min-width:150px}td{vertical-align:top;padding-top:10px;padding-bottom:10px}.cell-range{display:block;font-size:10px;white-space:nowrap;color:var(--sm-map-muted);margin-top:3px}.tooltip{max-width:min(320px,95%);font-size:12px;padding:14px 16px}.tooltip strong{font-size:14px;margin-bottom:10px}.tooltip .tip-values{display:block;white-space:normal}.tip-values>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:3px 0}.tip-values span{line-height:1.4}.tip-values b{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}.tooltip .cell-range{color:inherit;opacity:.8;font-weight:400}.projection-form select{width:100%;padding:9px;margin-top:5px;background:var(--sm-map-surface);color:inherit;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);font-size:12px}.baseline-start{margin:16px 0 8px;padding:12px 15px;background:color-mix(in srgb,var(--sm-map-line) 25%,transparent);border:1px solid var(--sm-map-line);border-radius:var(--radius-structure,6px)}.baseline-start label{margin:0}.baseline-start button{font-size:12px;color:var(--sm-map-accent);padding:10px 0 5px}.baseline-start p{font-size:11px;color:var(--sm-map-muted)}.estimate-list{display:flex;align-items:center;gap:14px;border-top:1px solid var(--sm-map-line);margin-top:12px;padding-top:10px;font-size:12px}.estimate-list span{flex:1}.estimate-list button{font-size:12px;text-decoration:underline}.projection-form .remove-projection{font-size:12px}.projection-form .caption{font-size:13px}.projected-badge{font-size:10px}\r @media(max-width:760px){.composition,.overview .composition{grid-template-columns:minmax(0,1fr) 220px}.heading h2{font-size:26px}.overall{font-size:54px}.metric-value{font-size:25px}}\r @media(max-width:580px){.composition,.overview .composition{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 16px}.inspector{display:contents}.family-summary{grid-column:1/-1;grid-row:1;margin:0;padding:0 0 10px}.family-summary p:last-child{font-size:11px}.score-summary{grid-column:1;grid-row:2}.score-summary .kicker{font-size:9px}.anchor-name{font-size:14px}.overall{font-size:43px;letter-spacing:-2px}.rank,.overall-range{font-size:11px}.metrics{grid-column:2;grid-row:2;margin:0;align-self:center;gap:12px}.metric-label{font-size:11px}.metric-value{font-size:25px}.plot{grid-column:1/-1;grid-row:3}.inspection-detail{grid-column:1/-1;grid-row:4;border-top:1px solid var(--sm-map-line);padding-top:10px}.comparison-story{margin:0;border:0;padding:0}.comparison-story>strong{font-size:13px}.delta-grid{gap:16px}.delta-grid>div{display:flex;gap:10px;align-items:center;justify-content:space-between}.delta-grid b{font-size:17px;white-space:nowrap}.coverage,.range-note,.evidence-link{font-size:11px}.heading h2{font-size:25px}.heading{gap:10px}.heading .caption{font-size:11px}.estimate-cta{width:44px;height:44px;padding:12px}.range-controls,.range-controls button,.data summary,.settings summary{font-size:11px}th{font-size:11px;min-width:84px}td{font-size:12px}.table-wrap{max-height:260px}.tooltip{max-width:95%;font-size:11px}.tooltip strong{font-size:13px}.projection-grid{gap:8px}.projected-badge{font-size:9px}.composition:has(.no-points){display:block}.composition:has(.no-points) .inspector{display:block}}\r \r .metrics{grid-template-rows:auto auto auto;row-gap:0}.metric{display:grid;grid-template-rows:subgrid;grid-row:span 3;row-gap:0}.metric-label{min-height:2.8em}.metric-value{align-self:end}.bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}.data{grid-column:1/-1;grid-row:1}.data summary{padding-right:90px}.settings{grid-column:2;grid-row:1;align-self:start;z-index:5}.scroll-cue{display:none}.data .search{width:100%}.family-summary{margin-bottom:12px;padding-bottom:10px}.family-summary .kicker{display:none}.family-summary strong{display:inline;margin-right:7px}.family-summary p:last-child{display:inline;font-size:11px}.comparison-story{margin-top:16px;padding-top:13px}.comparison-story>strong{margin-bottom:9px}\r @media(max-width:580px){.bottom{display:grid}.scroll-cue{display:block;margin-top:8px;color:var(--sm-map-muted);font-size:10px;text-align:right}.metrics{grid-template-rows:auto auto auto}.metric-label{min-height:2.8em}.settings{z-index:5}.family-summary{display:block}.delta-grid>div{align-items:center}}\r \r .missing-score{font-size:20px;letter-spacing:0;line-height:1.5;display:block;color:var(--sm-map-muted);padding:12px 0}\r \r .target-roster{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 18px}.target-chip{display:flex;align-items:center;gap:7px;border:1px solid var(--sm-map-line);border-radius:var(--radius-label,999px);padding:8px 10px;font-size:12px;font-weight:600}.target-chip i{width:7px;height:7px;border-radius:50%;background:var(--sm-map-ink);flex:none}.target-chip.projected i{width:8px;height:8px;border-radius:0;background:transparent;border:1.6px solid #b47f36;transform:rotate(45deg)}.target-chip[aria-pressed=true]{border-color:var(--sm-map-accent);background:color-mix(in srgb,var(--sm-map-accent) 10%,var(--sm-map-surface));box-shadow:inset 0 -2px var(--sm-map-accent)}.target-chip:hover{border-color:var(--sm-map-accent)}.dot.target{background:var(--sm-map-ink);width:10px;height:10px;box-shadow:0 0 0 3px color-mix(in srgb,var(--sm-map-ink) 10%,transparent)}.dot.baseline{background:#39685b}.map[data-theme=dark] .dot.baseline{background:#98c7b6}.without-total .overall,.without-total .rank,.without-total .overall-range{display:none}.primary-metrics{margin-top:14px}.primary-metrics .metric-value{font-size:42px}.missing-total-note{font-size:11px;color:var(--sm-map-muted);margin-top:12px}.plot svg [data-map-point].hovered .model-marker{stroke:var(--sm-map-accent);stroke-width:3}.plot svg [data-map-point].hovered .target-halo{stroke-width:1}.data tr[data-map-role=target] td:first-child{border-left:3px solid var(--sm-map-accent);padding-left:9px}.data tr[data-map-role=baseline] td button{font-weight:600}.data tr[data-map-role=target] td button{font-weight:700}.map[data-theme=dark] .target-chip.projected i{border-color:#dca664}\r @media(max-width:580px){.target-roster{gap:6px;margin-bottom:15px}.target-chip{font-size:11px;padding:7px 8px}.primary-metrics .metric-value{font-size:32px}.without-total{align-self:center}.primary-metrics{margin:0}.missing-total-note{font-size:10px}}\r \r .comparison-roster{display:flex;flex-wrap:wrap;align-items:center;gap:8px 15px;border-top:1px solid var(--sm-map-line);padding:12px 0 15px;font-size:11px}.comparison-roster>span{color:var(--sm-map-muted);font-size:10px}.comparison-chip{display:flex;align-items:center;gap:6px;font-size:11px;padding:4px 0;color:var(--sm-map-muted)}.comparison-chip i{width:6px;height:6px;background:#91a38c;border-radius:50%;flex:none}.comparison-chip.baseline{color:var(--sm-map-ink)}.comparison-chip.baseline i{background:#39685b}.comparison-chip[aria-pressed=true]{color:var(--sm-map-ink);text-decoration:underline;text-underline-offset:4px}.map[data-theme=dark] .comparison-chip.baseline i{background:#98c7b6}@media(max-width:580px){.comparison-roster{gap:5px 13px;padding:10px 0 12px}.comparison-roster>span{width:100%}.comparison-chip{font-size:10px}}\r \r .range-note,.overall-range,.cell-range{white-space:pre-line}.central-bounds{grid-column:1/-1;font-size:11px;color:var(--sm-map-muted);margin:6px 0}.central-bounds>summary{cursor:pointer}.central-bounds .bounds-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:9px}.central-bounds p{font-size:10px;margin-top:5px}\r \r .bounds-key{width:12px;height:9px;border:1.2px solid #b47f36;border-radius:0}.bounds-key.wide{border-style:dashed;opacity:.6}\r \r .range-line{display:block}.range-values{white-space:nowrap}@media(max-width:580px){.metric .range-label{display:block}}\r \r .forecast-ranges{display:none}@media(max-width:580px){.inspector .overall-range,.inspector .metric .range-note{display:none}.forecast-ranges{display:table;margin:0 0 16px;font-size:11px;table-layout:fixed}.forecast-ranges th,.forecast-ranges td{min-width:0;max-width:none;padding:7px 0;vertical-align:middle}.forecast-ranges th:first-child{width:42%;min-width:0;padding-right:12px;line-height:1.4;text-align:left}.forecast-ranges td{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}.forecast-ranges th:not(:first-child){text-align:right}.forecast-ranges tbody th{font-size:11px;font-weight:500;color:var(--sm-map-muted)}}\r /* A narrow phone still needs room for the cohort controls and score labels. */\r @media(max-width:360px){.top-actions{flex-wrap:wrap;gap:9px}.segmented{max-width:100%}.segmented button{padding-inline:7px}.delta-grid{grid-template-columns:minmax(0,1fr);gap:8px}.delta-grid>div{min-width:0}.metrics{grid-template-columns:minmax(0,1fr);gap:10px}.metric-label{min-height:0;overflow-wrap:normal}.score-summary{align-self:center}.share-trigger{padding-left:0}}\r \r .quicksearch{display:block;margin:14px 0;font-size:12px;font-weight:600}.quicksearch-input{display:block;width:100%;margin:7px 0;padding:10px 12px;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);background:var(--sm-map-surface);color:inherit;font:inherit;font-weight:400}.quicksearch>span{font-size:11px;font-weight:400;color:var(--sm-map-muted)}\r .metric-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 18px}.metric-controls>span{font-size:11px;color:var(--sm-map-muted)}.metric-controls .segmented{background:transparent}.metric-controls .segmented button[aria-pressed=true]{background:color-mix(in srgb,var(--sm-map-line) 35%,var(--sm-map-surface));box-shadow:none}.metric-controls .segmented button{min-width:76px}@media(max-width:580px){.metric-controls{gap:8px;margin-bottom:16px}.metric-controls .segmented button{min-width:0;padding:8px 12px}.metric-controls>span{font-size:10px}}\r \r /* The homepage dialog already supplies the model title and map identity. */\r :host([compact-popup]) .map{padding:14px 18px 10px;border:0;border-radius:0}\r :host([compact-popup]) .compact-tools{border-bottom:1px solid var(--sm-map-line);margin-bottom:10px}\r :host([compact-popup]) .compact-tools>summary{cursor:pointer;padding:10px 0;font-size:12px;color:var(--sm-map-ink);min-height:44px}\r :host([compact-popup]) .compact-tools>summary:focus-visible{outline:2px solid var(--sm-map-accent);outline-offset:2px;border-radius:var(--radius-control,4px)}\r :host([compact-popup]) .brand,:host([compact-popup]) .heading h2,:host([compact-popup]) .heading .estimate-cta{display:none}\r :host([compact-popup]) .top{padding:6px 0 0;border:0}\r :host([compact-popup]) .top-actions{width:100%;justify-content:space-between;flex-wrap:wrap}\r :host([compact-popup]) .quicksearch{margin:10px 0 14px}\r :host([compact-popup]) .heading{margin:0 0 8px}\r :host([compact-popup]) .heading .caption{font-size:11px;line-height:1.5}\r :host([compact-popup]) .metric-controls{gap:8px;margin-bottom:12px}\r :host([compact-popup]) .metric-controls .segmented button{min-width:0;min-height:40px}\r :host([compact-popup]) .inspector{padding-top:0}\r :host([compact-popup]) .anchor-name{margin:4px 0 6px;font-size:15px}\r :host([compact-popup]) .overall{font-size:48px;line-height:1.05}\r :host([compact-popup]) .rank{margin-top:5px}\r :host([compact-popup]) .metrics{margin-top:12px}\r @media(max-width:580px){\r :host([compact-popup]) .map{padding:6px 12px 10px}\r :host([compact-popup]) .composition{gap:10px 12px}\r :host([compact-popup]) .score-summary,:host([compact-popup]) .metrics{grid-row:1}\r :host([compact-popup]) .composition:has(.family-summary) .score-summary,:host([compact-popup]) .composition:has(.family-summary) .metrics{grid-row:2}\r :host([compact-popup]) .plot{grid-row:3}\r :host([compact-popup]) .metrics{margin:0;gap:10px}\r :host([compact-popup]) .metric-value{font-size:24px}\r :host([compact-popup]) .metric-label{font-size:10px;min-height:2.8em}\r :host([compact-popup]) .overall{font-size:39px}\r :host([compact-popup]) .rank{font-size:10px;line-height:1.5}\r :host([compact-popup]) .metric-controls>span{display:none}\r :host([compact-popup]) .metric-controls .segmented{width:100%}\r :host([compact-popup]) .metric-controls .segmented button{flex:1;padding:8px 10px}\r :host([compact-popup]) .target-roster{margin-bottom:10px}\r }\r \r .plot svg [data-map-label].hovered>rect{stroke:var(--sm-map-accent);stroke-width:2}\r .plot svg [data-map-label].hovered>text{text-decoration:underline}\r .router-badge{display:inline-block;vertical-align:middle;margin-left:7px;padding:2px 5px;border:1px solid currentColor;border-radius:var(--radius-label,999px);font-size:10px;line-height:1.25;font-weight:500;white-space:nowrap;color:var(--sm-map-ink)}\r \r .router-filter{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:12px}\r .router-filter input[type=checkbox]{width:17px;height:17px;min-height:0;margin:0;flex:none;accent-color:currentColor}\r \r .search-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;margin:14px 0 18px}.search-tools .quicksearch{margin:0}\r .model-filters{position:relative;align-self:start;margin-top:24px}.model-filters>summary{min-height:38px;display:flex;align-items:center;gap:8px;cursor:pointer;padding:8px 12px;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);font-size:12px;list-style:none}.model-filters>summary::-webkit-details-marker{display:none}.model-filters>summary:after{content:'\u2304';margin-left:3px}.model-filters[open]>summary{background:var(--sm-map-surface)}\r .filter-menu{position:absolute;z-index:30;right:0;top:calc(100% + 8px);width:260px;padding:16px;background:var(--sm-map-surface);border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);box-shadow:0 10px 28px #14281f20}\r .routing-filter{margin:0;padding:0;border:0;min-width:0}.routing-filter legend{margin-bottom:8px;color:var(--sm-map-muted);font-size:11px;font-weight:600}.routing-filter .router-filter{min-height:44px;margin:0;padding:8px 10px;border:1px solid var(--sm-map-line);border-radius:var(--radius-control,4px);cursor:pointer}.router-filter:has(input:checked){background:color-mix(in srgb,var(--sm-map-context) 12%,var(--sm-map-surface))}.router-filter span{font-size:12px;font-weight:500}.router-filter small{display:block;margin-top:3px;font-size:11px;font-weight:400;color:var(--sm-map-muted)}\r .filter-footer{margin-top:14px;padding-top:10px;border-top:1px solid var(--sm-map-line)}.filter-footer button{font-size:11px;padding:6px 0;color:var(--sm-map-muted)}.filter-footer button:disabled{opacity:.5;cursor:default}.filter-count{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:50%;background:var(--sm-map-ink);color:var(--sm-map-surface);font-size:10px}\r @media(max-width:580px){.search-tools{grid-template-columns:minmax(0,1fr);gap:10px}.model-filters{margin-top:0}.model-filters>summary{width:max-content}.filter-menu{position:static;width:100%;margin-top:8px;box-shadow:none}}\r \r .brand .stealthmark-version{display:inline-block;font-size:12px;font-weight:500;color:var(--sm-map-muted);margin-left:6px;white-space:nowrap}\r \r .share-feedback{max-width:240px;margin:6px 5px 0;padding:10px 7px 5px;border-top:1px solid var(--sm-map-line);font-size:12px;line-height:1.5;color:var(--sm-map-ink)}\r .share-feedback:empty{display:none}\r \r /* Keep transient model details small and clear of the plotted evidence. */\r .plot{padding-bottom:var(--popover-space,0px)}\r .plot-axis-label.axis-x{bottom:var(--popover-space,0px)}\r .plot svg [data-map-connector].hovered .label-connector,.plot svg [data-map-label].hovered .label-connector{stroke:var(--sm-map-accent);stroke-width:2.5;stroke-opacity:1}\r .plot svg:has(.hovered) [data-map-connector]:not(.hovered) .label-connector{stroke-opacity:.25}\r .plot:focus-visible{outline:2px solid var(--sm-map-accent);outline-offset:4px;border-radius:var(--radius-control,4px)}\r .plot .tooltip{width:250px;max-width:calc(100% - 8px);padding:11px 13px;border:1px solid var(--sm-map-line);background:var(--sm-map-surface);color:var(--sm-map-ink);box-shadow:0 4px 16px #14281f18;font-size:11px;line-height:1.4}\r .plot .tooltip strong{font-size:13px;margin-bottom:7px;overflow-wrap:anywhere}\r .plot .tooltip p{font-size:10px;color:var(--sm-map-muted);margin-bottom:7px}\r .plot .tip-values>div{gap:12px;padding:2px 0}\r .plot .tip-values span{color:var(--sm-map-muted)}\r .plot .tooltip small{margin-top:7px;opacity:1;color:var(--sm-map-muted)}\r .plot .chooser{left:auto;right:auto;top:auto;width:292px;max-width:calc(100% - 8px);padding:8px;border-radius:var(--radius-control,4px);box-shadow:0 5px 20px #14281f20}\r .chooser-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-left:6px}\r .chooser-head strong{font-size:12px;font-weight:600}\r .chooser .chooser-head button{width:32px;min-height:32px;padding:0;display:grid;place-items:center;border:0;border-radius:var(--radius-control,4px);font-size:22px;line-height:1;color:var(--sm-map-muted)}\r .chooser-columns{display:flex;justify-content:space-between;gap:12px;padding:6px 7px;font-size:10px;color:var(--sm-map-muted)}\r .chooser-list{max-height:min(220px,40vh);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}\r .chooser .chooser-list button{align-items:center;gap:12px;min-height:44px;padding:9px 7px;font-size:12px;border-radius:var(--radius-control,4px)}\r .chooser-list [data-picker-name]{min-width:0;overflow-wrap:anywhere}\r .chooser-list b{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}\r .chooser button:hover{background:color-mix(in srgb,var(--sm-map-line) 35%,transparent)}\r .chooser button:focus-visible{outline-offset:-2px;border-radius:var(--radius-control,4px)}\r .top-actions .share{margin-left:auto}\r \r /* Plot text: engines that ignore @font-face inside a shadow root fall back to the\r document copy of the same licensed font, so labels match their measured widths. */\r .plot>svg{font-family:'SM Map','DM Sans',sans-serif!important}\r .plot{touch-action:manipulation}\r /* Reserve the graph's space while its code and results load. */\r :host{-webkit-text-size-adjust:100%;text-size-adjust:100%}.pending{min-height:640px}:host([compact-popup]) .pending{min-height:0}@media(max-width:580px){.pending{min-height:1100px}}\r .quicksearch .quicksearch-label{display:block;font-size:12px;font-weight:600;color:var(--sm-map-ink)}\r .quicksearch .quicksearch-field{position:relative;display:block;font-size:12px;color:var(--sm-map-ink)}\r .quicksearch .search-icon{position:absolute;left:12px;top:50%;width:16px;height:16px;transform:translateY(-50%);fill:none;stroke:var(--sm-map-muted);stroke-width:2;stroke-linecap:round;pointer-events:none}\r .quicksearch .quicksearch-input{padding-left:36px}\r .quicksearch .search-count{display:block;font-size:12px;font-weight:400;color:var(--sm-map-muted)}.search-count:empty{display:none}\r .th-short{display:none}\r /* No graph text below 11px at any width. */\r .kicker,.settings label,.router-badge,.cell-range,.table-projected,.projected-badge,.plot .tooltip p,.plot .tooltip small,.chooser-columns,.missing-total-note{font-size:11px}\r @keyframes sm-sheet{from{transform:translateY(28px);opacity:0}to{transform:none;opacity:1}}\r \r /* Phones: one column, 44-point controls and text no smaller than 11px. */\r @media(max-width:580px){\r .top{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}\r .top-actions{display:contents}\r .top .brand{grid-column:1;grid-row:1}\r .top .share{grid-column:2;grid-row:1;margin-left:0}\r .top .segmented{grid-column:1/-1;grid-row:2;width:100%}\r .top .segmented button{flex:1;min-height:44px;font-size:13px;padding-inline:6px}\r .share-trigger{min-height:44px;padding:8px 4px 8px 10px;font-size:13px}\r .search-tools{grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start;margin:14px 0 16px}\r .quicksearch .quicksearch-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\r .quicksearch .quicksearch-input{margin:0;min-height:44px;font-size:16px}\r .quicksearch .search-count{margin-top:6px}\r .model-filters{margin-top:0}\r .model-filters>summary{min-height:44px;width:auto;font-size:13px}\r .filter-menu{position:absolute;right:0;top:calc(100% + 8px);width:min(290px,calc(100vw - 40px));margin-top:0;box-shadow:0 10px 28px #14281f20}\r .heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:8px;row-gap:6px;margin:18px 0 10px}.heading h2{grid-column:1}.heading .estimate-cta{grid-column:2;grid-row:1;margin:-4px -6px 0 0}.heading .caption{grid-column:1/-1;font-size:12px}\r .metric-controls{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}\r .metric-controls>span{font-size:12px}\r .metric-controls .segmented{width:100%}\r .metric-controls .segmented button{flex:1;min-height:44px;font-size:13px}\r .kicker,.score-summary .kicker{font-size:11px;letter-spacing:1.2px}\r .rank,.overall-range,.metric-label,.coverage,.range-note,.evidence-link,.missing-total-note,.delta-grid span,.family-summary p:last-child{font-size:12px}\r .comparison-chip,.target-chip,.comparison-roster>span,.legend,.range-controls,.range-controls button,.status{font-size:12px}\r .router-badge,.projected-badge,.cell-range,.table-projected,.chooser-columns,.plot .tooltip p,.plot .tooltip small{font-size:11px}\r :host([compact-popup]) .metric-label,:host([compact-popup]) .rank{font-size:12px}\r .bottom{grid-template-columns:minmax(0,1fr);gap:0}\r .data{grid-row:1;grid-column:1}.settings{grid-row:2;grid-column:1;border-top:1px solid var(--sm-map-line)}\r .data summary{padding:13px 0;font-size:13px}.settings summary{padding:13px 0;font-size:13px}\r .settings-panel{position:static;width:auto;min-width:0;max-width:none;margin:2px 0 14px;padding:14px;box-shadow:none}\r .settings label{font-size:12px}\r .settings select,.settings input{min-height:44px;font-size:16px}\r .projection-action{min-height:44px;font-size:13px}\r /* The score table fits the phone width; its rows are full-size touch targets. */\r .inspection-detail .comparison-story{margin-top:0;padding-top:4px}\r .plot .tooltip{width:min(240px,calc(100% - 12px))}\r .data .search{font-size:16px;min-height:44px}\r .table-wrap{max-height:none;overflow-x:auto}\r .th-full{display:none}.th-short{display:inline}\r th,th:first-child{min-width:0;max-width:none;font-size:12px;padding:8px 4px}\r td{font-size:13px;padding:0 4px;vertical-align:middle}\r td:not(:first-child){white-space:nowrap}\r td button{min-height:44px;font-size:13px;padding:6px 0;line-height:1.3}\r .data tr[data-map-role=target] td:first-child{padding-left:8px}\r }\r \r /* Phones and short landscape screens: choices and editors open as sheets. */\r @media(max-width:580px),(pointer:coarse) and (max-height:520px){\r .overlay{position:fixed;inset:0;z-index:50;border-radius:0;display:flex;flex-direction:column;padding:calc(10px + env(safe-area-inset-top,0px)) calc(16px + env(safe-area-inset-right,0px)) calc(14px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));background:var(--sm-map-surface);backdrop-filter:none;overscroll-behavior:contain;animation:sm-sheet .3s cubic-bezier(.2,.85,.25,1)}\r .overlay>*{flex:none;width:100%;max-width:640px;margin-inline:auto}\r .overlay>.picker-list{flex:1 1 auto;min-height:120px;max-height:none;overscroll-behavior:contain}\r .overlay .overlay-head{margin-bottom:10px}\r .overlay .close{width:44px;height:44px}\r .overlay .picker-search{font-size:16px;min-height:44px;margin-top:0}\r .overlay .primary{min-height:48px;margin-top:12px;font-size:15px}\r .picker-row{min-height:48px;font-size:14px}\r .projection-form label{font-size:12px}\r .projection-form input,.projection-form select,.projection-form textarea{font-size:16px;min-height:44px}\r }\r \r /* Touch screens of every size: 44-point targets and 16px fields, so iOS never zooms. */\r @media(pointer:coarse){\r button,a,summary,select,input,label{touch-action:manipulation}\r input,select,textarea{font-size:16px}\r .segmented button,.share-trigger,.model-filters>summary,.estimate-cta,.target-chip,.comparison-chip,.projection-action,.range-controls button,.filter-footer button,.chooser .chooser-head button,.close{min-height:44px}\r .estimate-cta,.chooser .chooser-head button,.close{min-width:44px}\r .data summary,.settings summary{min-height:44px;padding-top:13px;padding-bottom:13px}\r .metric-controls [data-metric],.quicksearch .quicksearch-input,.data .search{min-height:44px}\r /* Small inline links and help labels keep their layout but gain a full-height hit area. */\r .anchor-name a{display:inline-block;padding:13px 0;margin:-13px 0}\r .metric-label .metric-caption{padding-block:14px;margin-block:-14px}\r .evidence-link{display:inline-flex;align-items:center;min-height:44px}\r .share-menu button,.share-menu a{display:flex;align-items:center;min-height:44px}\r td button{min-height:44px}\r .plot-axis-label{min-height:44px}\r .settings select,.settings input{min-height:44px}\r .picker-row{min-height:48px}\r }\r /* Nearby models as a sheet at the bottom edge, clear of the safe areas. */\r .plot .chooser[data-sheet]{position:fixed;left:max(calc(10px + env(safe-area-inset-left,0px)),calc(50% - 260px));right:max(calc(10px + env(safe-area-inset-right,0px)),calc(50% - 260px));bottom:calc(10px + env(safe-area-inset-bottom,0px));top:auto;width:auto;max-width:none;z-index:45;padding:10px;border-radius:var(--radius-structure,6px);box-shadow:0 -6px 30px #14281f33;animation:sm-sheet .26s cubic-bezier(.2,.85,.25,1)}\r .plot .chooser[data-sheet] .chooser-list{max-height:min(320px,50vh)}\r @media(prefers-reduced-motion:reduce){.overlay,.plot .chooser[data-sheet]{animation:none}}\r /* Compact panel (22 October 2026): one header row with the brand line above\r the subject, one toolbar row and one footer row, so the chart takes most of\r the panel height. The footer overlays legend, range and Configure on the\r "Models and scores" summary row; the table still opens full width below. */\r .top{flex-wrap:nowrap;align-items:center;gap:16px;padding-bottom:14px}\r .top .brand{flex:1;min-width:0;gap:12px;font-size:inherit;letter-spacing:0}\r .top .brand svg{width:36px;height:36px}\r .title-stack{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:14px;row-gap:1px;min-width:0}\r .title-stack .brand-name{flex-basis:100%;font-size:12px;font-weight:600;color:var(--sm-map-muted)}\r .title-stack .brand-name .stealthmark-version{font-size:11px;margin-left:3px}\r .title-stack h2{font-size:clamp(21px,2.1vw,27px);letter-spacing:-.8px;font-weight:600;line-height:1.15;overflow-wrap:anywhere}\r .title-stack .caption{font-size:12px;font-weight:400;color:var(--sm-map-muted)}\r .top-actions{flex:none;flex-wrap:nowrap;gap:4px}\r .top-actions .estimate-cta{margin:0}\r .toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:14px 0 16px}\r .toolbar .search-tools{flex:1 1 240px;margin:0;gap:10px;align-items:center}\r .toolbar .model-filters{margin-top:0;align-self:center}\r .toolbar .quicksearch .quicksearch-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\r .toolbar .quicksearch .quicksearch-input{margin:0;padding-top:8px;padding-bottom:8px}\r .toolbar .metric-controls{margin:0;gap:8px}\r .toolbar .metric-controls [data-metric]{min-height:30px}\r .toolbar .metric-controls .segmented button{min-width:0}\r .bottom{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:start;column-gap:18px;row-gap:6px;padding-top:10px}\r .bottom>.data{grid-column:1/-1;grid-row:1}\r .bottom>.legend,.bottom>.range-controls,.bottom>.settings{grid-row:1;position:relative;z-index:2}\r .bottom>.legend{grid-column:2;margin:0;min-height:28px;align-items:center;font-size:12px;color:var(--sm-map-muted)}\r .bottom>.range-controls{grid-column:3;padding:0;gap:8px}\r .bottom>.settings{grid-column:4;z-index:5}\r .bottom .data>summary,.bottom .settings>summary{min-height:28px;display:flex;align-items:center;gap:6px}\r .bottom .data>summary::before,.bottom .settings>summary::before{content:'\u25B8';font-size:10px}\r .bottom .data[open]>summary::before,.bottom .settings[open]>summary::before{content:'\u25BE'}\r .bottom .data>summary::-webkit-details-marker,.bottom .settings>summary::-webkit-details-marker{display:none}\r .range-controls .range-toggle{padding:2px}\r .range-controls .range-toggle button{font-size:11px;padding:4px 9px;text-decoration:none;color:var(--sm-map-muted)}\r .range-controls .range-toggle button[aria-pressed=true]{color:var(--sm-map-ink)}\r .status:empty{min-height:0;margin:0}\r :host([compact-popup]) .toolbar{margin:10px 0 12px}\r :host([compact-popup]) .toolbar .quicksearch{margin:0}\r @media(max-width:1080px){\r .bottom>.legend{grid-column:1/3;grid-row:1}\r .bottom>.range-controls{grid-column:3/5;grid-row:1;justify-self:end}\r .bottom>.data,.bottom>.settings{grid-row:2}\r }\r @media(max-width:580px){\r .top{display:flex;gap:10px;padding-bottom:12px}\r .top-actions{display:flex;width:auto;justify-content:flex-end}\r .top .share{margin-left:0}\r .top .brand svg{width:31px;height:31px}\r .title-stack h2{font-size:22px}\r .toolbar{flex-direction:column;align-items:stretch;gap:10px;margin:12px 0 14px}\r .toolbar .search-tools{flex:none}\r .toolbar .scope{width:100%}\r .toolbar .scope button{flex:1;min-height:44px;font-size:13px;padding-inline:6px}\r .toolbar .metric-controls [data-metric]{min-height:44px}\r .bottom{grid-template-columns:minmax(0,1fr);column-gap:0;row-gap:0}\r .bottom>.legend{grid-column:1;grid-row:1;padding:2px 0 8px}\r .bottom>.range-controls{grid-column:1;grid-row:2;justify-self:start;padding-bottom:8px}\r .bottom>.data{grid-column:1;grid-row:3}\r .bottom>.settings{grid-column:1;grid-row:4;border-top:1px solid var(--sm-map-line)}\r }\r /* Plot and control hierarchy (22 October 2026). Emphasised axis titles share the summary's metric colours (horizontal green, vertical accent); every switch uses the scope switch's track; chevrons are drawn, not glyphs. */ .plot-axis-label.axis-x[data-emphasized=true]{color:#39685b} .map[data-theme=dark] .plot-axis-label.axis-x[data-emphasized=true]{color:#98c7b6} .plot-axis-label.axis-y[data-emphasized=true]{color:var(--sm-map-accent)} .metric-controls .segmented{background:color-mix(in srgb,var(--sm-map-line) 35%,transparent)} .metric-controls .segmented button[aria-pressed=true]{background:var(--sm-map-surface);box-shadow:0 1px 3px #15291912} .model-filters>summary:after{content:'';width:6px;height:6px;margin:0 2px 3px 4px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg)} .model-filters[open]>summary:after{transform:translateY(3px) rotate(-135deg)} .bottom .data>summary::before,.bottom .settings>summary::before,.bottom .data[open]>summary::before,.bottom .settings[open]>summary::before{content:'';flex:none;width:5px;height:5px;margin:0 4px 0 1px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg)} .bottom .data[open]>summary::before,.bottom .settings[open]>summary::before{transform:translateY(-2px) rotate(45deg)} /* Phones: brand line and buttons share the first row; the title gets the full width below, so a descriptive axis title wraps at most once. */ @media(max-width:580px){ .top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:10px;row-gap:4px} .top .brand,.top .title-stack{display:contents} .top .brand svg{grid-column:1;grid-row:1;width:28px;height:28px} .title-stack .brand-name{grid-column:2;grid-row:1;flex-basis:auto} .top .top-actions{grid-column:3;grid-row:1} .title-stack h2{grid-column:1/-1;grid-row:2;font-size:21px} .title-stack .caption{grid-column:1/-1;grid-row:3} } /* Search fields show focus with an ink border and a soft green ring instead of the accent outline, which reads as an error state on a text field. */ .quicksearch .quicksearch-input:focus-visible,.data .search:focus-visible,.picker-search:focus-visible{outline:none;border-color:var(--sm-map-ink);box-shadow:0 0 0 3px #39685b2e} /* Model type choices share the routing option style. Open and Local span the row to fit their definitions; the others share a compact two-column grid. */ .type-filter{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px} .type-filter legend{grid-column:1/-1} .type-filter .type-choice{min-height:40px;padding:7px 9px;align-items:flex-start} .type-filter .type-choice:first-of-type{grid-column:1/-1;min-height:34px;align-items:center} .type-filter .type-choice.wide{grid-column:1/-1} .type-filter input[type=radio]{width:15px;height:15px;min-height:0;margin:2px 0 0;flex:none;accent-color:currentColor} `;var ye=`.metric-icon{display:block;flex:none;width:18px;height:18px} [data-metric-help]{touch-action:manipulation} .metric-caption{cursor:default;color:var(--sm-map-muted,var(--muted,#647567));font-weight:400} .metric-caption .metric-icon{width:15px;height:15px} .metric-caption:focus-visible{outline:1px solid currentColor;outline-offset:4px;border-radius:var(--radius-control,4px)} .metric-tooltip{position:fixed;z-index:1001;width:270px;max-width:calc(100vw - 20px);padding:12px 14px;border:1px solid var(--sm-map-line,var(--line,#cdd5c8));border-radius:var(--radius-control,4px);background:var(--sm-map-surface,var(--surface,#fffdf8));color:var(--sm-map-ink,var(--ink,#26392f));box-shadow:0 6px 20px #26392f20;font-size:12px;line-height:1.5;pointer-events:auto;text-align:left;white-space:normal} .metric-tooltip strong{display:block;font-size:12px;font-weight:600} .metric-tooltip p{margin:5px 0 0;font-size:12px;color:var(--sm-map-ink,var(--ink,#26392f));line-height:1.5} @media(forced-colors:active){.metric-tooltip{border-color:CanvasText;background:Canvas;color:CanvasText;box-shadow:none}.metric-tooltip p{color:CanvasText}} `;var ae={overall:"Overall score",general:"General Intelligence",visual:"Visual Intelligence"},he={overall:"Overall",general:"General",visual:"Visual"},Pe={"reasoning:single-step":"Reasoning efficiency \xB7 single step","reasoning:multi-step":"Reasoning efficiency \xB7 multi-step"},Q={general:"The ability to reason, plan, solve problems and understand how things relate and behave. A high score means it thinks hard problems through, from careful analysis to plans that span many steps.",visual:"The ability to understand visual intent and turn ideas, descriptions and plans into coherent, effective visuals. A high score means design ideas come out the way you meant them, in illustrations, icons, diagrams or interface visuals.","reasoning:single-step":"How much reasoning a model needs to understand a problem and work out how to solve it. A high score means good answers with less waiting and fewer tokens. Results and reasoning are compared with every other model on the same task; 50 is the average model. A side score, not part of StealthMark.","reasoning:multi-step":"How efficiently a model keeps working on a task, building on its earlier reasoning instead of starting over at every step, as in agentic workflows and multi-step reasoning. A high score means good results on long tasks with less waiting and fewer tokens. Results and reasoning across all steps are compared with every other model on the same task; 50 is the average model. A side score, not part of StealthMark."},Ee={general:'',visual:'',"reasoning:single-step":'',"reasoning:multi-step":''},ue=(i,e=18)=>Ee[i]?``:"";function Ie(i,e){let t,o,s=()=>i.querySelector(".metric-tooltip"),a=()=>{clearTimeout(o),t?.removeAttribute("aria-describedby"),t=null;let d=s();d&&(d.hidden=!0)},r=()=>{let d=s();if(!t?.isConnected||!d)return a();let l=t.getBoundingClientRect(),v=i.host.closest("dialog"),b=(v?.querySelector(".dialog-body")||v)?.getBoundingClientRect(),w=Math.max(10,(b?.left??0)+10),S=Math.min(window.innerWidth-10,(b?.right??window.innerWidth)-10),A=Math.max(10,(b?.top??0)+10),T=Math.min(window.innerHeight-10,(b?.bottom??window.innerHeight)-10);if(l.bottomT||l.rightS)return a();d.style.maxWidth=`${S-w}px`;let g=d.getBoundingClientRect();d.style.left=`${Math.max(w,Math.min(l.left+l.width/2-g.width/2,S-g.width))}px`,d.style.top=`${Math.max(A,Math.min(l.bottom+g.height+8<=T?l.bottom+8:l.top-g.height-8,T-g.height))}px`},n=d=>{clearTimeout(o);let l=d?.dataset.metricHelp,v=s();!Q[l]||!v||(t!==d&&a(),t=d,v.innerHTML=`${ae[l]??Pe[l]}

${Q[l]}

`,v.hidden=!1,d.setAttribute("aria-describedby",v.id),r())},c=d=>{!t||t.contains(d.relatedTarget)||s()?.contains(d.relatedTarget)||i.activeElement!==t&&(o=setTimeout(a,120))};return i.addEventListener("pointerover",d=>{if(s()?.contains(d.target)){clearTimeout(o);return}let l=d.target.closest?.("[data-metric-help]");l&&n(l)},{signal:e}),i.addEventListener("pointerout",c,{signal:e}),i.addEventListener("focusin",d=>{let l=d.target.closest?.("[data-metric-help]");l?n(l):a()},{signal:e}),i.addEventListener("focusout",()=>queueMicrotask(()=>{i.activeElement!==t&&a()}),{signal:e}),i.addEventListener("click",d=>{let l=d.target.closest?.("[data-metric-help]");l?.isConnected&&n(l)},{signal:e}),document.addEventListener("keydown",d=>{d.key==="Escape"&&t&&(a(),d.preventDefault(),d.stopPropagation())},{signal:e,capture:!0}),document.addEventListener("pointerdown",d=>{!d.composedPath().includes(t)&&!d.composedPath().includes(s())&&a()},{signal:e}),window.addEventListener("scroll",r,{signal:e,passive:!0,capture:!0}),window.addEventListener("resize",r,{signal:e,passive:!0}),e.addEventListener("abort",a,{once:!0}),{show:n,hide:a}}var Et=Object.freeze({coding:"Coding",agents:"Agents",visual:"Images & SVG","long-context":"Long context",reasoning:"Reasoning",research:"Research","open-weights":"Open weights"}),ct=Object.freeze(["confirmed","suspected"]),Pt=Object.freeze(["normal","fast"].flatMap(i=>["","Min","Max"].map(e=>`${i}TokensPerSecond${e}`)));function Oe(i){if(!(i===void 0||i==="")){if(!ct.includes(i))throw new Error("routerStatus must be confirmed or suspected");return i}}var se=i=>i?.routerStatus==="confirmed"?"Router":i?.routerStatus==="suspected"?"Router?":"",le=i=>i?.routerStatus==="confirmed"?"Confirmed router or multi-model system. Scores measure the system\u2019s observed benchmark performance.":i?.routerStatus==="suspected"?"Suspected router based on our research. The underlying architecture is unconfirmed.":"";var fe="/benchmarks/map",De="/benchmarks/map/social.png",ge="https://stealthmodels.com",$e=7,ke=["focus","family","compare","metric","models","exclude","baselines","inspect","range","theme","presentation","competitors","x-axis","y-axis","projections","domains","title","subtitle","page","search","routers","type"];function Fe(i){let e={};for(let t of ke)if(i.hasAttribute(t)){let o=i.getAttribute(t);if(["x-axis","y-axis"].includes(t))e.axes??={},e.axes[t[0]]=o;else if(["projections","domains"].includes(t))try{e[t]=JSON.parse(o)}catch{throw Error(`Invalid ${t} JSON.`)}else e[t]=t==="competitors"?Number(o):o}return e}var Z=(i,e="hide")=>e!=="hide"||i.routerStatus!=="confirmed",dt=["all","open","local","proprietary","stealth"],ve=(i,e="all")=>e==="all"||i.projected===!0||(e==="stealth"?i.identityStatus==="stealth"||i.group==="Stealth models":e==="local"?i.local===!0:i.access===e),h=i=>String(i??"").replace(/[&<>"']/g,e=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[e]),E=i=>Number.isFinite(i)?i.toFixed(1):"\u2014",_e=i=>i?.lower===void 0?"":i.central?`Central ${E(i.central.lower)}\u2013${E(i.central.upper)} Wider ${E(i.lower)}\u2013${E(i.upper)}`:`Range ${E(i.lower)}\u2013${E(i.upper)}`,W=i=>i!==null&&typeof i=="object"&&!Array.isArray(i),j=i=>{throw new Error(i)},ee=i=>[...new Set((Array.isArray(i)?i:typeof i=="string"?i.split(","):[]).map(e=>String(e).trim()).filter(Boolean))].sort(),X=(i,e,t)=>((typeof i!="string"||!i.trim()||i.length>e||/[\u0000-\u001f]/.test(i))&&j(`Invalid ${t}.`),i.trim()),G=i=>i==null?null:typeof i=="number"&&Number.isFinite(i)&&i>=0&&i<=100?i:j("Scores must be numbers from 0 to 100."),J=(i,e,t,o)=>{let s=i??t;return e.includes(s)||j(`Invalid ${o}: ${s}.`),s},we=(i,e)=>(i.position??1/0)-(e.position??1/0)||i.id.localeCompare(e.id);function Se(i){(!W(i)||i.schemaVersion!==1||typeof i.revision!="string"||!Array.isArray(i.models)||!Array.isArray(i.metrics)||!Array.isArray(i.families))&&j("Unsupported StealthMark Map data.");let e=new Set;for(let t of i.models)(t?.access!==void 0&&!["open","proprietary"].includes(t.access)||t?.local!==void 0&&(t.local!==!0||t.access!=="open"))&&j("Invalid map model access.");for(let t of i.models)for(let o of["logo","favicon"])t?.[o]!==void 0&&!/^\/(benchmarks\/brands|_shared\/favicons)\/[a-z0-9-]+\.(png|svg|webp)$/.test(t[o])&&j("Invalid map model image.");for(let t of i.models){(!W(t)||typeof t.id!="string"||e.has(t.id)||!W(t.metrics))&&j("Invalid map model."),e.add(t.id),Oe(t.routerStatus);for(let o of Object.values(t.metrics))G(o)}return i}function mt(i,e){if(typeof i=="number")return{value:G(i)};W(i)||j(`Invalid projected ${e}.`);let t=G(i.value);t===null&&j(`Projected ${e} needs a value.`);let o=G(i.lower),s=G(i.upper);(o===null!=(s===null)||o!==null&&(o>t||st||ns)&&j(`Projected ${e} central range must contain its value and fit inside the wider range.`),a={lower:r,upper:n}}return o===null?{value:t}:{value:t,lower:o,upper:s,...a?{central:a}:{}}}function ht(i){let e=r=>typeof r=="number"&&Number.isFinite(r)&&r>=-100&&r<=100?r:j("Projection gains must be numbers from -100 to 100.");W(i)||j("Invalid projection gain.");let t=e(i.value),o=i.lower===void 0?null:e(i.lower),s=i.upper===void 0?null:e(i.upper);(o===null!=(s===null)||o!==null&&(o>t||st||ns)&&j("A central gain range must contain its value and fit inside the wider range."),a={lower:r,upper:n}}return o===null?{value:t}:{value:t,lower:o,upper:s,...a?{central:a}:{}}}var ut=(i,e)=>{let t=o=>Math.round(Math.min(100,Math.max(0,i+o))*10)/10;return{value:t(e.value),...e.lower===void 0?{}:{lower:t(e.lower),upper:t(e.upper)},...e.central?{central:{lower:t(e.central.lower),upper:t(e.central.upper)}}:{}}};function ft(i=[],e=null){(!Array.isArray(i)||i.length>12)&&j("Supply at most 12 projected models.");let t=new Set;return i.map(o=>{W(o)||j("Invalid projected model.");let s=X(o.id,100,"projection ID");(!/^projection:[a-z0-9][a-z0-9._-]*$/i.test(s)||t.has(s))&&j("Use unique projection:NAME IDs."),t.add(s);let a=o.gain===void 0?null:ht(o.gain),r=a?ee(o.start??o.baseline):[],n=o.metrics??Object.fromEntries(["general","visual","overall"].filter(d=>o[d]!==void 0).map(d=>[d,o[d]]));if(a){(!r.length||r.length>4)&&j("A gain projection needs one to four measured starting models."),e||j("A gain projection needs measured scores.");let d=r.map(l=>e.models.find(v=>v.id===l)??j(`Unknown projection start: ${l}.`));n=Object.fromEntries(["general","visual","overall"].filter(l=>d.every(v=>Number.isFinite(v.metrics[l]))).map(l=>[l,ut(d.reduce((v,b)=>v+b.metrics[l],0)/d.length,a)]))}(!W(n)||!Object.keys(n).length)&&j("A projection needs forecast scores.");let c=Object.fromEntries(Object.keys(n).sort().map(d=>[d,mt(n[d],d)]));return{id:s,name:X(o.name,80,"projection name"),metrics:c,kind:J(o.kind,["supplied","editorial"],"supplied","projection kind"),...o.baseline?{baseline:X(o.baseline,100,"projection baseline")}:{},...o.family?{family:X(o.family,80,"projection family")}:{},...o.note?{note:X(o.note,180,"projection note")}:{},...a?{gain:a,...o.start?{start:r}:{}}:{}}}).sort((o,s)=>o.id.localeCompare(s.id))}var Be=i=>i.map(e=>e.gain?(({metrics:t,...o})=>o)(e):e);function gt(i){let e=new TextEncoder().encode(JSON.stringify(i));return btoa(String.fromCharCode(...e)).replaceAll("+","-").replaceAll("/","_").replace(/=+$/,"")}function xt(i){(i.length>5e3||!/^[\w-]+$/.test(i))&&j("Invalid projection payload.");try{return JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(Uint8Array.from(atob(i.replaceAll("-","+").replaceAll("_","/")),e=>e.charCodeAt(0))))}catch{j("Invalid projection payload.")}}function Ve(i){let e=i instanceof URL?i:new URL(i,ge),t=e.searchParams,o=Object.fromEntries(["focus","family","compare","metric","inspect","range","theme","title","subtitle","page","search","routers","type"].filter(s=>t.has(s)).map(s=>[s,t.get(s)]));if(![fe,fe+"/",De].includes(e.pathname)){let s=e.pathname.replace(/\/social\.png$/,"").replace(/\/$/,"").match(/^\/benchmarks\/map\/([a-z0-9][a-z0-9._-]*(?:\/[a-z0-9][a-z0-9._-]*)?)$/);s||j("Unknown map link."),o.preset=s[1]}if(t.has("models")&&(o.models=ee(t.get("models"))),t.has("exclude")&&(o.exclude=ee(t.get("exclude"))),t.has("baselines")&&(o.baselines=ee(t.get("baselines"))),(t.has("x")||t.has("y"))&&(o.axes={x:t.get("x")||"general",y:t.get("y")||"visual"}),t.has("competitors")&&(o.competitors=Number(t.get("competitors"))),t.has("projections")&&(o.projections=xt(t.get("projections"))),t.has("domains"))try{o.domains=JSON.parse(t.get("domains"))}catch{j("Invalid axis domains.")}return o}function He(i={},e){if(W(i)||j("Map configuration must be an object."),i.preset){let g=e.presets?.find(y=>y.id===i.preset||Object.hasOwn(y.selections??{},i.preset));g||j("Unknown map link."),i={...g.config,...g.selections?.[i.preset]?{inspect:g.selections[i.preset]}:{},...i}}let t=ft(i.projections,e),o=new Set([...e.models.map(g=>g.id),...t.map(g=>g.id)]),s=new Set(e.families.map(g=>g.id));for(let g of t)for(let y of Object.keys(g.metrics))e.metrics.some(R=>R.id===y)||j(`Unknown projection metric: ${y}.`);for(let g of t)g.baseline&&!e.models.some(y=>y.id===g.baseline)&&j(`Unknown measured projection baseline: ${g.baseline}.`);for(let g of t)g.family&&!s.has(g.family)&&j(`Unknown projection family: ${g.family}.`);let a=i.focus||null,r=i.family||null;a&&r&&j("Choose a model focus or a family, not both."),a&&!o.has(a)&&j(`Unknown model: ${a}.`),r&&!s.has(r)&&j(`Unknown family: ${r}.`);let n=ee(i.models),c=ee(i.exclude),d=ee(i.baselines);for(let g of[...n,...c,...d])o.has(g)||j(`Unknown model: ${g}.`);d.some(g=>!e.models.some(y=>y.id===g))&&j("Baseline models must have measured results.");let l=J(i.compare,["all","competitive","selected"],i.models!==void 0?"selected":a||r?"competitive":"all","comparison");l!=="selected"&&i.models!==void 0&&j('Explicit model IDs require compare="selected".'),l==="competitive"&&!a&&!r&&j("Choose a model or family to compare similar scores.");let v=J(i.metric,["overall","general","visual"],"overall","comparison metric"),b={x:i.axes?.x??"general",y:i.axes?.y??"visual"};for(let g of Object.values(b))e.metrics.some(y=>y.id===g)||j(`Unknown axis metric: ${g}.`);b.x===b.y&&j("Choose different metrics for the axes.");let w=i.competitors??$e;(!Number.isInteger(w)||w<1||w>20)&&j("Comparison model count must be between 1 and 20.");let S=null;if(i.page){let g;try{g=new URL(i.page,ge)}catch{j("Invalid linked page.")}g.origin===ge&&g.pathname!=="/"&&(g.pathname=g.pathname.replace(/\/+$/,""));let y=new URL(g);y.hash="",(e.pages??[]).some(R=>R===y.href||R.replace(/\/$/,"")===y.href)||j("The linked page is not in the public catalog."),S=g.href}let A=null;if(i.domains){A={};for(let g of["x","y"]){let y=i.domains[g];(!Array.isArray(y)||y.length!==2||y.some(R=>G(R)===null)||y[0]>=y[1])&&j("Axis domains need increasing bounds from 0 to 100."),A[g]=[...y]}}let T=i.search==null?"":(String(i.search).trim()?X(String(i.search),500,"search"):"").split(",").map(g=>g.trim()).filter(Boolean).join(", ");return{...i.labelSearch?{labelSearch:String(i.labelSearch).slice(0,500)}:{},routers:J(i.routers,["all","hide"],"hide","router filter"),type:J(i.type,dt,"all","model type"),search:T,focus:a,family:r,compare:l,metric:v,models:n,exclude:c,baselines:d,axes:b,competitors:w,projections:t,domains:A,page:S,range:J(i.range,["auto","full","detail"],"auto","range"),theme:J(i.theme,["light","dark"],"light","theme"),presentation:J(i.presentation,["overview","embed","explorer"],a||r?"embed":"overview","presentation"),inspect:i.inspect??null,title:i.title?X(i.title,110,"title"):null,subtitle:i.subtitle?X(i.subtitle,180,"subtitle"):null}}function Ue(i,e){let t=Math.max(0,Math.min(...i)-3),o=Math.min(100,Math.max(...i)+3),s=[];for(let a=0;a<=100-e;a+=5)a<=t&&a+e>=o&&s.push(a);return s.length?(s.sort((a,r)=>Math.abs(a+e/2-(t+o)/2)-Math.abs(r+e/2-(t+o)/2)||a-r),[s[0],s[0]+e]):null}function bt(i,e,t=""){let o=Te(t);if(!o.length)return!0;let s=e.company?.id?i.models.filter(n=>n.company?.id===e.company.id).flatMap(n=>[n.company.name,n.company.sourceName]):[],a=i.families.filter(n=>n.id===e.family||n.members.some(c=>c.benchmarkModelId===e.id)),r=[e.id,e.name,e.stealthName,e.revealedName,e.group,typeof e.company=="string"?e.company:e.company?.name,e.company?.id,e.company?.sourceName,...s,...e.aliases??[],...a.flatMap(n=>[n.id,n.name])];return qe(o,r)}function pe(i,e={}){Se(i);let t=He(e,i),o=t.metric,s=(f,M)=>o==="overall"?we(f,M):(M.metrics[o]??-1/0)-(f.metrics[o]??-1/0)||we(f,M),a=t.projections.map(f=>({...f,projected:!0,position:null,total:null,href:null,metrics:Object.fromEntries(Object.entries(f.metrics).map(([M,z])=>[M,z.value])),ranges:f.metrics})),r=i.models.map(f=>Ne(f,t.search||t.labelSearch)),n=[...r,...a],c=new Map(n.map(f=>[f.id,f])),d=i.families.find(f=>f.id===t.family),l=t.focus?[c.get(t.focus)]:d?[...d.members.flatMap(f=>c.has(f.benchmarkModelId)?[c.get(f.benchmarkModelId)]:[]),...a.filter(f=>f.family===d.id)]:[],v=new Set(l.map(f=>f.id)),b=new Set(t.exclude),w=new Set([...t.baselines,...l.filter(f=>f.projected&&f.baseline).map(f=>f.baseline)]),S=r.filter(f=>w.has(f.id)&&!b.has(f.id)),A=l.filter(f=>Number.isFinite(f.metrics[o])),T=!A.length&&l.some(f=>f.projected)&&S.length>0,g;if(t.compare==="all")g=n;else if(t.compare==="selected")g=[...l,...t.models.map(f=>c.get(f)),...a];else{let f=(T?S:A).flatMap(M=>Number.isFinite(M.metrics[o])?n.filter(z=>!z.projected&&!v.has(z.id)&&z.id!==M.id&&!w.has(z.id)&&!b.has(z.id)&&Z(z,t.routers)&&ve(z,t.type)&&Number.isFinite(z.metrics[o])).sort((z,K)=>Math.abs(z.metrics[o]-M.metrics[o])-Math.abs(K.metrics[o]-M.metrics[o])||we(z,K)).slice(0,t.competitors):[]);g=[...l,...S,...f,...a]}g=g.filter(f=>Z(f,t.routers)&&ve(f,t.type)&&bt(i,f,t.search));let y=l.filter(f=>g.some(M=>M.id===f.id)),R=y.map(f=>f.id),C=!!(t.focus&&(!Z(c.get(t.focus),t.routers)||!ve(c.get(t.focus),t.type)));g=[...new Map(g.filter(f=>!b.has(f.id)||v.has(f.id)).map(f=>[f.id,f])).values()].sort(s);let L=g.filter(f=>Number.isFinite(f.metrics[t.axes.x])&&Number.isFinite(f.metrics[t.axes.y])),m=t.domains?"custom":t.range==="auto"?"detail":t.range,$=t.domains??{x:[0,100],y:[0,100]};if(m==="detail"&&L.length){let f=M=>L.flatMap(z=>{let K=z.ranges?.[t.axes[M]];return K?.lower!==void 0?[K.lower,K.upper]:[z.metrics[t.axes[M]]]});for(let M of[20,30,40,50,60,80,100]){let z=Ue(f("x"),M),K=Ue(f("y"),M);if(z&&K){$={x:z,y:K};break}}}let p=!1,k=t.inspect;k&&!g.some(f=>f.id===k)&&(t.compare!=="competitive"&&!t.search&&t.routers!=="hide"&&t.type==="all"&&j("The inspected model is not in this comparison."),k=null,p=!0),k=k??(g.some(f=>f.id===t.focus)?t.focus:null)??(d?[...l].filter(f=>L.some(M=>M.id===f.id)).sort(s)[0]?.id??L.find(f=>!f.projected)?.id:null)??null;let u=L.filter(f=>f.metrics[t.axes.x]<$.x[0]||f.metrics[t.axes.x]>$.x[1]||f.metrics[t.axes.y]<$.y[0]||f.metrics[t.axes.y]>$.y[1]).length,_=i.metrics.find(f=>f.id===t.axes.x),q=i.metrics.find(f=>f.id===t.axes.y),[P,O]=[_.name.split(" "),q.name.split(" ")],I=P.length>1&&O.length>1&&P.at(-1)===O.at(-1),N=t.title||c.get(t.focus)?.name||d?.name||`${I?P.slice(0,-1).join(" "):_.name} vs. ${q.name}`,D=i.metrics.find(f=>f.id===o),B=t.compare==="competitive"&&T?"Peers of the measured baselines"+(o==="overall"?"":" \xB7 "+D.name):t.subtitle||(t.compare==="competitive"?"Similar "+(o==="overall"?"StealthMark":D.name)+" scores":(t.compare==="selected"?"Selected models":"All models")+(o==="overall"?"":" \xB7 "+D.name)),U=i.presets?.find(f=>{if((f.config.focus||null)!==t.focus||(f.config.family||null)!==t.family)return!1;let M=He(f.config,i);return Object.keys(t).filter(z=>!["inspect","presentation","labelSearch"].includes(z)).every(z=>JSON.stringify(t[z])===JSON.stringify(M[z]))}),V=U&&Object.entries(U.selections??{}).find(([,f])=>f===k)?.[0],H=U?{slug:V??U.id,inspect:V||k===(U.config.inspect??U.config.focus??null)?null:k}:null;return{config:{...t,inspect:k},sharePreset:H,revision:i.revision,rendererRevision:i.rendererRevision??"map-1",subject:N,caption:B+(t.type==="all"?"":" \xB7 "+{open:"Open models",local:"Local models",proprietary:"Proprietary",stealth:"Stealth models"}[t.type])+(t.routers==="hide"?" \xB7 Confirmed routers hidden":""),focusHidden:C,family:d,anchors:y,anchorIds:R,baselines:g.filter(f=>w.has(f.id)),cohort:g,plotted:L,outsideCount:u,inspect:k,inspectionChanged:p,domains:$,range:m,metricX:_,metricY:q,comparisonMetric:D}}function xe(i){let e=i.config,t=i.cohort.find(n=>n.id===e.focus),s=i.cohort.find(n=>n.id===i.inspect)??t??i.cohort.find(n=>!n.projected&&Number.isFinite(n.metrics[e.metric]));if(!s)return{primary:null,reference:null};let a=i.cohort.filter(n=>!n.projected),r=i.cohort.find(n=>n.id===s.baseline)??(t&&s.id!==t.id?t:[...i.baselines,...a].find(n=>n.id!==s.id&&Number.isFinite(n.metrics.overall)));return{primary:s,reference:r??null}}function We(i,e,t="overall"){if(e.projected||!Number.isFinite(e.metrics[t]))return null;if(t==="overall")return e.position?{position:e.position,total:e.total}:null;let o=i.models.filter(s=>Number.isFinite(s.metrics[t]));return{position:1+o.filter(s=>s.metrics[t]>e.metrics[t]).length,total:o.length}}function Ye(i,e){return e.config.metric==="overall"?[e.metricX,e.metricY]:["overall",e.config.metric==="general"?"visual":"general"].map(t=>i.metrics.find(o=>o.id===t))}function te(i,e=ge,{image:t=!1,expectedDataRevision:o}={}){let s=i.config,a=new URL(t?De:fe,e),r=a.searchParams;if(i.sharePreset)return a.pathname=fe+"/"+i.sharePreset.slug+(t?"/social.png":""),i.sharePreset.inspect&&r.set("inspect",i.sharePreset.inspect),t&&(r.set("v",i.revision+"."+i.rendererRevision),o&&r.set("expectedDataRevision",o)),a;for(let n of["focus","family"])s[n]&&r.set(n,s[n]);(s.compare!=="all"||s.focus||s.family)&&r.set("compare",s.compare),s.compare==="selected"&&s.models.length&&r.set("models",s.models.join(",")),s.metric!=="overall"&&r.set("metric",s.metric),s.search&&r.set("search",s.search),s.routers==="all"&&r.set("routers","all"),s.type!=="all"&&r.set("type",s.type),s.exclude.length&&r.set("exclude",s.exclude.join(",")),s.baselines.length&&r.set("baselines",s.baselines.join(",")),s.inspect&&r.set("inspect",s.inspect),s.range!=="auto"&&r.set("range",s.range),s.domains&&r.set("domains",JSON.stringify(s.domains)),s.theme!=="light"&&r.set("theme",s.theme),(s.axes.x!=="general"||s.axes.y!=="visual")&&(r.set("x",s.axes.x),r.set("y",s.axes.y)),s.competitors!==$e&&r.set("competitors",String(s.competitors));for(let n of["title","subtitle","page","search"])s[n]&&r.set(n,s[n]);return s.projections.length&&r.set("projections",gt(Be(s.projections))),t&&(r.set("v",i.revision+"."+i.rendererRevision),o&&r.set("expectedDataRevision",o)),a.pathname.length+a.search.length>6e3&&j("This configuration is too large for a share link. Reduce projection notes or the comparison set."),a}function Ke(i){let e=i.anchors.find(t=>t.id===i.config.focus&&t.href)??(i.config.inspect?i.cohort.find(t=>t.id===i.config.inspect&&t.href):null);return e?{href:e.href,label:`View ${e.name}\u2019s full benchmark results`}:null}function Ze(i){let e=i.config,t=[];for(let o of["focus","family","compare","inspect","range","theme","presentation","title","subtitle","page","search"])e[o]!==null&&e[o]!==void 0&&e[o]!==""&&!(["theme"].includes(o)&&e[o]==="light")&&t.push(`${o}="${h(e[o])}"`);return e.routers==="all"&&t.push('routers="all"'),e.type!=="all"&&t.push(`type="${e.type}"`),e.metric!=="overall"&&t.push(`metric="${e.metric}"`),e.models.length&&t.push(`models="${h(e.models.join(","))}"`),e.baselines.length&&t.push(`baselines="${h(e.baselines.join(","))}"`),e.exclude.length&&t.push(`exclude="${h(e.exclude.join(","))}"`),t.push(`x-axis="${h(e.axes.x)}"`,`y-axis="${h(e.axes.y)}"`),e.competitors!==$e&&t.push(`competitors="${e.competitors}"`),e.projections.length&&t.push(`projections="${h(JSON.stringify(Be(e.projections)))}"`),e.domains&&t.push(`domains="${h(JSON.stringify(e.domains))}"`),`${h(i.subject)} on StealthMark