diff --git a/skill/scripts/serve-question.mjs b/skill/scripts/serve-question.mjs index 02bbdf8c1..05270c5f3 100644 --- a/skill/scripts/serve-question.mjs +++ b/skill/scripts/serve-question.mjs @@ -242,12 +242,12 @@ function page() { const cards = options.map((option, index) => `
-
+
${option.kicker ? `${esc(option.kicker)}` : ''} -
- ${option.heroSrc ? `` : '
'} -
${option.heroSrc ? expandChip : ''}${option.boardSrc ? flipChip('Board') : ''}
-
+ ${option.heroSrc || option.boardSrc ? `
+ +
${expandChip}${option.boardSrc && option.heroSrc ? flipChip('Board') : ''}
+
` : ''}
${option.lineage ? `

${esc(option.lineage)}

` : ''}

${esc(option.label)}

@@ -255,7 +255,7 @@ function page() {
- ${option.boardSrc ? `
+ ${option.boardSrc && option.heroSrc ? `
${expandChip}${flipChip('Hero')}
@@ -328,6 +328,10 @@ function page() { .card:hover .face.lead { border-color: var(--ks-kinpaku); } @media (prefers-reduced-motion: reduce) { .card-inner { transition: none; } } .kicker { position: absolute; z-index: 2; top: 12px; left: 12px; padding: 4px 10px; background: var(--ks-kinpaku); color: var(--ks-dark-ink); font-family: var(--ks-mono); font-size: .625rem; letter-spacing: .24em; text-transform: uppercase; border-radius: 4px; } + /* Text-only card: a grounded direction with no rendered card drops the media + region entirely instead of reserving a blank 16:9 void. */ + .face.text-only .kicker { position: static; align-self: flex-start; margin: 14px 0 0 14px; } + .face.text-only .body { padding-top: 12px; } .media { position: relative; width: 100%; aspect-ratio: 16/9; flex: none; } .media img { width: 100%; height: 100%; object-fit: cover; display: block; background: linear-gradient(100deg, var(--ks-graphite) 40%, var(--ks-graphite-2) 50%, var(--ks-graphite) 60%); } .face.back { background: var(--ks-lacquer-deep); }