:root{--bg:#1c1a17;--panel:#2a2621;--text:#f1e8d8;--muted:#a89c86;--accent:#d9a441;--p0:#f4ead2;--p0b:#8a7b5a;--p1:#3a2a22;--p1b:#c28a5a;--tri1:#8c5a3a;--tri2:#d8b98a;--felt:#3b2a1d;--hint:#5fd18a}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}
#app{max-width:520px;margin:0 auto;height:100%;padding:env(safe-area-inset-top) 12px env(safe-area-inset-bottom)}
.screen{display:flex;flex-direction:column;height:100%;padding:12px 0}
.hidden{display:none!important}
h1{margin:8px 0 4px;text-align:center;font-size:28px}
.who{text-align:center;color:var(--muted);min-height:22px;margin-bottom:16px}
.menu{display:flex;flex-direction:column;gap:12px}
button{font:inherit;color:var(--text);background:var(--panel);border:1px solid #4a4238;border-radius:12px;padding:14px;cursor:pointer;transition:transform .15s,background .15s}
button:active{transform:scale(.97)}
button.primary{background:var(--accent);color:#1c1a17;border-color:var(--accent);font-weight:600}
button.ghost{background:transparent}
.join{display:flex;gap:8px}
.join input{flex:1;font:inherit;text-transform:uppercase;letter-spacing:3px;text-align:center;background:var(--panel);color:var(--text);border:1px solid #4a4238;border-radius:12px;padding:14px}
.msg{margin-top:14px;text-align:center;color:#ff9a8a;min-height:20px}
.bar{display:flex;gap:10px;align-items:center;padding:8px 6px}
.bar .nick{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar .rate,.bar .off{color:var(--muted);font-size:14px}
.bar.active .nick{color:var(--accent)}
.board-wrap{flex:1;min-height:0;display:flex}
#board{width:100%;height:100%}
.status{display:flex;align-items:center;justify-content:space-between;padding:6px;min-height:56px}
#dice{display:flex;gap:8px}
.die{width:38px;height:38px;border-radius:8px;background:var(--p0);color:#222;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;animation:pop .3s}
.die.used{opacity:.25}
@keyframes pop{from{transform:rotate(-30deg) scale(.5)}to{transform:none}}
#turnInfo{color:var(--muted)}
#timer{font-variant-numeric:tabular-nums;color:var(--muted);min-width:42px;text-align:right}
#timer.low{color:#ff8a7a}
.actions{display:flex;gap:8px;padding-bottom:8px}.actions button{flex:1}
.wait,.result,.modal{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:5}
.wait{background:rgba(28,26,23,.88);flex-direction:column;gap:10px;text-align:center;padding:20px}
.wait .code{font-size:42px;letter-spacing:8px;color:var(--accent);font-weight:700}
.card{background:var(--panel);border-radius:16px;padding:24px;max-width:340px;width:90%;text-align:center;display:flex;flex-direction:column;gap:14px}
.card input{font:inherit;padding:12px;border-radius:10px;border:1px solid #4a4238;background:var(--bg);color:var(--text)}
.card table{width:100%;text-align:left;font-size:14px;border-collapse:collapse}.card td{padding:4px 2px}
.card .tabs{display:flex;gap:6px}.card .tabs button{flex:1;padding:8px}
.card .tabs button.on{background:var(--accent);color:#1c1a17}
/* доска */
.pt-a{fill:var(--tri1)}.pt-b{fill:var(--tri2)}
.pt.hint{filter:brightness(1.3)}
.chk{transition:cx .25s,cy .25s}
.chk.p0{fill:var(--p0);stroke:var(--p0b)}.chk.p1{fill:var(--p1);stroke:var(--p1b)}
.chk.sel{stroke:var(--hint);stroke-width:3}
.target{fill:var(--hint);opacity:.55;cursor:pointer}
.cnt{fill:#111;font-size:11px;font-weight:700;pointer-events:none;text-anchor:middle}
.chk.p1+.cnt{fill:#fff}

#board3d,#boardD,#boardG,#boardB,#boardDom,#boardCards,#boardDice,#boardField,#boardBrod,#boardLoto,#boardBingo,#boardPyr,#boardTri,#boardCorners,#boardMonte,#boardMines,#boardSudoku,#boardZonk,#boardSol,#boardClock,#boardGusek,#boardDrunk,#boardPerudo,#boardBura,#boardSeka,#boardTys,#boardMah,#boardGo,#boardBg,#boardRummy,#boardChap,#boardHex,#boardImp,#boardZhizn,#boardSam,#boardGorod,#boardKorol,#boardRisk,#boardKol,#board2048,#board15{width:100%;height:100%;min-height:0}
.board-wrap{position:relative}
.viewbtn{position:absolute;right:6px;top:6px;padding:6px 12px;font-weight:700;border-radius:10px;background:rgba(0,0,0,.55);z-index:2}

body.wide #app{max-width:1280px}
body.wide #game{padding:6px 0}
@media (orientation:landscape){body.wide .board-wrap{min-height:0}}
#rotateHint{display:none}
@media (orientation:portrait) and (max-width:860px){body.land #game:not(.hidden) #rotateHint{display:flex;position:fixed;inset:0;z-index:60;background:rgba(10,22,15,.97);color:#e8efe6;align-items:center;justify-content:center;text-align:center;padding:24px}body.land #game:not(.hidden) #rotateHint>div{display:flex;flex-direction:column;align-items:center;gap:14px;font-size:18px;opacity:.95}}

.viewbtn.set{right:62px;padding:6px 10px;display:flex;align-items:center}
button:disabled{opacity:.4;cursor:default}
.switch{display:flex;align-items:center;gap:12px;text-align:left;padding:10px 0;cursor:pointer}
.switch input{width:20px;height:20px;accent-color:#5fd18a}
.switch small{display:block;color:var(--muted);font-size:12px;margin-top:2px}

.games{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.games button{flex:1 1 30%;min-width:100px;padding:12px 6px;font-size:14px}
.games button.on{background:var(--accent);color:#1c1a17;border-color:var(--accent);font-weight:600}
.switch.give{margin:0 0 10px;padding:6px 4px}
.card .tabs{flex-wrap:wrap}

.seatrow{display:flex;align-items:center;gap:8px;margin:0 0 10px;color:var(--muted)}
.seatrow button{flex:0 0 auto;padding:8px 16px}
.seatrow button.on{background:var(--accent);color:#1c1a17}
