/* Ghostlight Tile Wanderers — glassmorphism, system fonts only */
*{box-sizing:border-box}
:root{
  --ink:#eef2ff; --dim:#a9b4d8;
  --you:#5eead4; --you2:#22d3ee;
  --wisp:#fb7185; --wisp2:#c084fc;
  --lan:#fcd34d;
  --glass:rgba(255,255,255,.08); --stroke:rgba(255,255,255,.16);
  --wall1:#2b3358; --wall2:#171c33;
}
html,body{margin:0;min-height:100%}
body{
  font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(1100px 600px at 15% -10%, #2dd4bf33, transparent 60%),
    radial-gradient(900px 600px at 95% 10%, #a78bfa40, transparent 60%),
    radial-gradient(800px 700px at 50% 110%, #f472b633, transparent 60%),
    linear-gradient(160deg,#0b1026,#0e1430 45%,#101a3a);
  background-attachment:fixed;
  padding:18px 14px 40px;
}
.bg-orbs{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.bg-orbs i{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;animation:drift 14s ease-in-out infinite alternate}
.o1{width:340px;height:340px;left:-80px;top:-60px;background:#22d3ee55}
.o2{width:300px;height:300px;right:-60px;top:20%;background:#a78bfa55;animation-delay:-4s}
.o3{width:380px;height:380px;left:30%;bottom:-160px;background:#f472b644;animation-delay:-8s}
@keyframes drift{to{transform:translate(40px,30px) scale(1.08)}}

#app{max-width:1020px;margin:0 auto;position:relative;z-index:1}
.glass{
  background:var(--glass);
  border:1px solid var(--stroke);
  border-radius:20px;
  backdrop-filter:blur(18px) saturate(1.4);
  -webkit-backdrop-filter:blur(18px) saturate(1.4);
  box-shadow:0 18px 50px #0008, inset 0 1px 0 #ffffff2e;
}
.panel{padding:18px 20px}
.glass-in{background:#ffffff0d;border:1px solid #ffffff1f;border-radius:14px}

.hero-top{display:flex;gap:16px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
.kicker{margin:0 0 4px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
h1{font-size:clamp(24px,4vw,34px);margin:0 0 4px;letter-spacing:-.02em;text-shadow:0 0 24px #22d3ee66}
.sub{margin:0;color:var(--dim);max-width:56ch}
h2{font-size:14px;text-transform:uppercase;letter-spacing:.14em;color:var(--dim);margin:14px 0 8px}
h2:first-child{margin-top:0}

.seed-card{padding:12px 14px;text-align:center;min-width:190px}
.seed-label{display:block;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
#seedDate{font-size:20px}
.seed-num{display:block;font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}
.seed-nav{display:flex;gap:6px;justify-content:center;margin-top:8px}
.seed-nav button,.ghost-btn{
  font:inherit;color:var(--ink);cursor:pointer;
  background:#ffffff14;border:1px solid #ffffff2b;border-radius:10px;padding:4px 12px;
  transition:transform .12s,background .12s,box-shadow .12s;
}
.seed-nav button:hover,.ghost-btn:hover{background:#ffffff26;box-shadow:0 0 14px #22d3ee55;transform:translateY(-1px)}
.seed-nav button:active,.ghost-btn:active{transform:translateY(0) scale(.97)}
button:focus-visible,#board:focus-visible{outline:2px solid var(--you);outline-offset:2px}

.stats{display:flex;gap:14px;flex-wrap:wrap;margin-top:14px}
.stat{display:flex;align-items:center;gap:8px;font-size:14px;background:#ffffff0a;border:1px solid #ffffff17;border-radius:12px;padding:6px 12px}
.stat .k{color:var(--dim);text-transform:uppercase;font-size:11px;letter-spacing:.1em}
.bar{width:64px;height:8px;border-radius:99px;background:#ffffff1a;overflow:hidden;display:inline-block}
.bar i{display:block;height:100%;width:0%;border-radius:99px;transition:width .3s}
#barYou{background:linear-gradient(90deg,var(--you2),var(--you));box-shadow:0 0 10px var(--you)}
#barWisp{background:linear-gradient(90deg,var(--wisp2),var(--wisp));box-shadow:0 0 10px var(--wisp)}
.msg{min-height:1.6em;margin:12px 0 0;color:#ffe9a8;font-size:14px}

.layout{display:grid;grid-template-columns:1fr 300px;gap:16px;margin-top:16px}
.board-wrap{padding:16px}
#board{
  --n:15;
  display:grid;grid-template-columns:repeat(var(--n),1fr);gap:3px;
  background:#0a0e22aa;border:1px solid #ffffff1c;border-radius:14px;padding:10px;
  user-select:none;touch-action:manipulation;
}
.cell{
  aspect-ratio:1;border-radius:7px;position:relative;
  display:grid;place-items:center;font-size:clamp(10px,2.4vw,18px);
  transition:background .18s,box-shadow .18s,transform .12s,filter .25s;
  background:#1a2140;color:transparent;border:0;padding:0;cursor:default;
  font-family:inherit;
}
.cell.floor{background:#232c55}
.cell.explored.floor{background:#2c3768}
.cell.vis.floor{background:#3a4a8f;box-shadow:inset 0 0 0 1px #ffffff22}
.cell.wall{background:linear-gradient(145deg,var(--wall1),var(--wall2));box-shadow:inset 0 1px 0 #ffffff22}
.cell.vis.wall{filter:brightness(1.5)}
.cell.fog{filter:brightness(.42) saturate(.5)}
.cell.mine.vis,.cell.mine.explored{background:linear-gradient(145deg,#0d9488,#155e75);box-shadow:0 0 10px #2dd4bf88,inset 0 0 0 1px #5eead466}
.cell.wisp.vis,.cell.wisp.explored{background:linear-gradient(145deg,#9f1239,#6d28d9);box-shadow:0 0 10px #fb718588,inset 0 0 0 1px #fda4af55}
.cell.lantern::after{content:"🏮";filter:drop-shadow(0 0 6px #fcd34d);animation:bob 1.6s ease-in-out infinite}
.cell.lit::after{content:"✨";animation:pop .5s}
@keyframes bob{50%{transform:translateY(-2px)}}
@keyframes pop{0%{transform:scale(.3)}60%{transform:scale(1.4)}100%{transform:scale(1)}}
.cell.player{box-shadow:0 0 0 2px #fff,0 0 18px var(--you);transform:scale(1.08);z-index:2}
.cell.wispHere{box-shadow:0 0 0 2px #fff,0 0 18px var(--wisp);z-index:2}
.cell.beacon::before{
  content:attr(data-b);position:absolute;top:-7px;right:-4px;z-index:3;
  background:linear-gradient(145deg,#fcd34d,#f59e0b);color:#231a02;font-size:10px;font-weight:800;
  width:17px;height:17px;border-radius:50%;display:grid;place-items:center;box-shadow:0 0 10px #fcd34d;
}
.board-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap;font-size:13px;color:var(--dim)}
.board-foot b{color:var(--ink)}

.side{font-size:14px}
.keys{list-style:none;margin:0;padding:0;display:grid;gap:6px}
kbd{background:#ffffff1c;border:1px solid #ffffff33;border-bottom-width:2px;border-radius:6px;padding:1px 7px;font:12px/1.6 inherit;font-weight:700}
.rules{margin:0;padding-left:18px;color:#cfd7f5;display:grid;gap:6px}
.rules b{color:#fff}
.dim{color:var(--dim)}
.best{margin-top:12px;padding:10px 12px;font-size:13px;color:var(--dim)}
.win{margin-top:10px;padding:12px;display:grid;gap:8px;border-color:#5eead488!important;box-shadow:0 0 24px #2dd4bf55}
.win strong{font-size:16px}

.foot{margin-top:14px;text-align:center;color:var(--dim);font-size:12px}

@media (max-width:860px){
  .layout{grid-template-columns:1fr}
  .board-foot{font-size:12px}
}
@media (max-width:375px){
  body{padding:10px 8px 30px}
  .panel{padding:14px}
  #board{gap:2px;padding:7px}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}
