:root{
  --felt:#0f5a3c; --felt-dark:#083324; --felt-light:#1a7a54;
  --gold:#e6c46a; --gold-dim:rgba(230,196,106,.35);
  --bg:#0b1512; --panel:#101d18; --panel-2:#15251f; --text:#f1f4f2; --muted:#a9b8b1;
  --c-r:#d63b3b; --c-t:#2f9e5f; --c-d:#3b6fe0; --c-p:#d34fd3;
  --card-w:86px; --card-h:122px; --card-r:9px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{
  font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text);
  display:flex; flex-direction:column; min-height:100vh; overflow-x:hidden;
}
button,input,select{font-family:inherit}
[hidden]{display:none !important}
a{color:var(--gold)}

/* ---------- header ---------- */
header{
  display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap;
  padding:12px 22px; border-bottom:1px solid rgba(255,255,255,.08); background:var(--bg);
}
.brand{font-weight:800; font-size:19px; letter-spacing:.4px; color:var(--gold); display:flex; align-items:center; gap:8px; text-decoration:none}
.brand small{font-weight:500; font-size:12px; color:var(--muted); letter-spacing:0}
.stats{display:flex; gap:22px}
.stat{text-align:center; font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.6px}
.stat b{display:block; font-size:18px; color:#fff; letter-spacing:0; font-variant-numeric:tabular-nums}
.stat b.good{color:#7ee2a5} .stat b.bad{color:#ff8a8a}
.hbtns{display:flex; gap:8px; align-items:center}
.icon-btn{
  background:transparent; border:1px solid rgba(255,255,255,.18); color:#e9eeec; border-radius:9px;
  padding:7px 12px; cursor:pointer; font-size:13px; transition:.15s; text-decoration:none;
}
.icon-btn:hover{border-color:var(--gold); color:var(--gold)}

/* ---------- table ---------- */
main.table{
  flex:1; position:relative; display:flex; flex-direction:column; justify-content:space-between;
  padding:26px 20px 22px; min-height:520px;
  background:radial-gradient(ellipse at 50% 25%, var(--felt-light) 0%, var(--felt) 45%, var(--felt-dark) 100%);
  box-shadow:inset 0 0 140px rgba(0,0,0,.5);
}
main.table::before{
  content:""; position:absolute; inset:14px; pointer-events:none;
  border:2px solid var(--gold-dim); border-radius:200px 200px 26px 26px / 130px 130px 26px 26px;
}
.table-text{
  position:absolute; left:50%; top:46%; transform:translate(-50%,-50%);
  font-size:13px; letter-spacing:4px; text-transform:uppercase; color:rgba(230,196,106,.28);
  pointer-events:none; text-align:center; line-height:1.9; white-space:nowrap;
}
.shoe{
  position:absolute; top:26px; right:36px; width:var(--card-w); height:var(--card-h);
  border-radius:var(--card-r);
  background:linear-gradient(135deg,#7a1c2c,#4a0d18); border:2px solid #d8b35a;
  box-shadow:2px 2px 0 #3a0a12,4px 4px 0 #2b0710,6px 6px 0 #1f050b, 0 12px 24px rgba(0,0,0,.5);
  z-index:1;
}
.shoe::after{
  content:""; position:absolute; inset:7px; border:1.5px solid rgba(255,255,255,.35); border-radius:5px;
  background:repeating-linear-gradient(45deg,transparent 0 6px,rgba(255,255,255,.08) 6px 7px),
             repeating-linear-gradient(-45deg,transparent 0 6px,rgba(255,255,255,.08) 6px 7px);
}
.area{position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; gap:8px}
.area-label{
  font-size:12px; letter-spacing:2.5px; text-transform:uppercase; color:rgba(255,255,255,.65);
  display:flex; align-items:center; gap:10px;
}
.hands{display:flex; gap:22px; justify-content:center; flex-wrap:wrap}
.hand-box{
  display:flex; flex-direction:column; align-items:center; gap:10px;
  padding:12px 16px 10px; border-radius:16px; border:2px solid transparent; transition:.25s;
}
.hand-box.active{border-color:var(--gold); background:rgba(255,255,255,.06); box-shadow:0 0 0 6px rgba(230,196,106,.12)}
.hand-box.done{opacity:.85}
.hand{display:flex; min-height:var(--card-h); min-width:var(--card-w); align-items:flex-start}
.hand .card + .card{margin-left:calc(var(--card-w) * -0.58)}
.badge{
  font-size:13px; font-weight:700; padding:4px 12px; border-radius:999px;
  background:rgba(0,0,0,.45); color:#fff; min-width:44px; text-align:center; letter-spacing:.3px;
  font-variant-numeric:tabular-nums;
}
.badge.bust{background:var(--c-r)} .badge.bj{background:var(--gold); color:#2a1d05} .badge.empty{visibility:hidden}

/* ---------- cards ---------- */
.card{
  width:var(--card-w); height:var(--card-h); perspective:900px; position:relative; flex:none;
  will-change:transform; filter:drop-shadow(0 6px 8px rgba(0,0,0,.35));
}
.card-inner{position:absolute; inset:0; transform-style:preserve-3d; transition:transform .38s ease}
.card.face-down .card-inner{transform:rotateY(180deg)}
.face{position:absolute; inset:0; border-radius:var(--card-r); backface-visibility:hidden; -webkit-backface-visibility:hidden}
.front{background:linear-gradient(160deg,#ffffff 0%,#f4f4f0 100%); color:#1b1b22; border:1px solid #d9d9d2; overflow:hidden}
.card.red .front{color:#d12a2a}
.corner{position:absolute; font-weight:800; font-size:19px; line-height:1; text-align:center; letter-spacing:-.5px}
.corner small{display:block; font-size:15px; margin-top:1px}
.corner.tl{top:7px; left:8px} .corner.br{bottom:7px; right:8px; transform:rotate(180deg)}
.pip{position:absolute; left:50%; top:50%; transform:translate(-50%,-52%); font-size:48px; line-height:1}
.back{transform:rotateY(180deg); background:linear-gradient(135deg,#7a1c2c,#4a0d18); border:2px solid #fff}
.back::after{
  content:""; position:absolute; inset:6px; border:1.5px solid rgba(255,255,255,.55); border-radius:5px;
  background:repeating-linear-gradient(45deg,transparent 0 6px,rgba(255,255,255,.12) 6px 7px),
             repeating-linear-gradient(-45deg,transparent 0 6px,rgba(255,255,255,.12) 6px 7px);
}
.card.sideways{transform:rotate(90deg) translateY(-14px); margin-left:calc(var(--card-w) * -0.35) !important; margin-right:14px; transition:transform .35s}

/* ---------- controls ---------- */
footer.controls{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:12px;
  padding:16px 20px 20px; background:var(--bg); border-top:1px solid rgba(255,255,255,.08);
}
.act{
  --c:#555; position:relative;
  min-width:130px; padding:13px 18px 13px 16px; border-radius:14px; border:0; cursor:pointer;
  font-size:15px; font-weight:700; color:#fff; background:var(--c);
  display:flex; align-items:center; justify-content:center; gap:10px;
  box-shadow:0 5px 0 rgba(0,0,0,.35), 0 8px 18px rgba(0,0,0,.3);
  transition:transform .08s, box-shadow .08s, opacity .2s, filter .2s;
}
.act:hover:not(:disabled){filter:brightness(1.1)}
.act:active:not(:disabled){transform:translateY(4px); box-shadow:0 1px 0 rgba(0,0,0,.35)}
.act:disabled{opacity:.28; cursor:not-allowed; filter:grayscale(.4)}
.act kbd{font-family:inherit; font-size:11px; font-weight:800; background:rgba(0,0,0,.3); color:#fff; padding:3px 7px; border-radius:6px; border:1px solid rgba(255,255,255,.25)}
.act.t{--c:var(--c-t)} .act.r{--c:var(--c-r)} .act.d{--c:var(--c-d)} .act.p{--c:var(--c-p)}
.act.deal{--c:#c9a648; color:#1f1600; min-width:210px}
.act.deal kbd{color:#1f1600; background:rgba(255,255,255,.35); border-color:rgba(0,0,0,.2)}
.act.ghost{--c:#2b3a34; min-width:0}

/* ---------- verdict ---------- */
.verdict{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%) scale(.92); opacity:0; pointer-events:none;
  z-index:5; width:min(560px,calc(100% - 40px)); max-height:calc(100% - 40px); overflow:auto;
  background:rgba(10,20,16,.94); backdrop-filter:blur(8px); border:1px solid rgba(255,255,255,.12);
  border-radius:20px; padding:22px 24px; box-shadow:0 30px 60px rgba(0,0,0,.6);
  transition:opacity .3s, transform .3s;
}
.verdict.show{opacity:1; transform:translate(-50%,-50%) scale(1); pointer-events:auto}
.verdict h2{margin:0 0 4px; font-size:26px; display:flex; align-items:center; gap:10px}
.verdict h2.ok{color:#7ee2a5} .verdict h2.ko{color:#ff8a8a} .verdict h2.neutral{color:var(--gold)}
.verdict .sub{color:var(--muted); font-size:13px; margin-bottom:14px}
.dec{display:flex; flex-direction:column; gap:8px; margin-bottom:14px}
.dec-row{
  display:flex; gap:12px; align-items:flex-start; padding:10px 12px; border-radius:12px;
  background:rgba(255,255,255,.05); border-left:4px solid #7ee2a5; font-size:14px; line-height:1.45;
}
.dec-row.ko{border-left-color:#ff8a8a}
.dec-row .mark{font-size:18px; line-height:1.2}
.dec-row .sit{color:var(--muted); font-size:12px}
b.chip{display:inline-block; padding:1px 8px; border-radius:6px; font-size:12px; color:#fff; vertical-align:1px}
.chip.T{background:var(--c-t)} .chip.R{background:var(--c-r)} .chip.D{background:var(--c-d)} .chip.P{background:var(--c-p)} .chip.none{background:#6c7772}
.outcomes{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px}
.out{font-size:12px; padding:5px 10px; border-radius:999px; background:rgba(255,255,255,.08); color:#ddd}
.out.win{background:rgba(126,226,165,.18); color:#a9f0c6} .out.lose{background:rgba(255,138,138,.18); color:#ffb3b3}
.out.push{background:rgba(230,196,106,.18); color:#f0dca0}
.verdict .row{display:flex; gap:10px; justify-content:flex-end; align-items:center; flex-wrap:wrap}
.link-btn{background:none; border:0; color:var(--muted); cursor:pointer; font-size:13px; text-decoration:underline}
.link-btn:hover{color:var(--gold)}
.v-extra:empty{display:none}
.v-extra{margin-bottom:14px}
.wait{color:var(--muted); font-size:13px; display:flex; align-items:center; gap:8px}
.wait::before{content:""; width:10px; height:10px; border-radius:50%; border:2px solid var(--gold); border-top-color:transparent; animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.toast{
  position:absolute; left:50%; top:16px; transform:translate(-50%,-20px); opacity:0; z-index:6;
  padding:10px 16px; border-radius:12px; font-weight:700; font-size:14px;
  background:rgba(10,20,16,.92); border:1px solid rgba(255,255,255,.14); transition:.25s; pointer-events:none;
  box-shadow:0 10px 30px rgba(0,0,0,.4);
}
.toast.show{opacity:1; transform:translate(-50%,0)}
.toast.ok{color:#7ee2a5} .toast.ko{color:#ff8a8a}

/* ---------- modals ---------- */
.modal{position:fixed; inset:0; z-index:50; display:none; align-items:center; justify-content:center; background:rgba(0,0,0,.6); padding:16px}
.modal.open{display:flex}
.modal-box{
  background:var(--panel); border:1px solid rgba(255,255,255,.12); border-radius:18px;
  width:min(760px,100%); max-height:92vh; overflow:auto; padding:20px 22px; box-shadow:0 30px 80px rgba(0,0,0,.6);
}
.modal-box h3{margin:0 0 4px; color:var(--gold); font-size:18px}
.modal-box .hint{color:var(--muted); font-size:13px; margin-bottom:14px}
.close{float:right; background:none; border:0; color:#aaa; font-size:22px; cursor:pointer; line-height:1}
.close:hover{color:#fff}
table.chart{border-collapse:separate; border-spacing:2px; font-size:12px; width:100%; font-variant-numeric:tabular-nums}
table.chart th{background:#2b2f2d; color:#eee; padding:4px 3px; font-weight:700; border-radius:4px}
table.chart th.sec{background:#1a1f1d; color:var(--gold); text-align:left; padding:8px 6px 3px; letter-spacing:1.5px; font-size:11px; text-transform:uppercase}
table.chart td{text-align:center; padding:4px 2px; color:#fff; font-weight:700; border-radius:4px; min-width:38px}
td.c-r{background:var(--c-r)} td.c-t{background:var(--c-t)} td.c-d{background:var(--c-d)} td.c-p{background:var(--c-p)}
td.hl{outline:3px solid var(--gold); outline-offset:-1px; box-shadow:0 0 0 3px rgba(230,196,106,.35); position:relative; z-index:1}
td.hl.bad{outline-color:#ff5a5a}
.legend{display:flex; flex-wrap:wrap; gap:10px 16px; margin-top:12px; font-size:12px; color:#ddd}
.legend span i{display:inline-block; width:14px; height:14px; border-radius:3px; vertical-align:-2px; margin-right:5px}
.chart-wrap{overflow-x:auto}
.setting{display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 0; border-bottom:1px solid rgba(255,255,255,.08); font-size:14px}
.setting small{display:block; color:var(--muted); font-size:12px; margin-top:2px}
.switch{position:relative; width:44px; height:24px; flex:none}
.switch input{opacity:0; width:0; height:0}
.switch i{position:absolute; inset:0; background:#3a4642; border-radius:999px; cursor:pointer; transition:.2s}
.switch i::before{content:""; position:absolute; width:18px; height:18px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.2s}
.switch input:checked + i{background:var(--c-t)}
.switch input:checked + i::before{transform:translateX(20px)}
.danger{margin-top:16px; background:none; border:1px solid #a33; color:#f99; padding:8px 12px; border-radius:9px; cursor:pointer}
.danger:hover{background:#3a1515}

/* ---------- accueil ---------- */
.home{flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:40px 20px; gap:28px;
  background:radial-gradient(ellipse at 50% 20%, var(--felt-light) 0%, var(--felt) 40%, var(--felt-dark) 100%); box-shadow:inset 0 0 140px rgba(0,0,0,.5)}
.home h1{margin:0; font-size:clamp(28px,5vw,44px); color:#fff; text-align:center; letter-spacing:-.5px}
.home h1 span{color:var(--gold)}
.home p.lead{margin:0; color:rgba(255,255,255,.75); text-align:center; max-width:520px; font-size:15px; line-height:1.5}
.modes{display:flex; gap:20px; flex-wrap:wrap; justify-content:center}
.mode{
  width:300px; padding:26px 24px; border-radius:20px; text-decoration:none; color:#fff;
  background:rgba(10,20,16,.78); border:1px solid rgba(255,255,255,.12); backdrop-filter:blur(6px);
  box-shadow:0 20px 40px rgba(0,0,0,.4); transition:.2s; display:flex; flex-direction:column; gap:8px;
}
.mode:hover{transform:translateY(-4px); border-color:var(--gold)}
.mode .ico{font-size:34px}
.mode h2{margin:0; font-size:20px; color:var(--gold)}
.mode p{margin:0; color:var(--muted); font-size:13px; line-height:1.5}

/* ---------- lobby / salon ---------- */
.screen{flex:1; display:flex; flex-direction:column}
.center{flex:1; display:flex; align-items:flex-start; justify-content:center; padding:30px 16px;
  background:radial-gradient(ellipse at 50% 20%, var(--felt-light) 0%, var(--felt) 40%, var(--felt-dark) 100%); box-shadow:inset 0 0 140px rgba(0,0,0,.5)}
.panel{
  width:min(920px,100%); background:rgba(10,20,16,.85); backdrop-filter:blur(8px); border:1px solid rgba(255,255,255,.12);
  border-radius:20px; padding:24px; box-shadow:0 30px 60px rgba(0,0,0,.5);
}
.panel h2{margin:0 0 4px; color:var(--gold); font-size:22px}
.panel .hint{color:var(--muted); font-size:13px; margin-bottom:18px}
.cols{display:grid; grid-template-columns:1fr 1fr; gap:22px}
.field{display:flex; flex-direction:column; gap:6px; margin-bottom:12px}
.field label{font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:.8px}
.field input,.field select{
  background:#0c1713; border:1px solid rgba(255,255,255,.16); color:#fff; border-radius:10px; padding:10px 12px; font-size:15px; outline:none;
}
.field input:focus,.field select:focus{border-color:var(--gold)}
.field-row{display:flex; gap:10px}
.field-row .field{flex:1}
.err{color:#ff8a8a; font-size:13px; min-height:18px; margin:6px 0}
.lobby-list{display:flex; flex-direction:column; gap:8px; max-height:340px; overflow:auto}
.lobby-row{
  display:flex; align-items:center; gap:12px; padding:12px 14px; border-radius:12px; cursor:pointer;
  background:rgba(255,255,255,.05); border:1px solid transparent; transition:.15s;
}
.lobby-row:hover{border-color:var(--gold)} .lobby-row.sel{border-color:var(--gold); background:rgba(230,196,106,.1)}
.lobby-row .n{font-weight:700; flex:1} .lobby-row .m{font-size:12px; color:var(--muted)}
.lobby-row.busy{opacity:.5; cursor:not-allowed}
.empty-msg{color:var(--muted); font-size:13px; padding:14px; text-align:center}
.players{display:flex; flex-direction:column; gap:8px}
.player{display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:12px; background:rgba(255,255,255,.05); font-size:14px}
.player .dot{width:9px; height:9px; border-radius:50%; background:#7ee2a5; flex:none}
.player.off .dot{background:#777} .player.off{opacity:.6}
.player .nm{flex:1; font-weight:600} .player .host{font-size:11px; color:var(--gold); border:1px solid var(--gold-dim); padding:2px 7px; border-radius:6px}
.player .me{font-size:11px; color:var(--muted)}
.player .st{font-size:12px; color:var(--muted); font-variant-numeric:tabular-nums; white-space:nowrap}
aside.side .player{padding:8px 10px; font-size:13px}
.player .st b{color:#fff}
.player.done .dot{background:var(--gold); box-shadow:0 0 0 3px rgba(230,196,106,.25)}
.settings-row{display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin-top:6px}
.btn-row{display:flex; gap:10px; margin-top:18px; align-items:center; flex-wrap:wrap}
.pill{font-size:12px; padding:4px 10px; border-radius:999px; background:rgba(255,255,255,.08); color:#ddd}

.share{font-size:13px; color:#ddd; background:rgba(230,196,106,.08); border:1px dashed var(--gold-dim); border-radius:12px; padding:10px 14px; margin:12px 0 16px; line-height:1.5}
.share b{color:var(--gold)}
.rb{font-size:11px; padding:3px 9px; border-radius:999px; font-weight:700; letter-spacing:.3px}
.rb.yes{background:rgba(126,226,165,.18); color:#7ee2a5} .rb.no{background:rgba(255,255,255,.08); color:var(--muted)}
.rb.spec{background:rgba(230,196,106,.15); color:var(--gold)}
.ready-block{display:flex; flex-direction:column; gap:10px; align-items:stretch; margin-top:12px}
.ready-block .act{width:100%}
.ready-info{font-size:13px; color:var(--muted); display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap}

/* ---------- jeu multi ---------- */
.gamebar{display:flex; align-items:center; gap:16px; padding:10px 22px; background:var(--panel); border-bottom:1px solid rgba(255,255,255,.08); flex-wrap:wrap}
.gamebar .round{font-weight:800; color:var(--gold); font-size:15px; white-space:nowrap}
.timer{flex:1; min-width:160px; display:flex; align-items:center; gap:10px}
.timer .bar{flex:1; height:10px; border-radius:999px; background:rgba(255,255,255,.1); overflow:hidden}
.timer .fill{height:100%; width:100%; background:linear-gradient(90deg,#2f9e5f,#e6c46a); transition:width .2s linear, background .3s}
.timer.low .fill{background:linear-gradient(90deg,#d63b3b,#ff8a8a)}
.timer .sec{font-variant-numeric:tabular-nums; font-weight:800; min-width:38px; text-align:right}
.timer.low .sec{color:#ff8a8a}
.game-wrap{flex:1; display:flex; min-height:0}
.game-wrap main.table{flex:1}
aside.side{width:250px; flex:none; background:var(--panel); border-left:1px solid rgba(255,255,255,.08); padding:14px; overflow:auto; display:flex; flex-direction:column; gap:10px}
aside.side h4{margin:0 0 4px; font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted)}
.lb{width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums}
.lb th{text-align:left; font-size:11px; color:var(--muted); font-weight:600; padding:6px 8px; border-bottom:1px solid rgba(255,255,255,.1); letter-spacing:.5px}
.lb td{padding:7px 8px; border-bottom:1px solid rgba(255,255,255,.05)}
.lb tr.me td{background:rgba(230,196,106,.1)}
.lb td.r{text-align:right} .lb th.r{text-align:right}
.lb .rank{color:var(--gold); font-weight:800; width:28px}
.lb .off{color:var(--muted); font-style:italic}
.podium{display:flex; gap:12px; justify-content:center; align-items:flex-end; margin:14px 0 18px; flex-wrap:wrap}
.pod{width:150px; text-align:center; padding:14px 10px; border-radius:14px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.1)}
.pod.p1{border-color:var(--gold); background:rgba(230,196,106,.14); transform:scale(1.06)}
.pod .medal{font-size:28px} .pod .nm{font-weight:800; margin:4px 0} .pod .acc{color:#7ee2a5; font-weight:700; font-size:18px} .pod .sm{font-size:11px; color:var(--muted)}
.banner{position:fixed; left:50%; bottom:18px; transform:translateX(-50%); background:#3a1515; color:#ffb3b3; padding:10px 16px; border-radius:12px; border:1px solid #a33; z-index:60; font-size:13px}

@media (min-width:1100px){
  .verdict{left:28px; top:50%; transform:translate(0,-50%) scale(.96); width:440px}
  .verdict.show{transform:translate(0,-50%) scale(1)}
}
@media (max-width:900px){
  .cols{grid-template-columns:1fr}
  aside.side{display:none}
}
@media (max-width:640px){
  :root{--card-w:64px; --card-h:92px}
  .corner{font-size:15px} .corner small{font-size:12px} .pip{font-size:36px}
  .stats{gap:14px} .stat b{font-size:15px}
  .shoe{right:16px; top:16px}
  .act{min-width:0; flex:1 1 40%; padding:12px 10px; font-size:14px}
  .act.deal{flex-basis:100%}
  main.table{padding:20px 10px 16px; min-height:440px}
  .table-text{display:none}
}
