:root{
  --bg:#0b0f14;
  --card:#111824;
  --text:#e8eef7;
  --muted:#9bb0c9;
  --line:#1f2a3a;
  --btn:#1b2636;
  --btn2:#223149;
  --good:#2bd576;
  --bad:#ff5c7a;
  --warn:#ffd166;
  --accent:#4aa3ff;
  --radius:16px;
  --shadow: 0 12px 30px rgba(0,0,0,.35);
  --mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  --sans: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji","Segoe UI Emoji";
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:var(--sans);
  background:
    radial-gradient(1200px 700px at 20% 0%, rgba(74,163,255,.12), transparent 55%),
    radial-gradient(1000px 600px at 80% 10%, rgba(43,213,118,.10), transparent 60%),
    var(--bg);
  color:var(--text);
}

.wrap{max-width:1200px;margin:0 auto;padding:18px 16px}
header{display:flex;gap:16px;align-items:flex-end;justify-content:space-between}
.title h1{margin:0;font-size:26px;letter-spacing:.2px}
.sub{margin:4px 0 0;color:var(--muted);font-size:13px}

.stats{display:flex;gap:10px;flex-wrap:wrap}
.stat{
  background:rgba(255,255,255,.04);
  border:1px solid var(--line);
  padding:10px 12px;border-radius:14px;min-width:120px
}
.stat .label{color:var(--muted);font-size:12px}
.stat .value{font-weight:700;font-size:16px;margin-top:2px}

.grid{display:grid;grid-template-columns: 420px 1fr;gap:16px}
@media (max-width: 980px){
  .grid{grid-template-columns:1fr}
  header{align-items:flex-start;flex-direction:column}
}

.card{
  background: linear-gradient(180deg, rgba(255,255,255,.03), rgba(255,255,255,.015));
  border:1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding:16px;
  position:relative;
  overflow:hidden;
}

/* subtle bubble shimmer */
.card::after{
  content:"";
  position:absolute;
  inset:-80px -80px auto auto;
  width:240px;height:240px;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.12), transparent 60%);
  filter: blur(0px);
  opacity:.35;
  transform: rotate(18deg);
  pointer-events:none;
  animation: floatGlow 6s ease-in-out infinite;
}
@keyframes floatGlow{
  0%,100%{transform:translate(0,0) rotate(18deg); opacity:.30}
  50%{transform:translate(-10px,10px) rotate(18deg); opacity:.45}
}

h2{margin:0 0 10px;font-size:16px}
h3{margin:0 0 10px;font-size:14px;color:var(--muted);font-weight:600}
.mt{margin-top:12px}
.divider{height:1px;background:var(--line);margin:14px 0;opacity:.9}

.toprow{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ghost{background:rgba(255,255,255,.03)}

.chips{display:flex;gap:10px;flex-wrap:wrap}
.chip{
  border:1px solid var(--line);
  background:rgba(255,255,255,.03);
  color:var(--text);
  padding:10px 12px;border-radius:999px;
  cursor:pointer;font-weight:700;
  transition: transform .06s ease, box-shadow .15s ease, border-color .15s ease;
}
.chip:active{transform:translateY(1px)}
.chip.active{
  border-color: rgba(74,163,255,.8);
  box-shadow: 0 0 0 3px rgba(74,163,255,.18);
}

/* toggles */
.toggles{display:grid;grid-template-columns:1fr;gap:8px}
.toggle{
  display:flex;align-items:center;gap:10px;
  border:1px solid var(--line);
  padding:10px 12px;border-radius:12px;
  background:rgba(255,255,255,.02);
  color:var(--text);
  user-select:none;
}
.toggle input{transform:scale(1.1)}
.volume{
  margin-top:10px;
  border:1px solid var(--line);
  padding:10px 12px;border-radius:12px;
  background:rgba(255,255,255,.02);
}
.volume .label{color:var(--muted);font-size:12px;margin-bottom:6px}
.volume input{width:100%}

.actions{display:flex;gap:10px;flex-wrap:wrap}
.btn{
  border:1px solid var(--line);
  background:var(--btn);
  color:var(--text);
  padding:10px 12px;border-radius:12px;
  cursor:pointer;font-weight:700;
  transition: transform .06s ease, background .15s ease, border-color .15s ease, box-shadow .15s ease;
  position:relative;
  overflow:hidden;
}
.btn:hover{background:var(--btn2);border-color:rgba(155,176,201,.35)}
.btn:active{transform: translateY(1px)}
.btn.pop::after{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.12), transparent 55%);
  animation: popFlash .35s ease-out;
}
@keyframes popFlash{
  from{opacity:.85}
  to{opacity:0}
}

.primary{
  border-color: rgba(74,163,255,.55);
  background: rgba(74,163,255,.18);
  box-shadow: 0 0 0 0 rgba(74,163,255,.0);
}
.primary.winPulse{
  animation: winPulse .6s ease-out;
}
@keyframes winPulse{
  0%{box-shadow:0 0 0 0 rgba(43,213,118,.0)}
  50%{box-shadow:0 0 0 6px rgba(43,213,118,.18)}
  100%{box-shadow:0 0 0 0 rgba(43,213,118,.0)}
}

.danger{
  border-color: rgba(255,92,122,.55);
  background: rgba(255,92,122,.15);
}

.place-grid{display:grid;grid-template-columns: repeat(6, 1fr);gap:8px}
.place-btn{
  background:rgba(255,255,255,.03);
  border:1px solid var(--line);
  color:var(--text);
  border-radius:12px;
  padding:10px 8px;
  cursor:pointer;
  text-align:center;
  font-weight:800;
  transition: transform .06s ease, border-color .15s ease, background .15s ease;
}
.place-btn:hover{background:rgba(255,255,255,.05)}
.place-btn:active{transform:translateY(1px)}
.place-btn small{display:block;color:var(--muted);font-weight:600;margin-top:4px}

.row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.dice{display:flex;gap:10px;align-items:center}
.die{
  width:44px;height:44px;
  border-radius:12px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.04);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);
  font-size:18px;
  font-weight:900;
  transition: transform .15s ease;
}
.die.roll{
  animation: diceBounce .35s ease-out;
}
@keyframes diceBounce{
  0%{transform:translateY(0) rotate(0deg)}
  40%{transform:translateY(-8px) rotate(-8deg)}
  100%{transform:translateY(0) rotate(0deg)}
}
.total{color:var(--muted);font-size:12px;font-family:var(--mono)}

.two{
  display:grid;
  grid-template-columns: 1.1fr .9fr;
  gap:12px;
}
@media (max-width: 900px){
  .two{grid-template-columns:1fr}
}

.bets{display:grid;grid-template-columns: 1fr;gap:8px}
.betline{
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:rgba(255,255,255,.02);
  display:flex;justify-content:space-between;gap:10px
}
.betline .k{color:var(--muted);font-family:var(--mono);font-size:12px}
.betline .v{font-weight:800}

.trackers{
  display:grid;
  grid-template-columns: repeat(2, 1fr);
  gap:10px;
}
@media (max-width: 600px){
  .trackers{grid-template-columns:1fr}
}
.tracker{
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:rgba(255,255,255,.02);
}
.tracker .label{color:var(--muted);font-size:12px}
.tracker .value{font-weight:800;margin-top:4px;font-family:var(--mono);word-break:break-word}

.trainer{
  border:1px solid var(--line);
  border-radius:12px;
  background:rgba(255,255,255,.02);
  padding:10px 12px;
}
.trainer-title{font-weight:900}
.trainer-body{margin-top:6px;color:var(--text);font-size:13px;line-height:1.35}
.trainer-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.tag{
  font-family:var(--mono);
  font-size:11px;
  padding:6px 8px;
  border-radius:999px;
  border:1px solid var(--line);
  background:rgba(0,0,0,.18);
  color:var(--muted);
}
.tag.good{border-color:rgba(43,213,118,.35); color:rgba(43,213,118,.85)}
.tag.warn{border-color:rgba(255,209,102,.35); color:rgba(255,209,102,.9)}
.tag.bad{border-color:rgba(255,92,122,.35); color:rgba(255,92,122,.9)}

.statsbox{
  border:1px solid var(--line);
  border-radius:12px;
  background:rgba(0,0,0,.18);
  padding:10px 12px;
  font-family:var(--mono);
  font-size:12px;
  line-height:1.45;
  white-space:pre-wrap;
}

.loghead{display:flex;align-items:center;justify-content:space-between;gap:10px}
.badge{
  font-family:var(--mono);
  font-size:11px;
  padding:6px 8px;
  border-radius:10px;
  border:1px solid var(--line);
  background:rgba(0,0,0,.18);
  color:var(--muted);
}

.log{
  max-height:280px;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:12px;
  padding:10px 12px;
  background:rgba(0,0,0,.18);
  font-family:var(--mono);
  font-size:12px;
  line-height:1.45;
}
.log .good{color:var(--good)}
.log .bad{color:var(--bad)}
.log .warn{color:var(--warn)}
.log .muted{color:var(--muted)}

.hint{color:var(--muted);font-size:12px;line-height:1.4}
.footer{
  display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  color:var(--muted);font-size:12px
}
code{font-family:var(--mono)}
.muted{color:var(--muted)}

.toast{
  position:fixed;
  left:50%;
  bottom:14px;
  transform:translateX(-50%);
  padding:10px 12px;
  border-radius:12px;
  border:1px solid var(--line);
  background:rgba(0,0,0,.55);
  color:var(--text);
  font-family:var(--mono);
  font-size:12px;
  opacity:0;
  pointer-events:none;
  transition: opacity .2s ease, transform .2s ease;
}
.toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(-4px);
}
