/* styles/views/game-board.css — extrait de styles.css L244-L432. Board + station-cards + connectors + line-circles. */

/* ================================== BOARD (node-graph) ============ */
.board{
  position:relative;
  width:100%;
  flex:1;                      /* prend toute la hauteur restante de game-stage */
  min-height:300px;
  overflow:hidden;
  background-image:radial-gradient(circle, var(--dot-color) .8px, transparent .8px);
  background-size:28px 28px;
}

/* .view-game : retire les paddings verticaux pour que le board touche
   le bord inférieur de la fenêtre */
#view-game.active{
  padding-top:0;
  padding-bottom:0;
  padding-left:0;
  padding-right:0;
}
#view-game .game-bar{ padding-left:16px; padding-right:16px; padding-top:14px; padding-bottom:14px; }

.board-svg{
  position:absolute;top:0;left:0;
  width:100%;height:100%;
  pointer-events:none;z-index:0;
  overflow:visible;
}
.board-inner{
  position:absolute;inset:0;
  transform-origin:0 0;
  will-change:transform;
}
.board-link{
  fill:none;
  stroke:var(--border-strong);
  stroke-width:2;
  stroke-dasharray:8,5;
  stroke-linecap:round;
  pointer-events:none;
  transition:stroke .2s ease, stroke-width .2s ease;
}
.board-link.empty{
  animation:link-shimmer 1.8s ease-in-out infinite;
}
.board-link.hover{
  stroke:var(--accent);
  stroke-width:3;
  stroke-opacity:.8;
  animation:none !important;
}
@keyframes link-shimmer{
  0%,100%{stroke:var(--accent);stroke-opacity:.25}
  50%{stroke:var(--accent);stroke-opacity:1}
}
.board-link-hit{
  fill:none;
  stroke:transparent;
  stroke-width:26;
  pointer-events:stroke;
  cursor:pointer;
}

/* ---- Shared node base ---- */
.board-node{
  position:absolute;
  z-index:2;
  transform:translate(-50%,-50%);
  cursor:grab;
  user-select:none;
  transition:border-color .2s ease, box-shadow .25s ease, opacity .15s ease;
}
.board-node.dragging{
  cursor:grabbing;
  z-index:20;
  opacity:.92;
}

/* ---- Station cards (rounded rectangles) ---- */
.station-card{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  background:var(--panel);
  border:var(--stroke) solid var(--border);
  border-radius:14px;
  padding:12px 20px;
  min-width:140px;
}
.station-card:hover{
  border-color:var(--border-strong);
  box-shadow:0 8px 30px rgba(0,0,0,.35);
}
.station-card.dragging{
  border-color:var(--accent);
  box-shadow:0 14px 44px rgba(0,255,200,.15);
}
.station-card.dep{
  border-left:3px solid var(--accent);
  box-shadow:0 0 16px -4px var(--accent);
}
.station-card.arr{
  border-left:3px solid var(--ok);
  box-shadow:0 0 16px -4px var(--ok);
}

.station-card-body{
  position:relative;
  display:flex;flex-direction:column;align-items:center;gap:4px;
}

.station-card-tag{
  font-family:var(--mono);font-size:9px;letter-spacing:.26em;
  color:var(--muted);text-transform:uppercase;white-space:nowrap;
}
.station-card.dep .station-card-tag{
  font-size:11px;font-weight:700;letter-spacing:.3em;color:var(--accent);
}
.station-card.arr .station-card-tag{
  font-size:11px;font-weight:700;letter-spacing:.3em;color:var(--ok);
}
.station-card-tag.corr{color:#555}

.station-card-mode{
  font-family:var(--mono);font-size:9px;letter-spacing:.18em;
  color:var(--fg-dim);text-transform:uppercase;white-space:nowrap;
  opacity:.6;
}

.station-card-name{
  background:transparent;border:none;padding:0;
  font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.015em;color:var(--fg);
  text-align:center;line-height:1.2;white-space:nowrap;
}
.station-card.corr .station-card-name{font-weight:500}
.station-card-name.interactive{cursor:pointer}
.station-card-name.interactive:hover{
  text-decoration:underline;text-decoration-style:dashed;
  text-underline-offset:4px;color:var(--accent);
}
.station-card-name.empty{
  color:var(--muted);font-style:italic;font-weight:400;
}

.station-card-rm{
  position:absolute;top:-6px;right:-18px;
  width:22px;height:22px;border-radius:50%;
  background:var(--panel);border:1px solid var(--border-strong);
  cursor:pointer;font-size:13px;line-height:1;color:var(--fg-dim);
  display:none;align-items:center;justify-content:center;
  transition:all .15s ease;
}
.station-card-rm:hover{background:var(--ko);color:#fff;border-color:var(--ko)}
.station-card:hover .station-card-rm{display:flex}

/* ---- Connection "+" buttons (on dotted lines, hidden until hover) ---- */
.conn-add-btn{
  position:absolute;z-index:3;
  transform:translate(-50%,-50%);
  display:flex;align-items:center;justify-content:center;
  width:22px;height:22px;
  border-radius:50%;
  background:var(--bg);
  border:1px dashed var(--border-strong);
  color:var(--muted);cursor:pointer;
  font-size:14px;font-family:var(--mono);font-weight:500;
  line-height:1;
  opacity:0;pointer-events:none;
  transition:all .18s ease;
}
.conn-add-btn.visible{
  opacity:1;pointer-events:auto;
}
.conn-add-btn.visible:hover{
  opacity:1;
  border-style:solid;border-color:var(--accent);color:var(--accent);
  background:var(--panel);
  box-shadow:0 0 10px rgba(0,255,200,.2);
  transform:translate(-50%,-50%) scale(1.12);
}

/* ---- Line circles ---- */
.line-circle{
  width:64px;height:64px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg);
  border:var(--stroke) solid var(--border-strong);
  cursor:pointer;
  transition:border-color .2s ease, box-shadow .25s ease, opacity .15s ease;
}
.line-circle .dash{color:var(--muted);font-size:16px;line-height:1}
