@wral/hsot-data 0.1.4 → 0.1.5

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, nt = j.ShadowRoot && (j.ShadyCSS === void 0 || j.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, lt = /* @__PURE__ */ Symbol(), $t = /* @__PURE__ */ new WeakMap();
2
- let Dt = class {
1
+ const G = globalThis, lt = G.ShadowRoot && (G.ShadyCSS === void 0 || G.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, ct = /* @__PURE__ */ Symbol(), yt = /* @__PURE__ */ new WeakMap();
2
+ let Rt = class {
3
3
  constructor(t, e, s) {
4
- if (this._$cssResult$ = !0, s !== lt) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
4
+ if (this._$cssResult$ = !0, s !== ct) 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 (nt && t === void 0) {
10
+ if (lt && t === void 0) {
11
11
  const s = e !== void 0 && e.length === 1;
12
- s && (t = $t.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && $t.set(e, t));
12
+ s && (t = yt.get(e)), t === void 0 && ((this.o = t = new CSSStyleSheet()).replaceSync(this.cssText), s && yt.set(e, t));
13
13
  }
14
14
  return t;
15
15
  }
@@ -17,28 +17,28 @@ let Dt = class {
17
17
  return this.cssText;
18
18
  }
19
19
  };
20
- const Yt = (a) => new Dt(typeof a == "string" ? a : a + "", void 0, lt), w = (a, ...t) => {
20
+ const Qt = (a) => new Rt(typeof a == "string" ? a : a + "", void 0, ct), w = (a, ...t) => {
21
21
  const e = a.length === 1 ? a[0] : t.reduce((s, r, 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
  })(r) + a[o + 1], a[0]);
26
- return new Dt(e, a, lt);
27
- }, Zt = (a, t) => {
28
- if (nt) a.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
26
+ return new Rt(e, a, ct);
27
+ }, Jt = (a, t) => {
28
+ if (lt) a.adoptedStyleSheets = t.map((e) => e instanceof CSSStyleSheet ? e : e.styleSheet);
29
29
  else for (const e of t) {
30
- const s = document.createElement("style"), r = j.litNonce;
30
+ const s = document.createElement("style"), r = G.litNonce;
31
31
  r !== void 0 && s.setAttribute("nonce", r), s.textContent = e.cssText, a.appendChild(s);
32
32
  }
33
- }, vt = nt ? (a) => a : (a) => a instanceof CSSStyleSheet ? ((t) => {
33
+ }, bt = lt ? (a) => a : (a) => a instanceof CSSStyleSheet ? ((t) => {
34
34
  let e = "";
35
35
  for (const s of t.cssRules) e += s.cssText;
36
- return Yt(e);
36
+ return Qt(e);
37
37
  })(a) : a;
38
- const { is: Kt, defineProperty: Qt, getOwnPropertyDescriptor: Jt, getOwnPropertyNames: Xt, getOwnPropertySymbols: te, getPrototypeOf: ee } = Object, Z = globalThis, yt = Z.trustedTypes, se = yt ? yt.emptyScript : "", ae = Z.reactiveElementPolyfillSupport, D = (a, t) => a, rt = { toAttribute(a, t) {
38
+ const { is: Xt, defineProperty: te, getOwnPropertyDescriptor: ee, getOwnPropertyNames: se, getOwnPropertySymbols: ae, getPrototypeOf: re } = Object, Q = globalThis, wt = Q.trustedTypes, oe = wt ? wt.emptyScript : "", ie = Q.reactiveElementPolyfillSupport, R = (a, t) => a, ot = { toAttribute(a, t) {
39
39
  switch (t) {
40
40
  case Boolean:
41
- a = a ? se : null;
41
+ a = a ? oe : null;
42
42
  break;
43
43
  case Object:
44
44
  case Array:
@@ -63,23 +63,23 @@ const { is: Kt, defineProperty: Qt, getOwnPropertyDescriptor: Jt, getOwnProperty
63
63
  }
64
64
  }
65
65
  return e;
66
- } }, Rt = (a, t) => !Kt(a, t), bt = { attribute: !0, type: String, converter: rt, reflect: !1, useDefault: !1, hasChanged: Rt };
67
- Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), Z.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
68
- let T = class extends HTMLElement {
66
+ } }, Bt = (a, t) => !Xt(a, t), xt = { attribute: !0, type: String, converter: ot, reflect: !1, useDefault: !1, hasChanged: Bt };
67
+ Symbol.metadata ??= /* @__PURE__ */ Symbol("metadata"), Q.litPropertyMetadata ??= /* @__PURE__ */ new WeakMap();
68
+ let C = class extends HTMLElement {
69
69
  static addInitializer(t) {
70
70
  this._$Ei(), (this.l ??= []).push(t);
71
71
  }
72
72
  static get observedAttributes() {
73
73
  return this.finalize(), this._$Eh && [...this._$Eh.keys()];
74
74
  }
75
- static createProperty(t, e = bt) {
75
+ static createProperty(t, e = xt) {
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(), r = this.getPropertyDescriptor(t, s, e);
78
- r !== void 0 && Qt(this.prototype, t, r);
78
+ r !== void 0 && te(this.prototype, t, r);
79
79
  }
80
80
  }
81
81
  static getPropertyDescriptor(t, e, s) {
82
- const { get: r, set: o } = Jt(this.prototype, t) ?? { get() {
82
+ const { get: r, set: o } = ee(this.prototype, t) ?? { get() {
83
83
  return this[e];
84
84
  }, set(i) {
85
85
  this[e] = i;
@@ -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) ?? bt;
93
+ return this.elementProperties.get(t) ?? xt;
94
94
  }
95
95
  static _$Ei() {
96
- if (this.hasOwnProperty(D("elementProperties"))) return;
97
- const t = ee(this);
96
+ if (this.hasOwnProperty(R("elementProperties"))) return;
97
+ const t = re(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
- if (this.hasOwnProperty(D("finalized"))) return;
102
- if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(D("properties"))) {
103
- const e = this.properties, s = [...Xt(e), ...te(e)];
101
+ if (this.hasOwnProperty(R("finalized"))) return;
102
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(R("properties"))) {
103
+ const e = this.properties, s = [...se(e), ...ae(e)];
104
104
  for (const r of s) this.createProperty(r, e[r]);
105
105
  }
106
106
  const t = this[Symbol.metadata];
@@ -119,8 +119,8 @@ let T = class extends HTMLElement {
119
119
  const e = [];
120
120
  if (Array.isArray(t)) {
121
121
  const s = new Set(t.flat(1 / 0).reverse());
122
- for (const r of s) e.unshift(vt(r));
123
- } else t !== void 0 && e.push(vt(t));
122
+ for (const r of s) e.unshift(bt(r));
123
+ } else t !== void 0 && e.push(bt(t));
124
124
  return e;
125
125
  }
126
126
  static _$Eu(t, e) {
@@ -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 Zt(t, this.constructor.elementStyles), t;
149
+ return Jt(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), r = this.constructor._$Eu(t, s);
164
164
  if (r !== void 0 && s.reflect === !0) {
165
- const o = (s.converter?.toAttribute !== void 0 ? s.converter : rt).toAttribute(e, s.type);
165
+ const o = (s.converter?.toAttribute !== void 0 ? s.converter : ot).toAttribute(e, s.type);
166
166
  this._$Em = t, o == null ? this.removeAttribute(r) : this.setAttribute(r, o), this._$Em = null;
167
167
  }
168
168
  }
169
169
  _$AK(t, e) {
170
170
  const s = this.constructor, r = s._$Eh.get(t);
171
171
  if (r !== void 0 && this._$Em !== r) {
172
- const o = s.getPropertyOptions(r), i = typeof o.converter == "function" ? { fromAttribute: o.converter } : o.converter?.fromAttribute !== void 0 ? o.converter : rt;
172
+ const o = s.getPropertyOptions(r), i = typeof o.converter == "function" ? { fromAttribute: o.converter } : o.converter?.fromAttribute !== void 0 ? o.converter : ot;
173
173
  this._$Em = r;
174
174
  const n = i.fromAttribute(e, o.type);
175
175
  this[r] = n ?? this._$Ej?.get(r) ?? n, this._$Em = null;
@@ -178,7 +178,7 @@ let T = class extends HTMLElement {
178
178
  requestUpdate(t, e, s, r = !1, o) {
179
179
  if (t !== void 0) {
180
180
  const i = this.constructor;
181
- if (r === !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;
181
+ if (r === !1 && (o = this[t]), s ??= i.getPropertyOptions(t), !((s.hasChanged ?? Bt)(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,70 +246,70 @@ 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(), ae?.({ ReactiveElement: T }), (Z.reactiveElementVersions ??= []).push("2.1.2");
250
- const ct = globalThis, wt = (a) => a, W = ct.trustedTypes, xt = W ? W.createPolicy("lit-html", { createHTML: (a) => a }) : void 0, zt = "$lit$", _ = `lit$${Math.random().toFixed(9).slice(2)}$`, Bt = "?" + _, re = `<${Bt}>`, A = document, z = () => A.createComment(""), B = (a) => a === null || typeof a != "object" && typeof a != "function", dt = Array.isArray, oe = (a) => dt(a) || typeof a?.[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 = (a) => (t, ...e) => ({ _$litType$: a, strings: t, values: e }), d = Ot(1), Tt = Ot(2), C = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), Ct = /* @__PURE__ */ new WeakMap(), S = A.createTreeWalker(A, 129);
253
- function Ft(a, t) {
254
- if (!dt(a) || !a.hasOwnProperty("raw")) throw Error("invalid template strings array");
255
- return xt !== void 0 ? xt.createHTML(t) : t;
249
+ C.elementStyles = [], C.shadowRootOptions = { mode: "open" }, C[R("elementProperties")] = /* @__PURE__ */ new Map(), C[R("finalized")] = /* @__PURE__ */ new Map(), ie?.({ ReactiveElement: C }), (Q.reactiveElementVersions ??= []).push("2.1.2");
250
+ const dt = globalThis, kt = (a) => a, V = dt.trustedTypes, _t = V ? V.createPolicy("lit-html", { createHTML: (a) => a }) : void 0, Ft = "$lit$", k = `lit$${Math.random().toFixed(9).slice(2)}$`, Ut = "?" + k, ne = `<${Ut}>`, T = document, F = () => T.createComment(""), U = (a) => a === null || typeof a != "object" && typeof a != "function", ht = Array.isArray, le = (a) => ht(a) || typeof a?.[Symbol.iterator] == "function", at = `[
251
+ \f\r]`, D = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, St = /-->/g, At = />/g, S = RegExp(`>|${at}(?:([^\\s"'>=/]+)(${at}*=${at}*(?:[^
252
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), Tt = /'/g, Ct = /"/g, Ot = /^(?:script|style|textarea|title)$/i, Nt = (a) => (t, ...e) => ({ _$litType$: a, strings: t, values: e }), l = Nt(1), It = Nt(2), I = /* @__PURE__ */ Symbol.for("lit-noChange"), m = /* @__PURE__ */ Symbol.for("lit-nothing"), Et = /* @__PURE__ */ new WeakMap(), A = T.createTreeWalker(T, 129);
253
+ function Ht(a, t) {
254
+ if (!ht(a) || !a.hasOwnProperty("raw")) throw Error("invalid template strings array");
255
+ return _t !== void 0 ? _t.createHTML(t) : t;
256
256
  }
257
- const ie = (a, t) => {
257
+ const ce = (a, t) => {
258
258
  const e = a.length - 1, s = [];
259
- let r, o = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", i = E;
259
+ let r, o = t === 2 ? "<svg>" : t === 3 ? "<math>" : "", i = D;
260
260
  for (let n = 0; n < e; n++) {
261
261
  const c = a[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]) && (r = RegExp("</" + l[2], "g")), i = k) : l[3] !== void 0 && (i = k) : i === k ? l[0] === ">" ? (i = r ?? 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, r = void 0);
264
- const u = i === k && a[n + 1].startsWith("/>") ? " " : "";
265
- o += i === E ? c + re : h >= 0 ? (s.push(p), c.slice(0, h) + zt + c.slice(h) + _ + u) : c + _ + (h === -2 ? n : u);
262
+ let p, d, h = -1, f = 0;
263
+ for (; f < c.length && (i.lastIndex = f, d = i.exec(c), d !== null); ) f = i.lastIndex, i === D ? d[1] === "!--" ? i = St : d[1] !== void 0 ? i = At : d[2] !== void 0 ? (Ot.test(d[2]) && (r = RegExp("</" + d[2], "g")), i = S) : d[3] !== void 0 && (i = S) : i === S ? d[0] === ">" ? (i = r ?? D, h = -1) : d[1] === void 0 ? h = -2 : (h = i.lastIndex - d[2].length, p = d[1], i = d[3] === void 0 ? S : d[3] === '"' ? Ct : Tt) : i === Ct || i === Tt ? i = S : i === St || i === At ? i = D : (i = S, r = void 0);
264
+ const u = i === S && a[n + 1].startsWith("/>") ? " " : "";
265
+ o += i === D ? c + ne : h >= 0 ? (s.push(p), c.slice(0, h) + Ft + c.slice(h) + k + u) : c + k + (h === -2 ? n : u);
266
266
  }
267
- return [Ft(a, o + (a[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
267
+ return [Ht(a, o + (a[e] || "<?>") + (t === 2 ? "</svg>" : t === 3 ? "</math>" : "")), s];
268
268
  };
269
- class U {
269
+ class O {
270
270
  constructor({ strings: t, _$litType$: e }, s) {
271
271
  let r;
272
272
  this.parts = [];
273
273
  let o = 0, i = 0;
274
- const n = t.length - 1, c = this.parts, [p, l] = ie(t, e);
275
- if (this.el = U.createElement(p, s), S.currentNode = this.el.content, e === 2 || e === 3) {
274
+ const n = t.length - 1, c = this.parts, [p, d] = ce(t, e);
275
+ if (this.el = O.createElement(p, s), A.currentNode = this.el.content, e === 2 || e === 3) {
276
276
  const h = this.el.content.firstChild;
277
277
  h.replaceWith(...h.childNodes);
278
278
  }
279
- for (; (r = S.nextNode()) !== null && c.length < n; ) {
279
+ for (; (r = A.nextNode()) !== null && c.length < n; ) {
280
280
  if (r.nodeType === 1) {
281
- if (r.hasAttributes()) for (const h of r.getAttributeNames()) if (h.endsWith(zt)) {
282
- const f = l[i++], u = r.getAttribute(h).split(_), v = /([.?@])?(.*)/.exec(f);
283
- c.push({ type: 1, index: o, name: v[2], strings: u, ctor: v[1] === "." ? le : v[1] === "?" ? ce : v[1] === "@" ? de : K }), r.removeAttribute(h);
284
- } else h.startsWith(_) && (c.push({ type: 6, index: o }), r.removeAttribute(h));
285
- if (Ut.test(r.tagName)) {
286
- const h = r.textContent.split(_), f = h.length - 1;
281
+ if (r.hasAttributes()) for (const h of r.getAttributeNames()) if (h.endsWith(Ft)) {
282
+ const f = d[i++], u = r.getAttribute(h).split(k), $ = /([.?@])?(.*)/.exec(f);
283
+ c.push({ type: 1, index: o, name: $[2], strings: u, ctor: $[1] === "." ? he : $[1] === "?" ? pe : $[1] === "@" ? me : J }), r.removeAttribute(h);
284
+ } else h.startsWith(k) && (c.push({ type: 6, index: o }), r.removeAttribute(h));
285
+ if (Ot.test(r.tagName)) {
286
+ const h = r.textContent.split(k), f = h.length - 1;
287
287
  if (f > 0) {
288
- r.textContent = W ? W.emptyScript : "";
289
- for (let u = 0; u < f; u++) r.append(h[u], z()), S.nextNode(), c.push({ type: 2, index: ++o });
290
- r.append(h[f], z());
288
+ r.textContent = V ? V.emptyScript : "";
289
+ for (let u = 0; u < f; u++) r.append(h[u], F()), A.nextNode(), c.push({ type: 2, index: ++o });
290
+ r.append(h[f], F());
291
291
  }
292
292
  }
293
- } else if (r.nodeType === 8) if (r.data === Bt) c.push({ type: 2, index: o });
293
+ } else if (r.nodeType === 8) if (r.data === Ut) c.push({ type: 2, index: o });
294
294
  else {
295
295
  let h = -1;
296
- for (; (h = r.data.indexOf(_, h + 1)) !== -1; ) c.push({ type: 7, index: o }), h += _.length - 1;
296
+ for (; (h = r.data.indexOf(k, h + 1)) !== -1; ) c.push({ type: 7, index: o }), h += k.length - 1;
297
297
  }
298
298
  o++;
299
299
  }
300
300
  }
301
301
  static createElement(t, e) {
302
- const s = A.createElement("template");
302
+ const s = T.createElement("template");
303
303
  return s.innerHTML = t, s;
304
304
  }
305
305
  }
306
- function I(a, t, e = a, s) {
307
- if (t === C) return t;
306
+ function E(a, t, e = a, s) {
307
+ if (t === I) return t;
308
308
  let r = s !== void 0 ? e._$Co?.[s] : e._$Cl;
309
- const o = B(t) ? void 0 : t._$litDirective$;
310
- return r?.constructor !== o && (r?._$AO?.(!1), o === void 0 ? r = void 0 : (r = new o(a), r._$AT(a, e, s)), s !== void 0 ? (e._$Co ??= [])[s] = r : e._$Cl = r), r !== void 0 && (t = I(a, r._$AS(a, t.values), r, s)), t;
309
+ const o = U(t) ? void 0 : t._$litDirective$;
310
+ return r?.constructor !== o && (r?._$AO?.(!1), o === void 0 ? r = void 0 : (r = new o(a), r._$AT(a, e, s)), s !== void 0 ? (e._$Co ??= [])[s] = r : e._$Cl = r), r !== void 0 && (t = E(a, r._$AS(a, t.values), r, s)), t;
311
311
  }
312
- class ne {
312
+ class de {
313
313
  constructor(t, e) {
314
314
  this._$AV = [], this._$AN = void 0, this._$AD = t, this._$AM = e;
315
315
  }
@@ -320,24 +320,24 @@ class ne {
320
320
  return this._$AM._$AU;
321
321
  }
322
322
  u(t) {
323
- const { el: { content: e }, parts: s } = this._$AD, r = (t?.creationScope ?? A).importNode(e, !0);
324
- S.currentNode = r;
325
- let o = S.nextNode(), i = 0, n = 0, c = s[0];
323
+ const { el: { content: e }, parts: s } = this._$AD, r = (t?.creationScope ?? T).importNode(e, !0);
324
+ A.currentNode = r;
325
+ let o = A.nextNode(), i = 0, n = 0, c = s[0];
326
326
  for (; c !== void 0; ) {
327
327
  if (i === c.index) {
328
328
  let p;
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 he(o, this, t)), this._$AV.push(p), c = s[++n];
329
+ c.type === 2 ? p = new M(o, o.nextSibling, this, t) : c.type === 1 ? p = new c.ctor(o, c.name, c.strings, this, t) : c.type === 6 && (p = new fe(o, this, t)), this._$AV.push(p), c = s[++n];
330
330
  }
331
- i !== c?.index && (o = S.nextNode(), i++);
331
+ i !== c?.index && (o = A.nextNode(), i++);
332
332
  }
333
- return S.currentNode = A, r;
333
+ return A.currentNode = T, r;
334
334
  }
335
335
  p(t) {
336
336
  let e = 0;
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 N {
340
+ class M {
341
341
  get _$AU() {
342
342
  return this._$AM?._$AU ?? this._$Cv;
343
343
  }
@@ -356,7 +356,7 @@ class N {
356
356
  return this._$AB;
357
357
  }
358
358
  _$AI(t, e = this) {
359
- t = I(this, t, e), B(t) ? t === m || t == null || t === "" ? (this._$AH !== m && this._$AR(), this._$AH = m) : t !== this._$AH && t !== C && this._(t) : t._$litType$ !== void 0 ? this.$(t) : t.nodeType !== void 0 ? this.T(t) : oe(t) ? this.k(t) : this._(t);
359
+ t = E(this, t, e), U(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) : le(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 N {
365
365
  this._$AH !== t && (this._$AR(), this._$AH = this.O(t));
366
366
  }
367
367
  _(t) {
368
- this._$AH !== m && B(this._$AH) ? this._$AA.nextSibling.data = t : this.T(A.createTextNode(t)), this._$AH = t;
368
+ this._$AH !== m && U(this._$AH) ? this._$AA.nextSibling.data = t : this.T(T.createTextNode(t)), this._$AH = t;
369
369
  }
370
370
  $(t) {
371
- const { values: e, _$litType$: s } = t, r = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = U.createElement(Ft(s.h, s.h[0]), this.options)), s);
371
+ const { values: e, _$litType$: s } = t, r = typeof s == "number" ? this._$AC(t) : (s.el === void 0 && (s.el = O.createElement(Ht(s.h, s.h[0]), this.options)), s);
372
372
  if (this._$AH?._$AD === r) this._$AH.p(e);
373
373
  else {
374
- const o = new ne(r, this), i = o.u(this.options);
374
+ const o = new de(r, 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 = Ct.get(t.strings);
380
- return e === void 0 && Ct.set(t.strings, e = new U(t)), e;
379
+ let e = Et.get(t.strings);
380
+ return e === void 0 && Et.set(t.strings, e = new O(t)), e;
381
381
  }
382
382
  k(t) {
383
- dt(this._$AH) || (this._$AH = [], this._$AR());
383
+ ht(this._$AH) || (this._$AH = [], this._$AR());
384
384
  const e = this._$AH;
385
385
  let s, r = 0;
386
- for (const o of t) r === e.length ? e.push(s = new N(this.O(z()), this.O(z()), this, this.options)) : s = e[r], s._$AI(o), r++;
386
+ for (const o of t) r === e.length ? e.push(s = new M(this.O(F()), this.O(F()), this, this.options)) : s = e[r], s._$AI(o), r++;
387
387
  r < e.length && (this._$AR(s && s._$AB.nextSibling, r), e.length = r);
388
388
  }
389
389
  _$AR(t = this._$AA.nextSibling, e) {
390
390
  for (this._$AP?.(!1, !0, e); t !== this._$AB; ) {
391
- const s = wt(t).nextSibling;
392
- wt(t).remove(), t = s;
391
+ const s = kt(t).nextSibling;
392
+ kt(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 J {
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, r) {
410
410
  const o = this.strings;
411
411
  let i = !1;
412
- if (o === void 0) t = I(this, t, e, 0), i = !B(t) || t !== this._$AH && t !== C, i && (this._$AH = t);
412
+ if (o === void 0) t = E(this, t, e, 0), i = !U(t) || t !== this._$AH && t !== I, i && (this._$AH = t);
413
413
  else {
414
414
  const n = t;
415
415
  let c, p;
416
- for (t = o[0], c = 0; c < o.length - 1; c++) p = I(this, n[s + c], e, c), p === C && (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;
416
+ for (t = o[0], c = 0; c < o.length - 1; c++) p = E(this, n[s + c], e, c), p === I && (p = this._$AH[c]), i ||= !U(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 && !r && 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 le extends K {
424
+ class he extends J {
425
425
  constructor() {
426
426
  super(...arguments), this.type = 3;
427
427
  }
@@ -429,7 +429,7 @@ class le extends K {
429
429
  this.element[this.name] = t === m ? void 0 : t;
430
430
  }
431
431
  }
432
- class ce extends K {
432
+ class pe extends J {
433
433
  constructor() {
434
434
  super(...arguments), this.type = 4;
435
435
  }
@@ -437,12 +437,12 @@ class ce extends K {
437
437
  this.element.toggleAttribute(this.name, !!t && t !== m);
438
438
  }
439
439
  }
440
- class de extends K {
440
+ class me extends J {
441
441
  constructor(t, e, s, r, o) {
442
442
  super(t, e, s, r, o), this.type = 5;
443
443
  }
444
444
  _$AI(t, e = this) {
445
- if ((t = I(this, t, e, 0) ?? m) === C) return;
445
+ if ((t = E(this, t, e, 0) ?? m) === I) return;
446
446
  const s = this._$AH, r = t === m && s !== m || t.capture !== s.capture || t.once !== s.once || t.passive !== s.passive, o = t !== m && (s === m || r);
447
447
  r && this.element.removeEventListener(this.name, this, s), o && this.element.addEventListener(this.name, this, t), this._$AH = t;
448
448
  }
@@ -450,7 +450,7 @@ class de 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 he {
453
+ class fe {
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
  }
@@ -458,22 +458,22 @@ class he {
458
458
  return this._$AM._$AU;
459
459
  }
460
460
  _$AI(t) {
461
- I(this, t);
461
+ E(this, t);
462
462
  }
463
463
  }
464
- const pe = ct.litHtmlPolyfillSupport;
465
- pe?.(U, N), (ct.litHtmlVersions ??= []).push("3.3.3");
466
- const me = (a, t, e) => {
464
+ const ue = dt.litHtmlPolyfillSupport;
465
+ ue?.(O, M), (dt.litHtmlVersions ??= []).push("3.3.3");
466
+ const ge = (a, t, e) => {
467
467
  const s = e?.renderBefore ?? t;
468
468
  let r = s._$litPart$;
469
469
  if (r === void 0) {
470
470
  const o = e?.renderBefore ?? null;
471
- s._$litPart$ = r = new N(t.insertBefore(z(), o), o, void 0, e ?? {});
471
+ s._$litPart$ = r = new M(t.insertBefore(F(), o), o, void 0, e ?? {});
472
472
  }
473
473
  return r._$AI(a), r;
474
474
  };
475
- const ht = globalThis;
476
- class R extends T {
475
+ const pt = globalThis;
476
+ class B extends C {
477
477
  constructor() {
478
478
  super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
479
479
  }
@@ -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 = me(e, this.renderRoot, this.renderOptions);
486
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t), this._$Do = ge(e, this.renderRoot, this.renderOptions);
487
487
  }
488
488
  connectedCallback() {
489
489
  super.connectedCallback(), this._$Do?.setConnected(!0);
@@ -492,21 +492,21 @@ class R extends T {
492
492
  super.disconnectedCallback(), this._$Do?.setConnected(!1);
493
493
  }
494
494
  render() {
495
- return C;
495
+ return I;
496
496
  }
497
497
  }
498
- R._$litElement$ = !0, R.finalized = !0, ht.litElementHydrateSupport?.({ LitElement: R });
499
- const fe = ht.litElementPolyfillSupport;
500
- fe?.({ LitElement: R });
501
- (ht.litElementVersions ??= []).push("4.2.2");
502
- const ue = 50;
503
- function ge(a = {}) {
498
+ B._$litElement$ = !0, B.finalized = !0, pt.litElementHydrateSupport?.({ LitElement: B });
499
+ const ve = pt.litElementPolyfillSupport;
500
+ ve?.({ LitElement: B });
501
+ (pt.litElementVersions ??= []).push("4.2.2");
502
+ const $e = 50;
503
+ function ye(a = {}) {
504
504
  const t = Object.entries(a).filter(([, s]) => s != null && s !== "");
505
505
  if (!t.length) return "";
506
506
  const e = new URLSearchParams();
507
507
  return t.forEach(([s, r]) => e.set(s, String(r))), `?${e.toString()}`;
508
508
  }
509
- function $e({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
509
+ function be({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
510
510
  if (!a) throw new Error("createClient requires a baseUrl");
511
511
  const s = a.replace(/\/+$/, ""), r = e || ((...n) => fetch(...n));
512
512
  async function o(n) {
@@ -514,17 +514,17 @@ function $e({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
514
514
  t && (c.Authorization = `Bearer ${t}`);
515
515
  const p = await r(`${s}${n}`, { headers: c });
516
516
  if (!p.ok) {
517
- const l = new Error(`api-hsot ${p.status} on ${n}`);
518
- throw l.status = p.status, l;
517
+ const d = new Error(`api-hsot ${p.status} on ${n}`);
518
+ throw d.status = p.status, d;
519
519
  }
520
520
  return p.json();
521
521
  }
522
522
  async function i(n, c = {}) {
523
523
  const p = [];
524
- let l = null;
525
- for (let h = 0; h < ue; h += 1) {
526
- const f = ge(l ? { ...c, cursor: l } : c), u = await o(`${n}${f}`);
527
- if (p.push(...u.items || []), l = u.nextCursor || null, !l) break;
524
+ let d = null;
525
+ for (let h = 0; h < $e; h += 1) {
526
+ const f = ye(d ? { ...c, cursor: d } : c), u = await o(`${n}${f}`);
527
+ if (p.push(...u.items || []), d = u.nextCursor || null, !d) break;
528
528
  }
529
529
  return { items: p, total: p.length, nextCursor: null };
530
530
  }
@@ -544,7 +544,111 @@ function $e({ baseUrl: a, token: t = "", fetchFn: e } = {}) {
544
544
  listSports: () => o("/sports")
545
545
  };
546
546
  }
547
- class b extends R {
547
+ const rt = {
548
+ game: "/{sport}/game/{id}/",
549
+ school: "/school/{id}/",
550
+ section: "/{sport}/{view}/"
551
+ };
552
+ function g(a, t) {
553
+ return String(a).replace(/\{(\w+)\}/g, (e, s) => t[s] !== void 0 && t[s] !== null ? String(t[s]) : e);
554
+ }
555
+ function L(a) {
556
+ return {
557
+ game: a.getAttribute("game-href") || rt.game,
558
+ school: a.getAttribute("school-href") || rt.school,
559
+ section: a.getAttribute("section-href") || rt.section
560
+ };
561
+ }
562
+ const P = (a) => a ? a.charAt(0).toUpperCase() + a.slice(1) : "";
563
+ function y(a, t) {
564
+ if (!a) return "TBD";
565
+ const [e, s, r] = String(a).split("-").map(Number);
566
+ return !e || !s || !r ? "TBD" : new Date(e, s - 1, r).toLocaleDateString("en-US", t || { weekday: "short", month: "short", day: "numeric" });
567
+ }
568
+ function X(a) {
569
+ if (!a) return "";
570
+ const [t, e] = String(a).split(":").map(Number);
571
+ if (Number.isNaN(t)) return "";
572
+ const s = t >= 12 ? "PM" : "AM";
573
+ return `${(t + 11) % 12 + 1}:${String(e || 0).padStart(2, "0")} ${s}`;
574
+ }
575
+ function we(a) {
576
+ return a ? `${Math.floor(a / 12)}-${a % 12}` : "·";
577
+ }
578
+ function tt(a = /* @__PURE__ */ new Date()) {
579
+ const t = a.getFullYear();
580
+ return a.getMonth() >= 6 ? `${t}-${t + 1}` : `${t - 1}-${t}`;
581
+ }
582
+ function it(a = /* @__PURE__ */ new Date()) {
583
+ const t = (e) => String(e).padStart(2, "0");
584
+ return `${a.getFullYear()}-${t(a.getMonth() + 1)}-${t(a.getDate())}`;
585
+ }
586
+ function mt(a) {
587
+ return a ? (a.abbr || a.name || "?").slice(0, 4).toUpperCase() : "?";
588
+ }
589
+ function q(a) {
590
+ if (!a || !/^#[0-9a-fA-F]{6}$/.test(a)) return "#FFFFFF";
591
+ const t = parseInt(a.slice(1), 16), e = t >> 16 & 255, s = t >> 8 & 255, r = t & 255;
592
+ return 0.299 * e + 0.587 * s + 0.114 * r > 150 ? "#0F1B33" : "#FFFFFF";
593
+ }
594
+ const xe = (a) => {
595
+ const t = ["th", "st", "nd", "rd"], e = a % 100;
596
+ return a + (t[(e - 20) % 10] || t[e] || t[0]);
597
+ };
598
+ function ke(a) {
599
+ if (a.state === "live") return { kind: "live", label: `Live · ${a.period || ""}`.replace(/ · $/, "") };
600
+ if (a.state === "final") {
601
+ const t = [];
602
+ return a.finish === "overtime" && t.push("OT"), a.finish === "shootout" && t.push("PK-SO"), a.forfeit && a.forfeit !== "none" && t.push("Forfeit"), { kind: "final", label: `Final${t.length ? ` · ${t.join(" · ")}` : ""}` };
603
+ }
604
+ return a.state === "postponed" ? { kind: "warn", label: "Postponed" } : a.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${y(a.date, { month: "short", day: "numeric" })} · ${X(a.time)}`.replace(/ · $/, "") };
605
+ }
606
+ const _e = /* @__PURE__ */ new Set(["game", "story", "page", "forum", "video", "gallery"]);
607
+ function _(a) {
608
+ let t = String(a || "").replace(/^[a-z][a-z0-9+.-]*:\/\/[^/#?]*/i, "");
609
+ const e = t.indexOf("#");
610
+ let s = "";
611
+ e !== -1 && (s = t.slice(e).split("?")[0], t = t.slice(0, e));
612
+ let r = t.split("?")[0] + s;
613
+ return r = r.replace(/([^:])\/{2,}/g, "$1/").replace(/^\/{2,}/, "/"), r = r.replace(/^\/(?=#)/, ""), r.length > 1 && (r = r.replace(/\/+$/, "")), r.toLowerCase();
614
+ }
615
+ function Mt() {
616
+ const a = globalThis.location;
617
+ if (!a) return "";
618
+ const t = (a.hash || "").startsWith("#/") ? a.hash : "";
619
+ return _((a.pathname || "") + t);
620
+ }
621
+ function Se(a, t, e) {
622
+ if (!e) return null;
623
+ const s = _(a);
624
+ if (!s) return null;
625
+ const r = _(g(t.game, { sport: e, id: "" })), o = _(g(t.school, { id: "" }));
626
+ if (s === r || s.startsWith(`${r}/`) || s === o || s.startsWith(`${o}/`)) return null;
627
+ const i = _(g(t.section, { sport: e, view: "" }));
628
+ if (s === i) return "";
629
+ if (!s.startsWith(`${i}/`)) return null;
630
+ const n = s.slice(i.length + 1), c = n.split("/");
631
+ return c.length > 2 || c.some((p) => !/^[a-z][a-z-]*$/.test(p)) || _e.has(c[0]) ? null : n;
632
+ }
633
+ function Ae(a, t, e) {
634
+ const s = (i) => g(e.section, { sport: a, view: i }).replace(/([^:])\/{2,}/g, "$1/"), o = new Set((t || []).map((i) => i && i.gender).filter((i) => i === "boys" || i === "girls")).size === 2 ? [
635
+ { label: "Boys Standings", href: s("boys/standings") },
636
+ { label: "Girls Standings", href: s("girls/standings") }
637
+ ] : [{ label: "Standings", href: s("standings") }];
638
+ return [
639
+ { label: `${P(a)} Home`, href: s("") },
640
+ { label: "Scores/Schedule", href: s("scores") },
641
+ { label: "Playoff Brackets", href: s("brackets") },
642
+ ...o,
643
+ { label: "Polls & Rankings", href: s("rankings") }
644
+ ];
645
+ }
646
+ function Te(a, t = Mt()) {
647
+ const e = _(t);
648
+ for (const s of a.querySelectorAll(':scope > a[slot="nav"]'))
649
+ e && _(s.getAttribute("href")) === e ? s.setAttribute("aria-current", "page") : s.removeAttribute("aria-current");
650
+ }
651
+ class b extends B {
548
652
  static properties = {
549
653
  api: { type: String },
550
654
  refreshInterval: { type: Number, attribute: "refresh-interval" },
@@ -560,7 +664,7 @@ class b extends R {
560
664
  this._client = t, this.isConnected && this.load();
561
665
  }
562
666
  get client() {
563
- return this._client ? this._client : this.api ? $e({ baseUrl: this.api }) : null;
667
+ return this._client ? this._client : this.api ? be({ baseUrl: this.api }) : null;
564
668
  }
565
669
  connectedCallback() {
566
670
  super.connectedCallback(), this._setupInterval();
@@ -572,7 +676,7 @@ class b extends R {
572
676
  this.load();
573
677
  }
574
678
  updated(t) {
575
- t.has("api") && t.get("api") !== void 0 && t.get("api") !== this.api && this.load(), t.has("refreshInterval") && this._setupInterval();
679
+ t.has("api") && t.get("api") !== void 0 && t.get("api") !== this.api && this.load(), t.has("refreshInterval") && this._setupInterval(), Te(this);
576
680
  }
577
681
  async load() {
578
682
  const t = this.client;
@@ -601,13 +705,13 @@ class b extends R {
601
705
  this._refreshId && (clearInterval(this._refreshId), this._refreshId = null);
602
706
  }
603
707
  render() {
604
- return this.error === "not-configured" ? d`<div class="error">This component needs an <code>api</code> attribute (the api-hsot public read-surface base URL) or an injected client.</div>` : this.error ? d`<div class="error">Unable to load right now. <button class="chip" @click=${() => this.load()}>Retry</button></div>` : this.data ? this.renderView() : d`<div class="loading" role="status">Loading…</div>`;
708
+ return this.error === "not-configured" ? l`<div class="error">This component needs an <code>api</code> attribute (the api-hsot public read-surface base URL) or an injected client.</div>` : this.error ? l`<div class="error">Unable to load right now. <button class="chip" @click=${() => this.load()}>Retry</button></div>` : this.data ? this.renderView() : l`<div class="loading" role="status">Loading…</div>`;
605
709
  }
606
710
  renderView() {
607
- return d``;
711
+ return l``;
608
712
  }
609
713
  }
610
- const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
714
+ const v = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), Ce = w`
611
715
  :host {
612
716
  --hsot-red: var(--color-red, #D1232A);
613
717
  --hsot-red-deep: var(--color-red-dark, #951C21);
@@ -625,6 +729,10 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
625
729
  --hsot-win: var(--color-green-dark, #66A208);
626
730
  --hsot-loss: var(--color-red, #D1232A);
627
731
  --hsot-tie: var(--color-gray-4, #7C7C7C);
732
+ --hsot-section-bg: var(--color-section-header, #1A1A1A);
733
+ --hsot-section-text: var(--color-section-header-text, #FFFFFF);
734
+ --hsot-section-divider: var(--color-section-header-divider, rgba(255, 255, 255, 0.2));
735
+ --hsot-section-red: #B90100;
628
736
  --hsot-heading-font: var(--heading-font-family, 'IBM Plex Sans Condensed', 'Helvetica Neue', Helvetica, sans-serif);
629
737
  --hsot-body-font: var(--body-font-family, Roboto, 'Helvetica Neue', Helvetica, sans-serif);
630
738
  --hsot-radius-xs: var(--radius-xs, 0.15rem);
@@ -641,7 +749,7 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
641
749
  outline-offset: 1px;
642
750
  }
643
751
  .mut { color: var(--hsot-gray-5); }
644
- `, ye = w`
752
+ `, Ie = w`
645
753
  .band { background: var(--hsot-white); color: var(--hsot-black); }
646
754
  .band .inner { max-width: 1366px; margin: 0 auto; padding: 1.1rem 1.25rem 0; }
647
755
  .band h1, .band h2.bandtitle {
@@ -660,8 +768,37 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
660
768
  }
661
769
  .band nav.tabs a.on { border-bottom-color: var(--hsot-red); }
662
770
  .band nav.tabs span.off { color: var(--hsot-gray-4); cursor: not-allowed; }
663
- @media (max-width: 720px) { .band h1, .band h2.bandtitle { font-size: 1.8rem; } }
664
- `, be = w`
771
+ /* Section-front treatment, matching the site's hsot-section-header: dark
772
+ band, red baseline, sub-nav row of section links. The section tokens
773
+ inherit from the page when it defines the --color-section-header set. */
774
+ .band.section {
775
+ background: var(--hsot-section-bg); color: var(--hsot-section-text);
776
+ border-bottom: 3px solid var(--hsot-section-red);
777
+ }
778
+ .band.section .inner { padding: 1.25rem; }
779
+ .band.section h1, .band.section h2.bandtitle {
780
+ color: inherit; font-size: 2.875rem; font-weight: 700; line-height: 1;
781
+ }
782
+ .band.section .sub { color: #CFCFCF; margin: 0.4rem 0 0; }
783
+ nav.sectionnav { border-top: 1px solid var(--hsot-section-divider); }
784
+ .sectionnav .navrow {
785
+ display: flex; gap: 1rem; max-width: 1366px; margin: 0 auto;
786
+ padding: 0 1.25rem; overflow-x: auto; box-sizing: border-box;
787
+ }
788
+ .sectionnav a, .sectionnav ::slotted(a) {
789
+ font-family: var(--hsot-heading-font); font-weight: 500; font-size: 0.875rem;
790
+ line-height: 1.5rem; text-transform: uppercase; text-decoration: none;
791
+ white-space: nowrap; padding: 0.5rem; color: #CFCFCF;
792
+ border-bottom: 2px solid transparent; transition: color 0.15s, border-color 0.15s;
793
+ }
794
+ .sectionnav a:hover, .sectionnav a:focus-visible, .sectionnav a[aria-current="page"],
795
+ .sectionnav ::slotted(a:hover), .sectionnav ::slotted(a:focus-visible), .sectionnav ::slotted(a[aria-current="page"]) {
796
+ color: var(--hsot-section-text); border-bottom-color: var(--hsot-section-red);
797
+ }
798
+ @media (max-width: 720px) {
799
+ .band h1, .band h2.bandtitle, .band.section h1, .band.section h2.bandtitle { font-size: 1.8rem; }
800
+ }
801
+ `, Ee = w`
665
802
  .view { max-width: 1366px; margin: 0 auto; padding: 1.25rem; box-sizing: border-box; }
666
803
  .toolbar { display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: center; margin: 0 0 1.1rem; }
667
804
  .toolbar .spacer { flex: 1; }
@@ -704,7 +841,7 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
704
841
  .error { padding: 1.2rem 1rem; color: var(--hsot-red-deep); font-size: 0.9rem; }
705
842
  .note { font-size: 0.8125rem; color: var(--hsot-gray-5); margin: 0.6rem 0 0; }
706
843
  .loading { padding: 1.2rem; color: var(--hsot-gray-5); font-family: var(--hsot-heading-font); }
707
- `, we = w`
844
+ `, Pe = w`
708
845
  .pill {
709
846
  display: inline-block; font-family: var(--hsot-heading-font); font-weight: 700;
710
847
  font-size: 0.6875rem; text-transform: uppercase; letter-spacing: 0.04em;
@@ -719,7 +856,7 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
719
856
  .pill.champ { background: var(--hsot-straw); color: #6b5900; }
720
857
  @keyframes hsot-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }
721
858
  @media (prefers-reduced-motion: reduce) { .pill.live { animation: none; } }
722
- `, xe = w`
859
+ `, De = w`
723
860
  .tablewrap { overflow-x: auto; }
724
861
  table.data { font-family: var(--hsot-heading-font); font-size: 14px; border-collapse: collapse; width: 100%; }
725
862
  table.data th {
@@ -737,7 +874,7 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
737
874
  table.data tbody tr.rowlink:hover { background: var(--hsot-gray-1); }
738
875
  table.data td.teamcell a { color: inherit; text-decoration: none; font-weight: 500; }
739
876
  table.data td.teamcell a:hover { text-decoration: underline; }
740
- `, _e = w`
877
+ `, ze = w`
741
878
  .swatch {
742
879
  display: inline-flex; align-items: center; justify-content: center;
743
880
  width: 26px; height: 26px; border-radius: 50%;
@@ -761,7 +898,7 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
761
898
  .dot.W { background: var(--hsot-win); }
762
899
  .dot.L { background: var(--hsot-loss); }
763
900
  .dot.T { background: var(--hsot-tie); }
764
- `, ke = w`
901
+ `, Re = w`
765
902
  ul.gamelist { list-style: none; margin: 0; padding: 0; }
766
903
  .gamelist li {
767
904
  display: flex; align-items: center; gap: 0.7rem; padding: 0.55rem 1rem;
@@ -778,121 +915,62 @@ const g = (a) => Object.fromEntries((a || []).map((t) => [t.id, t])), ve = w`
778
915
  .gamelist .opp a:hover { text-decoration: underline; }
779
916
  .gamelist .where { color: var(--hsot-gray-5); font-size: 0.78rem; }
780
917
  .gamelist a.box { font-size: 0.78rem; }
781
- `, H = [ve, ye, be, we, xe, _e, ke];
782
- function pt(a) {
918
+ `, j = [Ce, Ie, Ee, Pe, De, ze, Re];
919
+ function ft(a) {
783
920
  return a.state !== "final" ? null : a.forfeit && a.forfeit !== "none" ? a.forfeit : a.homeScore > a.awayScore ? "home" : a.awayScore > a.homeScore ? "away" : a.tiebreakWinner && a.tiebreakWinner !== "none" ? a.tiebreakWinner : "tie";
784
921
  }
785
- function M(a, t) {
922
+ function W(a, t) {
786
923
  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]), r = a.filter((o) => o.state === "final" && o.gameType !== "scrimmage" && !0).sort((o, i) => String(o.date).localeCompare(String(i.date)));
787
924
  for (const o of r) {
788
- const i = pt(o), n = o.gameType === "conference";
925
+ const i = ft(o), n = o.gameType === "conference";
789
926
  for (const c of ["home", "away"]) {
790
927
  const p = c === "home" ? o.homeTeamId : o.awayTeamId;
791
928
  if (!p) continue;
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;
929
+ const d = s(p), h = c === "home" ? o.homeScore : o.awayScore, f = c === "home" ? o.awayScore : o.homeScore;
930
+ d.pf += h, d.pa += f;
794
931
  let u = "T";
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 });
932
+ i === "tie" ? (d.t += 1, n && (d.ct += 1)) : i === c ? (d.w += 1, n && (d.cw += 1), u = "W") : (d.l += 1, n && (d.cl += 1), u = "L"), d.results.push({ gameId: o.id, date: o.date, mark: u, my: h, their: f, opp: c === "home" ? o.awayTeamId : o.homeTeamId, conf: n });
796
933
  }
797
934
  }
798
935
  return e;
799
936
  }
800
- function Q(a) {
937
+ function et(a) {
801
938
  if (!a || !a.length) return "";
802
939
  const t = a[a.length - 1].mark;
803
940
  let e = 0;
804
941
  for (let s = a.length - 1; s >= 0 && a[s].mark === t; s -= 1) e += 1;
805
942
  return t + e;
806
943
  }
807
- const It = (a, t, e) => {
944
+ const Pt = (a, t, e) => {
808
945
  const s = a + t + e;
809
946
  return s ? (a + e / 2) / s : 0;
810
- }, Et = (a) => a.toFixed(3).replace("0.", ".");
947
+ }, Dt = (a) => a.toFixed(3).replace("0.", ".");
811
948
  function x(a, t = !1) {
812
949
  if (!a) return "0-0";
813
950
  const e = t ? a.cw : a.w, s = t ? a.cl : a.l, r = t ? a.ct : a.t;
814
951
  return `${e}-${s}${r ? `-${r}` : ""}`;
815
952
  }
816
- function Nt(a, t) {
953
+ function Lt(a, t) {
817
954
  return a.map((e) => {
818
955
  const s = t[e.id] || { w: 0, l: 0, t: 0, cw: 0, cl: 0, ct: 0, pf: 0, pa: 0, results: [] };
819
- return { team: e, rec: s, confPct: It(s.cw, s.cl, s.ct), overallPct: It(s.w, s.l, s.t) };
956
+ return { team: e, rec: s, confPct: Pt(s.cw, s.cl, s.ct), overallPct: Pt(s.w, s.l, s.t) };
820
957
  }).sort((e, s) => s.confPct - e.confPct || s.overallPct - e.overallPct || s.rec.pf - s.rec.pa - (e.rec.pf - e.rec.pa));
821
958
  }
822
- function mt(a, t) {
959
+ function ut(a, t) {
823
960
  return a.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;
824
961
  }
825
- function Pt(a, t) {
962
+ function zt(a, t) {
826
963
  const e = a[t];
827
964
  return e && e.results.length ? e.results[e.results.length - 1] : null;
828
965
  }
829
- const at = {
830
- game: "/{sport}/game/{id}/",
831
- school: "/school/{id}/",
832
- section: "/{sport}/{view}/"
833
- };
834
- function $(a, t) {
835
- return String(a).replace(/\{(\w+)\}/g, (e, s) => t[s] !== void 0 && t[s] !== null ? String(t[s]) : e);
836
- }
837
- function L(a) {
838
- return {
839
- game: a.getAttribute("game-href") || at.game,
840
- school: a.getAttribute("school-href") || at.school,
841
- section: a.getAttribute("section-href") || at.section
842
- };
843
- }
844
- const J = (a) => a ? a.charAt(0).toUpperCase() + a.slice(1) : "";
845
- function y(a, t) {
846
- if (!a) return "TBD";
847
- const [e, s, r] = String(a).split("-").map(Number);
848
- return !e || !s || !r ? "TBD" : new Date(e, s - 1, r).toLocaleDateString("en-US", t || { weekday: "short", month: "short", day: "numeric" });
849
- }
850
- function X(a) {
851
- if (!a) return "";
852
- const [t, e] = String(a).split(":").map(Number);
853
- if (Number.isNaN(t)) return "";
854
- const s = t >= 12 ? "PM" : "AM";
855
- return `${(t + 11) % 12 + 1}:${String(e || 0).padStart(2, "0")} ${s}`;
856
- }
857
- function Se(a) {
858
- return a ? `${Math.floor(a / 12)}-${a % 12}` : "·";
859
- }
860
- function tt(a = /* @__PURE__ */ new Date()) {
861
- const t = a.getFullYear();
862
- return a.getMonth() >= 6 ? `${t}-${t + 1}` : `${t - 1}-${t}`;
863
- }
864
- function ot(a = /* @__PURE__ */ new Date()) {
865
- const t = (e) => String(e).padStart(2, "0");
866
- return `${a.getFullYear()}-${t(a.getMonth() + 1)}-${t(a.getDate())}`;
867
- }
868
- function ft(a) {
869
- return a ? (a.abbr || a.name || "?").slice(0, 4).toUpperCase() : "?";
870
- }
871
- function V(a) {
872
- if (!a || !/^#[0-9a-fA-F]{6}$/.test(a)) return "#FFFFFF";
873
- const t = parseInt(a.slice(1), 16), e = t >> 16 & 255, s = t >> 8 & 255, r = t & 255;
874
- return 0.299 * e + 0.587 * s + 0.114 * r > 150 ? "#0F1B33" : "#FFFFFF";
875
- }
876
- const Ae = (a) => {
877
- const t = ["th", "st", "nd", "rd"], e = a % 100;
878
- return a + (t[(e - 20) % 10] || t[e] || t[0]);
879
- };
880
- function Te(a) {
881
- if (a.state === "live") return { kind: "live", label: `Live · ${a.period || ""}`.replace(/ · $/, "") };
882
- if (a.state === "final") {
883
- const t = [];
884
- return a.finish === "overtime" && t.push("OT"), a.finish === "shootout" && t.push("PK-SO"), a.forfeit && a.forfeit !== "none" && t.push("Forfeit"), { kind: "final", label: `Final${t.length ? ` · ${t.join(" · ")}` : ""}` };
885
- }
886
- return a.state === "postponed" ? { kind: "warn", label: "Postponed" } : a.state === "canceled" ? { kind: "warn", label: "Canceled" } : { kind: "sched", label: `${y(a.date, { month: "short", day: "numeric" })} · ${X(a.time)}`.replace(/ · $/, "") };
887
- }
888
- function Ht(a, t, e, s, r) {
966
+ function jt(a, t, e, s, r) {
889
967
  const o = t[e];
890
968
  if (!o) return null;
891
969
  const i = /* @__PURE__ */ new Map();
892
970
  for (const c of a || []) {
893
971
  if (c.sport !== s || r && c.effectiveDate > r || 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);
972
+ const p = c.gender || "", d = i.get(p);
973
+ (!d || c.effectiveDate > d.effectiveDate) && i.set(p, c);
896
974
  }
897
975
  let n = null;
898
976
  for (const c of i.values()) {
@@ -901,7 +979,7 @@ function Ht(a, t, e, s, r) {
901
979
  }
902
980
  return n ? n.rank : null;
903
981
  }
904
- function Ce(a, t, e) {
982
+ function Be(a, t, e) {
905
983
  if (!a) return { kind: "none", delta: 0 };
906
984
  const s = (a.teamIds || []).indexOf(e) + 1;
907
985
  if (!s) return { kind: "none", delta: 0 };
@@ -911,59 +989,79 @@ function Ce(a, t, e) {
911
989
  const o = r - s;
912
990
  return o > 0 ? { kind: "up", delta: o } : o < 0 ? { kind: "down", delta: -o } : { kind: "same", delta: 0 };
913
991
  }
914
- function Ie(a) {
992
+ function Fe(a) {
915
993
  return /^https?:\/\//i.test(String(a || ""));
916
994
  }
917
- function G(a, t) {
995
+ function Y(a, t) {
918
996
  const e = a?.logoAssetId;
919
- if (!Ie(e)) return "";
997
+ if (!Fe(e)) return "";
920
998
  const s = Math.max(1, Math.round(t * 2)), r = e.includes("?") ? "&" : "?";
921
999
  return `${e}${r}w=${s}&h=${s}&f=webp`;
922
1000
  }
923
- const O = (a, t) => {
1001
+ function gt(a, t, { title: e, sub: s, teams: r }) {
1002
+ const o = Mt(), n = !!a.querySelector(':scope > a[slot="nav"]') || Se(o, t.hrefs, t.sport) !== null;
1003
+ return l`
1004
+ <div class="band section">
1005
+ <div class="inner">
1006
+ <h1>${e}</h1>
1007
+ ${s ? l`<p class="sub">${s}</p>` : m}
1008
+ </div>
1009
+ ${n ? l`
1010
+ <nav class="sectionnav" aria-label="${P(t.sport)} section">
1011
+ <div class="navrow">
1012
+ <slot name="nav">
1013
+ ${Ae(t.sport, r, t.hrefs).map((c) => l`<a href=${c.href}
1014
+ aria-current=${o && _(c.href) === o ? "page" : m}>${c.label}</a>`)}
1015
+ </slot>
1016
+ </div>
1017
+ </nav>` : m}
1018
+ </div>
1019
+ `;
1020
+ }
1021
+ const N = (a, t) => {
924
1022
  const e = a.teamsById[t];
925
1023
  return e ? a.schoolsById[e.schoolId] : null;
926
- }, P = (a, t) => O(a, t)?.name || "TBD", q = (a, t) => O(a, t)?.abbr || "TBD";
927
- function F(a, t = 26) {
1024
+ }, z = (a, t) => N(a, t)?.name || "TBD", Z = (a, t) => N(a, t)?.abbr || "TBD";
1025
+ function H(a, t = 26) {
928
1026
  if (!a) return m;
929
- const e = G(a, t);
1027
+ const e = Y(a, t);
930
1028
  if (e)
931
- return d`<img class="swatch logo" aria-hidden="true" alt="" loading="lazy"
1029
+ return l`<img class="swatch logo" aria-hidden="true" alt="" loading="lazy"
932
1030
  src=${e} style="width:${t}px;height:${t}px" />`;
933
- const s = a.colorPrimary || "#030711", r = V(s);
934
- return d`<span class="swatch" aria-hidden="true"
1031
+ const s = a.colorPrimary || "#030711", r = q(s);
1032
+ return l`<span class="swatch" aria-hidden="true"
935
1033
  style="width:${t}px;height:${t}px;background:${s};color:${r};font-size:${Math.max(8, t * 0.28)}px"
936
- >${ft(a)}</span>`;
1034
+ >${mt(a)}</span>`;
937
1035
  }
938
- function ut(a, t, e) {
939
- const s = Ht(a.rankings, a.teamsById, t, a.sport, e);
940
- return s ? d`<span class="rankbadge">#${s}</span>` : m;
1036
+ function vt(a, t, e) {
1037
+ const s = jt(a.rankings, a.teamsById, t, a.sport, e);
1038
+ return s ? l`<span class="rankbadge">#${s}</span>` : m;
941
1039
  }
942
- function it(a, t, e) {
943
- const s = O(a, t);
944
- return s ? d`${ut(a, t, e)}<a href=${$(a.hrefs.school, { id: s.id })}>${s.name}</a>` : d`<span class="mut">TBD</span>`;
1040
+ function nt(a, t, e) {
1041
+ const s = N(a, t);
1042
+ return s ? l`${vt(a, t, e)}<a href=${g(a.hrefs.school, { id: s.id })}>${s.name}</a>` : l`<span class="mut">TBD</span>`;
945
1043
  }
946
- function gt(a, t, e = 5) {
1044
+ function $t(a, t, e = 5) {
947
1045
  const s = a.records[t];
948
- if (!s || !s.results.length) return d`<span class="mut">·</span>`;
1046
+ if (!s || !s.results.length) return l`<span class="mut">·</span>`;
949
1047
  const r = s.results.slice(-1 * e);
950
- return d`<span class="dots" role="img" aria-label="last ${r.length} results">
951
- ${r.map((o) => d`<a class="dot ${o.mark}"
952
- title="${o.mark} ${o.my}-${o.their} vs ${P(a, o.opp)}"
953
- href=${$(a.hrefs.game, { sport: a.sport, id: o.gameId })}>${o.mark}</a>`)}
1048
+ return l`<span class="dots" role="img" aria-label="last ${r.length} results">
1049
+ ${r.map((o) => l`<a class="dot ${o.mark}"
1050
+ title="${o.mark} ${o.my}-${o.their} vs ${z(a, o.opp)}"
1051
+ href=${g(a.hrefs.game, { sport: a.sport, id: o.gameId })}>${o.mark}</a>`)}
954
1052
  </span>`;
955
1053
  }
956
- function Y(a) {
957
- const t = Te(a);
958
- return d`<span class="pill ${t.kind}">${t.label}</span>`;
1054
+ function K(a) {
1055
+ const t = ke(a);
1056
+ return l`<span class="pill ${t.kind}">${t.label}</span>`;
959
1057
  }
960
- function Mt(a, t, e) {
961
- if (!t) return d`<span class="mut">·</span>`;
1058
+ function Wt(a, t, e) {
1059
+ if (!t) return l`<span class="mut">·</span>`;
962
1060
  const s = t.homeTeamId === e ? t.awayTeamId : t.homeTeamId, r = t.homeTeamId === e ? "vs" : "at";
963
- return d`${t.state === "live" ? d`<span class="pill live">Live</span> ` : d`${y(t.date, { month: "numeric", day: "numeric" })} `}${r} ${q(a, s)}`;
1061
+ return l`${t.state === "live" ? l`<span class="pill live">Live</span> ` : l`${y(t.date, { month: "numeric", day: "numeric" })} `}${r} ${Z(a, s)}`;
964
1062
  }
965
- class Lt extends b {
966
- static styles = H;
1063
+ class Gt extends b {
1064
+ static styles = j;
967
1065
  static properties = {
968
1066
  ...b.properties,
969
1067
  sport: { type: String },
@@ -976,7 +1074,7 @@ class Lt extends b {
976
1074
  connectedCallback() {
977
1075
  if (super.connectedCallback(), !this.date) {
978
1076
  const t = new URLSearchParams(globalThis.location?.search || "").get("date");
979
- this.date = t || ot();
1077
+ this.date = t || it();
980
1078
  }
981
1079
  }
982
1080
  async fetchData(t) {
@@ -998,34 +1096,33 @@ class Lt extends b {
998
1096
  }
999
1097
  get ctx() {
1000
1098
  return (!this._ctx || this._ctxData !== this.data) && (this._ctx = {
1001
- teamsById: g(this.data.teams),
1002
- schoolsById: g(this.data.schools),
1003
- records: M(this.data.games),
1099
+ teamsById: v(this.data.teams),
1100
+ schoolsById: v(this.data.schools),
1101
+ records: W(this.data.games),
1004
1102
  rankings: this.data.rankings,
1005
1103
  hrefs: L(this),
1006
1104
  sport: this.sport
1007
1105
  }, this._ctxData = this.data), this._ctx;
1008
1106
  }
1009
1107
  renderView() {
1010
- const t = this.ctx, e = g(this.data.conferences), s = [...new Set(this.data.games.map((i) => i.date).filter(Boolean))].sort(), r = this.data.games.filter((i) => i.date === this.date).sort((i, n) => (i.state === "live" ? -1 : 1) - (n.state === "live" ? -1 : 1)), o = /* @__PURE__ */ new Map();
1108
+ const t = this.ctx, e = v(this.data.conferences), s = [...new Set(this.data.games.map((i) => i.date).filter(Boolean))].sort(), r = this.data.games.filter((i) => i.date === this.date).sort((i, n) => (i.state === "live" ? -1 : 1) - (n.state === "live" ? -1 : 1)), o = /* @__PURE__ */ new Map();
1011
1109
  return r.forEach((i) => {
1012
1110
  const n = i.gameType === "conference" && i.conferenceId ? e[i.conferenceId]?.name || "Conference" : i.gameType === "playoff" ? "Playoffs" : i.gameType === "scrimmage" ? "Scrimmages" : "Nonconference";
1013
1111
  o.has(n) || o.set(n, []), o.get(n).push(i);
1014
- }), d`
1015
- <div class="band">
1016
- <div class="inner">
1017
- <h1>${J(this.sport)} scores &amp; schedules</h1>
1018
- <p class="sub">${y(this.date, { weekday: "long", month: "long", day: "numeric", year: "numeric" })} · ${r.length} games</p>
1019
- </div>
1020
- </div>
1112
+ }), l`
1113
+ ${gt(this, t, {
1114
+ title: l`${P(this.sport)} scores &amp; schedules`,
1115
+ sub: l`${y(this.date, { weekday: "long", month: "long", day: "numeric", year: "numeric" })} · ${r.length} games`,
1116
+ teams: this.data.teams
1117
+ })}
1021
1118
  <div class="view">
1022
1119
  <div class="toolbar">
1023
1120
  <label class="asof" for="datesel">Date</label>
1024
1121
  <select id="datesel" @change=${(i) => {
1025
1122
  this.date = i.target.value;
1026
1123
  }}>
1027
- ${s.map((i) => d`<option value=${i} ?selected=${i === this.date}>
1028
- ${y(i, { weekday: "short", month: "short", day: "numeric" })}${i === ot() ? " · today" : ""}
1124
+ ${s.map((i) => l`<option value=${i} ?selected=${i === this.date}>
1125
+ ${y(i, { weekday: "short", month: "short", day: "numeric" })}${i === it() ? " · today" : ""}
1029
1126
  </option>`)}
1030
1127
  </select>
1031
1128
  <button class="chip" ?disabled=${s.indexOf(this.date) <= 0}
@@ -1039,8 +1136,8 @@ class Lt extends b {
1039
1136
  <span class="spacer"></span>
1040
1137
  <span class="asof">Live games first · report a score to see it update here</span>
1041
1138
  </div>
1042
- ${r.length ? m : d`<p class="empty">No ${this.sport} games on this date.</p>`}
1043
- ${[...o.entries()].map(([i, n]) => d`
1139
+ ${r.length ? m : l`<p class="empty">No ${this.sport} games on this date.</p>`}
1140
+ ${[...o.entries()].map(([i, n]) => l`
1044
1141
  <div class="section-title">${i}</div>
1045
1142
  <div class="card"><ul class="gamelist">
1046
1143
  ${n.map((c) => this.renderGame(t, c))}
@@ -1051,21 +1148,21 @@ class Lt extends b {
1051
1148
  }
1052
1149
  renderGame(t, e) {
1053
1150
  const s = e.state === "final" || e.state === "live" ? `${e.awayScore}-${e.homeScore}` : X(e.time);
1054
- return d`
1151
+ return l`
1055
1152
  <li>
1056
- ${Y(e)}
1057
- <span class="opp">${it(t, e.awayTeamId, e.date)} at ${it(t, e.homeTeamId, e.date)}</span>
1153
+ ${K(e)}
1154
+ <span class="opp">${nt(t, e.awayTeamId, e.date)} at ${nt(t, e.homeTeamId, e.date)}</span>
1058
1155
  <span class="res" style="width:auto">${s}</span>
1059
1156
  <span class="where">${e.venue || ""}</span>
1060
- ${e.broadcast ? d`<span class="pill class">${e.broadcast}</span>` : m}
1061
- <a class="box" href=${$(t.hrefs.game, { sport: this.sport, id: e.id })}>Box score →</a>
1157
+ ${e.broadcast ? l`<span class="pill class">${e.broadcast}</span>` : m}
1158
+ <a class="box" href=${g(t.hrefs.game, { sport: this.sport, id: e.id })}>Box score →</a>
1062
1159
  </li>
1063
1160
  `;
1064
1161
  }
1065
1162
  }
1066
- globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", Lt);
1067
- class jt extends b {
1068
- static styles = H;
1163
+ globalThis?.customElements && !globalThis.customElements.get("hsot-scores") && globalThis.customElements.define("hsot-scores", Gt);
1164
+ class Vt extends b {
1165
+ static styles = j;
1069
1166
  static properties = {
1070
1167
  ...b.properties,
1071
1168
  sport: { type: String },
@@ -1095,9 +1192,9 @@ class jt extends b {
1095
1192
  }
1096
1193
  get ctx() {
1097
1194
  return (!this._ctx || this._ctxData !== this.data) && (this._ctx = {
1098
- teamsById: g(this.data.teams),
1099
- schoolsById: g(this.data.schools),
1100
- records: M(this.data.games),
1195
+ teamsById: v(this.data.teams),
1196
+ schoolsById: v(this.data.schools),
1197
+ records: W(this.data.games),
1101
1198
  rankings: this.data.rankings,
1102
1199
  hrefs: L(this),
1103
1200
  sport: this.sport
@@ -1105,17 +1202,16 @@ class jt extends b {
1105
1202
  }
1106
1203
  renderView() {
1107
1204
  const t = this.ctx, e = ["All", ...new Set(this.data.conferences.flatMap((r) => r.classifications || []))].slice(0, 9), s = this.data.conferences.filter((r) => r.active !== !1).filter((r) => this.classFilter === "All" || (r.classifications || []).includes(this.classFilter));
1108
- return d`
1109
- <div class="band">
1110
- <div class="inner">
1111
- <h1>${J(this.sport)} standings</h1>
1112
- <p class="sub">${this.data.season} season · every conference, computed live from reported results</p>
1113
- </div>
1114
- </div>
1205
+ return l`
1206
+ ${gt(this, t, {
1207
+ title: l`${P(this.sport)} standings`,
1208
+ sub: l`${this.data.season} season · every conference, computed live from reported results`,
1209
+ teams: this.data.teams
1210
+ })}
1115
1211
  <div class="view">
1116
1212
  <div class="toolbar">
1117
1213
  <div role="group" aria-label="Classification filter">
1118
- ${e.map((r) => d`<button class="chip ${this.classFilter === r ? "on" : ""}"
1214
+ ${e.map((r) => l`<button class="chip ${this.classFilter === r ? "on" : ""}"
1119
1215
  @click=${() => {
1120
1216
  this.classFilter = r;
1121
1217
  }}>${r}</button>`)}
@@ -1125,7 +1221,7 @@ class jt extends b {
1125
1221
  this.query = r.target.value;
1126
1222
  }}>
1127
1223
  <span class="spacer"></span>
1128
- <span class="asof">Records through ${y(ot(), { month: "long", day: "numeric" })} · conference games count toward both records · scrimmages toward neither</span>
1224
+ <span class="asof">Records through ${y(it(), { month: "long", day: "numeric" })} · conference games count toward both records · scrimmages toward neither</span>
1129
1225
  </div>
1130
1226
  ${s.map((r) => this.renderConference(t, r))}
1131
1227
  </div>
@@ -1134,12 +1230,12 @@ class jt extends b {
1134
1230
  renderConference(t, e) {
1135
1231
  const s = this.data.teams.filter((i) => i.conferenceId === e.id);
1136
1232
  if (!s.length) return m;
1137
- const r = this.query.trim().toLowerCase(), o = Nt(s, t.records);
1138
- return d`
1233
+ const r = this.query.trim().toLowerCase(), o = Lt(s, t.records);
1234
+ return l`
1139
1235
  <div class="card">
1140
1236
  <div class="card-head">
1141
1237
  <h2>${e.name}</h2>
1142
- ${(e.classifications || []).map((i) => d`<span class="pill class">${i}</span>`)}
1238
+ ${(e.classifications || []).map((i) => l`<span class="pill class">${i}</span>`)}
1143
1239
  <span class="meta">${o.length} teams · membership derives from teams</span>
1144
1240
  </div>
1145
1241
  <div class="tablewrap"><table class="data">
@@ -1158,35 +1254,35 @@ class jt extends b {
1158
1254
  renderRow(t, e, s, r) {
1159
1255
  const o = t.schoolsById[e.team.schoolId], i = o?.name || e.team.name || "TBD";
1160
1256
  if (r && !i.toLowerCase().includes(r)) return m;
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 = $(t.hrefs.school, { id: e.team.schoolId });
1257
+ const n = e.rec.pf - e.rec.pa, c = ut(this.data.games, e.team.id), p = (e.team.championships || []).map((h) => l`
1258
+ <span class="pill champ" title="${h.season} ${h.title} champion">★ ${h.season} ${h.title}</span>`), d = () => {
1259
+ location.href = g(t.hrefs.school, { id: e.team.schoolId });
1164
1260
  };
1165
- return d`
1261
+ return l`
1166
1262
  <tr class="rowlink" @click=${(h) => {
1167
- h.target.closest("a") || l();
1263
+ h.target.closest("a") || d();
1168
1264
  }}>
1169
1265
  <td class="mut">${s + 1}</td>
1170
1266
  <td class="teamcell">
1171
- ${F(o)}${ut(t, e.team.id, null)}
1172
- <a href=${$(t.hrefs.school, { id: e.team.schoolId })}>${i}</a> ${p}
1267
+ ${H(o)}${vt(t, e.team.id, null)}
1268
+ <a href=${g(t.hrefs.school, { id: e.team.schoolId })}>${i}</a> ${p}
1173
1269
  </td>
1174
1270
  <td class="num">${x(e.rec, !0)}</td>
1175
- <td class="num">${Et(e.confPct)}</td>
1271
+ <td class="num">${Dt(e.confPct)}</td>
1176
1272
  <td class="num">${x(e.rec)}</td>
1177
- <td class="num">${Et(e.overallPct)}</td>
1273
+ <td class="num">${Dt(e.overallPct)}</td>
1178
1274
  <td class="num">${e.rec.pf}</td>
1179
1275
  <td class="num">${e.rec.pa}</td>
1180
1276
  <td class="num" style="color:${n >= 0 ? "var(--hsot-win)" : "var(--hsot-loss)"}">${n > 0 ? "+" : ""}${n}</td>
1181
- <td>${Q(e.rec.results) || "·"}</td>
1182
- <td>${gt(t, e.team.id)}</td>
1183
- <td>${Mt(t, c, e.team.id)}</td>
1277
+ <td>${et(e.rec.results) || "·"}</td>
1278
+ <td>${$t(t, e.team.id)}</td>
1279
+ <td>${Wt(t, c, e.team.id)}</td>
1184
1280
  </tr>
1185
1281
  `;
1186
1282
  }
1187
1283
  }
1188
- globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", jt);
1189
- const Ee = w`
1284
+ globalThis?.customElements && !globalThis.customElements.get("hsot-standings") && globalThis.customElements.define("hsot-standings", Vt);
1285
+ const Ue = w`
1190
1286
  .hero1 {
1191
1287
  border-radius: var(--hsot-radius-md); color: var(--hsot-white);
1192
1288
  padding: 1.3rem 1.4rem; display: flex; align-items: center; gap: 1.2rem;
@@ -1203,8 +1299,8 @@ const Ee = w`
1203
1299
  .delta.new { background: var(--hsot-straw); color: #6b5900; border-radius: var(--hsot-radius-xs); padding: 0.1rem 0.3rem; font-size: 0.7rem; }
1204
1300
  .sparkline { vertical-align: middle; }
1205
1301
  `;
1206
- class Wt extends b {
1207
- static styles = [...H, Ee];
1302
+ class qt extends b {
1303
+ static styles = [...j, Ue];
1208
1304
  static properties = {
1209
1305
  ...b.properties,
1210
1306
  sport: { type: String },
@@ -1227,7 +1323,7 @@ class Wt extends b {
1227
1323
  t.listTeams({ sport: this.sport }),
1228
1324
  t.listConferences(),
1229
1325
  t.listGames({ sport: this.sport, season: e })
1230
- ]), c = s.items.filter((p) => !this.gender || !p.gender || p.gender === this.gender).sort((p, l) => l.effectiveDate.localeCompare(p.effectiveDate));
1326
+ ]), c = s.items.filter((p) => !this.gender || !p.gender || p.gender === this.gender).sort((p, d) => d.effectiveDate.localeCompare(p.effectiveDate));
1231
1327
  return {
1232
1328
  season: e,
1233
1329
  polls: c,
@@ -1239,9 +1335,9 @@ class Wt extends b {
1239
1335
  }
1240
1336
  get ctx() {
1241
1337
  return (!this._ctx || this._ctxData !== this.data) && (this._ctx = {
1242
- teamsById: g(this.data.teams),
1243
- schoolsById: g(this.data.schools),
1244
- records: M(this.data.games),
1338
+ teamsById: v(this.data.teams),
1339
+ schoolsById: v(this.data.schools),
1340
+ records: W(this.data.games),
1245
1341
  rankings: this.data.polls,
1246
1342
  hrefs: L(this),
1247
1343
  sport: this.sport
@@ -1251,42 +1347,41 @@ class Wt extends b {
1251
1347
  const n = e.map((h, f) => {
1252
1348
  const u = (h.teamIds || []).indexOf(t);
1253
1349
  if (u === -1) return null;
1254
- const v = e.length === 1 ? 96 / 2 : f / (e.length - 1) * 90 + 3, et = 3 + u / 24 * 20;
1255
- return { x: v, y: et };
1350
+ const $ = e.length === 1 ? 96 / 2 : f / (e.length - 1) * 90 + 3, st = 3 + u / 24 * 20;
1351
+ return { x: $, y: st };
1256
1352
  }), c = [];
1257
1353
  let p = [];
1258
1354
  if (n.forEach((h) => {
1259
1355
  h ? p.push(h) : p.length && (c.push(p), p = []);
1260
1356
  }), p.length && c.push(p), !c.length) return m;
1261
- const l = n[s];
1262
- return d`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
1263
- ${c.map((h) => Tt`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
1357
+ const d = n[s];
1358
+ return l`<svg class="sparkline" width=${96} height=${26} viewBox="0 0 ${96} ${26}" role="img" aria-label="rank history">
1359
+ ${c.map((h) => It`<polyline fill="none" stroke="var(--hsot-red)" stroke-width="2"
1264
1360
  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}
1361
+ ${d ? It`<circle cx=${d.x.toFixed(1)} cy=${d.y.toFixed(1)} r="3" fill="var(--hsot-black)"></circle>` : m}
1266
1362
  </svg>`;
1267
1363
  }
1268
1364
  movement(t, e, s) {
1269
- const r = Ce(t, e, s);
1270
- return r.kind === "up" ? d`<span class="delta up">▲ ${r.delta}</span>` : r.kind === "down" ? d`<span class="delta down">▼ ${r.delta}</span>` : r.kind === "new" ? d`<span class="delta new">NEW</span>` : r.kind === "same" ? d`<span class="delta same">—</span>` : d`<span class="delta same">·</span>`;
1365
+ const r = Be(t, e, s);
1366
+ return r.kind === "up" ? l`<span class="delta up">▲ ${r.delta}</span>` : r.kind === "down" ? l`<span class="delta down">▼ ${r.delta}</span>` : r.kind === "new" ? l`<span class="delta new">NEW</span>` : r.kind === "same" ? l`<span class="delta same">—</span>` : l`<span class="delta same">·</span>`;
1271
1367
  }
1272
1368
  renderView() {
1273
1369
  const t = this.ctx, e = this.data.polls;
1274
- if (!e.length) return d`<div class="view"><p class="empty">No ${this.sport} polls published yet this season.</p></div>`;
1275
- const s = Math.max(0, e.findIndex((h) => h.effectiveDate === this.pollDate)), r = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(r), c = g(this.data.conferences), p = (r.teamIds || [])[0], l = p ? O(t, p) : null;
1276
- return d`
1277
- <div class="band">
1278
- <div class="inner">
1279
- <h1>${J(this.sport)} Top 25</h1>
1280
- <p class="sub">The HighSchoolOT poll · updated weekly · ${e.length} polls this season</p>
1281
- </div>
1282
- </div>
1370
+ if (!e.length) return l`<div class="view"><p class="empty">No ${this.sport} polls published yet this season.</p></div>`;
1371
+ const s = Math.max(0, e.findIndex((h) => h.effectiveDate === this.pollDate)), r = e[s] || e[0], o = e[s + 1] || null, i = e.slice().reverse(), n = i.indexOf(r), c = v(this.data.conferences), p = (r.teamIds || [])[0], d = p ? N(t, p) : null;
1372
+ return l`
1373
+ ${gt(this, t, {
1374
+ title: l`${P(this.sport)} Top 25`,
1375
+ sub: l`The HighSchoolOT poll · updated weekly · ${e.length} polls this season`,
1376
+ teams: this.data.teams
1377
+ })}
1283
1378
  <div class="view">
1284
1379
  <div class="toolbar">
1285
1380
  <label class="asof" for="pollsel">Poll of</label>
1286
1381
  <select id="pollsel" @change=${(h) => {
1287
1382
  this.pollDate = h.target.value;
1288
1383
  }}>
1289
- ${e.map((h, f) => d`<option value=${h.effectiveDate} ?selected=${h === r}>
1384
+ ${e.map((h, f) => l`<option value=${h.effectiveDate} ?selected=${h === r}>
1290
1385
  ${y(h.effectiveDate, { month: "long", day: "numeric", year: "numeric" })}${f === 0 ? " · current" : ""}
1291
1386
  </option>`)}
1292
1387
  </select>
@@ -1301,7 +1396,7 @@ class Wt extends b {
1301
1396
  <span class="spacer"></span>
1302
1397
  <span class="asof">Movement vs. the previous poll · sparkline = season rank history</span>
1303
1398
  </div>
1304
- ${l ? this.renderHero(t, r, o, p, l, c) : m}
1399
+ ${d ? this.renderHero(t, r, o, p, d, c) : m}
1305
1400
  <div class="card"><div class="tablewrap"><table class="data">
1306
1401
  <thead><tr>
1307
1402
  <th class="num">Rk</th><th>Mvmt</th><th>Team</th><th class="num">Record</th>
@@ -1316,17 +1411,17 @@ class Wt extends b {
1316
1411
  `;
1317
1412
  }
1318
1413
  renderHero(t, e, s, r, o, i) {
1319
- const n = t.records[r], c = Pt(t.records, r), p = i[t.teamsById[r]?.conferenceId], l = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
1320
- return d`
1321
- <div class="hero1" style="background:${l}">
1414
+ const n = t.records[r], c = zt(t.records, r), p = i[t.teamsById[r]?.conferenceId], d = `linear-gradient(120deg, ${o.colorPrimary || "#030711"} 0%, var(--hsot-black) 85%)`;
1415
+ return l`
1416
+ <div class="hero1" style="background:${d}">
1322
1417
  <div class="bigrank">#1</div>
1323
- ${F(o, 64)}
1418
+ ${H(o, 64)}
1324
1419
  <div>
1325
- <h2><a href=${$(t.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
1420
+ <h2><a href=${g(t.hrefs.school, { id: o.id })}>${o.name} ${o.mascot || ""}</a></h2>
1326
1421
  <div class="facts">
1327
- ${x(n)} overall${p ? d` · ${x(n, !0)} ${p.name}` : m}
1328
- · streak ${Q(n?.results) || "·"}
1329
- ${c ? d` · last: ${c.mark} ${c.my}-${c.their} vs ${q(t, c.opp)}` : m}
1422
+ ${x(n)} overall${p ? l` · ${x(n, !0)} ${p.name}` : m}
1423
+ · streak ${et(n?.results) || "·"}
1424
+ ${c ? l` · last: ${c.mark} ${c.my}-${c.their} vs ${Z(t, c.opp)}` : m}
1330
1425
  &nbsp;${this.movement(e, s, r)}
1331
1426
  </div>
1332
1427
  </div>
@@ -1334,32 +1429,32 @@ class Wt extends b {
1334
1429
  `;
1335
1430
  }
1336
1431
  renderRow(t, e, s, r, o, i, n, c) {
1337
- const p = O(t, n);
1432
+ const p = N(t, n);
1338
1433
  if (!p) return m;
1339
- const l = t.records[n], h = Pt(t.records, n), f = mt(this.data.games, n), u = i[t.teamsById[n]?.conferenceId], v = () => {
1340
- location.href = $(t.hrefs.school, { id: p.id });
1434
+ const d = t.records[n], h = zt(t.records, n), f = ut(this.data.games, n), u = i[t.teamsById[n]?.conferenceId], $ = () => {
1435
+ location.href = g(t.hrefs.school, { id: p.id });
1341
1436
  };
1342
- return d`
1343
- <tr class="rowlink" @click=${(et) => {
1344
- et.target.closest("a") || v();
1437
+ return l`
1438
+ <tr class="rowlink" @click=${(st) => {
1439
+ st.target.closest("a") || $();
1345
1440
  }}>
1346
1441
  <td class="num" style="font-weight:700">${c}</td>
1347
1442
  <td>${this.movement(e, s, n)}</td>
1348
- <td class="teamcell">${F(p)}<a href=${$(t.hrefs.school, { id: p.id })}>${p.name}</a>
1443
+ <td class="teamcell">${H(p)}<a href=${g(t.hrefs.school, { id: p.id })}>${p.name}</a>
1349
1444
  <span class="mut" style="font-size:0.78rem">${p.mascot || ""}</span></td>
1350
- <td class="num">${x(l)}</td>
1445
+ <td class="num">${x(d)}</td>
1351
1446
  <td class="mut">${u?.name || "Independent"}</td>
1352
- <td>${h ? d`<a class="box" style="text-decoration:none" href=${$(t.hrefs.game, { sport: this.sport, id: h.gameId })}>
1447
+ <td>${h ? l`<a class="box" style="text-decoration:none" href=${g(t.hrefs.game, { sport: this.sport, id: h.gameId })}>
1353
1448
  <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>
1449
+ ${h.my}-${h.their} vs ${Z(t, h.opp)}</a>` : l`<span class="mut">·</span>`}</td>
1450
+ <td>${Wt(t, f, n)}</td>
1356
1451
  <td>${this.sparkline(n, r, o)}</td>
1357
1452
  </tr>
1358
1453
  `;
1359
1454
  }
1360
1455
  }
1361
- globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", Wt);
1362
- const Pe = w`
1456
+ globalThis?.customElements && !globalThis.customElements.get("hsot-rankings") && globalThis.customElements.define("hsot-rankings", qt);
1457
+ const Oe = w`
1363
1458
  .schoolhero { color: var(--hsot-white); padding: 1.6rem 1.25rem 1.3rem; }
1364
1459
  .schoolhero .inner { max-width: 1366px; margin: 0 auto; display: flex; gap: 1.2rem; align-items: center; flex-wrap: wrap; }
1365
1460
  .schoolhero .crest {
@@ -1384,8 +1479,8 @@ const Pe = w`
1384
1479
  .cols { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 1.25rem; }
1385
1480
  @media (max-width: 900px) { .cols { grid-template-columns: 1fr; } .schoolhero h1 { font-size: 1.9rem; } }
1386
1481
  `;
1387
- class Vt extends b {
1388
- static styles = [...H, Pe];
1482
+ class Yt extends b {
1483
+ static styles = [...j, Oe];
1389
1484
  static properties = {
1390
1485
  ...b.properties,
1391
1486
  schoolId: { type: String, attribute: "school-id" },
@@ -1402,7 +1497,7 @@ class Vt extends b {
1402
1497
  t && !this.sport && (this.sport = t);
1403
1498
  }
1404
1499
  async fetchData(t) {
1405
- const e = this.season || tt(), 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, c, p, l, h, f, u] = await Promise.all([
1500
+ 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, d, h, f, u] = await Promise.all([
1406
1501
  i ? t.listGames({ sport: i.sport, season: e }) : Promise.resolve({ items: [] }),
1407
1502
  i ? t.listTeams({ sport: i.sport }) : Promise.resolve({ items: [] }),
1408
1503
  t.listSchools(),
@@ -1421,17 +1516,17 @@ class Vt extends b {
1421
1516
  games: n.items,
1422
1517
  allTeams: c.items,
1423
1518
  schools: p.items,
1424
- conferences: l.items,
1519
+ conferences: d.items,
1425
1520
  rankings: h.items,
1426
- roster: f.items.find((v) => v.season === e) || null,
1521
+ roster: f.items.find(($) => $.season === e) || null,
1427
1522
  players: u.items
1428
1523
  };
1429
1524
  }
1430
1525
  get ctx() {
1431
1526
  return (!this._ctx || this._ctxData !== this.data) && (this._ctx = {
1432
- teamsById: g(this.data.allTeams.length ? this.data.allTeams : this.data.teams),
1433
- schoolsById: g(this.data.schools),
1434
- records: M(this.data.games),
1527
+ teamsById: v(this.data.allTeams.length ? this.data.allTeams : this.data.teams),
1528
+ schoolsById: v(this.data.schools),
1529
+ records: W(this.data.games),
1435
1530
  rankings: this.data.rankings,
1436
1531
  hrefs: L(this),
1437
1532
  sport: this.data.active?.sport || "football"
@@ -1442,61 +1537,61 @@ class Vt extends b {
1442
1537
  }
1443
1538
  renderView() {
1444
1539
  const { school: t, teams: e, active: s, season: r } = this.data;
1445
- if (!t) return d`<div class="view"><p class="empty">School not found.</p></div>`;
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;
1447
- return d`
1540
+ if (!t) return l`<div class="view"><p class="empty">School not found.</p></div>`;
1541
+ const o = this.ctx, i = q(t.colorPrimary || "#030711"), n = (t.adm || [])[0], c = v(this.data.conferences), p = s ? c[s.conferenceId] : null;
1542
+ return l`
1448
1543
  <div class="schoolhero" style="background:linear-gradient(115deg, ${t.colorPrimary || "#030711"} 0%, ${t.colorPrimary || "#030711"} 55%, var(--hsot-black) 100%);color:${i}">
1449
1544
  <div class="inner">
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>`}
1545
+ ${Y(t, 84) ? l`<img class="crest logo" alt="" loading="lazy" src=${Y(t, 84)} />` : l`<div class="crest" style="background:${t.colorSecondary || "#7C7C7C"};color:${q(t.colorSecondary || "#7C7C7C")}">${mt(t)}</div>`}
1451
1546
  <div style="min-width:260px">
1452
1547
  <h1>${t.name} <span class="mascot">${t.mascot || ""}</span></h1>
1453
1548
  <div class="facts">
1454
- ${t.location ? d`<span><b>Location</b>${t.location}${t.county ? d` · ${t.county} County` : m}</span>` : m}
1455
- ${t.association ? d`<span><b>League</b>${t.association}${t.classification ? d` · ${t.classification}` : m}</span>` : m}
1456
- ${p ? d`<span><b>Conference</b>${p.name}</span>` : m}
1457
- ${n ? d`<span><b>Enrollment</b>${n.value.toLocaleString()} (${n.season} ADM)</span>` : m}
1458
- ${t.openingYear ? d`<span><b>Opened</b>${t.openingYear}</span>` : m}
1459
- ${t.areaCode ? d`<span><b>Area</b>${t.areaCode}</span>` : m}
1460
- ${t.tagSlug ? d`<span><b>Tag</b>#${t.tagSlug}</span>` : m}
1549
+ ${t.location ? l`<span><b>Location</b>${t.location}${t.county ? l` · ${t.county} County` : m}</span>` : m}
1550
+ ${t.association ? l`<span><b>League</b>${t.association}${t.classification ? l` · ${t.classification}` : m}</span>` : m}
1551
+ ${p ? l`<span><b>Conference</b>${p.name}</span>` : m}
1552
+ ${n ? l`<span><b>Enrollment</b>${n.value.toLocaleString()} (${n.season} ADM)</span>` : m}
1553
+ ${t.openingYear ? l`<span><b>Opened</b>${t.openingYear}</span>` : m}
1554
+ ${t.areaCode ? l`<span><b>Area</b>${t.areaCode}</span>` : m}
1555
+ ${t.tagSlug ? l`<span><b>Tag</b>#${t.tagSlug}</span>` : m}
1461
1556
  </div>
1462
1557
  </div>
1463
1558
  </div>
1464
1559
  </div>
1465
1560
  <div class="band">
1466
1561
  <nav class="tabs" aria-label="Teams">
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>`)}
1562
+ ${e.map((d) => d.id === s?.id ? l`<a class="on" href="#" @click=${(h) => h.preventDefault()}>${d.name}</a>` : l`<a href="#" @click=${(h) => {
1563
+ h.preventDefault(), this.switchSport(d.sport);
1564
+ }}>${d.name}</a>`)}
1470
1565
  </nav>
1471
1566
  </div>
1472
1567
  <div class="view">
1473
- ${s ? this.renderTeam(o, s, p, r) : d`<p class="empty">No teams recorded for this school yet.</p>`}
1568
+ ${s ? this.renderTeam(o, s, p, r) : l`<p class="empty">No teams recorded for this school yet.</p>`}
1474
1569
  </div>
1475
1570
  `;
1476
1571
  }
1477
1572
  renderTeam(t, e, s, r) {
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)));
1479
- return d`
1573
+ 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 ? Lt(n, t.records).findIndex((h) => h.team.id === e.id) + 1 : 0, p = jt(t.rankings, t.teamsById, e.id, e.sport, null), d = this.data.games.filter((h) => h.homeTeamId === e.id || h.awayTeamId === e.id).sort((h, f) => String(h.date).localeCompare(String(f.date)));
1574
+ return l`
1480
1575
  <div class="tiles">
1481
1576
  <div class="tile"><div class="k">Overall</div><div class="v">${x(o)}</div><div class="s">${i} games played</div></div>
1482
1577
  <div class="tile"><div class="k">${s?.name || "Conference"}</div><div class="v">${x(o, !0)}</div>
1483
- <div class="s">${c ? `${Ae(c)} of ${n.length}` : "·"}</div></div>
1578
+ <div class="s">${c ? `${xe(c)} of ${n.length}` : "·"}</div></div>
1484
1579
  <div class="tile"><div class="k">Points</div><div class="v">${i ? (o.pf / i).toFixed(1) : "0.0"}</div>
1485
1580
  <div class="s">scored per game · ${i ? (o.pa / i).toFixed(1) : "0.0"} allowed</div></div>
1486
- <div class="tile"><div class="k">Streak</div><div class="v">${Q(o.results) || "·"}</div>
1487
- <div class="s">last 5: ${gt(t, e.id)}</div></div>
1581
+ <div class="tile"><div class="k">Streak</div><div class="v">${et(o.results) || "·"}</div>
1582
+ <div class="s">last 5: ${$t(t, e.id)}</div></div>
1488
1583
  <div class="tile"><div class="k">HSOT Top 25</div><div class="v">${p ? `#${p}` : "NR"}</div>
1489
- <div class="s"><a href=${$(t.hrefs.section, { sport: e.sport, view: "rankings" })}>full poll</a></div></div>
1584
+ <div class="s"><a href=${g(t.hrefs.section, { sport: e.sport, view: "rankings" })}>full poll</a></div></div>
1490
1585
  </div>
1491
- ${(e.championships || []).length ? d`
1586
+ ${(e.championships || []).length ? l`
1492
1587
  <div style="margin:-0.2rem 0 1rem;display:flex;gap:0.4rem;flex-wrap:wrap">
1493
- ${e.championships.map((h) => d`<span class="pill champ">★ ${h.season} ${h.title} champion${h.classification ? ` · ${h.classification}` : ""}${h.region ? ` · ${h.region}` : ""}</span>`)}
1588
+ ${e.championships.map((h) => l`<span class="pill champ">★ ${h.season} ${h.title} champion${h.classification ? ` · ${h.classification}` : ""}${h.region ? ` · ${h.region}` : ""}</span>`)}
1494
1589
  </div>` : m}
1495
1590
  <div class="cols">
1496
1591
  <div>
1497
1592
  <div class="section-title">Schedule &amp; results</div>
1498
1593
  <div class="card">
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 ${r}.</p>`}
1594
+ ${d.length ? l`<ul class="gamelist">${d.map((h) => this.renderGameRow(t, e, h))}</ul>` : l`<p class="empty">No ${e.sport} games recorded for ${r}.</p>`}
1500
1595
  </div>
1501
1596
  </div>
1502
1597
  <div>
@@ -1508,43 +1603,43 @@ class Vt extends b {
1508
1603
  }
1509
1604
  renderGameRow(t, e, s) {
1510
1605
  const r = s.homeTeamId === e.id, o = r ? s.awayTeamId : s.homeTeamId, i = r ? s.homeScore : s.awayScore, n = r ? s.awayScore : s.homeScore;
1511
- let c = d`<span class="mut">${X(s.time)}</span>`;
1606
+ let c = l`<span class="mut">${X(s.time)}</span>`;
1512
1607
  if (s.state === "final") {
1513
- const l = pt(s), h = l === "tie" ? "T" : l === (r ? "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>`);
1608
+ const d = ft(s), h = d === "tie" ? "T" : d === (r ? "home" : "away") ? "W" : "L";
1609
+ c = l`<span class=${h}>${h}</span> ${i}-${n}${s.finish === "overtime" ? l` <span class="mut">OT</span>` : m}${s.forfeit && s.forfeit !== "none" ? l` <span class="mut">FF</span>` : m}`;
1610
+ } else s.state === "live" && (c = l`<span style="color:var(--hsot-red)">${i}-${n}</span>`);
1516
1611
  const p = s.gameType === "conference" ? "Conf" : s.gameType === "nonconference" ? "Non-conf" : s.gameType === "playoff" ? `Playoff${s.label ? ` · ${s.label}` : ""}` : "Scrimmage";
1517
- return d`
1612
+ return l`
1518
1613
  <li>
1519
1614
  <span class="d">${y(s.date)}</span>
1520
- ${Y(s)}
1615
+ ${K(s)}
1521
1616
  <span class="res">${c}</span>
1522
- <span class="opp">${r ? "vs" : "at"} ${it(t, o, s.date)}
1617
+ <span class="opp">${r ? "vs" : "at"} ${nt(t, o, s.date)}
1523
1618
  <span class="pill type">${p}</span>
1524
- ${s.broadcast ? d`<span class="pill class">${s.broadcast}</span>` : m}
1619
+ ${s.broadcast ? l`<span class="pill class">${s.broadcast}</span>` : m}
1525
1620
  </span>
1526
1621
  <span class="where">${s.venue || ""}</span>
1527
- <a class="box" href=${$(t.hrefs.game, { sport: e.sport, id: s.id })}>Box score →</a>
1622
+ <a class="box" href=${g(t.hrefs.game, { sport: e.sport, id: s.id })}>Box score →</a>
1528
1623
  </li>
1529
1624
  `;
1530
1625
  }
1531
1626
  renderRoster(t) {
1532
1627
  const e = this.data.roster;
1533
1628
  if (!e)
1534
- return d`<p class="empty">Roster not published for ${t}.</p>`;
1535
- const s = g(this.data.players), r = e.entries.slice().sort((o, i) => (o.number || 0) - (i.number || 0));
1536
- return d`
1629
+ return l`<p class="empty">Roster not published for ${t}.</p>`;
1630
+ const s = v(this.data.players), r = e.entries.slice().sort((o, i) => (o.number || 0) - (i.number || 0));
1631
+ return l`
1537
1632
  <div class="tablewrap"><table class="data">
1538
1633
  <thead><tr><th class="num">No.</th><th>Player</th><th>Pos</th><th>Class</th><th class="num">Ht</th><th class="num">Wt</th></tr></thead>
1539
1634
  <tbody>
1540
1635
  ${r.map((o) => {
1541
1636
  const i = s[o.playerId];
1542
- return i ? d`<tr>
1637
+ return i ? l`<tr>
1543
1638
  <td class="num mut">${o.number ?? "·"}</td>
1544
1639
  <td style="font-weight:500">${i.firstName} ${i.lastName}</td>
1545
1640
  <td>${o.position || "·"}</td>
1546
1641
  <td class="mut">${i.classOf || "·"}</td>
1547
- <td class="num">${Se(i.heightIn)}</td>
1642
+ <td class="num">${we(i.heightIn)}</td>
1548
1643
  <td class="num">${i.weightLb || "·"}</td>
1549
1644
  </tr>` : m;
1550
1645
  })}
@@ -1553,16 +1648,16 @@ class Vt extends b {
1553
1648
  `;
1554
1649
  }
1555
1650
  }
1556
- globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", Vt);
1557
- const De = "https://api.wral.com/search";
1558
- function Re(a) {
1651
+ globalThis?.customElements && !globalThis.customElements.get("hsot-school") && globalThis.customElements.define("hsot-school", Yt);
1652
+ const Ne = "https://api.wral.com/search";
1653
+ function He(a) {
1559
1654
  return a.map((t) => `uri:"${t}"`).join(" OR ");
1560
1655
  }
1561
- function ze(a, t) {
1562
- const e = String(a || De).replace(/\/+$/, ""), s = new URLSearchParams({ query: Re(t), sort: "score", lang: "en" });
1656
+ function Me(a, t) {
1657
+ const e = String(a || Ne).replace(/\/+$/, ""), s = new URLSearchParams({ query: He(t), sort: "score", lang: "en" });
1563
1658
  return `${e}/v1/query?${s}`;
1564
1659
  }
1565
- function Gt(a) {
1660
+ function Zt(a) {
1566
1661
  try {
1567
1662
  const t = new URL(a);
1568
1663
  if (/(^|\.)smugmug\.com$/i.test(t.hostname)) {
@@ -1577,13 +1672,13 @@ function Gt(a) {
1577
1672
  }
1578
1673
  return { uri: a, title: a };
1579
1674
  }
1580
- async function Be(a, t, e) {
1581
- const r = await ((...n) => fetch(...n))(ze(a, t));
1675
+ async function Le(a, t, e) {
1676
+ const r = await ((...n) => fetch(...n))(Me(a, t));
1582
1677
  if (!r.ok) throw new Error(`search answered ${r.status}`);
1583
1678
  const o = await r.json(), i = new Map((o.items || []).map((n) => [n.uri, n]));
1584
- return t.map((n) => i.get(n) || Gt(n));
1679
+ return t.map((n) => i.get(n) || Zt(n));
1585
1680
  }
1586
- const Ue = w`
1681
+ const je = w`
1587
1682
  .breadcrumbs { font-size: 0.8125rem; margin: 0.9rem 0 0; color: var(--hsot-gray-5); }
1588
1683
  .breadcrumbs a { text-decoration: none; }
1589
1684
  .scorehead { display: grid; grid-template-columns: 1fr auto 1fr; gap: 1rem; align-items: center; padding: 1.4rem 1rem; }
@@ -1622,8 +1717,8 @@ const Ue = w`
1622
1717
  .cols { grid-template-columns: 1fr; }
1623
1718
  }
1624
1719
  `;
1625
- class qt extends b {
1626
- static styles = [...H, Ue];
1720
+ class Kt extends b {
1721
+ static styles = [...j, je];
1627
1722
  static properties = {
1628
1723
  ...b.properties,
1629
1724
  gameId: { type: String, attribute: "game-id" },
@@ -1645,7 +1740,7 @@ class qt extends b {
1645
1740
  t.listGames({ sport: e.sport, season: e.season }),
1646
1741
  // A search outage must not blank the box score — degrade to bare
1647
1742
  // links (fetchCoverage already degrades per-URL index misses).
1648
- s.length ? Be(this.searchApi, s).catch(() => s.map(Gt)) : Promise.resolve([])
1743
+ s.length ? Le(this.searchApi, s).catch(() => s.map(Zt)) : Promise.resolve([])
1649
1744
  ]);
1650
1745
  return {
1651
1746
  game: e,
@@ -1659,9 +1754,9 @@ class qt extends b {
1659
1754
  }
1660
1755
  get ctx() {
1661
1756
  return (!this._ctx || this._ctxData !== this.data) && (this._ctx = {
1662
- teamsById: g(this.data.teams),
1663
- schoolsById: g(this.data.schools),
1664
- records: M(this.data.games),
1757
+ teamsById: v(this.data.teams),
1758
+ schoolsById: v(this.data.schools),
1759
+ records: W(this.data.games),
1665
1760
  rankings: this.data.rankings,
1666
1761
  hrefs: L(this),
1667
1762
  sport: this.data.game.sport
@@ -1669,14 +1764,14 @@ class qt extends b {
1669
1764
  }
1670
1765
  renderView() {
1671
1766
  const t = this.data.game;
1672
- if (!t) return d`<div class="view"><p class="empty">Game not found.</p></div>`;
1673
- const e = this.ctx, s = g(this.data.conferences), r = 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));
1674
- return d`
1767
+ if (!t) return l`<div class="view"><p class="empty">Game not found.</p></div>`;
1768
+ const e = this.ctx, s = v(this.data.conferences), r = 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 = ft(t), n = (d) => t.state === "final" && i !== d && i !== "tie" ? "opacity:0.45" : "", c = t.conferenceId ? s[t.conferenceId] : null, p = this.data.games.filter((d) => d.id !== t.id && d.state === "final" && d.gameType !== "scrimmage" && (d.homeTeamId === t.homeTeamId && d.awayTeamId === t.awayTeamId || d.homeTeamId === t.awayTeamId && d.awayTeamId === t.homeTeamId));
1769
+ return l`
1675
1770
  <div class="view">
1676
1771
  <p class="breadcrumbs">
1677
- <a href=${$(e.hrefs.section, { sport: t.sport, view: "scores" })}>${J(t.sport)}</a> /
1678
- <a href=${$(e.hrefs.section, { sport: t.sport, view: "scores" })}>Scores/Schedules</a> /
1679
- ${P(e, t.awayTeamId)} at ${P(e, t.homeTeamId)}
1772
+ <a href=${g(e.hrefs.section, { sport: t.sport, view: "scores" })}>${P(t.sport)}</a> /
1773
+ <a href=${g(e.hrefs.section, { sport: t.sport, view: "scores" })}>Scores/Schedules</a> /
1774
+ ${z(e, t.awayTeamId)} at ${z(e, t.homeTeamId)}
1680
1775
  </p>
1681
1776
  <div class="card">
1682
1777
  <div class="scorehead">
@@ -1687,31 +1782,31 @@ class qt extends b {
1687
1782
  <span class="mut" style="font-size:1.6rem">–</span>
1688
1783
  <span style=${n("home")}>${t.homeScore}</span>
1689
1784
  </div>
1690
- <div class="status">${Y(t)}</div>
1691
- <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"}
1692
- ${t.broadcast ? d` · <span class="pill class">${t.broadcast}</span>` : m}</div>
1785
+ <div class="status">${K(t)}</div>
1786
+ <div class="status">${y(t.date, { weekday: "short", month: "short", day: "numeric", year: "numeric" })}${t.state === "scheduled" && t.time ? l` · ${X(t.time)}` : m} · ${t.venue || "Venue TBD"}
1787
+ ${t.broadcast ? l` · <span class="pill class">${t.broadcast}</span>` : m}</div>
1693
1788
  <div class="status">
1694
1789
  <span class="pill type">${t.gameType === "conference" ? `${c?.name || "Conference"} game` : t.gameType}</span>
1695
- ${t.label ? d`<span class="pill type">Bracket ${t.label}</span>` : m}
1696
- ${(t.tags || []).map((l) => d`<span class="pill type">${l}</span>`)}
1790
+ ${t.label ? l`<span class="pill type">Bracket ${t.label}</span>` : m}
1791
+ ${(t.tags || []).map((d) => l`<span class="pill type">${d}</span>`)}
1697
1792
  </div>
1698
1793
  </div>
1699
1794
  ${this.teamBlock(e, t, t.homeTeamId, o, !0)}
1700
1795
  </div>
1701
1796
  ${this.renderLineScore(t, r, o)}
1702
- ${t.notes ? d`<p class="note" style="padding:0 1rem 0.9rem;text-align:center">${t.notes}</p>` : m}
1797
+ ${t.notes ? l`<p class="note" style="padding:0 1rem 0.9rem;text-align:center">${t.notes}</p>` : m}
1703
1798
  </div>
1704
- ${(this.data.coverage || []).length ? d`
1799
+ ${(this.data.coverage || []).length ? l`
1705
1800
  <div class="section-title">Coverage</div>
1706
1801
  <div class="covgrid">
1707
- ${this.data.coverage.map((l) => d`
1708
- <a class="card covcard" href=${l.uri}>
1709
- ${l.image ? d`<img class="covimg" src=${l.image} alt="" loading="lazy" />` : m}
1802
+ ${this.data.coverage.map((d) => l`
1803
+ <a class="card covcard" href=${d.uri}>
1804
+ ${d.image ? l`<img class="covimg" src=${d.image} alt="" loading="lazy" />` : m}
1710
1805
  <div class="covbody">
1711
- <div class="covtitle">${l.videoDuration ? d`<span class="pill live" style="animation:none">Video</span> ` : m}${l.photos ? d`<span class="pill live" style="animation:none">Photos</span> ` : m}${l.title || l.uri}</div>
1712
- ${l.description ? d`<p class="covdesc">${l.description}</p>` : m}
1713
- ${l.author || l.publishedTime ? d`
1714
- <div class="covmeta">${[l.author, l.publishedTime ? new Date(l.publishedTime).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }) : ""].filter(Boolean).join(" · ")}</div>
1806
+ <div class="covtitle">${d.videoDuration ? l`<span class="pill live" style="animation:none">Video</span> ` : m}${d.photos ? l`<span class="pill live" style="animation:none">Photos</span> ` : m}${d.title || d.uri}</div>
1807
+ ${d.description ? l`<p class="covdesc">${d.description}</p>` : m}
1808
+ ${d.author || d.publishedTime ? l`
1809
+ <div class="covmeta">${[d.author, d.publishedTime ? new Date(d.publishedTime).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }) : ""].filter(Boolean).join(" · ")}</div>
1715
1810
  ` : m}
1716
1811
  </div>
1717
1812
  </a>
@@ -1719,29 +1814,29 @@ class qt extends b {
1719
1814
  </div>` : m}
1720
1815
  <div class="section-title">Season context</div>
1721
1816
  <div class="cols">
1722
- ${[[t.awayTeamId, r], [t.homeTeamId, o]].map(([l, h]) => this.renderContext(e, l, h))}
1817
+ ${[[t.awayTeamId, r], [t.homeTeamId, o]].map(([d, h]) => this.renderContext(e, d, h))}
1723
1818
  </div>
1724
- ${p.length ? d`
1819
+ ${p.length ? l`
1725
1820
  <div class="section-title">Head to head this season</div>
1726
1821
  <div class="card"><ul class="gamelist">
1727
- ${p.map((l) => d`<li>
1728
- <span class="d">${y(l.date)}</span>${Y(l)}
1729
- <span class="opp">${P(e, l.awayTeamId)} ${l.awayScore}, ${P(e, l.homeTeamId)} ${l.homeScore}</span>
1730
- <a class="box" href=${$(e.hrefs.game, { sport: t.sport, id: l.id })}>Box score →</a>
1822
+ ${p.map((d) => l`<li>
1823
+ <span class="d">${y(d.date)}</span>${K(d)}
1824
+ <span class="opp">${z(e, d.awayTeamId)} ${d.awayScore}, ${z(e, d.homeTeamId)} ${d.homeScore}</span>
1825
+ <a class="box" href=${g(e.hrefs.game, { sport: t.sport, id: d.id })}>Box score →</a>
1731
1826
  </li>`)}
1732
1827
  </ul></div>` : m}
1733
1828
  </div>
1734
1829
  `;
1735
1830
  }
1736
1831
  teamBlock(t, e, s, r, o) {
1737
- if (!r) return d`<div class="teamblock ${o ? "right" : ""}"><div class="tname">TBD</div></div>`;
1738
- const i = t.teamsById[s], n = t.records[s], c = G(r, 58);
1739
- return d`
1832
+ if (!r) return l`<div class="teamblock ${o ? "right" : ""}"><div class="tname">TBD</div></div>`;
1833
+ const i = t.teamsById[s], n = t.records[s], c = Y(r, 58);
1834
+ return l`
1740
1835
  <div class="teamblock ${o ? "right" : ""}">
1741
- ${c ? d`<img class="crest logo" alt="" loading="lazy" src=${c} />` : d`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${V(r.colorPrimary || "#030711")}">${ft(r)}</span>`}
1836
+ ${c ? l`<img class="crest logo" alt="" loading="lazy" src=${c} />` : l`<span class="crest" style="background:${r.colorPrimary || "#030711"};color:${q(r.colorPrimary || "#030711")}">${mt(r)}</span>`}
1742
1837
  <div>
1743
- <div class="tname">${ut(t, s, e.date)}<a href=${$(t.hrefs.school, { id: r.id })}>${r.name}</a></div>
1744
- <div class="trec">${r.mascot || ""} · ${x(n)}${i?.conferenceId ? d` · ${x(n, !0)} conf` : m}</div>
1838
+ <div class="tname">${vt(t, s, e.date)}<a href=${g(t.hrefs.school, { id: r.id })}>${r.name}</a></div>
1839
+ <div class="trec">${r.mascot || ""} · ${x(n)}${i?.conferenceId ? l` · ${x(n, !0)} conf` : m}</div>
1745
1840
  </div>
1746
1841
  </div>
1747
1842
  `;
@@ -1749,20 +1844,20 @@ class qt extends b {
1749
1844
  renderLineScore(t, e, s) {
1750
1845
  const r = t.periodScores || [];
1751
1846
  if (!r.length)
1752
- return d`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>`;
1753
- const o = Math.max(4, ...r.map((p) => p.period)), i = (p) => p <= 4 ? String(p) : `OT${p > 5 ? p - 4 : ""}`, n = (p, l) => {
1754
- const h = r.find((f) => f.period === l);
1847
+ return l`<p class="empty" style="text-align:center">Period scoring will appear once the game starts.</p>`;
1848
+ const o = Math.max(4, ...r.map((p) => p.period)), i = (p) => p <= 4 ? String(p) : `OT${p > 5 ? p - 4 : ""}`, n = (p, d) => {
1849
+ const h = r.find((f) => f.period === d);
1755
1850
  return h ? h[p] : t.state === "final" ? 0 : "·";
1756
- }, c = (p, l, h) => d`
1851
+ }, c = (p, d, h) => l`
1757
1852
  <tr>
1758
- <td class="teamcell">${F(p, 20)}${p?.abbr || "TBD"}</td>
1759
- ${Array.from({ length: o }, (f, u) => d`<td class="num">${n(l, u + 1)}</td>`)}
1853
+ <td class="teamcell">${H(p, 20)}${p?.abbr || "TBD"}</td>
1854
+ ${Array.from({ length: o }, (f, u) => l`<td class="num">${n(d, u + 1)}</td>`)}
1760
1855
  <td class="num" style="font-weight:700">${h}</td>
1761
1856
  </tr>`;
1762
- return d`
1857
+ return l`
1763
1858
  <div class="tablewrap" style="border-top:1px solid var(--hsot-gray-2)">
1764
1859
  <table class="data" style="max-width:560px;margin:0.6rem auto 0.9rem">
1765
- <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>
1860
+ <thead><tr><th>Team</th>${Array.from({ length: o }, (p, d) => l`<th class="num">${i(d + 1)}</th>`)}<th class="num">T</th></tr></thead>
1766
1861
  <tbody>
1767
1862
  ${c(e, "away", t.awayScore)}
1768
1863
  ${c(s, "home", t.homeScore)}
@@ -1773,36 +1868,36 @@ class qt extends b {
1773
1868
  }
1774
1869
  renderContext(t, e, s) {
1775
1870
  if (!s) return m;
1776
- const r = t.records[e], o = mt(this.data.games, e);
1777
- return d`
1871
+ const r = t.records[e], o = ut(this.data.games, e);
1872
+ return l`
1778
1873
  <div class="card ctxcard">
1779
- <div class="who">${F(s)}${s.name}</div>
1874
+ <div class="who">${H(s)}${s.name}</div>
1780
1875
  <div class="row">
1781
- <span>Last 5: ${gt(t, e)}</span>
1782
- <span>Streak: <b>${r ? Q(r.results) : "·"}</b></span>
1876
+ <span>Last 5: ${$t(t, e)}</span>
1877
+ <span>Streak: <b>${r ? et(r.results) : "·"}</b></span>
1783
1878
  <span>PF/PA: <b>${r ? `${r.pf} / ${r.pa}` : "·"}</b></span>
1784
- <span>Next: ${o ? d`${y(o.date, { month: "numeric", day: "numeric" })}
1785
- ${o.homeTeamId === e ? "vs" : "at"} ${q(t, o.homeTeamId === e ? o.awayTeamId : o.homeTeamId)}` : "·"}</span>
1879
+ <span>Next: ${o ? l`${y(o.date, { month: "numeric", day: "numeric" })}
1880
+ ${o.homeTeamId === e ? "vs" : "at"} ${Z(t, o.homeTeamId === e ? o.awayTeamId : o.homeTeamId)}` : "·"}</span>
1786
1881
  </div>
1787
1882
  </div>
1788
1883
  `;
1789
1884
  }
1790
1885
  }
1791
- globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", qt);
1792
- const Oe = {
1793
- "hsot-scores": Lt,
1794
- "hsot-standings": jt,
1795
- "hsot-rankings": Wt,
1796
- "hsot-school": Vt,
1797
- "hsot-boxscore": qt
1886
+ globalThis?.customElements && !globalThis.customElements.get("hsot-boxscore") && globalThis.customElements.define("hsot-boxscore", Kt);
1887
+ const We = {
1888
+ "hsot-scores": Gt,
1889
+ "hsot-standings": Vt,
1890
+ "hsot-rankings": qt,
1891
+ "hsot-school": Yt,
1892
+ "hsot-boxscore": Kt
1798
1893
  };
1799
- function Fe() {
1894
+ function Ge() {
1800
1895
  const a = globalThis?.customElements;
1801
1896
  if (a)
1802
- for (const [t, e] of Object.entries(Oe))
1897
+ for (const [t, e] of Object.entries(We))
1803
1898
  a.get(t) || a.define(t, e);
1804
1899
  }
1805
- typeof window < "u" && globalThis.customElements && Fe();
1900
+ typeof window < "u" && globalThis.customElements && Ge();
1806
1901
  export {
1807
- Fe as defineAll
1902
+ Ge as defineAll
1808
1903
  };