/* ============================================================
   hashiglyph — arcade retint. GENERATED by tools/gen-skins.py; edit that,
   or add hand-written rules to the bottom of this file below the marker.

   The game declares its surfaces as --ha-<role> tokens. This maps the
   roles the arcade layer knows about onto --nx-* values, once per theme, so
   the board picks up the lit palette without any of the game's own layout,
   sizing or logic changing. Roles that are not in the vocabulary keep the
   game's value: the skin follows the player's theme now, so an unmapped
   token is still correct for the page it is on.
   ============================================================ */

:root body.gv-neon{
  --hg-line: var(--nx-accent);
  --hg-bad-bg: color-mix(in srgb, var(--nx-red) 18%, transparent);
  --hg-bad-br: color-mix(in srgb, var(--nx-red) 58%, transparent);
  --hg-shadow: 0 14px 34px var(--nx-drop);
}

:root[data-theme="light"] body.gv-neon{
  --hg-line: var(--nx-accent);
  --hg-bad-bg: color-mix(in srgb, var(--nx-red) 16%, transparent);
  --hg-bad-br: color-mix(in srgb, var(--nx-red) 58%, transparent);
  --hg-shadow: 0 12px 26px var(--nx-drop);
}

/* ---- hand-written below this line (not regenerated) ---- */


/* Islands carry their required bridge count; a satisfied one should read as
   banked, an over-subscribed one as a problem. Bridges are .hgLine. */
:root body.gv-neon .hgIsland{
  font-weight: 900;
  color: var(--nx-ink);
  transition: box-shadow .22s ease, border-color .2s ease, transform .16s cubic-bezier(.34,1.56,.64,1);
}
:root body.gv-neon .hgIsland.done{
  border-color: color-mix(in srgb, var(--nx-lime) 62%, transparent);
  box-shadow: 0 0 18px color-mix(in srgb, var(--nx-lime) calc(45% * var(--nx-glow)), transparent);
}
:root body.gv-neon .hgIsland.sel{
  box-shadow:
    0 0 0 2px var(--nx-accent) inset,
    0 0 18px color-mix(in srgb, var(--nx-accent) calc(50% * var(--nx-glow)), transparent);
}
:root body.gv-neon .hgIsland.bad,
:root body.gv-neon .hgIsland.warn{
  box-shadow: 0 0 16px color-mix(in srgb, var(--nx-red) calc(45% * var(--nx-glow)), transparent);
}
/* A placed bridge is a lit cable. */
:root body.gv-neon .hgLine{
  background: var(--nx-accent);
  box-shadow:
    0 0 8px color-mix(in srgb, var(--nx-accent) calc(80% * var(--nx-glow)), transparent),
    0 0 18px color-mix(in srgb, var(--nx-accent) calc(40% * var(--nx-glow)), transparent);
}
:root body.gv-neon .hgDot{ background: var(--nx-dim); }
:root body.gv-neon .hgNum{ color: var(--nx-ink); font-weight: 900; }
:root body.gv-neon .hgBoard.badFlash{ animation: hgBad .4s ease; }
@keyframes hgBad{ 0%,100%{filter:none} 45%{filter:brightness(1.5) saturate(1.4)} }
