:root{--bg:#14110f;--panel:#201a16;--gold:#d4a84b;--gold2:#f0cf7a;--txt:#f3ead8;--mut:#a89a82;--red:#c8553a}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font-family:-apple-system,"Segoe UI",Heebo,Arial,sans-serif;overscroll-behavior:none;touch-action:manipulation;user-select:none;-webkit-user-select:none}
body{background:radial-gradient(120% 80% at 50% 0%,#2b2019 0%,#14110f 60%)}
#app{height:100%;max-width:640px;margin:0 auto;position:relative}
.hidden{display:none!important}
.screen{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:14px;text-align:center}
h1{font-size:44px;margin:0;letter-spacing:1px;background:linear-gradient(#f6dc8f,#c2923a);-webkit-background-clip:text;background-clip:text;color:transparent}
h2{margin:0;font-size:28px}.sub{color:var(--mut);margin:0 0 8px;max-width:320px;line-height:1.5}
.logo{filter:drop-shadow(0 10px 24px #000a)}
.btn{font:inherit;font-weight:600;color:var(--txt);background:#33291f;border:1px solid #4b3d2c;border-radius:14px;padding:12px 18px;min-height:48px;cursor:pointer;transition:transform .08s,background .2s}
.btn:active{transform:scale(.96)}
.btn.primary{background:linear-gradient(#e6bd5d,#b98a2e);color:#241a0a;border-color:#f0cf7a;box-shadow:0 6px 18px #b98a2e44}
.btn.big{font-size:19px;padding:15px 28px;min-width:240px}
.btn.danger{background:#5a2a22;border-color:#8a3d30}
.btn:disabled{opacity:.4;box-shadow:none}
.link{background:none;border:0;color:var(--mut);font:inherit;padding:10px;cursor:pointer;text-decoration:underline}
.or{color:var(--mut);font-size:14px;display:flex;align-items:center;gap:10px;width:260px;margin-top:8px}.or:before,.or:after{content:"";flex:1;height:1px;background:#3b3126}
.joinrow{display:flex;gap:8px;direction:rtl}
#codeInput{font:inherit;font-size:22px;letter-spacing:6px;text-align:center;text-transform:uppercase;width:150px;border-radius:14px;border:1px solid #4b3d2c;background:#1c1713;color:var(--gold2);padding:10px;direction:ltr}
.err{color:#ff8a70;min-height:20px;margin:0}.foot{color:#7a6e5a;font-size:13px;margin-top:10px}
.codebox{font-size:56px;font-weight:800;letter-spacing:10px;color:var(--gold2);background:#1c1713;border:1px dashed #6b5732;border-radius:18px;padding:12px 18px 12px 8px;direction:ltr}
.hint{color:var(--mut);animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.4}}
#game{height:100%;display:flex;flex-direction:column;padding:max(8px,env(safe-area-inset-top)) 8px max(10px,env(safe-area-inset-bottom));gap:6px}
header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 6px}
.pl{display:flex;align-items:center;gap:6px;font-weight:600;font-size:14px;min-width:90px}
.pl.me{justify-content:flex-end}.pip{color:var(--mut);font-weight:500;font-size:12px}
.dot{width:9px;height:9px;border-radius:50%;background:#4caf50;box-shadow:0 0 8px #4caf50}.dot.off{background:#d65a3a;box-shadow:0 0 8px #d65a3a}
.room{font-size:12px;color:var(--mut);letter-spacing:3px;direction:ltr}
#boardWrap{position:relative;flex:0 0 auto;width:100%;max-height:68vh}
#board{width:100%;height:auto;display:block;border-radius:14px;filter:drop-shadow(0 12px 28px #000c);touch-action:manipulation}
.status{min-height:44px;display:flex;align-items:center;justify-content:center;text-align:center;font-weight:600;font-size:17px;padding:0 8px}
.status.mine{color:var(--gold2)}.status small{display:block;color:var(--mut);font-weight:400;font-size:13px}
#controls{display:flex;align-items:center;justify-content:space-between;gap:8px}
.roll{flex:1;font-size:20px;min-height:56px}.roll:not(:disabled){animation:glow 1.4s infinite}
@keyframes glow{50%{box-shadow:0 0 0 6px #e6bd5d33,0 6px 22px #e6bd5d77}}
.emo{display:flex;gap:2px}.emo button{background:#2a221b;border:1px solid #3b3126;border-radius:12px;width:40px;height:44px;font-size:20px;cursor:pointer}
.emo button:active{transform:scale(.88)}
.emoji{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.emoji span{position:absolute;font-size:46px;animation:floatup 2s ease-out forwards}
@keyframes floatup{from{transform:translateY(0) scale(.6);opacity:1}to{transform:translateY(-140px) scale(1.4);opacity:0}}
.overlay{position:fixed;inset:0;background:#000b;display:flex;align-items:center;justify-content:center;z-index:20;backdrop-filter:blur(3px)}
.card{background:var(--panel);border:1px solid #4b3d2c;border-radius:22px;padding:26px;display:flex;flex-direction:column;gap:12px;align-items:center;min-width:270px;animation:pop .3s}
@keyframes pop{from{transform:scale(.85);opacity:0}}
#overIcon{font-size:64px}
.menu{position:absolute;top:max(6px,env(safe-area-inset-top));left:calc(50% - 16px);width:32px;height:26px;background:none;border:0;color:var(--mut);font-size:22px;line-height:1;cursor:pointer;z-index:5}
.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);background:#000d;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;opacity:0;transition:opacity .25s;pointer-events:none;z-index:30}
.toast.show{opacity:1}
svg .pt{cursor:pointer}svg .hit{fill:transparent;cursor:pointer}
@keyframes dieroll{0%{transform:rotate(-25deg) scale(.6)}60%{transform:rotate(12deg) scale(1.12)}100%{transform:rotate(0) scale(1)}}
.die{transform-box:fill-box;transform-origin:center}.die.new{animation:dieroll .45s ease-out}
@keyframes ring{50%{opacity:.35}}.dst{animation:ring 1s infinite}
#boardWrap{margin-top:auto}#controls{margin-top:6px;margin-bottom:auto}
#game{justify-content:flex-start}
.room{unicode-bidi:isolate;direction:ltr}
