.signal-map-card {
  margin: 0 0 14px;
  padding: 16px 12px 12px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 20px;
  color: var(--text);
  container-type: inline-size;--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.guess-card,.guess-card.fresh { animation:none; }
.guess-sequencing { scroll-snap-type:none; overflow-anchor:none; pointer-events:none; }
.clue-pending { background:var(--high) !important; box-shadow:none !important; position:relative;--text:var(--page-text)!important;--text-soft:var(--page-soft)!important;--muted:var(--page-muted)!important}
.clue-pending > * { visibility:hidden !important; }
.clue-pending::after { content:'?'; position:absolute; inset:0; display:grid; place-items:center; color:var(--text-soft); font-size:18px; font-weight:800; }
.signal-map-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:6px 12px; padding:0 3px 14px; }
.signal-map-head span { font-size:.7rem; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.signal-map-head small { color:var(--text-soft); font-size:.65rem; }
.signal-map { position:relative; width:100%; isolation:isolate; }
.signal-links { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.signal-link { fill:none; stroke:var(--line); stroke-width:1.2; stroke-dasharray:3 5; }
.signal-link.known { stroke:var(--mint); stroke-dasharray:none; opacity:.6; }
.signal-link.close { stroke:var(--accent); stroke-dasharray:none; opacity:.7; }
.signal-node {
  position:absolute; display:flex; flex-direction:column; align-items:center;
  gap:3px; padding:4px 3px; border:1px solid var(--line); border-radius:10px;
  background:var(--high); color:var(--text); box-sizing:border-box; min-width:0;--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.signal-node.known { background:#1b8a6b; border-color:var(--mint);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.signal-node.close { background:#8a4702; border-color:var(--accent);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.signal-label { flex:none; width:100%; text-align:center; font-size:7px; line-height:1.2; font-weight:800; letter-spacing:.025em; text-transform:uppercase; color:var(--text); }
.signal-value {
  flex:1; min-height:0; width:100%; display:flex; align-items:center; justify-content:center;
  text-align:center; font-size:10px; font-weight:700; line-height:1.2;
  white-space:normal; overflow-wrap:anywhere; color:var(--text);
}
.signal-value.long { font-size:8px; line-height:1.15; }
.signal-value.unknown { font-size:21px; color:var(--text); opacity:.65; }
.signal-value.metric { gap:4px; white-space:nowrap; font-variant-numeric:tabular-nums; }
.signal-direction { display:inline-flex; align-items:center; font-size:14px; line-height:1; }
.signal-value svg { position:static; display:block; width:26px; height:26px; flex:none; color:var(--brand); }
.signal-core { position:absolute; display:flex; flex-direction:column; align-items:center; gap:10px; color:var(--text); text-align:center; }
.signal-cover { position:relative; width:100%; aspect-ratio:2/3; display:grid; place-items:center; border:1px solid var(--accent); background:var(--high); border-radius:14px; overflow:hidden; box-shadow:0 0 0 4px var(--high);--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.signal-question { font-size:40px; line-height:1; color:var(--accent); font-weight:900; }
.signal-cover img { width:100%; height:100%; object-fit:cover; }
.signal-core.revealed .signal-cover { border-color:var(--mint); }
.signal-hints { display:grid; gap:8px; }
.signal-hints:not(:empty) { border-top:1px solid var(--line); margin-top:12px; padding-top:12px; }
.signal-hint-readout { font-size:.73rem; line-height:1.5; overflow-wrap:anywhere; color:var(--text); }
.signal-hint-readout b { color:var(--mint); margin-right:4px; }
@container (min-width:440px) {
  .signal-label { font-size:8px; }
  .signal-value { font-size:11px; }
  .signal-value.long { font-size:9px; }
}
@media(prefers-reduced-motion:no-preference) {
  .signal-node.new-discovery { animation:signalDiscover .35s ease-out both; }
  @keyframes signalDiscover { from { opacity:.45; } to { opacity:1; } }
}


.signal-platform{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;min-width:0}.signal-platform svg{width:18px!important;height:18px!important}.signal-platform>span{font-size:8px;line-height:1.05;text-align:center;overflow-wrap:anywhere;color:var(--text);max-width:100%}


.signal-map-card{background:var(--surface);--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.signal-orbit-ring{fill:none;stroke:var(--line);stroke-width:1}
.signal-node{box-shadow:0 4px 12px #0003;border-color:var(--line-strong);border-radius:9px;overflow:hidden}
.signal-core:not(.revealed) .signal-cover{border:0;background:transparent;box-shadow:none;overflow:visible}
.signal-question{color:var(--green);font-size:56px}
.signal-node.known{background:#1b8a6b;border-color:var(--mint);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.signal-node.close{background:#8a4702;border-color:var(--accent);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.signal-value{overflow:hidden}


.signal-cover{aspect-ratio:1;border-radius:50%;border:2px solid var(--text)}.signal-core.revealed .signal-cover{box-shadow:0 0 28px #94d2bd30}.signal-cover img{object-position:center}.signal-node{will-change:transform}@media(prefers-reduced-motion:no-preference){.signal-node{animation:clueFloat 3s ease-in-out infinite}@keyframes clueFloat{50%{transform:translateY(-2px)}}}


/* Grouped clues use intrinsic heights: long names must never be clipped. */
.grouped-signal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:stretch}
.signal-group{position:relative;min-width:0;padding:10px;background:var(--high);border:1px solid var(--line);border-radius:13px;color:var(--text);--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.group-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;margin-bottom:9px;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.04em;line-height:1.35}
.group-heading span{overflow-wrap:anywhere}
.group-heading b{flex:none;color:var(--blue);font-variant-numeric:tabular-nums}
.group-traits{display:flex;flex-wrap:wrap;gap:6px;align-items:stretch}
.group-trait{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex-direction:column;min-width:32px;max-width:100%;padding:7px;border:1px dashed var(--line-strong);border-radius:8px;color:var(--text);line-height:1.35;font-size:12px;font-weight:700;box-sizing:border-box;text-align:center}
.group-trait span{min-width:0;max-width:100%;overflow-wrap:anywhere;white-space:normal}
.group-trait.known{background:#1b8a6b;border:1px solid var(--mint);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.group-trait.close{background:#8a4702;border:1px solid var(--accent);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.group-trait svg{width:24px;height:24px;flex:none}
.signal-single .group-trait{width:100%;font-size:13px}
.group-center{grid-column:1/-1;position:relative;display:grid;place-items:center;min-height:150px}
.group-orbit{position:absolute;width:144px;height:144px;border:1px solid var(--line);border-radius:50%}
.group-orbit::before,.group-orbit::after{content:'';position:absolute;width:12px;height:12px;background:var(--primary);border:3px solid var(--surface);border-radius:50%;top:8px;left:20px;color:var(--text);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill)}
.group-orbit::after{top:auto;left:auto;bottom:8px;right:20px}
.group-portrait{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;overflow:hidden;border:2px solid var(--mint);background:var(--surface);box-shadow:0 0 24px #94d2bd20;--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.group-portrait img{width:100%;height:100%;object-fit:cover}
.group-portrait>span{font-size:55px;font-weight:900;color:var(--green)}
@media(prefers-reduced-motion:no-preference){.group-orbit{animation:groupOrbit 24s linear infinite}.signal-group{animation:groupFloat 4s ease-in-out infinite}.signal-group:nth-child(even){animation-delay:-2s}@keyframes groupOrbit{to{transform:rotate(360deg)}}@keyframes groupFloat{50%{transform:translateY(-1px)}}}


.orbit-signal{display:block;position:relative;min-height:400px}
.orbit-signal .signal-group{position:absolute;padding:7px;border-radius:11px;box-sizing:border-box;z-index:2}
.orbit-signal .group-heading{font-size:8px;gap:3px;margin-bottom:5px;letter-spacing:0}
.orbit-signal .group-traits{gap:4px;justify-content:center}
.orbit-signal .group-trait{font-size:10px;padding:4px;line-height:1.3;min-width:22px}
.orbit-signal .signal-single .group-trait{font-size:11px}
.orbit-signal .group-trait svg{width:20px;height:20px}
.orbit-signal .group-center{z-index:1}
.orbit-signal .group-orbit{animation:none;pointer-events:none}
.orbit-signal .group-orbit::before,.orbit-signal .group-orbit::after{display:none}
.orbit-signal .group-portrait{flex:none;z-index:1}


.orbit-tap{display:none}
.mobile-orbit .signal-group{padding:0!important;width:48px;height:48px;background:transparent;border:0;box-shadow:none}
.mobile-orbit .signal-group>.group-heading,.mobile-orbit .signal-group>.group-traits,.mobile-orbit .signal-group>.group-trait{display:none}
.mobile-orbit .orbit-tap{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:48px;height:48px;padding:4px;border-radius:12px;border:1px solid var(--line-strong);background:var(--high);color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.orbit-tap svg{width:23px;height:23px}.orbit-tap small{font-size:9px;line-height:1;font-weight:800}
.mobile-orbit .orbit-tap.known{background:#1b8a6b;border-color:var(--mint);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}.mobile-orbit .orbit-tap.partial-known{border-color:var(--mint)}.mobile-orbit .orbit-tap.close{border-color:var(--accent)}
.orbit-tap:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
#orbitDetails{width:min(90vw,420px);max-height:80svh}
.expanded-orbit-details .group-heading{font-size:13px;margin-bottom:14px}
.expanded-orbit-details .group-traits{gap:8px}
.expanded-orbit-details .group-trait{font-size:15px;padding:10px;min-width:44px}
.orbit-fallback{display:flex;flex-wrap:wrap;gap:10px;height:auto!important}
.orbit-fallback .signal-group,.orbit-fallback .group-center{position:relative!important;left:auto!important;top:auto!important;transform:none!important}


@keyframes groupFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(2px,-6px)}}
.orbit-subicons{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px;max-width:100%}
.orbit-subicons svg{width:16px;height:16px;color:var(--text)!important}
.orbit-unknown{color:var(--text);font-size:18px;font-weight:900;line-height:18px}
.mobile-orbit .orbit-tap{height:auto;min-height:48px}
.orbit-inline-details{position:absolute;top:0;z-index:8;box-sizing:border-box;padding:12px 12px 12px 54px;background:var(--high);border:1px solid var(--accent);border-radius:13px;box-shadow:0 8px 22px #0008;opacity:0;visibility:hidden;transform:scale(.8);transform-origin:top center;transition:opacity .18s ease,transform .18s ease,visibility .18s;pointer-events:none;--text:var(--page-text);--text-soft:var(--page-soft);--muted:var(--page-muted)}
.orbit-expanded{z-index:10!important;animation-play-state:paused!important}
.orbit-expanded .orbit-inline-details{opacity:1;visibility:visible;transform:scale(1);pointer-events:auto}
.orbit-expanded .orbit-tap{position:relative;z-index:11}
.orbit-inline-details .group-heading{font-size:10px;margin-bottom:8px}
.orbit-inline-details .group-traits{display:flex;gap:5px;flex-wrap:wrap}
.orbit-inline-details .group-trait{font-size:12px;padding:6px}
@media(prefers-reduced-motion:reduce){.orbit-inline-details{transition:none}}


.mobile-orbit .signal-group{width:auto;height:auto;min-height:48px;border-radius:12px;background:var(--tile-bg);border:1px solid var(--tile-border);box-sizing:border-box;overflow:hidden}
.mobile-orbit .orbit-tap{width:100%;border:0;background:transparent!important;border-radius:0}
.orbit-subicons{flex-wrap:nowrap}.orbit-subicons svg,.orbit-unknown{flex-shrink:0}
.mobile-orbit .signal-group.orbit-expanded{height:auto;padding:0 8px 8px!important}
.mobile-orbit .orbit-expanded>.group-heading{display:flex;margin-top:8px;font-size:10px}
.mobile-orbit .orbit-expanded>.group-traits{display:flex;flex-wrap:wrap}
.mobile-orbit .orbit-expanded>.group-trait{display:flex;width:100%}
.mobile-orbit .orbit-expanded>.orbit-tap{margin-top:6px;min-height:30px}
.mobile-orbit .signal-group{transition:left .25s ease,top .25s ease,width .25s ease}
.orbit-signal{transition:height .25s ease}
@media(prefers-reduced-motion:reduce){.mobile-orbit .signal-group,.orbit-signal{transition:none}}
.orbit-caption{display:none}
.mobile-orbit .signal-group{overflow:visible}
.mobile-orbit .orbit-caption{display:block;position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%);width:max-content;max-width:96px;text-align:center;font-size:8px;font-weight:850;line-height:1.1;text-transform:uppercase;letter-spacing:.03em;color:var(--text);text-shadow:0 1px 3px var(--surface);pointer-events:none}
.mobile-orbit .caption-below .orbit-caption{bottom:auto;top:calc(100% + 4px)}
.mobile-orbit .signal-group.orbit-active .orbit-caption{visibility:hidden}
.orbit-overlay{position:fixed;inset:0;z-index:1000;background:#0009;animation:orbitShadeIn .2s ease-out}
.orbit-expanded-card{position:fixed;z-index:1001;box-sizing:border-box;max-height:calc(100svh - 36px);overflow-y:auto;padding:14px;border:1px solid var(--tile-border);border-radius:15px;background:var(--tile-bg);color:var(--text);box-shadow:0 16px 50px #000a}
.orbit-overlay .orbit-expanded-card{animation:none;transform:none}
.orbit-expanded-card .group-heading{display:flex;margin-bottom:12px;font-size:13px;font-weight:850;text-transform:uppercase;gap:12px;justify-content:space-between}
.orbit-expanded-card .group-heading b{color:var(--text)}
.orbit-expanded-card .group-traits{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start}
.orbit-expanded-card .group-trait{display:flex;width:auto;min-width:42px;max-width:100%;font-size:13px;padding:8px;background:#e9d8a612;border:1px solid #e9d8a655}
.orbit-expanded-card .group-trait svg{width:25px;height:25px}
.orbit-expanded-card>.orbit-tap,.orbit-expanded-card>.orbit-caption{display:none}
/* Three equal slots per row; one or two remaining clues stay centered. */
.orbit-expanded-card .group-traits{justify-content:center}
.orbit-expanded-card .group-trait{flex:0 0 calc((100% - 16px)/3);width:calc((100% - 16px)/3);min-width:0;max-width:none;box-sizing:border-box;overflow-wrap:anywhere}
.orbit-expanded-card .group-trait.known{background:#1b8a6b;border-color:var(--mint);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.orbit-expanded-card .group-trait.close{background:#8a4702;border-color:var(--accent);--text:var(--on-fill);--text-soft:var(--on-fill);--muted:var(--on-fill);color:var(--text)}
.orbit-score{color:var(--text);font-size:12px;font-weight:900;white-space:nowrap;font-variant-numeric:tabular-nums}
.orbit-subicons:has(.orbit-score){max-width:none}
.group-trait img{width:22px;height:22px;filter:brightness(0) invert(1)}
.orbit-subicons img{width:16px;height:16px;filter:brightness(0) invert(1)}
.genre-card img{width:21px;height:21px;display:block;flex:none;filter:brightness(0) invert(1)}
.orbit-expanded-card .group-trait img{width:25px;height:25px}
.orbit-static{cursor:default!important;pointer-events:none}
.orbit-text{display:-webkit-box;max-width:100%;overflow:hidden;text-overflow:ellipsis;color:var(--text);font-size:9px;font-weight:850;line-height:1.08;text-align:center;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.group-portrait{width:128px;height:128px}
@keyframes orbitShadeIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.orbit-overlay{animation:none}}
