:root{
  --bg:#0e1014;
  --panel:#171a21;
  --panel-2:#1f232c;
  --ink:#e8ecf1;
  --ink-dim:#9aa3b2;
  --accent:#ffcc4d;
  --accent-2:#6ee7ff;
  --danger:#ff6b6b;
  --good:#7CFFA1;
  --common:#8a94a6;
  --rare:#6ee7ff;
  --epic:#c084fc;
  --legend:#ffcc4d;
  --fire:#ff8a5b;
  --water:#62b4ff;
  --beast:#a3d977;
  --order:#e8ecf1;
  --chaos:#ff6bd6;
  --mech:#b0b7c3;
  --undead:#9b87ff;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;-webkit-font-smoothing:antialiased}
#app{max-width:1080px;margin:0 auto;padding:16px;min-height:100vh}
header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid #262b35;margin-bottom:16px}
header h1{margin:0;letter-spacing:4px;font-size:22px}
#meta{display:flex;gap:14px;font-size:13px;color:var(--ink-dim)}
#meta span{background:var(--panel);padding:6px 10px;border-radius:6px;border:1px solid #262b35}

.screen{display:none;animation:fade .2s ease}
.screen.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

.menu-card{max-width:560px;margin:32px auto;background:var(--panel);border:1px solid #262b35;border-radius:12px;padding:28px}
.menu-card h2{margin:0 0 8px;letter-spacing:2px}
.menu-card p{color:var(--ink-dim);margin:0 0 20px}
.rules{color:var(--ink-dim);line-height:1.8;padding-left:18px}
.rules b{color:var(--ink)}

button{font-family:inherit;cursor:pointer;border:none}
.btn-primary,.btn-secondary,.btn-ghost{display:block;width:100%;padding:14px;margin-top:10px;border-radius:8px;font-size:14px;letter-spacing:2px;transition:transform .08s,background .15s}
.btn-primary{background:var(--accent);color:#1a1404;font-weight:700}
.btn-primary:hover{background:#ffd870}
.btn-primary:disabled{background:#3a3520;color:#8a7a3d;cursor:not-allowed}
.btn-secondary{background:var(--panel-2);color:var(--ink);border:1px solid #2f3542}
.btn-secondary:hover{background:#262b35}
.btn-ghost{background:transparent;color:var(--ink-dim)}
.btn-ghost:hover{color:var(--ink)}
button:active{transform:translateY(1px)}

h2{letter-spacing:3px;margin:0 0 16px}
h3{letter-spacing:2px;margin:20px 0 10px;color:var(--ink-dim)}
h3 small{color:var(--accent);font-weight:400}

.card-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;padding:8px 0}
.board-row{display:flex;gap:12px;justify-content:center;min-height:180px;padding:16px;background:var(--panel);border:2px dashed #2f3542;border-radius:12px}
.board-row.drag-over{border-color:var(--accent);background:#1d1f1a}

.card{
  width:148px;min-height:200px;background:var(--panel-2);border:1px solid #2f3542;border-radius:10px;
  padding:10px;display:flex;flex-direction:column;gap:6px;cursor:grab;user-select:none;
  position:relative;transition:transform .1s,box-shadow .15s,border-color .15s;
}
.card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.4)}
.card.dragging{opacity:.45}
.card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}
.card.attacking{animation:attack .35s ease}
.card.hit{animation:hit .3s ease}
.card.dead{opacity:.25;filter:grayscale(1)}
@keyframes attack{50%{transform:translateY(-10px) scale(1.04)}}
@keyframes hit{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

.card .name{font-size:13px;font-weight:700;letter-spacing:1px;line-height:1.2}
.card .tags{display:flex;gap:4px;flex-wrap:wrap}
.tag{font-size:10px;padding:2px 6px;border-radius:10px;background:#2a2f3a;color:var(--ink-dim);letter-spacing:1px}
.tag.Fire{background:#3a1a12;color:var(--fire)}
.tag.Water{background:#12253a;color:var(--water)}
.tag.Beast{background:#1d2a14;color:var(--beast)}
.tag.Order{background:#2a2d33;color:var(--order)}
.tag.Chaos{background:#34132b;color:var(--chaos)}
.tag.Mech{background:#22262e;color:var(--mech)}
.tag.Undead{background:#221a3a;color:var(--undead)}

.card .ability{font-size:11px;color:var(--ink-dim);line-height:1.35;flex:1}
.card .stats{display:flex;justify-content:space-between;margin-top:auto;font-weight:700;font-size:16px}
.card .stats .atk{color:var(--accent)}
.card .stats .hp{color:var(--good)}
.card .rarity-bar{position:absolute;top:0;left:10px;right:10px;height:3px;border-radius:0 0 3px 3px}
.card.rarity-common .rarity-bar{background:var(--common)}
.card.rarity-rare .rarity-bar{background:var(--rare)}
.card.rarity-epic .rarity-bar{background:var(--epic)}
.card.rarity-legend .rarity-bar{background:var(--legend)}
.card.rarity-legend{border-color:#5a4515}
.card.rarity-epic{border-color:#4a3566}

.board-slot{
  width:148px;min-height:200px;border:2px dashed #2f3542;border-radius:10px;
  display:flex;align-items:center;justify-content:center;color:#4a5160;font-size:12px;letter-spacing:2px
}
.board-slot.over{border-color:var(--accent);background:#1d1f1a;color:var(--accent)}

.actions{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.actions button{width:auto;padding:10px 20px;margin:0}

.synergy-preview{margin-top:16px;padding:12px;background:var(--panel);border:1px solid #262b35;border-radius:8px;min-height:44px;font-size:12px;color:var(--ink-dim)}
.synergy-preview .syn{display:inline-block;margin:3px 6px 3px 0;padding:4px 8px;background:#2a2f3a;border-radius:4px;color:var(--ink)}
.synergy-preview .syn.active{background:#3a3520;color:var(--accent)}

.battle-area{display:flex;flex-direction:column;gap:16px;padding:12px}
.side{background:var(--panel);border:1px solid #262b35;border-radius:12px;padding:12px}
.side-header{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.side-header .label{font-size:11px;letter-spacing:3px;color:var(--ink-dim);min-width:80px}
.hp-bar{flex:1;height:10px;background:#0b0d11;border-radius:6px;overflow:hidden;border:1px solid #262b35}
.hp-fill{height:100%;transition:width .3s ease}
.hp-fill.player{background:linear-gradient(90deg,#7CFFA1,#3dd67a)}
.hp-fill.enemy{background:linear-gradient(90deg,#ff6b6b,#cc3b3b)}
.hp-text{font-size:12px;color:var(--ink-dim);min-width:60px;text-align:right}
.side-player .side-header{margin-top:10px;margin-bottom:0}

.battle-log{
  background:#0b0d11;border:1px solid #262b35;border-radius:8px;padding:10px;
  height:120px;overflow-y:auto;font-size:12px;line-height:1.6
}
.battle-log .line{color:var(--ink-dim)}
.battle-log .line.dmg{color:var(--danger)}
.battle-log .line.syn{color:var(--accent)}
.battle-log .line.heal{color:var(--good)}
.battle-log .line.turn{color:var(--accent-2);border-top:1px dashed #262b35;padding-top:6px;margin-top:4px}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:20px}

.shop-row{display:flex;gap:12px;margin:20px 0;flex-wrap:wrap;justify-content:center}
.pack-btn{
  flex:1;min-width:160px;background:var(--panel-2);border:1px solid #2f3542;border-radius:10px;padding:16px;
  color:var(--ink);display:flex;flex-direction:column;gap:6px;transition:transform .1s,border-color .15s
}
.pack-btn:hover{transform:translateY(-3px);border-color:var(--accent)}
.pack-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.pack-rare{border-color:#2a4a5a}
.pack-legend{border-color:#5a4515;background:linear-gradient(180deg,#2a2212,var(--panel-2))}
.pack-name{font-weight:700;letter-spacing:2px;font-size:13px}
.pack-cost{color:var(--accent);font-size:14px}
.pack-desc{color:var(--ink-dim);font-size:11px}
.pack-result{margin:16px 0;min-height:40px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

.tournament-progress{display:flex;gap:6px;justify-content:center;margin:20px 0}
.tournament-progress .pip{
  width:40px;height:10px;border-radius:4px;background:#2a2f3a;border:1px solid #3a3f4a
}
.tournament-progress .pip.won{background:var(--good)}
.tournament-progress .pip.lost{background:var(--danger)}
.tournament-progress .pip.current{background:var(--accent);animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.5}}

@media(max-width:620px){
  .card{width:120px;min-height:170px}
  .board-slot{width:120px;min-height:170px}
  header h1{font-size:16px;letter-spacing:2px}
  #meta{font-size:11px;gap:6px}
}
