@wral/hsot-data 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,15 +1,15 @@
1
- const j = globalThis, it = j.ShadowRoot && (j.ShadyCSS === void 0 || j.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, nt = /* @__PURE__ */ Symbol(), gt = /* @__PURE__ */ new WeakMap();
2
- let Pt = class {
1
+ const j = globalThis, nt = j.ShadowRoot && (j.ShadyCSS === void 0 || j.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, lt = /* @__PURE__ */ Symbol(), vt = /* @__PURE__ */ new WeakMap();
2
+ let Dt = class {
3
3
  constructor(t, e, s) {
4
- if (this._$cssResult$ = !0, s !== nt) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
4
+ if (this._$cssResult$ = !0, s !== lt) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
5
5
  this.cssText = t, this.t = e;
6
6
  }
7
7
  get styleSheet() {
8
8
  let t = this.o;
9
9
  const e = this.t;
10
- if (it && t === void 0) {
10
+ if (nt && t === void 0) {
11
11
  const s = e !== void 0 && e.length === 1;
12
- s && (t = gt.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && gt.set(e, t));
12
+ s && (t = vt.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && vt.set(e, t));
13
13
  }
14
14
  return t;
15
15
  }
@@ -17,28 +17,28 @@ let Pt = class {
17
17
  return this.cssText;
18
18
  }
19
19
  };
20
- const Vt = (r) => new Pt(typeof r == "string" ? r : r + "", void 0, nt), w = (r, ...t) => {
20
+ const qt = (r) => new Dt(typeof r == "string" ? r : r + "", void 0, lt), w = (r, ...t) => {
21
21
  const e = r.length === 1 ? r[0] : t.reduce((s, a, o) => s + ((i) => {
22
22
  if (i._$cssResult$ === !0) return i.cssText;
23
23
  if (typeof i == "number") return i;
24
24
  throw Error("Value passed to 'css' function must be a 'css' function result: " + i + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
25
25
  })(a) + r[o + 1], r[0]);
26
- return new Pt(e, r, nt);
27
- }, qt = (r, t) => {
28
- if (it) r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
26
+ return new Dt(e, r, lt);
27
+ }, Yt = (r, t) => {
28
+ if (nt) r.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
29
29
  else for (const e of t) {
30
30
  const s = document.createElement("style"), a = j.litNonce;
31
31
  a !== void 0 && s.setAttribute("nonce", a), s.textContent = e.cssText, r.appendChild(s);
32
32
  }
33
- }, $t = it ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
33
+ }, $t = nt ? (r) => r : (r) => r instanceof CSSStyleSheet ? ((t) => {
34
34
  let e = "";
35
35
  for (const s of t.cssRules) e += s.cssText;
36
- return Vt(e);
36
+ return qt(e);
37
37
  })(r) : r;
38
- const { is: Yt, defineProperty: Kt, getOwnPropertyDescriptor: Zt, getOwnPropertyNames: Jt, getOwnPropertySymbols: Qt, getPrototypeOf: Xt } = Object, Y = globalThis, vt = Y.trustedTypes, te = vt ? vt.emptyScript : "", ee = Y.reactiveElementPolyfillSupport, D = (r, t) => r, at = { toAttribute(r, t) {
38
+ const { is: Kt, defineProperty: Qt, getOwnPropertyDescriptor: Zt, getOwnPropertyNames: Jt, getOwnPropertySymbols: Xt, getPrototypeOf: te } = Object, K = globalThis, yt = K.trustedTypes, ee = yt ? yt.emptyScript : "", se = K.reactiveElementPolyfillSupport, D = (r, t) => r, rt = { toAttribute(r, t) {
39
39
  switch (t) {
40
40
  case Boolean:
41
- r = r ? te : null;
41
+ r = r ? ee : null;
42
42
  break;
43
43
  case Object:
44
44
  case Array:
@@ -63,8 +63,8 @@ const { is: Yt, defineProperty: Kt, getOwnPropertyDescriptor: Zt, getOwnProperty
63
63
  }
64
64
  }
65
65
  return e;
66
- } }, Dt = (r, t) => !Yt(r, t), yt = { attribute: !0, type: String, converter: at, reflect: !1, useDefault: !1, hasChanged: Dt };
67
- Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), Y.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
66
+ } }, Rt = (r, t) => !Kt(r, t), bt = { attribute: !0, type: String, converter: rt, reflect: !1, useDefault: !1, hasChanged: Rt };
67
+ Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), K.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
68
68
  let T = class extends HTMLElement {
69
69
  static addInitializer(t) {
70
70
  this._$Ei(), (this.l ??= []).push(t);
@@ -72,10 +72,10 @@ let T = class extends HTMLElement {
72
72
  static get observedAttributes() {
73
73
  return this.finalize(), this._$Eh && [...this._$Eh.keys()];
74
74
  }
75
- static createProperty(t, e = yt) {
75
+ static createProperty(t, e = bt) {
76
76
  if (e.state && (e.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(t) && ((e = Object.create(e)).wrapped = !0), this.elementProperties.set(t, e), !e.noAccessor) {
77
77
  const s = /* @__PURE__ */ Symbol(), a = this.getPropertyDescriptor(t, s, e);
78
- a !== void 0 && Kt(this.prototype, t, a);
78
+ a !== void 0 && Qt(this.prototype, t, a);
79
79
  }
80
80
  }
81
81
  static getPropertyDescriptor(t, e, s) {
@@ -90,17 +90,17 @@ let T = class extends HTMLElement {
90
90
  }, configurable: !0, enumerable: !0 };
91
91
  }
92
92
  static getPropertyOptions(t) {
93
- return this.elementProperties.get(t) ?? yt;
93
+ return this.elementProperties.get(t) ?? bt;
94
94
  }
95
95
  static _$Ei() {
96
96
  if (this.hasOwnProperty(D("elementProperties"))) return;
97
- const t = Xt(this);
97
+ const t = te(this);
98
98
  t.finalize(), t.l !== void 0 && (this.l = [...t.l]), this.elementProperties = new Map(t.elementProperties);
99
99
  }
100
100
  static finalize() {
101
101
  if (this.hasOwnProperty(D("finalized"))) return;
102
102
  if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(D("properties"))) {
103
- const e = this.properties, s = [...Jt(e), ...Qt(e)];
103
+ const e = this.properties, s = [...Jt(e), ...Xt(e)];
104
104
  for (const a of s) this.createProperty(a, e[a]);
105
105
  }
106
106
  const t = this[Symbol.metadata];
@@ -146,7 +146,7 @@ let T = class extends HTMLElement {
146
146
  }
147
147
  createRenderRoot() {
148
148
  const t = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
149
- return qt(t, this.constructor.elementStyles), t;
149
+ return Yt(t, this.constructor.elementStyles), t;
150
150
  }
151
151
  connectedCallback() {
152
152
  this.renderRoot ??= this.createRenderRoot(), this.enableUpdating(!0), this._$EO?.forEach((t) => t.hostConnected?.());
@@ -162,14 +162,14 @@ let T = class extends HTMLElement {
162
162
  _$ET(t, e) {
163
163
  const s = this.constructor.elementProperties.get(t), a = this.constructor._$Eu(t, s);
164
164
  if (a !== void 0 && s.reflect === !0) {
165
- const o = (s.converter?.toAttribute !== void 0 ? s.converter : at).toAttribute(e, s.type);
165
+ const o = (s.converter?.toAttribute !== void 0 ? s.converter : rt).toAttribute(e, s.type);
166
166
  this._$Em = t, o == null ? this.removeAttribute(a) : this.setAttribute(a, o), this._$Em = null;
167
167
  }
168
168
  }
169
169
  _$AK(t, e) {
170
170
  const s = this.constructor, a = s._$Eh.get(t);
171
171
  if (a !== void 0 && this._$Em !== a) {
172
- const o = s.getPropertyOptions(a), i = typeof o.converter == "function" ? { fromAttribute: o.converter } : o.converter?.fromAttribute !== void 0 ? o.converter : at;
172
+ const o = s.getPropertyOptions(a), i = typeof o.converter == "function" ? { fromAttribute: o.converter } : o.converter?.fromAttribute !== void 0 ? o.converter : rt;
173
173
  this._$Em = a;
174
174
  const n = i.fromAttribute(e, o.type);
175
175
  this[a] = n ?? this._$Ej?.get(a) ?? n, this._$Em = null;
@@ -178,7 +178,7 @@ let T = class extends HTMLElement {
178
178
  requestUpdate(t, e, s, a = !1, o) {
179
179
  if (t !== void 0) {
180
180
  const i = this.constructor;
181
- if (a === !1 && (o = this[t]), s ??= i.getPropertyOptions(t), !((s.hasChanged ?? Dt)(o, e) || s.useDefault && s.reflect && o === this._$Ej?.get(t) && !this.hasAttribute(i._$Eu(t, s)))) return;
181
+ if (a === !1 && (o = this[t]), s ??= i.getPropertyOptions(t), !((s.hasChanged ?? Rt)(o, e) || s.useDefault && s.reflect && o === this._$Ej?.get(t) && !this.hasAttribute(i._$Eu(t, s)))) return;
182
182
  this.C(t, e, s);
183
183
  }
184
184
  this.isUpdatePending === !1 && (this._$ES = this._$EP());
@@ -246,54 +246,54 @@ let T = class extends HTMLElement {
246
246
  firstUpdated(t) {
247
247
  }
248
248
  };
249
- T.elementStyles = [], T.shadowRootOptions = { mode: "open" }, T[D("elementProperties")] = /* @__PURE__ */ new Map(), T[D("finalized")] = /* @__PURE__ */ new Map(), ee?.({ ReactiveElement: T }), (Y.reactiveElementVersions ??= []).push("2.1.2");
250
- const lt = globalThis, bt = (r) => r, G = lt.trustedTypes, wt = G ? G.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, Rt = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, Bt = "?" + _, se = `<${Bt}>`, A = document, B = () => A.createComment(""), z = (r) => r === null || typeof r != "object" && typeof r != "function", ct = Array.isArray, ae = (r) => ct(r) || typeof r?.[Symbol.iterator] == "function", et = `[
251
- \f\r]`, E = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, xt = /-->/g, _t = />/g, k = RegExp(`>|${et}(?:([^\\s"'>=/]+)(${et}*=${et}*(?:[^
252
- \f\r"'\`<>=]|("|')|))|$)`, "g"), kt = /'/g, St = /"/g, zt = /^(?:script|style|textarea|title)$/i, Ot = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), d = Ot(1), At = Ot(2), I = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), Tt = /* @__PURE__ */ new WeakMap(), S = A.createTreeWalker(A, 129);
253
- function Nt(r, t) {
254
- if (!ct(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
255
- return wt !== void 0 ? wt.createHTML(t) : t;
249
+ T.elementStyles = [], T.shadowRootOptions = { mode: "open" }, T[D("elementProperties")] = /* @__PURE__ */ new Map(), T[D("finalized")] = /* @__PURE__ */ new Map(), se?.({ ReactiveElement: T }), (K.reactiveElementVersions ??= []).push("2.1.2");
250
+ const ct = globalThis, wt = (r) => r, W = ct.trustedTypes, xt = W ? W.createPolicy("lit-html", { createHTML: (r) => r }) : void 0, zt = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, Bt = "?" + _, ae = `<${Bt}>`, A = document, z = () => A.createComment(""), B = (r) => r === null || typeof r != "object" && typeof r != "function", dt = Array.isArray, re = (r) => dt(r) || typeof r?.[Symbol.iterator] == "function", st = `[
251
+ \f\r]`, E = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _t = /-->/g, kt = />/g, k = RegExp(`>|${st}(?:([^\\s"'>=/]+)(${st}*=${st}*(?:[^
252
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), St = /'/g, At = /"/g, Ut = /^(?:script|style|textarea|title)$/i, Ot = (r) => (t, ...e) => ({ _$litType$: r, strings: t, values: e }), d = Ot(1), Tt = Ot(2), I = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), It = /* @__PURE__ */ new WeakMap(), S = A.createTreeWalker(A, 129);
253
+ function Ft(r, t) {
254
+ if (!dt(r) || !r.hasOwnProperty("raw")) throw Error("invalid template strings array");
255
+ return xt !== void 0 ? xt.createHTML(t) : t;
256
256
  }
257
- const re = (r, t) => {
257
+ const oe = (r, t) => {
258
258
  const e = r.length - 1, s = [];
259
259
  let a, o = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", i = E;
260
260
  for (let n = 0; n < e; n++) {
261
- const l = r[n];
262
- let p, h, c = -1, f = 0;
263
- for (; f < l.length && (i.lastIndex = f, h = i.exec(l), h !== null); ) f = i.lastIndex, i === E ? h[1] === "!--" ? i = xt : h[1] !== void 0 ? i = _t : h[2] !== void 0 ? (zt.test(h[2]) && (a = RegExp("</" + h[2], "g")), i = k) : h[3] !== void 0 && (i = k) : i === k ? h[0] === ">" ? (i = a ?? E, c = -1) : h[1] === void 0 ? c = -2 : (c = i.lastIndex - h[2].length, p = h[1], i = h[3] === void 0 ? k : h[3] === '"' ? St : kt) : i === St || i === kt ? i = k : i === xt || i === _t ? i = E : (i = k, a = void 0);
261
+ const c = r[n];
262
+ let p, l, h = -1, f = 0;
263
+ for (; f < c.length && (i.lastIndex = f, l = i.exec(c), l !== null); ) f = i.lastIndex, i === E ? l[1] === "!--" ? i = _t : l[1] !== void 0 ? i = kt : l[2] !== void 0 ? (Ut.test(l[2]) && (a = RegExp("</" + l[2], "g")), i = k) : l[3] !== void 0 && (i = k) : i === k ? l[0] === ">" ? (i = a ?? E, h = -1) : l[1] === void 0 ? h = -2 : (h = i.lastIndex - l[2].length, p = l[1], i = l[3] === void 0 ? k : l[3] === '"' ? At : St) : i === At || i === St ? i = k : i === _t || i === kt ? i = E : (i = k, a = void 0);
264
264
  const u = i === k && r[n + 1].startsWith("/>") ? " " : "";
265
- o += i === E ? l + se : c >= 0 ? (s.push(p), l.slice(0, c) + Rt + l.slice(c) + _ + u) : l + _ + (c === -2 ? n : u);
265
+ o += i === E ? c + ae : h >= 0 ? (s.push(p), c.slice(0, h) + zt + c.slice(h) + _ + u) : c + _ + (h === -2 ? n : u);
266
266
  }
267
- return [Nt(r, o + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
267
+ return [Ft(r, o + (r[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
268
268
  };
269
- class O {
269
+ class U {
270
270
  constructor({ strings: t, _$litType$: e }, s) {
271
271
  let a;
272
272
  this.parts = [];
273
273
  let o = 0, i = 0;
274
- const n = t.length - 1, l = this.parts, [p, h] = re(t, e);
275
- if (this.el = O.createElement(p, s), S.currentNode = this.el.content, e === 2 || e === 3) {
276
- const c = this.el.content.firstChild;
277
- c.replaceWith(...c.childNodes);
274
+ const n = t.length - 1, c = this.parts, [p, l] = oe(t, e);
275
+ if (this.el = U.createElement(p, s), S.currentNode = this.el.content, e === 2 || e === 3) {
276
+ const h = this.el.content.firstChild;
277
+ h.replaceWith(...h.childNodes);
278
278
  }
279
- for (; (a = S.nextNode()) !== null && l.length < n; ) {
279
+ for (; (a = S.nextNode()) !== null && c.length < n; ) {
280
280
  if (a.nodeType === 1) {
281
- if (a.hasAttributes()) for (const c of a.getAttributeNames()) if (c.endsWith(Rt)) {
282
- const f = h[i++], u = a.getAttribute(c).split(_), v = /([.?@])?(.*)/.exec(f);
283
- l.push({ type: 1, index: o, name: v[2], strings: u, ctor: v[1] === "." ? ie : v[1] === "?" ? ne : v[1] === "@" ? le : K }), a.removeAttribute(c);
284
- } else c.startsWith(_) && (l.push({ type: 6, index: o }), a.removeAttribute(c));
285
- if (zt.test(a.tagName)) {
286
- const c = a.textContent.split(_), f = c.length - 1;
281
+ if (a.hasAttributes()) for (const h of a.getAttributeNames()) if (h.endsWith(zt)) {
282
+ const f = l[i++], u = a.getAttribute(h).split(_), $ = /([.?@])?(.*)/.exec(f);
283
+ c.push({ type: 1, index: o, name: $[2], strings: u, ctor: $[1] === "." ? ne : $[1] === "?" ? le : $[1] === "@" ? ce : Q }), a.removeAttribute(h);
284
+ } else h.startsWith(_) && (c.push({ type: 6, index: o }), a.removeAttribute(h));
285
+ if (Ut.test(a.tagName)) {
286
+ const h = a.textContent.split(_), f = h.length - 1;
287
287
  if (f > 0) {
288
- a.textContent = G ? G.emptyScript : "";
289
- for (let u = 0; u < f; u++) a.append(c[u], B()), S.nextNode(), l.push({ type: 2, index: ++o });
290
- a.append(c[f], B());
288
+ a.textContent = W ? W.emptyScript : "";
289
+ for (let u = 0; u < f; u++) a.append(h[u], z()), S.nextNode(), c.push({ type: 2, index: ++o });
290
+ a.append(h[f], z());
291
291
  }
292
292
  }
293
- } else if (a.nodeType === 8) if (a.data === Bt) l.push({ type: 2, index: o });
293
+ } else if (a.nodeType === 8) if (a.data === Bt) c.push({ type: 2, index: o });
294
294
  else {
295
- let c = -1;
296
- for (; (c = a.data.indexOf(_, c + 1)) !== -1; ) l.push({ type: 7, index: o }), c += _.length - 1;
295
+ let h = -1;
296
+ for (; (h = a.data.indexOf(_, h + 1)) !== -1; ) c.push({ type: 7, index: o }), h += _.length - 1;
297
297
  }
298
298
  o++;
299
299
  }
@@ -306,10 +306,10 @@ class O {
306
306
  function C(r, t, e = r, s) {
307
307
  if (t === I) return t;
308
308
  let a = s !== void 0 ? e._$Co?.[s] : e._$Cl;
309
- const o = z(t) ? void 0 : t._$litDirective$;
309
+ const o = B(t) ? void 0 : t._$litDirective$;
310
310
  return a?.constructor !== o && (a?._$AO?.(!1), o === void 0 ? a = void 0 : (a = new o(r), a._$AT(r, e, s)), s !== void 0 ? (e._$Co ??= [])[s] = a : e._$Cl = a), a !== void 0 && (t = C(r, a._$AS(r, t.values), a, s)), t;
311
311
  }
312
- class oe {
312
+ class ie {
313
313
  constructor(t, e) {
314
314
  this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
315
315
  }
@@ -322,13 +322,13 @@ class oe {
322
322
  u(t) {
323
323
  const { el: { content: e }, parts: s } = this._$AD, a = (t?.creationScope ?? A).importNode(e, !0);
324
324
  S.currentNode = a;
325
- let o = S.nextNode(), i = 0, n = 0, l = s[0];
326
- for (; l !== void 0; ) {
327
- if (i === l.index) {
325
+ let o = S.nextNode(), i = 0, n = 0, c = s[0];
326
+ for (; c !== void 0; ) {
327
+ if (i === c.index) {
328
328
  let p;
329
- l.type === 2 ? p = new U(o, o.nextSibling, this, t) : l.type === 1 ? p = new l.ctor(o, l.name, l.strings, this, t) : l.type === 6 && (p = new ce(o, this, t)), this._$AV.push(p), l = s[++n];
329
+ c.type === 2 ? p = new N(o, o.nextSibling, this, t) : c.type === 1 ? p = new c.ctor(o, c.name, c.strings, this, t) : c.type === 6 && (p = new de(o, this, t)), this._$AV.push(p), c = s[++n];
330
330
  }
331
- i !== l?.index && (o = S.nextNode(), i++);
331
+ i !== c?.index && (o = S.nextNode(), i++);
332
332
  }
333
333
  return S.currentNode = A, a;
334
334
  }
@@ -337,7 +337,7 @@ class oe {
337
337
  for (const s of this._$AV) s !== void 0 && (s.strings !== void 0 ? (s._$AI(t, s, e), e += s.strings.length - 2) : s._$AI(t[e])), e++;
338
338
  }
339
339
  }
340
- class U {
340
+ class N {
341
341
  get _$AU() {
342
342
  return this._$AM?._$AU ?? this._$Cv;
343
343
  }
@@ -356,7 +356,7 @@ class U {
356
356
  return this._$AB;
357
357
  }
358
358
  _$AI(t, e = this) {
359
- t = C(this, t, e), z(t) ? t === m || t == null || t === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : t !== this._$AH && t !== I && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : ae(t) ? this.k(t) : this._(t);
359
+ t = C(this, t, e), B(t) ? t === m || t == null || t === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : t !== this._$AH && t !== I && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : re(t) ? this.k(t) : this._(t);
360
360
  }
361
361
  O(t) {
362
362
  return this._$AA.parentNode.insertBefore(t, this._$AB);
@@ -365,38 +365,38 @@ class U {
365
365
  this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
366
366
  }
367
367
  _(t) {
368
- this._$AH !== m && z(this._$AH) ? this._$AA.nextSibling.data = t : this.T(A.createTextNode(t)), this._$AH = t;
368
+ this._$AH !== m && B(this._$AH) ? this._$AA.nextSibling.data = t : this.T(A.createTextNode(t)), this._$AH = t;
369
369
  }
370
370
  $(t) {
371
- const { values: e, _$litType$: s } = t, a = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = O.createElement(Nt(s.h, s.h[0]), this.options)), s);
371
+ const { values: e, _$litType$: s } = t, a = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = U.createElement(Ft(s.h, s.h[0]), this.options)), s);
372
372
  if (this._$AH?._$AD === a) this._$AH.p(e);
373
373
  else {
374
- const o = new oe(a, this), i = o.u(this.options);
374
+ const o = new ie(a, this), i = o.u(this.options);
375
375
  o.p(e), this.T(i), this._$AH = o;
376
376
  }
377
377
  }
378
378
  _$AC(t) {
379
- let e = Tt.get(t.strings);
380
- return e === void 0 && Tt.set(t.strings, e = new O(t)), e;
379
+ let e = It.get(t.strings);
380
+ return e === void 0 && It.set(t.strings, e = new U(t)), e;
381
381
  }
382
382
  k(t) {
383
- ct(this._$AH) || (this._$AH = [], this._$AR());
383
+ dt(this._$AH) || (this._$AH = [], this._$AR());
384
384
  const e = this._$AH;
385
385
  let s, a = 0;
386
- for (const o of t) a === e.length ? e.push(s = new U(this.O(B()), this.O(B()), this, this.options)) : s = e[a], s._$AI(o), a++;
386
+ for (const o of t) a === e.length ? e.push(s = new N(this.O(z()), this.O(z()), this, this.options)) : s = e[a], s._$AI(o), a++;
387
387
  a < e.length && (this._$AR(s && s._$AB.nextSibling, a), e.length = a);
388
388
  }
389
389
  _$AR(t = this._$AA.nextSibling, e) {
390
390
  for (this._$AP?.(!1, !0, e); t !== this._$AB; ) {
391
- const s = bt(t).nextSibling;
392
- bt(t).remove(), t = s;
391
+ const s = wt(t).nextSibling;
392
+ wt(t).remove(), t = s;
393
393
  }
394
394
  }
395
395
  setConnected(t) {
396
396
  this._$AM === void 0 && (this._$Cv = t, this._$AP?.(t));
397
397
  }
398
398
  }
399
- class K {
399
+ class Q {
400
400
  get tagName() {
401
401
  return this.element.tagName;
402
402
  }
@@ -409,11 +409,11 @@ class K {
409
409
  _$AI(t, e = this, s, a) {
410
410
  const o = this.strings;
411
411
  let i = !1;
412
- if (o === void 0) t = C(this, t, e, 0), i = !z(t) || t !== this._$AH && t !== I, i && (this._$AH = t);
412
+ if (o === void 0) t = C(this, t, e, 0), i = !B(t) || t !== this._$AH && t !== I, i && (this._$AH = t);
413
413
  else {
414
414
  const n = t;
415
- let l, p;
416
- for (t = o[0], l = 0; l < o.length - 1; l++) p = C(this, n[s + l], e, l), p === I && (p = this._$AH[l]), i ||= !z(p) || p !== this._$AH[l], p === m ? t = m : t !== m && (t += (p ?? "") + o[l + 1]), this._$AH[l] = p;
415
+ let c, p;
416
+ for (t = o[0], c = 0; c < o.length - 1; c++) p = C(this, n[s + c], e, c), p === I && (p = this._$AH[c]), i ||= !B(p) || p !== this._$AH[c], p === m ? t = m : t !== m && (t += (p ?? "") + o[c + 1]), this._$AH[c] = p;
417
417
  }
418
418
  i && !a && this.j(t);
419
419
  }
@@ -421,7 +421,7 @@ class K {
421
421
  t === m ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t ?? "");
422
422
  }
423
423
  }
424
- class ie extends K {
424
+ class ne extends Q {
425
425
  constructor() {
426
426
  super(...arguments), this.type = 3;
427
427
  }
@@ -429,7 +429,7 @@ class ie extends K {
429
429
  this.element[this.name] = t === m ? void 0 : t;
430
430
  }
431
431
  }
432
- class ne extends K {
432
+ class le extends Q {
433
433
  constructor() {
434
434
  super(...arguments), this.type = 4;
435
435
  }
@@ -437,7 +437,7 @@ class ne extends K {
437
437
  this.element.toggleAttribute(this.name, !!t && t !== m);
438
438
  }
439
439
  }
440
- class le extends K {
440
+ class ce extends Q {
441
441
  constructor(t, e, s, a, o) {
442
442
  super(t, e, s, a, o), this.type = 5;
443
443
  }
@@ -450,7 +450,7 @@ class le extends K {
450
450
  typeof this._$AH == "function" ? this._$AH.call(this.options?.host ?? this.element, t) : this._$AH.handleEvent(t);
451
451
  }
452
452
  }
453
- class ce {
453
+ class de {
454
454
  constructor(t, e, s) {
455
455
  this.element = t, this.type = 6, this._$AN = void 0, this._$AM = e, this.options = s;
456
456
  }
@@ -461,18 +461,18 @@ class ce {
461
461
  C(this, t);
462
462
  }
463
463
  }
464
- const de = lt.litHtmlPolyfillSupport;
465
- de?.(O, U), (lt.litHtmlVersions ??= []).push("3.3.3");
466
- const he = (r, t, e) => {
464
+ const he = ct.litHtmlPolyfillSupport;
465
+ he?.(U, N), (ct.litHtmlVersions ??= []).push("3.3.3");
466
+ const pe = (r, t, e) => {
467
467
  const s = e?.renderBefore ?? t;
468
468
  let a = s._$litPart$;
469
469
  if (a === void 0) {
470
470
  const o = e?.renderBefore ?? null;
471
- s._$litPart$ = a = new U(t.insertBefore(B(), o), o, void 0, e ?? {});
471
+ s._$litPart$ = a = new N(t.insertBefore(z(), o), o, void 0, e ?? {});
472
472
  }
473
473
  return a._$AI(r), a;
474
474
  };
475
- const dt = globalThis;
475
+ const ht = globalThis;
476
476
  class R extends T {
477
477
  constructor() {
478
478
  super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
@@ -483,7 +483,7 @@ class R extends T {
483
483
  }
484
484
  update(t) {
485
485
  const e = this.render();
486
- this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = he(e, this.renderRoot, this.renderOptions);
486
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = pe(e, this.renderRoot, this.renderOptions);
487
487
  }
488
488
  connectedCallback() {
489
489
  super.connectedCallback(), this._$Do?.setConnected(!0);
@@ -495,36 +495,36 @@ class R extends T {
495
495
  return I;
496
496
  }
497
497
  }
498
- R._$litElement$ = !0, R.finalized = !0, dt.litElementHydrateSupport?.({ LitElement: R });
499
- const pe = dt.litElementPolyfillSupport;
500
- pe?.({ LitElement: R });
501
- (dt.litElementVersions ??= []).push("4.2.2");
502
- const me = 50;
503
- function fe(r = {}) {
498
+ R._$litElement$ = !0, R.finalized = !0, ht.litElementHydrateSupport?.({ LitElement: R });
499
+ const me = ht.litElementPolyfillSupport;
500
+ me?.({ LitElement: R });
501
+ (ht.litElementVersions ??= []).push("4.2.2");
502
+ const fe = 50;
503
+ function ue(r = {}) {
504
504
  const t = Object.entries(r).filter(([, s]) => s != null && s !== "");
505
505
  if (!t.length) return "";
506
506
  const e = new URLSearchParams();
507
507
  return t.forEach(([s, a]) => e.set(s, String(a))), `?${e.toString()}`;
508
508
  }
509
- function ue({ baseUrl: r, token: t = "", fetchFn: e } = {}) {
509
+ function ge({ baseUrl: r, token: t = "", fetchFn: e } = {}) {
510
510
  if (!r) throw new Error("createClient requires a baseUrl");
511
511
  const s = r.replace(/\/+$/, ""), a = e || ((...n) => fetch(...n));
512
512
  async function o(n) {
513
- const l = { Accept: "application/json" };
514
- t && (l.Authorization = `Bearer ${t}`);
515
- const p = await a(`${s}${n}`, { headers: l });
513
+ const c = { Accept: "application/json" };
514
+ t && (c.Authorization = `Bearer ${t}`);
515
+ const p = await a(`${s}${n}`, { headers: c });
516
516
  if (!p.ok) {
517
- const h = new Error(`api-hsot ${p.status} on ${n}`);
518
- throw h.status = p.status, h;
517
+ const l = new Error(`api-hsot ${p.status} on ${n}`);
518
+ throw l.status = p.status, l;
519
519
  }
520
520
  return p.json();
521
521
  }
522
- async function i(n, l = {}) {
522
+ async function i(n, c = {}) {
523
523
  const p = [];
524
- let h = null;
525
- for (let c = 0; c < me; c += 1) {
526
- const f = fe(h ? { ...l, cursor: h } : l), u = await o(`${n}${f}`);
527
- if (p.push(...u.items || []), h = u.nextCursor || null, !h) break;
524
+ let l = null;
525
+ for (let h = 0; h < fe; h += 1) {
526
+ const f = ue(l ? { ...c, cursor: l } : c), u = await o(`${n}${f}`);
527
+ if (p.push(...u.items || []), l = u.nextCursor || null, !l) break;
528
528
  }
529
529
  return { items: p, total: p.length, nextCursor: null };
530
530
  }
@@ -539,7 +539,7 @@ function ue({ baseUrl: r, token: t = "", fetchFn: e } = {}) {
539
539
  listGames: (n) => i("/games", n),
540
540
  getGame: (n) => o(`/games/${n}`),
541
541
  listTournaments: (n) => i("/tournaments", n),
542
- listSeedings: (n, l) => i(`/tournaments/${n}/seedings`, l),
542
+ listSeedings: (n, c) => i(`/tournaments/${n}/seedings`, c),
543
543
  listRankings: (n) => i("/rankings", n),
544
544
  listSports: () => o("/sports")
545
545
  };
@@ -560,7 +560,7 @@ class b extends R {
560
560
  this._client = t, this.isConnected && this.load();
561
561
  }
562
562
  get client() {
563
- return this._client ? this._client : this.api ? ue({ baseUrl: this.api }) : null;
563
+ return this._client ? this._client : this.api ? ge({ baseUrl: this.api }) : null;
564
564
  }
565
565
  connectedCallback() {
566
566
  super.connectedCallback(), this._setupInterval();
@@ -607,7 +607,7 @@ class b extends R {
607
607
  return d``;
608
608
  }
609
609
  }
610
- const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
610
+ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ve = w`
611
611
  :host {
612
612
  --hsot-red: var(--color-red, #D1232A);
613
613
  --hsot-red-deep: var(--color-red-dark, #951C21);
@@ -661,7 +661,7 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
661
661
  .band nav.tabs a.on { border-bottom-color: var(--hsot-red); }
662
662
  .band nav.tabs span.off { color: var(--hsot-gray-4); cursor: not-allowed; }
663
663
  @media (max-width: 720px) { .band h1, .band h2.bandtitle { font-size: 1.8rem; } }
664
- `, ve = w`
664
+ `, ye = w`
665
665
  .view { max-width: 1366px; margin: 0 auto; padding: 1.25rem; box-sizing: border-box; }
666
666
  .toolbar { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; margin: 0 0 1.1rem; }
667
667
  .toolbar .spacer { flex: 1; }
@@ -704,7 +704,7 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
704
704
  .error { padding: 1.2rem 1rem; color: var(--hsot-red-deep); font-size: 0.9rem; }
705
705
  .note { font-size: 0.8125rem; color: var(--hsot-gray-5); margin: 0.6rem 0 0; }
706
706
  .loading { padding: 1.2rem; color: var(--hsot-gray-5); font-family: var(--hsot-heading-font); }
707
- `, ye = w`
707
+ `, be = w`
708
708
  .pill {
709
709
  display: inline-block; font-family: var(--hsot-heading-font); font-weight: 700;
710
710
  font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.04em;
@@ -719,7 +719,7 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
719
719
  .pill.champ { background: var(--hsot-straw); color: #6b5900; }
720
720
  @keyframes hsot-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }
721
721
  @media (prefers-reduced-motion: reduce) { .pill.live { animation: none; } }
722
- `, be = w`
722
+ `, we = w`
723
723
  .tablewrap { overflow-x: auto; }
724
724
  table.data { font-family: var(--hsot-heading-font); font-size: 14px; border-collapse: collapse; width: 100%; }
725
725
  table.data th {
@@ -737,13 +737,19 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
737
737
  table.data tbody tr.rowlink:hover { background: var(--hsot-gray-1); }
738
738
  table.data td.teamcell a { color: inherit; text-decoration: none; font-weight: 500; }
739
739
  table.data td.teamcell a:hover { text-decoration: underline; }
740
- `, we = w`
740
+ `, xe = w`
741
741
  .swatch {
742
742
  display: inline-flex; align-items: center; justify-content: center;
743
743
  width: 26px; height: 26px; border-radius: 50%;
744
744
  font-family: var(--hsot-heading-font); font-weight: 700; font-size: 0.55rem;
745
745
  margin-right: 0.5rem; vertical-align: middle; flex: none;
746
746
  }
747
+ /* Picked school logo (DEV-1236 ref) in the same footprint: contained,
748
+ never cropped, on white so any logo art stays legible. */
749
+ .swatch.logo {
750
+ object-fit: contain; background: var(--hsot-white);
751
+ border: 1px solid var(--hsot-gray-2); padding: 2px; box-sizing: border-box;
752
+ }
747
753
  .rankbadge { font-weight: 700; color: var(--hsot-red-deep); font-size: 0.8em; margin-right: 0.22rem; }
748
754
  .dots { display: inline-flex; gap: 3px; }
749
755
  .dot {
@@ -755,7 +761,7 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
755
761
  .dot.W { background: var(--hsot-win); }
756
762
  .dot.L { background: var(--hsot-loss); }
757
763
  .dot.T { background: var(--hsot-tie); }
758
- `, xe = w`
764
+ `, _e = w`
759
765
  ul.gamelist { list-style: none; margin: 0; padding: 0; }
760
766
  .gamelist li {
761
767
  display: flex; align-items: center; gap: 0.7rem; padding: 0.55rem 1rem;
@@ -772,21 +778,21 @@ const g = (r) => Object.fromEntries((r || []).map((t) => [t.id, t])), ge = w`
772
778
  .gamelist .opp a:hover { text-decoration: underline; }
773
779
  .gamelist .where { color: var(--hsot-gray-5); font-size: 0.78rem; }
774
780
  .gamelist a.box { font-size: 0.78rem; }
775
- `, H = [ge, $e, ve, ye, be, we, xe];
776
- function ht(r) {
781
+ `, H = [ve, $e, ye, be, we, xe, _e];
782
+ function pt(r) {
777
783
  return r.state !== "final" ? null : r.forfeit && r.forfeit !== "none" ? r.forfeit : r.homeScore > r.awayScore ? "home" : r.awayScore > r.homeScore ? "away" : r.tiebreakWinner && r.tiebreakWinner !== "none" ? r.tiebreakWinner : "tie";
778
784
  }
779
785
  function M(r, t) {
780
786
  const e = {}, s = (o) => (e[o] = e[o] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, e[o]), a = r.filter((o) => o.state === "final" && o.gameType !== "scrimmage" && !0).sort((o, i) => String(o.date).localeCompare(String(i.date)));
781
787
  for (const o of a) {
782
- const i = ht(o), n = o.gameType === "conference";
783
- for (const l of ["home", "away"]) {
784
- const p = l === "home" ? o.homeTeamId : o.awayTeamId;
788
+ const i = pt(o), n = o.gameType === "conference";
789
+ for (const c of ["home", "away"]) {
790
+ const p = c === "home" ? o.homeTeamId : o.awayTeamId;
785
791
  if (!p) continue;
786
- const h = s(p), c = l === "home" ? o.homeScore : o.awayScore, f = l === "home" ? o.awayScore : o.homeScore;
787
- h.pf += c, h.pa += f;
792
+ const l = s(p), h = c === "home" ? o.homeScore : o.awayScore, f = c === "home" ? o.awayScore : o.homeScore;
793
+ l.pf += h, l.pa += f;
788
794
  let u = "T";
789
- i === "tie" ? (h.t += 1, n && (h.ct += 1)) : i === l ? (h.w += 1, n && (h.cw += 1), u = "W") : (h.l += 1, n && (h.cl += 1), u = "L"), h.results.push({ gameId: o.id, date: o.date, mark: u, my: c, their: f, opp: l === "home" ? o.awayTeamId : o.homeTeamId, conf: n });
795
+ i === "tie" ? (l.t += 1, n && (l.ct += 1)) : i === c ? (l.w += 1, n && (l.cw += 1), u = "W") : (l.l += 1, n && (l.cl += 1), u = "L"), l.results.push({ gameId: o.id, date: o.date, mark: u, my: h, their: f, opp: c === "home" ? o.awayTeamId : o.homeTeamId, conf: n });
790
796
  }
791
797
  }
792
798
  return e;
@@ -798,41 +804,41 @@ function Z(r) {
798
804
  for (let s = r.length - 1; s >= 0 && r[s].mark === t; s -= 1) e += 1;
799
805
  return t + e;
800
806
  }
801
- const It = (r, t, e) => {
807
+ const Ct = (r, t, e) => {
802
808
  const s = r + t + e;
803
809
  return s ? (r + e / 2) / s : 0;
804
- }, Ct = (r) => r.toFixed(3).replace("0.", ".");
810
+ }, Et = (r) => r.toFixed(3).replace("0.", ".");
805
811
  function x(r, t = !1) {
806
812
  if (!r) return "0-0";
807
813
  const e = t ? r.cw : r.w, s = t ? r.cl : r.l, a = t ? r.ct : r.t;
808
814
  return `${e}-${s}${a ? `-${a}` : ""}`;
809
815
  }
810
- function Ft(r, t) {
816
+ function Nt(r, t) {
811
817
  return r.map((e) => {
812
818
  const s = t[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] };
813
- return { team: e, rec: s, confPct: It(s.cw, s.cl, s.ct), overallPct: It(s.w, s.l, s.t) };
819
+ return { team: e, rec: s, confPct: Ct(s.cw, s.cl, s.ct), overallPct: Ct(s.w, s.l, s.t) };
814
820
  }).sort((e, s) => s.confPct - e.confPct || s.overallPct - e.overallPct || s.rec.pf - s.rec.pa - (e.rec.pf - e.rec.pa));
815
821
  }
816
- function pt(r, t) {
822
+ function mt(r, t) {
817
823
  return r.filter((e) => (e.homeTeamId === t || e.awayTeamId === t) && (e.state === "scheduled" || e.state === "live") && e.gameType !== "scrimmage").sort((e, s) => String(e.date).localeCompare(String(s.date)))[0] || null;
818
824
  }
819
- function Et(r, t) {
825
+ function Pt(r, t) {
820
826
  const e = r[t];
821
827
  return e && e.results.length ? e.results[e.results.length - 1] : null;
822
828
  }
823
- const st = {
829
+ const at = {
824
830
  game: "/{sport}/game/{id}/",
825
831
  school: "/school/{id}/",
826
832
  section: "/{sport}/{view}/"
827
833
  };
828
- function $(r, t) {
834
+ function v(r, t) {
829
835
  return String(r).replace(/\{(\w+)\}/g, (e, s) => t[s] !== void 0 && t[s] !== null ? String(t[s]) : e);
830
836
  }
831
837
  function L(r) {
832
838
  return {
833
- game: r.getAttribute("game-href") || st.game,
834
- school: r.getAttribute("school-href") || st.school,
835
- section: r.getAttribute("section-href") || st.section
839
+ game: r.getAttribute("game-href") || at.game,
840
+ school: r.getAttribute("school-href") || at.school,
841
+ section: r.getAttribute("section-href") || at.section
836
842
  };
837
843
  }
838
844
  const J = (r) => r ? r.charAt(0).toUpperCase() + r.slice(1) : "";
@@ -841,61 +847,61 @@ function y(r, t) {
841
847
  const [e, s, a] = String(r).split("-").map(Number);
842
848
  return !e || !s || !a ? "TBD" : new Date(e, s - 1, a).toLocaleDateString("en-US", t || { weekday: "short", month: "short", day: "numeric" });
843
849
  }
844
- function Q(r) {
850
+ function X(r) {
845
851
  if (!r) return "";
846
852
  const [t, e] = String(r).split(":").map(Number);
847
853
  if (Number.isNaN(t)) return "";
848
854
  const s = t >= 12 ? "PM" : "AM";
849
855
  return `${(t + 11) % 12 + 1}:${String(e || 0).padStart(2, "0")} ${s}`;
850
856
  }
851
- function _e(r) {
857
+ function ke(r) {
852
858
  return r ? `${Math.floor(r / 12)}-${r % 12}` : "·";
853
859
  }
854
- function X(r = /* @__PURE__ */ new Date()) {
860
+ function tt(r = /* @__PURE__ */ new Date()) {
855
861
  const t = r.getFullYear();
856
862
  return r.getMonth() >= 6 ? `${t}-${t + 1}` : `${t - 1}-${t}`;
857
863
  }
858
- function rt(r = /* @__PURE__ */ new Date()) {
864
+ function ot(r = /* @__PURE__ */ new Date()) {
859
865
  const t = (e) => String(e).padStart(2, "0");
860
866
  return `${r.getFullYear()}-${t(r.getMonth() + 1)}-${t(r.getDate())}`;
861
867
  }
862
- function mt(r) {
868
+ function ft(r) {
863
869
  return r ? (r.abbr || r.name || "?").slice(0, 4).toUpperCase() : "?";
864
870
  }
865
- function W(r) {
871
+ function V(r) {
866
872
  if (!r || !/^#[0-9a-fA-F]{6}$/.test(r)) return "#FFFFFF";
867
873
  const t = parseInt(r.slice(1), 16), e = t >> 16 & 255, s = t >> 8 & 255, a = t & 255;
868
874
  return 0.299 * e + 0.587 * s + 0.114 * a > 150 ? "#0F1B33" : "#FFFFFF";
869
875
  }
870
- const ke = (r) => {
876
+ const Se = (r) => {
871
877
  const t = ["th", "st", "nd", "rd"], e = r % 100;
872
878
  return r + (t[(e - 20) % 10] || t[e] || t[0]);
873
879
  };
874
- function Se(r) {
880
+ function Ae(r) {
875
881
  if (r.state === "live") return { kind: "live", label: `Live · ${r.period || ""}`.replace(/ · $/, "") };
876
882
  if (r.state === "final") {
877
883
  const t = [];
878
884
  return r.finish === "overtime" && t.push("OT"), r.finish === "shootout" && t.push("PK-SO"), r.forfeit && r.forfeit !== "none" && t.push("Forfeit"), { kind: "final", label: `Final${t.length ? ` · ${t.join(" · ")}` : ""}` };
879
885
  }
880
- return r.state === "postponed" ? { kind: "warn", label: "Postponed" } : r.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${y(r.date, { month: "short", day: "numeric" })} · ${Q(r.time)}`.replace(/ · $/, "") };
886
+ return r.state === "postponed" ? { kind: "warn", label: "Postponed" } : r.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${y(r.date, { month: "short", day: "numeric" })} · ${X(r.time)}`.replace(/ · $/, "") };
881
887
  }
882
- function Ut(r, t, e, s, a) {
888
+ function Ht(r, t, e, s, a) {
883
889
  const o = t[e];
884
890
  if (!o) return null;
885
891
  const i = /* @__PURE__ */ new Map();
886
- for (const l of r || []) {
887
- if (l.sport !== s || a && l.effectiveDate > a || l.gender && o.gender !== l.gender && o.gender !== "coed") continue;
888
- const p = l.gender || "", h = i.get(p);
889
- (!h || l.effectiveDate > h.effectiveDate) && i.set(p, l);
892
+ for (const c of r || []) {
893
+ if (c.sport !== s || a && c.effectiveDate > a || c.gender && o.gender !== c.gender && o.gender !== "coed") continue;
894
+ const p = c.gender || "", l = i.get(p);
895
+ (!l || c.effectiveDate > l.effectiveDate) && i.set(p, c);
890
896
  }
891
897
  let n = null;
892
- for (const l of i.values()) {
893
- const p = (l.teamIds || []).indexOf(e);
894
- p !== -1 && (!n || l.effectiveDate > n.effectiveDate) && (n = { poll: l, rank: p + 1 });
898
+ for (const c of i.values()) {
899
+ const p = (c.teamIds || []).indexOf(e);
900
+ p !== -1 && (!n || c.effectiveDate > n.effectiveDate) && (n = { poll: c, rank: p + 1 });
895
901
  }
896
902
  return n ? n.rank : null;
897
903
  }
898
- function Ae(r, t, e) {
904
+ function Te(r, t, e) {
899
905
  if (!r) return { kind: "none", delta: 0 };
900
906
  const s = (r.teamIds || []).indexOf(e) + 1;
901
907
  if (!s) return { kind: "none", delta: 0 };
@@ -905,45 +911,58 @@ function Ae(r, t, e) {
905
911
  const o = a - s;
906
912
  return o > 0 ? { kind: "up", delta: o } : o < 0 ? { kind: "down", delta: -o } : { kind: "same", delta: 0 };
907
913
  }
908
- const N = (r, t) => {
914
+ function Ie(r) {
915
+ return /^https?:\/\//i.test(String(r || ""));
916
+ }
917
+ function G(r, t) {
918
+ const e = r?.logoAssetId;
919
+ if (!Ie(e)) return "";
920
+ const s = Math.max(1, Math.round(t * 2)), a = e.includes("?") ? "&" : "?";
921
+ return `${e}${a}w=${s}&h=${s}&f=webp`;
922
+ }
923
+ const O = (r, t) => {
909
924
  const e = r.teamsById[t];
910
925
  return e ? r.schoolsById[e.schoolId] : null;
911
- }, P = (r, t) => N(r, t)?.name || "TBD", V = (r, t) => N(r, t)?.abbr || "TBD";
926
+ }, P = (r, t) => O(r, t)?.name || "TBD", q = (r, t) => O(r, t)?.abbr || "TBD";
912
927
  function F(r, t = 26) {
913
928
  if (!r) return m;
914
- const e = r.colorPrimary || "#030711", s = W(e);
929
+ const e = G(r, t);
930
+ if (e)
931
+ return d`<img class="swatch logo" aria-hidden="true" alt="" loading="lazy"
932
+ src=${e} style="width:${t}px;height:${t}px" />`;
933
+ const s = r.colorPrimary || "#030711", a = V(s);
915
934
  return d`<span class="swatch" aria-hidden="true"
916
- style="width:${t}px;height:${t}px;background:${e};color:${s};font-size:${Math.max(8, t * 0.28)}px"
917
- >${mt(r)}</span>`;
935
+ style="width:${t}px;height:${t}px;background:${s};color:${a};font-size:${Math.max(8, t * 0.28)}px"
936
+ >${ft(r)}</span>`;
918
937
  }
919
- function ft(r, t, e) {
920
- const s = Ut(r.rankings, r.teamsById, t, r.sport, e);
938
+ function ut(r, t, e) {
939
+ const s = Ht(r.rankings, r.teamsById, t, r.sport, e);
921
940
  return s ? d`<span class="rankbadge">#${s}</span>` : m;
922
941
  }
923
- function ot(r, t, e) {
924
- const s = N(r, t);
925
- return s ? d`${ft(r, t, e)}<a href=${$(r.hrefs.school, { id: s.id })}>${s.name}</a>` : d`<span class="mut">TBD</span>`;
942
+ function it(r, t, e) {
943
+ const s = O(r, t);
944
+ return s ? d`${ut(r, t, e)}<a href=${v(r.hrefs.school, { id: s.id })}>${s.name}</a>` : d`<span class="mut">TBD</span>`;
926
945
  }
927
- function ut(r, t, e = 5) {
946
+ function gt(r, t, e = 5) {
928
947
  const s = r.records[t];
929
948
  if (!s || !s.results.length) return d`<span class="mut">·</span>`;
930
949
  const a = s.results.slice(-1 * e);
931
950
  return d`<span class="dots" role="img" aria-label="last ${a.length} results">
932
951
  ${a.map((o) => d`<a class="dot ${o.mark}"
933
952
  title="${o.mark} ${o.my}-${o.their} vs ${P(r, o.opp)}"
934
- href=${$(r.hrefs.game, { sport: r.sport, id: o.gameId })}>${o.mark}</a>`)}
953
+ href=${v(r.hrefs.game, { sport: r.sport, id: o.gameId })}>${o.mark}</a>`)}
935
954
  </span>`;
936
955
  }
937
- function q(r) {
938
- const t = Se(r);
956
+ function Y(r) {
957
+ const t = Ae(r);
939
958
  return d`<span class="pill ${t.kind}">${t.label}</span>`;
940
959
  }
941
- function Ht(r, t, e) {
960
+ function Mt(r, t, e) {
942
961
  if (!t) return d`<span class="mut">·</span>`;
943
962
  const s = t.homeTeamId === e ? t.awayTeamId : t.homeTeamId, a = t.homeTeamId === e ? "vs" : "at";
944
- return d`${t.state === "live" ? d`<span class="pill live">Live</span> ` : d`${y(t.date, { month: "numeric", day: "numeric" })} `}${a} ${V(r, s)}`;
963
+ return d`${t.state === "live" ? d`<span class="pill live">Live</span> ` : d`${y(t.date, { month: "numeric", day: "numeric" })} `}${a} ${q(r, s)}`;
945
964
  }
946
- class Mt extends b {
965
+ class Lt extends b {
947
966
  static styles = H;
948
967
  static properties = {
949
968
  ...b.properties,
@@ -957,11 +976,11 @@ class Mt extends b {
957
976
  connectedCallback() {
958
977
  if (super.connectedCallback(), !this.date) {
959
978
  const t = new URLSearchParams(globalThis.location?.search || "").get("date");
960
- this.date = t || rt();
979
+ this.date = t || ot();
961
980
  }
962
981
  }
963
982
  async fetchData(t) {
964
- const e = this.season || X(), [s, a, o, i, n] = await Promise.all([
983
+ const e = this.season || tt(), [s, a, o, i, n] = await Promise.all([
965
984
  t.listSchools(),
966
985
  t.listTeams({ sport: this.sport }),
967
986
  t.listConferences(),
@@ -1006,7 +1025,7 @@ class Mt extends b {
1006
1025
  this.date = i.target.value;
1007
1026
  }}>
1008
1027
  ${s.map((i) => d`<option value=${i} ?selected=${i === this.date}>
1009
- ${y(i, { weekday: "short", month: "short", day: "numeric" })}${i === rt() ? " · today" : ""}
1028
+ ${y(i, { weekday: "short", month: "short", day: "numeric" })}${i === ot() ? " · today" : ""}
1010
1029
  </option>`)}
1011
1030
  </select>
1012
1031
  <button class="chip" ?disabled=${s.indexOf(this.date) <= 0}
@@ -1024,28 +1043,28 @@ class Mt extends b {
1024
1043
  ${[...o.entries()].map(([i, n]) => d`
1025
1044
  <div class="section-title">${i}</div>
1026
1045
  <div class="card"><ul class="gamelist">
1027
- ${n.map((l) => this.renderGame(t, l))}
1046
+ ${n.map((c) => this.renderGame(t, c))}
1028
1047
  </ul></div>
1029
1048
  `)}
1030
1049
  </div>
1031
1050
  `;
1032
1051
  }
1033
1052
  renderGame(t, e) {
1034
- const s = e.state === "final" || e.state === "live" ? `${e.awayScore}-${e.homeScore}` : Q(e.time);
1053
+ const s = e.state === "final" || e.state === "live" ? `${e.awayScore}-${e.homeScore}` : X(e.time);
1035
1054
  return d`
1036
1055
  <li>
1037
- ${q(e)}
1038
- <span class="opp">${ot(t, e.awayTeamId, e.date)} at ${ot(t, e.homeTeamId, e.date)}</span>
1056
+ ${Y(e)}
1057
+ <span class="opp">${it(t, e.awayTeamId, e.date)} at ${it(t, e.homeTeamId, e.date)}</span>
1039
1058
  <span class="res" style="width:auto">${s}</span>
1040
1059
  <span class="where">${e.venue || ""}</span>
1041
1060
  ${e.broadcast ? d`<span class="pill class">${e.broadcast}</span>` : m}
1042
- <a class="box" href=${$(t.hrefs.game, { sport: this.sport, id: e.id })}>Box score →</a>
1061
+ <a class="box" href=${v(t.hrefs.game, { sport: this.sport, id: e.id })}>Box score →</a>
1043
1062
  </li>
1044
1063
  `;
1045
1064
  }
1046
1065
  }
1047
- globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", Mt);
1048
- class Lt extends b {
1066
+ globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", Lt);
1067
+ class jt extends b {
1049
1068
  static styles = H;
1050
1069
  static properties = {
1051
1070
  ...b.properties,
@@ -1058,7 +1077,7 @@ class Lt extends b {
1058
1077
  super(), this.sport = "football", this.season = "", this.classFilter = "All", this.query = "";
1059
1078
  }
1060
1079
  async fetchData(t) {
1061
- const e = this.season || X(), [s, a, o, i, n] = await Promise.all([
1080
+ const e = this.season || tt(), [s, a, o, i, n] = await Promise.all([
1062
1081
  t.listConferences({ active: !0 }),
1063
1082
  t.listSchools(),
1064
1083
  t.listTeams({ sport: this.sport }),
@@ -1106,7 +1125,7 @@ class Lt extends b {
1106
1125
  this.query = a.target.value;
1107
1126
  }}>
1108
1127
  <span class="spacer"></span>
1109
- <span class="asof">Records through ${y(rt(), { month: "long", day: "numeric" })} · conference games count toward both records · scrimmages toward neither</span>
1128
+ <span class="asof">Records through ${y(ot(), { month: "long", day: "numeric" })} · conference games count toward both records · scrimmages toward neither</span>
1110
1129
  </div>
1111
1130
  ${s.map((a) => this.renderConference(t, a))}
1112
1131
  </div>
@@ -1115,7 +1134,7 @@ class Lt extends b {
1115
1134
  renderConference(t, e) {
1116
1135
  const s = this.data.teams.filter((i) => i.conferenceId === e.id);
1117
1136
  if (!s.length) return m;
1118
- const a = this.query.trim().toLowerCase(), o = Ft(s, t.records);
1137
+ const a = this.query.trim().toLowerCase(), o = Nt(s, t.records);
1119
1138
  return d`
1120
1139
  <div class="card">
1121
1140
  <div class="card-head">
@@ -1139,35 +1158,35 @@ class Lt extends b {
1139
1158
  renderRow(t, e, s, a) {
1140
1159
  const o = t.schoolsById[e.team.schoolId], i = o?.name || e.team.name || "TBD";
1141
1160
  if (a && !i.toLowerCase().includes(a)) return m;
1142
- const n = e.rec.pf - e.rec.pa, l = pt(this.data.games, e.team.id), p = (e.team.championships || []).map((c) => d`
1143
- <span class="pill champ" title="${c.season} ${c.title} champion">★ ${c.season} ${c.title}</span>`), h = () => {
1144
- location.href = $(t.hrefs.school, { id: e.team.schoolId });
1161
+ const n = e.rec.pf - e.rec.pa, c = mt(this.data.games, e.team.id), p = (e.team.championships || []).map((h) => d`
1162
+ <span class="pill champ" title="${h.season} ${h.title} champion">★ ${h.season} ${h.title}</span>`), l = () => {
1163
+ location.href = v(t.hrefs.school, { id: e.team.schoolId });
1145
1164
  };
1146
1165
  return d`
1147
- <tr class="rowlink" @click=${(c) => {
1148
- c.target.closest("a") || h();
1166
+ <tr class="rowlink" @click=${(h) => {
1167
+ h.target.closest("a") || l();
1149
1168
  }}>
1150
1169
  <td class="mut">${s + 1}</td>
1151
1170
  <td class="teamcell">
1152
- ${F(o)}${ft(t, e.team.id, null)}
1153
- <a href=${$(t.hrefs.school, { id: e.team.schoolId })}>${i}</a> ${p}
1171
+ ${F(o)}${ut(t, e.team.id, null)}
1172
+ <a href=${v(t.hrefs.school, { id: e.team.schoolId })}>${i}</a> ${p}
1154
1173
  </td>
1155
1174
  <td class="num">${x(e.rec, !0)}</td>
1156
- <td class="num">${Ct(e.confPct)}</td>
1175
+ <td class="num">${Et(e.confPct)}</td>
1157
1176
  <td class="num">${x(e.rec)}</td>
1158
- <td class="num">${Ct(e.overallPct)}</td>
1177
+ <td class="num">${Et(e.overallPct)}</td>
1159
1178
  <td class="num">${e.rec.pf}</td>
1160
1179
  <td class="num">${e.rec.pa}</td>
1161
1180
  <td class="num" style="color:${n >= 0 ? "var(--hsot-win)" : "var(--hsot-loss)"}">${n > 0 ? "+" : ""}${n}</td>
1162
1181
  <td>${Z(e.rec.results) || "·"}</td>
1163
- <td>${ut(t, e.team.id)}</td>
1164
- <td>${Ht(t, l, e.team.id)}</td>
1182
+ <td>${gt(t, e.team.id)}</td>
1183
+ <td>${Mt(t, c, e.team.id)}</td>
1165
1184
  </tr>
1166
1185
  `;
1167
1186
  }
1168
1187
  }
1169
- globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", Lt);
1170
- const Te = w`
1188
+ globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", jt);
1189
+ const Ce = w`
1171
1190
  .hero1 {
1172
1191
  border-radius: var(--hsot-radius-md); color: var(--hsot-white);
1173
1192
  padding: 1.3rem 1.4rem; display: flex; align-items: center; gap: 1.2rem;
@@ -1184,8 +1203,8 @@ const Te = w`
1184
1203
  .delta.new { background: var(--hsot-straw); color: #6b5900; border-radius: var(--hsot-radius-xs); padding: 0.1rem 0.3rem; font-size: 0.7rem; }
1185
1204
  .sparkline { vertical-align: middle; }
1186
1205
  `;
1187
- class jt extends b {
1188
- static styles = [...H, Te];
1206
+ class Wt extends b {
1207
+ static styles = [...H, Ce];
1189
1208
  static properties = {
1190
1209
  ...b.properties,
1191
1210
  sport: { type: String },
@@ -1202,16 +1221,16 @@ class jt extends b {
1202
1221
  t && (this.pollDate = t);
1203
1222
  }
1204
1223
  async fetchData(t) {
1205
- const e = this.season || X(), [s, a, o, i, n] = await Promise.all([
1224
+ const e = this.season || tt(), [s, a, o, i, n] = await Promise.all([
1206
1225
  t.listRankings({ sport: this.sport, ...this.gender ? { gender: this.gender } : {} }),
1207
1226
  t.listSchools(),
1208
1227
  t.listTeams({ sport: this.sport }),
1209
1228
  t.listConferences(),
1210
1229
  t.listGames({ sport: this.sport, season: e })
1211
- ]), l = s.items.filter((p) => !this.gender || !p.gender || p.gender === this.gender).sort((p, h) => h.effectiveDate.localeCompare(p.effectiveDate));
1230
+ ]), c = s.items.filter((p) => !this.gender || !p.gender || p.gender === this.gender).sort((p, l) => l.effectiveDate.localeCompare(p.effectiveDate));
1212
1231
  return {
1213
1232
  season: e,
1214
- polls: l,
1233
+ polls: c,
1215
1234
  schools: a.items,
1216
1235
  teams: o.items,
1217
1236
  conferences: i.items,
@@ -1229,31 +1248,31 @@ class jt extends b {
1229
1248
  }, this._ctxData = this.data), this._ctx;
1230
1249
  }
1231
1250
  sparkline(t, e, s) {
1232
- const n = e.map((c, f) => {
1233
- const u = (c.teamIds || []).indexOf(t);
1251
+ const n = e.map((h, f) => {
1252
+ const u = (h.teamIds || []).indexOf(t);
1234
1253
  if (u === -1) return null;
1235
- const v = e.length === 1 ? 96 / 2 : f / (e.length - 1) * 90 + 3, tt = 3 + u / 24 * 20;
1236
- return { x: v, y: tt };
1237
- }), l = [];
1254
+ const $ = e.length === 1 ? 96 / 2 : f / (e.length - 1) * 90 + 3, et = 3 + u / 24 * 20;
1255
+ return { x: $, y: et };
1256
+ }), c = [];
1238
1257
  let p = [];
1239
- if (n.forEach((c) => {
1240
- c ? p.push(c) : p.length && (l.push(p), p = []);
1241
- }), p.length && l.push(p), !l.length) return m;
1242
- const h = n[s];
1258
+ if (n.forEach((h) => {
1259
+ h ? p.push(h) : p.length && (c.push(p), p = []);
1260
+ }), p.length && c.push(p), !c.length) return m;
1261
+ const l = n[s];
1243
1262
  return d`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
1244
- ${l.map((c) => At`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
1245
- points=${c.map((f) => `${f.x.toFixed(1)},${f.y.toFixed(1)}`).join(" ")}></polyline>`)}
1246
- ${h ? At`<circle cx=${h.x.toFixed(1)} cy=${h.y.toFixed(1)} r="3" fill="var(--hsot-black)"></circle>` : m}
1263
+ ${c.map((h) => Tt`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
1264
+ points=${h.map((f) => `${f.x.toFixed(1)},${f.y.toFixed(1)}`).join(" ")}></polyline>`)}
1265
+ ${l ? Tt`<circle cx=${l.x.toFixed(1)} cy=${l.y.toFixed(1)} r="3" fill="var(--hsot-black)"></circle>` : m}
1247
1266
  </svg>`;
1248
1267
  }
1249
1268
  movement(t, e, s) {
1250
- const a = Ae(t, e, s);
1269
+ const a = Te(t, e, s);
1251
1270
  return a.kind === "up" ? d`<span class="delta up">▲ ${a.delta}</span>` : a.kind === "down" ? d`<span class="delta down">▼ ${a.delta}</span>` : a.kind === "new" ? d`<span class="delta new">NEW</span>` : a.kind === "same" ? d`<span class="delta same">—</span>` : d`<span class="delta same">·</span>`;
1252
1271
  }
1253
1272
  renderView() {
1254
1273
  const t = this.ctx, e = this.data.polls;
1255
1274
  if (!e.length) return d`<div class="view"><p class="empty">No ${this.sport} polls published yet this season.</p></div>`;
1256
- const s = Math.max(0, e.findIndex((c) => c.effectiveDate === this.pollDate)), a = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(a), l = g(this.data.conferences), p = (a.teamIds || [])[0], h = p ? N(t, p) : null;
1275
+ const s = Math.max(0, e.findIndex((h) => h.effectiveDate === this.pollDate)), a = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(a), c = g(this.data.conferences), p = (a.teamIds || [])[0], l = p ? O(t, p) : null;
1257
1276
  return d`
1258
1277
  <div class="band">
1259
1278
  <div class="inner">
@@ -1264,11 +1283,11 @@ class jt extends b {
1264
1283
  <div class="view">
1265
1284
  <div class="toolbar">
1266
1285
  <label class="asof" for="pollsel">Poll of</label>
1267
- <select id="pollsel" @change=${(c) => {
1268
- this.pollDate = c.target.value;
1286
+ <select id="pollsel" @change=${(h) => {
1287
+ this.pollDate = h.target.value;
1269
1288
  }}>
1270
- ${e.map((c, f) => d`<option value=${c.effectiveDate} ?selected=${c === a}>
1271
- ${y(c.effectiveDate, { month: "long", day: "numeric", year: "numeric" })}${f === 0 ? " · current" : ""}
1289
+ ${e.map((h, f) => d`<option value=${h.effectiveDate} ?selected=${h === a}>
1290
+ ${y(h.effectiveDate, { month: "long", day: "numeric", year: "numeric" })}${f === 0 ? " · current" : ""}
1272
1291
  </option>`)}
1273
1292
  </select>
1274
1293
  <button class="chip" ?disabled=${s >= e.length - 1}
@@ -1282,14 +1301,14 @@ class jt extends b {
1282
1301
  <span class="spacer"></span>
1283
1302
  <span class="asof">Movement vs. the previous poll · sparkline = season rank history</span>
1284
1303
  </div>
1285
- ${h ? this.renderHero(t, a, o, p, h, l) : m}
1304
+ ${l ? this.renderHero(t, a, o, p, l, c) : m}
1286
1305
  <div class="card"><div class="tablewrap"><table class="data">
1287
1306
  <thead><tr>
1288
1307
  <th class="num">Rk</th><th>Mvmt</th><th>Team</th><th class="num">Record</th>
1289
1308
  <th>Conference</th><th>Last result</th><th>Next</th><th>Season</th>
1290
1309
  </tr></thead>
1291
1310
  <tbody>
1292
- ${(a.teamIds || []).map((c, f) => f === 0 || !c ? m : this.renderRow(t, a, o, i, n, l, c, f + 1))}
1311
+ ${(a.teamIds || []).map((h, f) => f === 0 || !h ? m : this.renderRow(t, a, o, i, n, c, h, f + 1))}
1293
1312
  </tbody>
1294
1313
  </table></div></div>
1295
1314
  <p class="note">Ranks elsewhere on the site resolve the poll in effect on the game date, so past box scores keep the ranks they were played under.</p>
@@ -1297,50 +1316,50 @@ class jt extends b {
1297
1316
  `;
1298
1317
  }
1299
1318
  renderHero(t, e, s, a, o, i) {
1300
- const n = t.records[a], l = Et(t.records, a), p = i[t.teamsById[a]?.conferenceId], h = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
1319
+ const n = t.records[a], c = Pt(t.records, a), p = i[t.teamsById[a]?.conferenceId], l = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
1301
1320
  return d`
1302
- <div class="hero1" style="background:${h}">
1321
+ <div class="hero1" style="background:${l}">
1303
1322
  <div class="bigrank">#1</div>
1304
1323
  ${F(o, 64)}
1305
1324
  <div>
1306
- <h2><a href=${$(t.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
1325
+ <h2><a href=${v(t.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
1307
1326
  <div class="facts">
1308
1327
  ${x(n)} overall${p ? d` · ${x(n, !0)} ${p.name}` : m}
1309
1328
  · streak ${Z(n?.results) || "·"}
1310
- ${l ? d` · last: ${l.mark} ${l.my}-${l.their} vs ${V(t, l.opp)}` : m}
1329
+ ${c ? d` · last: ${c.mark} ${c.my}-${c.their} vs ${q(t, c.opp)}` : m}
1311
1330
  &nbsp;${this.movement(e, s, a)}
1312
1331
  </div>
1313
1332
  </div>
1314
1333
  </div>
1315
1334
  `;
1316
1335
  }
1317
- renderRow(t, e, s, a, o, i, n, l) {
1318
- const p = N(t, n);
1336
+ renderRow(t, e, s, a, o, i, n, c) {
1337
+ const p = O(t, n);
1319
1338
  if (!p) return m;
1320
- const h = t.records[n], c = Et(t.records, n), f = pt(this.data.games, n), u = i[t.teamsById[n]?.conferenceId], v = () => {
1321
- location.href = $(t.hrefs.school, { id: p.id });
1339
+ const l = t.records[n], h = Pt(t.records, n), f = mt(this.data.games, n), u = i[t.teamsById[n]?.conferenceId], $ = () => {
1340
+ location.href = v(t.hrefs.school, { id: p.id });
1322
1341
  };
1323
1342
  return d`
1324
- <tr class="rowlink" @click=${(tt) => {
1325
- tt.target.closest("a") || v();
1343
+ <tr class="rowlink" @click=${(et) => {
1344
+ et.target.closest("a") || $();
1326
1345
  }}>
1327
- <td class="num" style="font-weight:700">${l}</td>
1346
+ <td class="num" style="font-weight:700">${c}</td>
1328
1347
  <td>${this.movement(e, s, n)}</td>
1329
- <td class="teamcell">${F(p)}<a href=${$(t.hrefs.school, { id: p.id })}>${p.name}</a>
1348
+ <td class="teamcell">${F(p)}<a href=${v(t.hrefs.school, { id: p.id })}>${p.name}</a>
1330
1349
  <span class="mut" style="font-size:0.78rem">${p.mascot || ""}</span></td>
1331
- <td class="num">${x(h)}</td>
1350
+ <td class="num">${x(l)}</td>
1332
1351
  <td class="mut">${u?.name || "Independent"}</td>
1333
- <td>${c ? d`<a class="box" style="text-decoration:none" href=${$(t.hrefs.game, { sport: this.sport, id: c.gameId })}>
1334
- <b style="color:${c.mark === "W" ? "var(--hsot-win)" : c.mark === "L" ? "var(--hsot-loss)" : "var(--hsot-tie)"}">${c.mark}</b>
1335
- ${c.my}-${c.their} vs ${V(t, c.opp)}</a>` : d`<span class="mut">·</span>`}</td>
1336
- <td>${Ht(t, f, n)}</td>
1352
+ <td>${h ? d`<a class="box" style="text-decoration:none" href=${v(t.hrefs.game, { sport: this.sport, id: h.gameId })}>
1353
+ <b style="color:${h.mark === "W" ? "var(--hsot-win)" : h.mark === "L" ? "var(--hsot-loss)" : "var(--hsot-tie)"}">${h.mark}</b>
1354
+ ${h.my}-${h.their} vs ${q(t, h.opp)}</a>` : d`<span class="mut">·</span>`}</td>
1355
+ <td>${Mt(t, f, n)}</td>
1337
1356
  <td>${this.sparkline(n, a, o)}</td>
1338
1357
  </tr>
1339
1358
  `;
1340
1359
  }
1341
1360
  }
1342
- globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", jt);
1343
- const Ie = w`
1361
+ globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", Wt);
1362
+ const Ee = w`
1344
1363
  .schoolhero { color: var(--hsot-white); padding: 1.6rem 1.25rem 1.3rem; }
1345
1364
  .schoolhero .inner { max-width: 1366px; margin: 0 auto; display: flex; gap: 1.2rem; align-items: center; flex-wrap: wrap; }
1346
1365
  .schoolhero .crest {
@@ -1349,6 +1368,10 @@ const Ie = w`
1349
1368
  font-family: var(--hsot-heading-font); font-weight: 700; font-size: 1.5rem;
1350
1369
  border: 3px solid rgba(255,255,255,0.6);
1351
1370
  }
1371
+ .schoolhero .crest.logo {
1372
+ object-fit: contain; background: var(--hsot-white);
1373
+ padding: 6px; box-sizing: border-box;
1374
+ }
1352
1375
  .schoolhero h1 { margin: 0; font-family: var(--hsot-heading-font); font-size: 2.6rem; font-weight: 700; line-height: 1.05; letter-spacing: -0.02em; }
1353
1376
  .schoolhero .mascot { font-size: 1.05rem; opacity: 0.85; font-family: var(--hsot-heading-font); text-transform: uppercase; letter-spacing: 0.06em; }
1354
1377
  .schoolhero .facts { display: flex; flex-wrap: wrap; gap: 0.3rem 1.4rem; margin-top: 0.55rem; font-size: 0.85rem; opacity: 0.95; }
@@ -1361,8 +1384,8 @@ const Ie = w`
1361
1384
  .cols { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 1.25rem; }
1362
1385
  @media (max-width: 900px) { .cols { grid-template-columns: 1fr; } .schoolhero h1 { font-size: 1.9rem; } }
1363
1386
  `;
1364
- class Gt extends b {
1365
- static styles = [...H, Ie];
1387
+ class Vt extends b {
1388
+ static styles = [...H, Ee];
1366
1389
  static properties = {
1367
1390
  ...b.properties,
1368
1391
  schoolId: { type: String, attribute: "school-id" },
@@ -1379,7 +1402,7 @@ class Gt extends b {
1379
1402
  t && !this.sport && (this.sport = t);
1380
1403
  }
1381
1404
  async fetchData(t) {
1382
- const e = this.season || X(), s = await t.getSchool(this.schoolId), o = (await t.listTeams({ schoolId: this.schoolId })).items, i = o.find((v) => v.sport === (this.sport || "football")) || o[0] || null, [n, l, p, h, c, f, u] = await Promise.all([
1405
+ const e = this.season || tt(), s = await t.getSchool(this.schoolId), o = (await t.listTeams({ schoolId: this.schoolId })).items, i = o.find(($) => $.sport === (this.sport || "football")) || o[0] || null, [n, c, p, l, h, f, u] = await Promise.all([
1383
1406
  i ? t.listGames({ sport: i.sport, season: e }) : Promise.resolve({ items: [] }),
1384
1407
  i ? t.listTeams({ sport: i.sport }) : Promise.resolve({ items: [] }),
1385
1408
  t.listSchools(),
@@ -1396,11 +1419,11 @@ class Gt extends b {
1396
1419
  teams: o,
1397
1420
  active: i,
1398
1421
  games: n.items,
1399
- allTeams: l.items,
1422
+ allTeams: c.items,
1400
1423
  schools: p.items,
1401
- conferences: h.items,
1402
- rankings: c.items,
1403
- roster: f.items.find((v) => v.season === e) || null,
1424
+ conferences: l.items,
1425
+ rankings: h.items,
1426
+ roster: f.items.find(($) => $.season === e) || null,
1404
1427
  players: u.items
1405
1428
  };
1406
1429
  }
@@ -1420,11 +1443,11 @@ class Gt extends b {
1420
1443
  renderView() {
1421
1444
  const { school: t, teams: e, active: s, season: a } = this.data;
1422
1445
  if (!t) return d`<div class="view"><p class="empty">School not found.</p></div>`;
1423
- const o = this.ctx, i = W(t.colorPrimary || "#030711"), n = (t.adm || [])[0], l = g(this.data.conferences), p = s ? l[s.conferenceId] : null;
1446
+ const o = this.ctx, i = V(t.colorPrimary || "#030711"), n = (t.adm || [])[0], c = g(this.data.conferences), p = s ? c[s.conferenceId] : null;
1424
1447
  return d`
1425
1448
  <div class="schoolhero" style="background:linear-gradient(115deg, ${t.colorPrimary || "#030711"} 0%, ${t.colorPrimary || "#030711"} 55%, var(--hsot-black) 100%);color:${i}">
1426
1449
  <div class="inner">
1427
- <div class="crest" style="background:${t.colorSecondary || "#7C7C7C"};color:${W(t.colorSecondary || "#7C7C7C")}">${mt(t)}</div>
1450
+ ${G(t, 84) ? d`<img class="crest logo" alt="" loading="lazy" src=${G(t, 84)} />` : d`<div class="crest" style="background:${t.colorSecondary || "#7C7C7C"};color:${V(t.colorSecondary || "#7C7C7C")}">${ft(t)}</div>`}
1428
1451
  <div style="min-width:260px">
1429
1452
  <h1>${t.name} <span class="mascot">${t.mascot || ""}</span></h1>
1430
1453
  <div class="facts">
@@ -1441,9 +1464,9 @@ class Gt extends b {
1441
1464
  </div>
1442
1465
  <div class="band">
1443
1466
  <nav class="tabs" aria-label="Teams">
1444
- ${e.map((h) => h.id === s?.id ? d`<a class="on" href="#" @click=${(c) => c.preventDefault()}>${h.name}</a>` : d`<a href="#" @click=${(c) => {
1445
- c.preventDefault(), this.switchSport(h.sport);
1446
- }}>${h.name}</a>`)}
1467
+ ${e.map((l) => l.id === s?.id ? d`<a class="on" href="#" @click=${(h) => h.preventDefault()}>${l.name}</a>` : d`<a href="#" @click=${(h) => {
1468
+ h.preventDefault(), this.switchSport(l.sport);
1469
+ }}>${l.name}</a>`)}
1447
1470
  </nav>
1448
1471
  </div>
1449
1472
  <div class="view">
@@ -1452,28 +1475,28 @@ class Gt extends b {
1452
1475
  `;
1453
1476
  }
1454
1477
  renderTeam(t, e, s, a) {
1455
- const o = t.records[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, i = o.w + o.l + o.t, n = s ? this.data.allTeams.filter((c) => c.conferenceId === s.id) : [], l = s ? Ft(n, t.records).findIndex((c) => c.team.id === e.id) + 1 : 0, p = Ut(t.rankings, t.teamsById, e.id, e.sport, null), h = this.data.games.filter((c) => c.homeTeamId === e.id || c.awayTeamId === e.id).sort((c, f) => String(c.date).localeCompare(String(f.date)));
1478
+ const o = t.records[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] }, i = o.w + o.l + o.t, n = s ? this.data.allTeams.filter((h) => h.conferenceId === s.id) : [], c = s ? Nt(n, t.records).findIndex((h) => h.team.id === e.id) + 1 : 0, p = Ht(t.rankings, t.teamsById, e.id, e.sport, null), l = this.data.games.filter((h) => h.homeTeamId === e.id || h.awayTeamId === e.id).sort((h, f) => String(h.date).localeCompare(String(f.date)));
1456
1479
  return d`
1457
1480
  <div class="tiles">
1458
1481
  <div class="tile"><div class="k">Overall</div><div class="v">${x(o)}</div><div class="s">${i} games played</div></div>
1459
1482
  <div class="tile"><div class="k">${s?.name || "Conference"}</div><div class="v">${x(o, !0)}</div>
1460
- <div class="s">${l ? `${ke(l)} of ${n.length}` : "·"}</div></div>
1483
+ <div class="s">${c ? `${Se(c)} of ${n.length}` : "·"}</div></div>
1461
1484
  <div class="tile"><div class="k">Points</div><div class="v">${i ? (o.pf / i).toFixed(1) : "0.0"}</div>
1462
1485
  <div class="s">scored per game · ${i ? (o.pa / i).toFixed(1) : "0.0"} allowed</div></div>
1463
1486
  <div class="tile"><div class="k">Streak</div><div class="v">${Z(o.results) || "·"}</div>
1464
- <div class="s">last 5: ${ut(t, e.id)}</div></div>
1487
+ <div class="s">last 5: ${gt(t, e.id)}</div></div>
1465
1488
  <div class="tile"><div class="k">HSOT Top 25</div><div class="v">${p ? `#${p}` : "NR"}</div>
1466
- <div class="s"><a href=${$(t.hrefs.section, { sport: e.sport, view: "rankings" })}>full poll</a></div></div>
1489
+ <div class="s"><a href=${v(t.hrefs.section, { sport: e.sport, view: "rankings" })}>full poll</a></div></div>
1467
1490
  </div>
1468
1491
  ${(e.championships || []).length ? d`
1469
1492
  <div style="margin:-0.2rem 0 1rem;display:flex;gap:0.4rem;flex-wrap:wrap">
1470
- ${e.championships.map((c) => d`<span class="pill champ">★ ${c.season} ${c.title} champion${c.classification ? ` · ${c.classification}` : ""}${c.region ? ` · ${c.region}` : ""}</span>`)}
1493
+ ${e.championships.map((h) => d`<span class="pill champ">★ ${h.season} ${h.title} champion${h.classification ? ` · ${h.classification}` : ""}${h.region ? ` · ${h.region}` : ""}</span>`)}
1471
1494
  </div>` : m}
1472
1495
  <div class="cols">
1473
1496
  <div>
1474
1497
  <div class="section-title">Schedule &amp; results</div>
1475
1498
  <div class="card">
1476
- ${h.length ? d`<ul class="gamelist">${h.map((c) => this.renderGameRow(t, e, c))}</ul>` : d`<p class="empty">No ${e.sport} games recorded for ${a}.</p>`}
1499
+ ${l.length ? d`<ul class="gamelist">${l.map((h) => this.renderGameRow(t, e, h))}</ul>` : d`<p class="empty">No ${e.sport} games recorded for ${a}.</p>`}
1477
1500
  </div>
1478
1501
  </div>
1479
1502
  <div>
@@ -1485,23 +1508,23 @@ class Gt extends b {
1485
1508
  }
1486
1509
  renderGameRow(t, e, s) {
1487
1510
  const a = s.homeTeamId === e.id, o = a ? s.awayTeamId : s.homeTeamId, i = a ? s.homeScore : s.awayScore, n = a ? s.awayScore : s.homeScore;
1488
- let l = d`<span class="mut">${Q(s.time)}</span>`;
1511
+ let c = d`<span class="mut">${X(s.time)}</span>`;
1489
1512
  if (s.state === "final") {
1490
- const h = ht(s), c = h === "tie" ? "T" : h === (a ? "home" : "away") ? "W" : "L";
1491
- l = d`<span class=${c}>${c}</span> ${i}-${n}${s.finish === "overtime" ? d` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? d` <span class="mut">FF</span>` : m}`;
1492
- } else s.state === "live" && (l = d`<span style="color:var(--hsot-red)">${i}-${n}</span>`);
1513
+ const l = pt(s), h = l === "tie" ? "T" : l === (a ? "home" : "away") ? "W" : "L";
1514
+ c = d`<span class=${h}>${h}</span> ${i}-${n}${s.finish === "overtime" ? d` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? d` <span class="mut">FF</span>` : m}`;
1515
+ } else s.state === "live" && (c = d`<span style="color:var(--hsot-red)">${i}-${n}</span>`);
1493
1516
  const p = s.gameType === "conference" ? "Conf" : s.gameType === "nonconference" ? "Non-conf" : s.gameType === "playoff" ? `Playoff${s.label ? ` · ${s.label}` : ""}` : "Scrimmage";
1494
1517
  return d`
1495
1518
  <li>
1496
1519
  <span class="d">${y(s.date)}</span>
1497
- ${q(s)}
1498
- <span class="res">${l}</span>
1499
- <span class="opp">${a ? "vs" : "at"} ${ot(t, o, s.date)}
1520
+ ${Y(s)}
1521
+ <span class="res">${c}</span>
1522
+ <span class="opp">${a ? "vs" : "at"} ${it(t, o, s.date)}
1500
1523
  <span class="pill type">${p}</span>
1501
1524
  ${s.broadcast ? d`<span class="pill class">${s.broadcast}</span>` : m}
1502
1525
  </span>
1503
1526
  <span class="where">${s.venue || ""}</span>
1504
- <a class="box" href=${$(t.hrefs.game, { sport: e.sport, id: s.id })}>Box score →</a>
1527
+ <a class="box" href=${v(t.hrefs.game, { sport: e.sport, id: s.id })}>Box score →</a>
1505
1528
  </li>
1506
1529
  `;
1507
1530
  }
@@ -1521,7 +1544,7 @@ class Gt extends b {
1521
1544
  <td style="font-weight:500">${i.firstName} ${i.lastName}</td>
1522
1545
  <td>${o.position || "·"}</td>
1523
1546
  <td class="mut">${i.classOf || "·"}</td>
1524
- <td class="num">${_e(i.heightIn)}</td>
1547
+ <td class="num">${ke(i.heightIn)}</td>
1525
1548
  <td class="num">${i.weightLb || "·"}</td>
1526
1549
  </tr>` : m;
1527
1550
  })}
@@ -1530,8 +1553,22 @@ class Gt extends b {
1530
1553
  `;
1531
1554
  }
1532
1555
  }
1533
- globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", Gt);
1534
- const Ce = w`
1556
+ globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", Vt);
1557
+ const Pe = "https://api.wral.com/search";
1558
+ function De(r) {
1559
+ return r.map((t) => `uri:"${t}"`).join(" OR ");
1560
+ }
1561
+ function Re(r, t) {
1562
+ const e = String(r || Pe).replace(/\/+$/, ""), s = new URLSearchParams({ query: De(t), sort: "score", lang: "en" });
1563
+ return `${e}/v1/query?${s}`;
1564
+ }
1565
+ async function ze(r, t, e) {
1566
+ const a = await ((...n) => fetch(...n))(Re(r, t));
1567
+ if (!a.ok) throw new Error(`search answered ${a.status}`);
1568
+ const o = await a.json(), i = new Map((o.items || []).map((n) => [n.uri, n]));
1569
+ return t.map((n) => i.get(n) || { uri: n, title: n });
1570
+ }
1571
+ const Be = w`
1535
1572
  .breadcrumbs { font-size: 0.8125rem; margin: 0.9rem 0 0; color: var(--hsot-gray-5); }
1536
1573
  .breadcrumbs a { text-decoration: none; }
1537
1574
  .scorehead { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1rem; align-items: center; padding: 1.4rem 1rem; }
@@ -1542,12 +1579,24 @@ const Ce = w`
1542
1579
  display: flex; align-items: center; justify-content: center;
1543
1580
  font-family: var(--hsot-heading-font); font-weight: 700; color: var(--hsot-white);
1544
1581
  }
1582
+ .scorehead .crest.logo {
1583
+ object-fit: contain; background: var(--hsot-white);
1584
+ border: 1px solid var(--hsot-gray-2); padding: 4px; box-sizing: border-box;
1585
+ }
1545
1586
  .scorehead .tname { font-family: var(--hsot-heading-font); font-weight: 700; font-size: 1.15rem; line-height: 1.15; }
1546
1587
  .scorehead .tname a { color: inherit; text-decoration: none; }
1547
1588
  .scorehead .trec { font-size: 0.8rem; color: var(--hsot-gray-5); }
1548
1589
  .scorehead .mid { text-align: center; }
1549
1590
  .scorehead .bigscore { font-family: var(--hsot-heading-font); font-weight: 700; font-size: 3rem; line-height: 1; color: var(--hsot-black); white-space: nowrap; }
1550
1591
  .scorehead .status { margin-top: 0.3rem; font-size: 0.8rem; color: var(--hsot-gray-5); }
1592
+ .covgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
1593
+ .covcard { display: flex; flex-direction: column; text-decoration: none; color: inherit; margin-bottom: 0; }
1594
+ .covcard:hover .covtitle { color: var(--hsot-red-deep); }
1595
+ .covimg { width: 100%; aspect-ratio: 1.91; object-fit: cover; display: block; background: var(--hsot-gray-1); }
1596
+ .covbody { padding: 0.75rem 0.9rem 0.85rem; }
1597
+ .covtitle { font-family: var(--hsot-heading-font); font-weight: 700; font-size: 1.05rem; line-height: 1.25; overflow-wrap: anywhere; }
1598
+ .covdesc { margin: 0.35rem 0 0; font-size: 0.85rem; color: var(--hsot-gray-5); line-height: 1.4; }
1599
+ .covmeta { margin-top: 0.45rem; font-size: 0.78rem; color: var(--hsot-gray-5); }
1551
1600
  .cols { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
1552
1601
  .ctxcard { padding: 0.85rem 1rem; }
1553
1602
  .ctxcard .who { font-family: var(--hsot-heading-font); font-weight: 700; margin-bottom: 0.4rem; }
@@ -1558,30 +1607,39 @@ const Ce = w`
1558
1607
  .cols { grid-template-columns: 1fr; }
1559
1608
  }
1560
1609
  `;
1561
- class Wt extends b {
1562
- static styles = [...H, Ce];
1610
+ class Gt extends b {
1611
+ static styles = [...H, Be];
1563
1612
  static properties = {
1564
1613
  ...b.properties,
1565
- gameId: { type: String, attribute: "game-id" }
1614
+ gameId: { type: String, attribute: "game-id" },
1615
+ // The public site search that resolves Game.coverageUrls into cards
1616
+ // (DEV-1236). Shared cross-stage by design — see the studio host's
1617
+ // registry — so the prod default is right everywhere; the attribute
1618
+ // exists for the same reason the href templates do.
1619
+ searchApi: { type: String, attribute: "search-api" }
1566
1620
  };
1567
1621
  constructor() {
1568
- super(), this.gameId = "";
1622
+ super(), this.gameId = "", this.searchApi = "";
1569
1623
  }
1570
1624
  async fetchData(t) {
1571
- const e = await t.getGame(this.gameId), [s, a, o, i, n] = await Promise.all([
1625
+ const e = await t.getGame(this.gameId), s = Array.isArray(e.coverageUrls) ? e.coverageUrls : [], [a, o, i, n, c, p] = await Promise.all([
1572
1626
  t.listSchools(),
1573
1627
  t.listTeams({ sport: e.sport }),
1574
1628
  t.listConferences(),
1575
1629
  t.listRankings({ sport: e.sport }),
1576
- t.listGames({ sport: e.sport, season: e.season })
1630
+ t.listGames({ sport: e.sport, season: e.season }),
1631
+ // A search outage must not blank the box score — degrade to bare
1632
+ // links (fetchCoverage already degrades per-URL index misses).
1633
+ s.length ? ze(this.searchApi, s).catch(() => s.map((l) => ({ uri: l, title: l }))) : Promise.resolve([])
1577
1634
  ]);
1578
1635
  return {
1579
1636
  game: e,
1580
- schools: s.items,
1581
- teams: a.items,
1582
- conferences: o.items,
1583
- rankings: i.items,
1584
- games: n.items
1637
+ schools: a.items,
1638
+ teams: o.items,
1639
+ conferences: i.items,
1640
+ rankings: n.items,
1641
+ games: c.items,
1642
+ coverage: p
1585
1643
  };
1586
1644
  }
1587
1645
  get ctx() {
@@ -1597,12 +1655,12 @@ class Wt extends b {
1597
1655
  renderView() {
1598
1656
  const t = this.data.game;
1599
1657
  if (!t) return d`<div class="view"><p class="empty">Game not found.</p></div>`;
1600
- const e = this.ctx, s = g(this.data.conferences), a = e.teamsById[t.awayTeamId] ? e.schoolsById[e.teamsById[t.awayTeamId].schoolId] : null, o = e.teamsById[t.homeTeamId] ? e.schoolsById[e.teamsById[t.homeTeamId].schoolId] : null, i = ht(t), n = (h) => t.state === "final" && i !== h && i !== "tie" ? "opacity:0.45" : "", l = t.conferenceId ? s[t.conferenceId] : null, p = this.data.games.filter((h) => h.id !== t.id && h.state === "final" && h.gameType !== "scrimmage" && (h.homeTeamId === t.homeTeamId && h.awayTeamId === t.awayTeamId || h.homeTeamId === t.awayTeamId && h.awayTeamId === t.homeTeamId));
1658
+ const e = this.ctx, s = g(this.data.conferences), a = e.teamsById[t.awayTeamId] ? e.schoolsById[e.teamsById[t.awayTeamId].schoolId] : null, o = e.teamsById[t.homeTeamId] ? e.schoolsById[e.teamsById[t.homeTeamId].schoolId] : null, i = pt(t), n = (l) => t.state === "final" && i !== l && i !== "tie" ? "opacity:0.45" : "", c = t.conferenceId ? s[t.conferenceId] : null, p = this.data.games.filter((l) => l.id !== t.id && l.state === "final" && l.gameType !== "scrimmage" && (l.homeTeamId === t.homeTeamId && l.awayTeamId === t.awayTeamId || l.homeTeamId === t.awayTeamId && l.awayTeamId === t.homeTeamId));
1601
1659
  return d`
1602
1660
  <div class="view">
1603
1661
  <p class="breadcrumbs">
1604
- <a href=${$(e.hrefs.section, { sport: t.sport, view: "scores" })}>${J(t.sport)}</a> /
1605
- <a href=${$(e.hrefs.section, { sport: t.sport, view: "scores" })}>Scores/Schedules</a> /
1662
+ <a href=${v(e.hrefs.section, { sport: t.sport, view: "scores" })}>${J(t.sport)}</a> /
1663
+ <a href=${v(e.hrefs.section, { sport: t.sport, view: "scores" })}>Scores/Schedules</a> /
1606
1664
  ${P(e, t.awayTeamId)} at ${P(e, t.homeTeamId)}
1607
1665
  </p>
1608
1666
  <div class="card">
@@ -1614,13 +1672,13 @@ class Wt extends b {
1614
1672
  <span class="mut" style="font-size:1.6rem">–</span>
1615
1673
  <span style=${n("home")}>${t.homeScore}</span>
1616
1674
  </div>
1617
- <div class="status">${q(t)}</div>
1618
- <div class="status">${y(t.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${t.state === "scheduled" && t.time ? d` · ${Q(t.time)}` : m} · ${t.venue || "Venue TBD"}
1675
+ <div class="status">${Y(t)}</div>
1676
+ <div class="status">${y(t.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${t.state === "scheduled" && t.time ? d` · ${X(t.time)}` : m} · ${t.venue || "Venue TBD"}
1619
1677
  ${t.broadcast ? d` · <span class="pill class">${t.broadcast}</span>` : m}</div>
1620
1678
  <div class="status">
1621
- <span class="pill type">${t.gameType === "conference" ? `${l?.name || "Conference"} game` : t.gameType}</span>
1679
+ <span class="pill type">${t.gameType === "conference" ? `${c?.name || "Conference"} game` : t.gameType}</span>
1622
1680
  ${t.label ? d`<span class="pill type">Bracket ${t.label}</span>` : m}
1623
- ${(t.tags || []).map((h) => d`<span class="pill type">${h}</span>`)}
1681
+ ${(t.tags || []).map((l) => d`<span class="pill type">${l}</span>`)}
1624
1682
  </div>
1625
1683
  </div>
1626
1684
  ${this.teamBlock(e, t, t.homeTeamId, o, !0)}
@@ -1628,24 +1686,33 @@ class Wt extends b {
1628
1686
  ${this.renderLineScore(t, a, o)}
1629
1687
  ${t.notes ? d`<p class="note" style="padding:0 1rem 0.9rem;text-align:center">${t.notes}</p>` : m}
1630
1688
  </div>
1631
- ${t.storyAssetId || t.videoAssetId ? d`
1689
+ ${(this.data.coverage || []).length ? d`
1632
1690
  <div class="section-title">Coverage</div>
1633
- <div class="card" style="padding:0.8rem 1rem;display:flex;gap:0.5rem;flex-wrap:wrap;align-items:center">
1634
- ${t.storyAssetId ? d`<span class="pill class" title="Game.storyAssetId">Game story · ${t.storyAssetId}</span>` : m}
1635
- ${t.videoAssetId ? d`<span class="pill class" title="Game.videoAssetId">Highlights · ${t.videoAssetId}</span>` : m}
1636
- <span class="asof">Story and video ride the Game resource as Studio asset references.</span>
1691
+ <div class="covgrid">
1692
+ ${this.data.coverage.map((l) => d`
1693
+ <a class="card covcard" href=${l.uri}>
1694
+ ${l.image ? d`<img class="covimg" src=${l.image} alt="" loading="lazy" />` : m}
1695
+ <div class="covbody">
1696
+ <div class="covtitle">${l.videoDuration ? d`<span class="pill live" style="animation:none">Video</span> ` : m}${l.title || l.uri}</div>
1697
+ ${l.description ? d`<p class="covdesc">${l.description}</p>` : m}
1698
+ ${l.author || l.publishedTime ? d`
1699
+ <div class="covmeta">${[l.author, l.publishedTime ? new Date(l.publishedTime).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }) : ""].filter(Boolean).join(" · ")}</div>
1700
+ ` : m}
1701
+ </div>
1702
+ </a>
1703
+ `)}
1637
1704
  </div>` : m}
1638
1705
  <div class="section-title">Season context</div>
1639
1706
  <div class="cols">
1640
- ${[[t.awayTeamId, a], [t.homeTeamId, o]].map(([h, c]) => this.renderContext(e, h, c))}
1707
+ ${[[t.awayTeamId, a], [t.homeTeamId, o]].map(([l, h]) => this.renderContext(e, l, h))}
1641
1708
  </div>
1642
1709
  ${p.length ? d`
1643
1710
  <div class="section-title">Head to head this season</div>
1644
1711
  <div class="card"><ul class="gamelist">
1645
- ${p.map((h) => d`<li>
1646
- <span class="d">${y(h.date)}</span>${q(h)}
1647
- <span class="opp">${P(e, h.awayTeamId)} ${h.awayScore}, ${P(e, h.homeTeamId)} ${h.homeScore}</span>
1648
- <a class="box" href=${$(e.hrefs.game, { sport: t.sport, id: h.id })}>Box score →</a>
1712
+ ${p.map((l) => d`<li>
1713
+ <span class="d">${y(l.date)}</span>${Y(l)}
1714
+ <span class="opp">${P(e, l.awayTeamId)} ${l.awayScore}, ${P(e, l.homeTeamId)} ${l.homeScore}</span>
1715
+ <a class="box" href=${v(e.hrefs.game, { sport: t.sport, id: l.id })}>Box score →</a>
1649
1716
  </li>`)}
1650
1717
  </ul></div>` : m}
1651
1718
  </div>
@@ -1653,12 +1720,12 @@ class Wt extends b {
1653
1720
  }
1654
1721
  teamBlock(t, e, s, a, o) {
1655
1722
  if (!a) return d`<div class="teamblock ${o ? "right" : ""}"><div class="tname">TBD</div></div>`;
1656
- const i = t.teamsById[s], n = t.records[s];
1723
+ const i = t.teamsById[s], n = t.records[s], c = G(a, 58);
1657
1724
  return d`
1658
1725
  <div class="teamblock ${o ? "right" : ""}">
1659
- <span class="crest" style="background:${a.colorPrimary || "#030711"};color:${W(a.colorPrimary || "#030711")}">${mt(a)}</span>
1726
+ ${c ? d`<img class="crest logo" alt="" loading="lazy" src=${c} />` : d`<span class="crest" style="background:${a.colorPrimary || "#030711"};color:${V(a.colorPrimary || "#030711")}">${ft(a)}</span>`}
1660
1727
  <div>
1661
- <div class="tname">${ft(t, s, e.date)}<a href=${$(t.hrefs.school, { id: a.id })}>${a.name}</a></div>
1728
+ <div class="tname">${ut(t, s, e.date)}<a href=${v(t.hrefs.school, { id: a.id })}>${a.name}</a></div>
1662
1729
  <div class="trec">${a.mascot || ""} · ${x(n)}${i?.conferenceId ? d` · ${x(n, !0)} conf` : m}</div>
1663
1730
  </div>
1664
1731
  </div>
@@ -1668,22 +1735,22 @@ class Wt extends b {
1668
1735
  const a = t.periodScores || [];
1669
1736
  if (!a.length)
1670
1737
  return d`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>`;
1671
- const o = Math.max(4, ...a.map((p) => p.period)), i = (p) => p <= 4 ? String(p) : `OT${p > 5 ? p - 4 : ""}`, n = (p, h) => {
1672
- const c = a.find((f) => f.period === h);
1673
- return c ? c[p] : t.state === "final" ? 0 : "·";
1674
- }, l = (p, h, c) => d`
1738
+ const o = Math.max(4, ...a.map((p) => p.period)), i = (p) => p <= 4 ? String(p) : `OT${p > 5 ? p - 4 : ""}`, n = (p, l) => {
1739
+ const h = a.find((f) => f.period === l);
1740
+ return h ? h[p] : t.state === "final" ? 0 : "·";
1741
+ }, c = (p, l, h) => d`
1675
1742
  <tr>
1676
1743
  <td class="teamcell">${F(p, 20)}${p?.abbr || "TBD"}</td>
1677
- ${Array.from({ length: o }, (f, u) => d`<td class="num">${n(h, u + 1)}</td>`)}
1678
- <td class="num" style="font-weight:700">${c}</td>
1744
+ ${Array.from({ length: o }, (f, u) => d`<td class="num">${n(l, u + 1)}</td>`)}
1745
+ <td class="num" style="font-weight:700">${h}</td>
1679
1746
  </tr>`;
1680
1747
  return d`
1681
1748
  <div class="tablewrap" style="border-top:1px solid var(--hsot-gray-2)">
1682
1749
  <table class="data" style="max-width:560px;margin:0.6rem auto 0.9rem">
1683
- <thead><tr><th>Team</th>${Array.from({ length: o }, (p, h) => d`<th class="num">${i(h + 1)}</th>`)}<th class="num">T</th></tr></thead>
1750
+ <thead><tr><th>Team</th>${Array.from({ length: o }, (p, l) => d`<th class="num">${i(l + 1)}</th>`)}<th class="num">T</th></tr></thead>
1684
1751
  <tbody>
1685
- ${l(e, "away", t.awayScore)}
1686
- ${l(s, "home", t.homeScore)}
1752
+ ${c(e, "away", t.awayScore)}
1753
+ ${c(s, "home", t.homeScore)}
1687
1754
  </tbody>
1688
1755
  </table>
1689
1756
  </div>
@@ -1691,36 +1758,36 @@ class Wt extends b {
1691
1758
  }
1692
1759
  renderContext(t, e, s) {
1693
1760
  if (!s) return m;
1694
- const a = t.records[e], o = pt(this.data.games, e);
1761
+ const a = t.records[e], o = mt(this.data.games, e);
1695
1762
  return d`
1696
1763
  <div class="card ctxcard">
1697
1764
  <div class="who">${F(s)}${s.name}</div>
1698
1765
  <div class="row">
1699
- <span>Last 5: ${ut(t, e)}</span>
1766
+ <span>Last 5: ${gt(t, e)}</span>
1700
1767
  <span>Streak: <b>${a ? Z(a.results) : "·"}</b></span>
1701
1768
  <span>PF/PA: <b>${a ? `${a.pf} / ${a.pa}` : "·"}</b></span>
1702
1769
  <span>Next: ${o ? d`${y(o.date, { month: "numeric", day: "numeric" })}
1703
- ${o.homeTeamId === e ? "vs" : "at"} ${V(t, o.homeTeamId === e ? o.awayTeamId : o.homeTeamId)}` : "·"}</span>
1770
+ ${o.homeTeamId === e ? "vs" : "at"} ${q(t, o.homeTeamId === e ? o.awayTeamId : o.homeTeamId)}` : "·"}</span>
1704
1771
  </div>
1705
1772
  </div>
1706
1773
  `;
1707
1774
  }
1708
1775
  }
1709
- globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", Wt);
1710
- const Ee = {
1711
- "hsot-scores": Mt,
1712
- "hsot-standings": Lt,
1713
- "hsot-rankings": jt,
1714
- "hsot-school": Gt,
1715
- "hsot-boxscore": Wt
1776
+ globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", Gt);
1777
+ const Ue = {
1778
+ "hsot-scores": Lt,
1779
+ "hsot-standings": jt,
1780
+ "hsot-rankings": Wt,
1781
+ "hsot-school": Vt,
1782
+ "hsot-boxscore": Gt
1716
1783
  };
1717
- function Pe() {
1784
+ function Oe() {
1718
1785
  const r = globalThis?.customElements;
1719
1786
  if (r)
1720
- for (const [t, e] of Object.entries(Ee))
1787
+ for (const [t, e] of Object.entries(Ue))
1721
1788
  r.get(t) || r.define(t, e);
1722
1789
  }
1723
- typeof window < "u" && globalThis.customElements && Pe();
1790
+ typeof window < "u" && globalThis.customElements && Oe();
1724
1791
  export {
1725
- Pe as defineAll
1792
+ Oe as defineAll
1726
1793
  };