/* استایل مشترک بازی‌های دورهمی موبایل‌بازی */
:root{
  --night:#150A2E;--night-2:#24114A;--line:#3A2168;
  --pop:#FF3D8B;--pop-d:#B31D5C;--zest:#FFD93B;--mint:#3BE8B0;--sky:#6EC1FF;
  --paper:#FFF6EC;--muted:#C9B8E8;--dim:#A895CC;--ink:#150A2E;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:Vazirmatn,system-ui,-apple-system,sans-serif;background:var(--night);color:var(--paper);
  overscroll-behavior:none;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
input,textarea{background:var(--night-2);border:2px solid var(--line);border-radius:14px;padding:12px 14px;width:100%;outline:none;color:var(--paper);font-size:16px}
input:focus,textarea:focus{border-color:var(--mint)}
input::placeholder{color:#7f6fa6}
a{color:var(--zest);text-decoration:none;font-weight:700}
#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;
  padding:calc(14px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;width:100%}
.top{display:flex;align-items:center;gap:10px;margin-bottom:12px;min-height:40px}
.top h2{font-size:20px;font-weight:900;flex:1;text-align:center}
.top .ic{background:var(--night-2);border:2px solid var(--line);border-radius:12px;width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;flex:none}
.brand{text-align:center;padding:24px 0 12px}
.brand h1{font-size:clamp(34px,11vw,54px);font-weight:900;line-height:1.2;color:var(--zest);text-shadow:4px 4px 0 var(--pop)}
.brand p{margin-top:12px;color:var(--muted);line-height:1.9;font-size:15px}
.brand .made{margin-top:10px;font-size:13px;color:var(--dim)}
.card{background:var(--night-2);border:2px solid var(--line);border-radius:18px;padding:14px 16px;margin-bottom:12px}
.card h3{font-size:16px;font-weight:800;margin-bottom:8px;color:var(--zest)}
.card p{color:var(--muted);line-height:1.9;font-size:14px}
.stack{display:grid;gap:10px}
.big{display:flex;align-items:center;gap:14px;background:var(--night-2);border:2px solid var(--line);border-radius:18px;
  padding:16px;cursor:pointer;text-align:right;width:100%}
.big:active{transform:scale(.985)}
.big[aria-pressed="true"]{border-color:var(--mint);background:#2C1659}
.big .emo{font-size:30px;flex:none}
.big b{display:block;font-size:18px;font-weight:800}
.big small{color:var(--dim);font-size:13px;line-height:1.7;display:block}
.btn{border:0;border-radius:16px;padding:15px 18px;font-weight:800;font-size:18px;background:var(--pop);color:#fff;
  cursor:pointer;box-shadow:0 5px 0 var(--pop-d);width:100%}
.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--pop-d)}
.btn:disabled{opacity:.45;box-shadow:none;transform:none;cursor:default}
.btn.mint{background:var(--mint);color:var(--ink);box-shadow:0 5px 0 #1e9a72}
.btn.mint:active{box-shadow:0 1px 0 #1e9a72}
.btn.zest{background:var(--zest);color:var(--ink);box-shadow:0 5px 0 #b8980e}
.btn.zest:active{box-shadow:0 1px 0 #b8980e}
.btn.sky{background:var(--sky);color:var(--ink);box-shadow:0 5px 0 #2a7fbf}
.btn.sky:active{box-shadow:0 1px 0 #2a7fbf}
.btn.ghost{background:transparent;color:var(--muted);box-shadow:none;border:2px solid var(--line);font-size:16px}
.btn.ghost:active{transform:none}
.btn.sm{padding:10px 14px;font-size:15px;border-radius:12px;width:auto}
.row{display:flex;gap:10px;align-items:center}
.row>*{flex:1}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:var(--night-2);border:2px solid var(--line);border-radius:12px;padding:8px 14px;font-weight:700;cursor:pointer;font-size:14px}
.chip[aria-pressed="true"]{border-color:var(--zest);color:var(--zest)}
.chip.mint[aria-pressed="true"]{border-color:var(--mint);color:var(--mint)}
.label{color:var(--muted);font-size:14px;margin:14px 0 8px;font-weight:700}
.bar{position:sticky;bottom:0;padding:12px 0 0;margin-top:auto;background:linear-gradient(to top,var(--night) 75%,transparent)}
.center{text-align:center}
.grow{flex:1;min-height:0}
.hint{color:var(--dim);font-size:13px;line-height:1.8}
.err{color:var(--pop);font-size:14px;margin-top:8px;font-weight:700}
.ok{color:var(--mint)}
.warn{color:var(--zest)}
.plist{display:grid;gap:8px}
.pl{display:flex;align-items:center;gap:10px;background:var(--night-2);border:2px solid var(--line);border-radius:14px;padding:10px 12px}
.pl .av{width:34px;height:34px;border-radius:50%;background:var(--pop);display:flex;align-items:center;justify-content:center;font-weight:900;color:#fff;flex:none}
.pl.t2 .av{background:var(--sky);color:var(--ink)}
.pl .nm{flex:1;font-weight:800}
.pl .x{background:none;border:0;color:var(--dim);font-size:20px;cursor:pointer;padding:4px 8px}
.pl.me{border-color:var(--mint)}
.pl.turn{border-color:var(--zest);background:#2C1659}
.pl.out{opacity:.45}
.code{font-size:44px;font-weight:900;letter-spacing:.35em;color:var(--zest);text-align:center;direction:ltr;font-family:ui-monospace,Menlo,monospace}
.wordcard{background:var(--night-2);border:3px solid var(--zest);border-radius:24px;padding:26px 18px;text-align:center;
  font-size:clamp(30px,10vw,52px);font-weight:900;line-height:1.35;margin:10px 0}
.wordcard small{display:block;font-size:14px;color:var(--dim);font-weight:700;margin-bottom:8px}
.timer{font-size:46px;font-weight:900;text-align:center;color:var(--muted);line-height:1.1}
.timer.low{color:var(--pop)}
.counter{text-align:center;color:var(--dim);font-size:15px;margin:6px 0}
.counter b{color:var(--zest);font-size:20px}
.answers{display:flex;gap:8px;margin:10px 0}
.answers button{flex:1;border:0;border-radius:16px;padding:16px 6px;font-weight:900;font-size:17px;cursor:pointer;color:var(--ink)}
.answers .yes{background:var(--mint)}.answers .no{background:var(--pop);color:#fff}.answers .maybe{background:var(--zest)}
.answers button:active{transform:scale(.96)}
.answers button:disabled{opacity:.4}
.log{display:grid;gap:6px;max-height:36vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.log .q{background:var(--night-2);border-radius:12px;padding:9px 12px;font-size:15px;display:flex;gap:8px;align-items:center}
.log .q .a{font-weight:900;flex:none}
.log .q .a.yes{color:var(--mint)}.log .q .a.no{color:var(--pop)}.log .q .a.maybe{color:var(--zest)}
.log .q .who{color:var(--dim);font-size:12px}
.log .q .tx{flex:1}
.score{display:grid;gap:8px}
.score .s{display:flex;align-items:center;gap:10px;background:var(--night-2);border-radius:14px;padding:12px 14px;font-weight:800;font-size:17px}
.score .s .pt{margin-inline-start:auto;color:var(--zest);font-size:22px;font-weight:900}
.score .s.win{border:2px solid var(--zest)}
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{border:1px solid var(--line);padding:8px 6px;text-align:center;white-space:nowrap}
th{background:var(--night-2);color:var(--zest);font-weight:800}
td.bad{color:var(--pop);text-decoration:line-through;opacity:.75}
td.dup{color:var(--zest)}
td.uniq{color:var(--mint);font-weight:800}
td.pick{cursor:pointer}
.toast{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));inset-inline:16px;background:var(--zest);color:var(--ink);
  border-radius:14px;padding:12px 16px;font-weight:800;text-align:center;z-index:50;box-shadow:0 8px 30px rgba(0,0,0,.4);animation:tin .2s}
@keyframes tin{from{transform:translateY(12px);opacity:0}}
.install{background:#2C1659;border:2px solid var(--mint);border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.9;margin:10px 0}
.install b{color:var(--mint)}
.install .x{float:left;background:none;border:0;color:var(--dim);font-size:18px;cursor:pointer}
.net{font-size:12px;color:var(--dim);text-align:center;margin-top:6px}
.net.bad{color:var(--pop)}
footer{text-align:center;color:#8878AE;font-size:12px;padding:16px 0 4px;line-height:1.9}
.teamtag{font-size:12px;padding:2px 8px;border-radius:8px;background:var(--pop);color:#fff;font-weight:800}
.teamtag.t2{background:var(--sky);color:var(--ink)}
.hidewrap{position:relative}
.cover{position:absolute;inset:0;background:var(--night-2);border-radius:24px;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:20px;cursor:pointer;border:3px dashed var(--line);flex-direction:column;gap:6px}
.cover small{color:var(--dim);font-size:13px;font-weight:700}
.sheet{display:grid;gap:8px}
.sheet label{display:grid;grid-template-columns:96px 1fr;align-items:center;gap:8px;font-weight:800;font-size:15px}
.sheet input{padding:10px 12px}
.letterbox{font-size:clamp(70px,28vw,120px);font-weight:900;color:var(--zest);text-align:center;line-height:1.2;text-shadow:5px 5px 0 var(--pop)}
.lives{color:var(--pop);letter-spacing:2px;font-size:14px}
.chain{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-height:30vh;overflow-y:auto;padding:4px}
.chain span{background:var(--night-2);border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:14px;font-weight:700}
.chain span.last{border-color:var(--zest);color:var(--zest)}
.chain span.bad{text-decoration:line-through;opacity:.6}
.need{text-align:center;font-size:18px;color:var(--muted);margin:8px 0}
.need b{font-size:44px;color:var(--mint);display:inline-block;margin:0 6px;line-height:1.1}
.rules ol,.rules ul{padding-inline-start:20px;line-height:2.1;color:var(--muted);font-size:15px}
.rules h2{color:var(--zest);font-size:20px;margin:18px 0 8px;font-weight:900}
.rules p{line-height:2;color:var(--muted);font-size:15px}

/* ---------- بازی‌های دونفره (mb-duel) ---------- */
.duelbar{display:flex;gap:8px;margin:6px 0 10px}
.duelbar .ds{flex:1;background:var(--night-2);border:2px solid var(--line);border-radius:16px;padding:10px 8px;text-align:center;position:relative}
.duelbar .ds .emo{font-size:20px;display:block;line-height:1.2}
.duelbar .ds b{display:block;font-size:14px;font-weight:800;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.duelbar .ds b small{color:var(--dim);font-weight:700}
.duelbar .ds .pt{font-size:24px;font-weight:900;color:var(--zest)}
.duelbar .ds.turn{border-color:var(--zest);background:#2C1659}
.duelbar .ds.s1.turn{border-color:var(--sky)}
.turnline{text-align:center;font-weight:800;font-size:17px;color:var(--muted);margin:4px 0 10px}
.turnline.me{color:var(--zest)}
.turnline .hint{font-weight:700}
.endbox{background:#2C1659;border:3px solid var(--zest);border-radius:20px;padding:16px;text-align:center;margin-top:10px}
.endbox b{font-size:24px;font-weight:900;color:var(--zest);display:block}
.endbox small{color:var(--muted);font-size:14px;display:block;margin-top:6px;line-height:1.8}
.boardwrap{display:flex;justify-content:center;margin:4px 0}
.boardwrap svg{max-width:100%;height:auto;touch-action:manipulation}
.covercard{background:var(--night-2);border:3px dashed var(--line);border-radius:22px;padding:34px 18px;text-align:center}
.covercard .big-emo{font-size:60px}
.covercard h3{font-size:22px;font-weight:900;margin:10px 0 6px}
.covercard p{color:var(--muted);line-height:1.9;font-size:15px}

/* دوز */
/* width:100% لازم است: #app یک flex ستونی است و حاشیهٔ auto این جعبه را از کشیده‌شدن
   معاف می‌کرد؛ نتیجه این بود که صفحهٔ خالیِ دوز به اندازهٔ محتوایش (هیچ) جمع می‌شد و
   تا اولین حرکت خیلی کوچک دیده می‌شد. */
.tic{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%;max-width:340px;margin:0 auto}
.tic button{aspect-ratio:1;border:2px solid var(--line);background:var(--night-2);border-radius:16px;font-size:44px;font-weight:900;cursor:pointer;
  display:flex;align-items:center;justify-content:center;color:var(--paper)}
.tic button:disabled{cursor:default}
.tic button.x{color:var(--pop)}.tic button.o{color:var(--sky)}
.tic button.win{background:#2C1659;border-color:var(--zest)}
.tic button.free:active{background:#2C1659}

/* چهار در یک ردیف */
.c4{background:var(--night-2);border:2px solid var(--line);border-radius:18px;padding:8px;display:grid;gap:5px;margin:0 auto;max-width:360px}
.c4 .crow{display:grid;gap:5px}
.c4 .cell{aspect-ratio:1;border-radius:50%;background:var(--night);border:2px solid var(--line)}
.c4 .cell.p0{background:var(--pop);border-color:#ff7db3}
.c4 .cell.p1{background:var(--zest);border-color:#ffe98a}
.c4 .cell.win{box-shadow:0 0 0 3px var(--mint) inset}
.c4head{display:grid;gap:5px;max-width:360px;margin:0 auto 4px;padding:0 8px}
.c4head button{background:var(--night-2);border:2px solid var(--line);border-radius:10px;color:var(--muted);font-weight:900;font-size:18px;padding:6px 0;cursor:pointer}
.c4head button:disabled{opacity:.3}
.c4head button:active{background:#2C1659;color:var(--zest)}

/* سنگ کاغذ قیچی */
.rps{display:flex;gap:10px;margin:10px 0}
.rps button{flex:1;background:var(--night-2);border:2px solid var(--line);border-radius:20px;padding:18px 6px;font-size:46px;cursor:pointer;line-height:1.1}
.rps button b{display:block;font-size:14px;font-weight:800;color:var(--muted);margin-top:6px}
.rps button[aria-pressed="true"]{border-color:var(--zest);background:#2C1659}
.rpsduel{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0;text-align:center}
.rpsduel .side{flex:1}
.rpsduel .hand{font-size:60px;line-height:1.1}
.rpsduel .hand.q{opacity:.5}
.rpsduel .vs{font-size:22px;font-weight:900;color:var(--zest)}
.rpsduel .nm{font-size:14px;font-weight:800;color:var(--muted);margin-top:4px}

/* کارت جفت */
.mem{display:grid;gap:7px;margin:0 auto;max-width:400px}
.mem .card{aspect-ratio:.82;border:2px solid var(--line);background:var(--night-2);border-radius:14px;font-size:30px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;color:var(--paper);padding:0}
.mem .card.back{background:linear-gradient(135deg,#3A2168,#24114A);color:#6B5A92;font-size:22px}
.mem .card.up{background:#2C1659;border-color:var(--zest)}
.mem .card.done{background:#1C6B53;border-color:var(--mint);opacity:.75}

/* نقطه و خط */
.dbx{color:var(--dim);font-size:13px;text-align:center;margin-top:6px}

/* جنگ دریایی */
.grids{display:grid;gap:12px}
.gwrap h4{font-size:14px;font-weight:800;color:var(--muted);margin-bottom:6px;text-align:center}
.fleet{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 0}
.fleet span{background:var(--night-2);border:2px solid var(--line);border-radius:10px;padding:5px 10px;font-size:13px;font-weight:700}
.fleet span.sel{border-color:var(--zest);color:var(--zest)}
.fleet span.done{opacity:.4;text-decoration:line-through}
.fleet span.sunk{border-color:var(--pop);color:var(--pop);text-decoration:line-through}

/* تخته نرد */
.bgbar{display:flex;gap:8px;align-items:center;justify-content:center;margin:8px 0;flex-wrap:wrap}
.die{width:46px;height:46px;border-radius:10px;background:var(--paper);color:var(--ink);font-size:26px;font-weight:900;
  display:flex;align-items:center;justify-content:center;box-shadow:0 3px 0 #b9ab9a}
.die.used{opacity:.3}
.bgnote{text-align:center;color:var(--muted);font-size:14px;line-height:1.8;margin:6px 0}

/* ---------- بازی‌های چندنفره‌ی تخته‌ای (mb-party) ---------- */
.pbar{display:flex;gap:6px;margin:6px 0 10px;flex-wrap:wrap}
.pbar .ps{flex:1 1 0;min-width:76px;background:var(--night-2);border:2px solid var(--line);border-radius:14px;padding:8px 6px;text-align:center}
.pbar .ps .dot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--c);vertical-align:-1px}
.pbar .ps b{display:block;font-size:13px;font-weight:800;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pbar .ps small{display:block;font-size:11px;color:var(--dim);font-weight:700}
.pbar .ps.turn{border-color:var(--c);background:#2C1659}
.pbar .ps.me b{color:var(--zest)}
.pbar .ps.out{opacity:.45}
