/* ============================================================
   後加的三款遊戲：河內塔 / 密碼破譯 / 十六進位調色盤
   （主樣式在 main.css，這裡只放這三款專屬的）
   ============================================================ */

/* ===================== 河內塔 ===================== */
.hn-wrap{ display:flex; flex-direction:column; gap:16px; flex:1; }
.hn-board{
  flex:1; display:grid; grid-template-columns:repeat(3,1fr);
  gap:clamp(6px,1.6vw,16px); align-items:end; min-height:220px;
}
.hn-peg{
  position:relative; display:flex; flex-direction:column;
  justify-content:flex-end; align-items:center; gap:3px;
  height:100%; padding:10px 6px 0; cursor:pointer;
  background:transparent; border:1px solid transparent;
  border-radius:var(--radius-lg); font-family:inherit;
  transition:background .12s, border-color .12s;
}
.hn-peg:hover{ background:#0c1620; border-color:var(--line); }
.hn-peg.sel{
  background:color-mix(in srgb, var(--amber) 10%, #0c1620);
  border-color:var(--amber);
}
/* 拿著圓盤時，標出哪幾根放得下 */
.hn-peg.can{
  background:color-mix(in srgb, var(--green) 9%, #0c1620);
  border-color:color-mix(in srgb, var(--green) 55%, transparent);
}
.hn-peg.can .hn-base{
  color:var(--green); border-color:color-mix(in srgb, var(--green) 50%, transparent);
}
.hn-peg.can::after{
  content:"可以放這裡"; position:absolute; top:6px; left:50%;
  transform:translateX(-50%); white-space:nowrap;
  padding:2px 9px; border-radius:999px;
  background:var(--green); color:#06140c;
  font-size:10.5px; font-weight:700;
}
.hn-peg.no{ opacity:.45; }
/* 柱子本體 */
.hn-rod{
  position:absolute; bottom:28px; left:50%; transform:translateX(-50%);
  width:7px; height:calc(100% - 40px); border-radius:4px;
  background:linear-gradient(180deg, #24384a, #16222e);
}
.hn-stack{
  position:relative; z-index:1; width:100%;
  display:flex; flex-direction:column; align-items:center; gap:3px;
}
.hn-disc{
  height:clamp(20px,3.4vw,30px); border-radius:999px;
  display:grid; place-items:center;
  color:#06141c; font-weight:700; font-size:clamp(11px,2vw,14px);
  box-shadow:0 2px 0 rgba(0,0,0,.35);
  transition:width .18s, transform .14s;
}
.hn-disc.lift{ transform:translateY(-8px); box-shadow:0 0 22px -4px currentColor; }
.hn-base{
  position:relative; z-index:1; width:100%; margin-top:8px;
  padding:6px 0; border-radius:var(--radius);
  background:#101c26; border:1px solid var(--line-2);
  color:var(--fg-faint); font-size:11.5px; letter-spacing:.1em; text-align:center;
}
.hn-peg:nth-child(3) .hn-base{
  color:var(--green); border-color:color-mix(in srgb, var(--green) 45%, transparent);
}
.hn-info{ justify-content:center; }

/* ===================== 密碼破譯 ===================== */
.cp-wrap{
  display:flex; flex-direction:column; gap:clamp(10px,2vw,16px);
  flex:1; justify-content:center; text-align:center;
}
.cp-label{ font-size:11px; letter-spacing:.24em; color:var(--fg-faint); }
.cp-cipher, .cp-plain{
  display:flex; flex-wrap:wrap; justify-content:center; gap:3px;
  min-height:1.6em;
}
.cp-ch{
  display:inline-grid; place-items:center;
  min-width:clamp(20px,3.6vw,30px); padding:4px 2px;
  border-radius:3px; font-size:clamp(17px,3.4vw,26px); font-weight:700;
  font-variant-numeric:tabular-nums;
}
.cp-cipher .cp-ch{ background:#0d1a24; color:var(--fg-dim); border:1px solid var(--line); }
.cp-cipher .cp-ch.sp, .cp-plain .cp-ch.sp{ background:transparent; border-color:transparent; min-width:10px; }
.cp-plain .cp-ch{ background:#0a1f14; color:var(--amber); border:1px solid var(--line); }
.cp-plain .cp-ch.hit{
  color:var(--green); border-color:var(--green);
  box-shadow:0 0 16px -4px var(--green);
}
.cp-dial{ display:flex; align-items:center; justify-content:center; gap:14px; }
.cp-arrow{ min-width:58px; font-size:19px; }
.cp-dialnum{ font-size:15px; color:var(--fg-dim); min-width:98px; }
.cp-dialnum b{ font-size:26px; color:var(--amber); font-variant-numeric:tabular-nums; }
.cp-slider{
  width:min(100%,460px); margin:0 auto; display:block;
  accent-color:var(--amber); height:28px; cursor:pointer;
}
.cp-hint{ font-size:12.5px; min-height:1.4em; }

/* ===================== 十六進位調色盤 ===================== */
.cl-wrap{
  display:flex; flex-direction:column; gap:clamp(10px,2vw,16px);
  flex:1; justify-content:center; text-align:center;
}
.cl-bar{
  height:5px; background:var(--line); border-radius:3px; overflow:hidden;
  max-width:560px; margin:0 auto; width:100%;
}
.cl-bar i{ display:block; height:100%; background:var(--pink); transition:width .25s; }
.cl-label{ font-size:clamp(15px,2.6vw,19px); color:#fff; font-weight:700; }
.cl-q{ display:grid; place-items:center; min-height:clamp(84px,16vw,132px); }
.cl-swatch{
  display:block; width:100%; height:100%; border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
}
.cl-swatch--big{
  width:clamp(130px,26vw,220px); height:clamp(84px,15vw,128px);
  border-radius:var(--radius-lg);
  box-shadow:0 10px 36px -14px #000, inset 0 0 0 1px rgba(255,255,255,.16);
}
.cl-code{
  font-size:clamp(30px,7vw,56px); font-weight:700; letter-spacing:.08em;
  color:#fff; text-shadow:0 0 28px rgba(255,120,196,.4);
}
.cl-opts{
  display:grid; gap:clamp(8px,1.6vw,12px);
  grid-template-columns:repeat(2,1fr);
  max-width:560px; margin:0 auto; width:100%;
}
.cl-opt{ min-height:56px; padding:8px; }
.cl-opt--text{ font-size:clamp(15px,2.8vw,20px); font-weight:700; letter-spacing:.06em; }
.cl-opt--sw{ padding:6px; min-height:clamp(56px,11vw,76px); }
.cl-opt.right{
  border-color:var(--green); box-shadow:0 0 24px -8px var(--green);
  color:var(--green);
}
.cl-opt.wrong{ border-color:var(--red); color:var(--red); }
.cl-opt:disabled{ opacity:1; }          /* 答完後要還看得見顏色 */
.cl-opt:disabled:not(.right):not(.wrong){ opacity:.4; }
.cl-fb{ min-height:1.6em; font-size:13.5px; color:var(--fg-dim); }
.cl-fb.right{ color:var(--green); }
.cl-fb.wrong{ color:var(--red); }
.cl-qhint{ font-size:12.5px; color:var(--fg-dim); min-height:1.5em; }

/* 永遠在畫面上的對照表：這款的重點是讀懂它，不是背下來 */
.cl-legend{
  max-width:560px; margin:0 auto; width:100%;
  padding:10px 12px; border-radius:var(--radius);
  background:#08111a; border:1px solid var(--line);
  display:flex; flex-direction:column; gap:8px;
}
.cl-legend-row{
  display:flex; align-items:center; justify-content:center;
  gap:4px; font-size:13px; flex-wrap:wrap;
}
.cl-legend-t{ color:var(--fg-faint); font-weight:700; }
.cl-legend-seg{ font-weight:700; letter-spacing:.06em; }
.cl-legend-row .faint{ margin-left:8px; font-size:12px; }
.cl-scale{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.cl-scale-item{
  display:flex; flex-direction:column; align-items:center; gap:1px;
  padding:5px 2px; border-radius:3px; background:#0d1a24;
}
.cl-scale-item b{ color:var(--amber); font-size:13.5px; letter-spacing:.06em; }
.cl-scale-item span{ color:var(--fg-faint); font-size:11px; }

@media (max-width:420px){
  .cl-opts{ grid-template-columns:repeat(2,1fr); }
  .cp-arrow{ min-width:48px; }
}
