:root{--bg:#0f1f17;--felt:#17402b;--card:#fffdf7;--ink:#1d2621;--muted:#6b766f;--acc:#e0a526;--red:#d2453b;--green:#2f9e5b;--line:#e7e1d2}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:radial-gradient(ellipse at top,#235a3c 0,var(--felt) 40%,var(--bg) 100%) fixed;color:var(--ink);font:16px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.wrap{max-width:520px;margin:0 auto;padding:12px 12px 90px}
a{color:#2c6e49}
.brand{text-align:center;color:#fff;padding:28px 0 12px}.brand h1{margin:6px 0;font-size:34px;letter-spacing:.5px}.brand .muted{color:#cfe3d6}.brand.small{padding:10px 0}.brand.small h1{font-size:24px}
.logo{font-size:56px;filter:drop-shadow(0 4px 8px #0006)}
.card{background:var(--card);border-radius:16px;padding:14px 16px;margin:10px 0;box-shadow:0 6px 18px #0004}
.card h2{margin:0 0 10px;font-size:19px}.card h3{margin:0 0 8px;font-size:15px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}
.muted{color:var(--muted)}.tiny{font-size:12px}.center{text-align:center}.right{text-align:right;margin-left:auto}
.lbl{display:block;font-weight:600;margin:8px 0 4px}
input,select{width:100%;font:inherit;padding:12px;border:2px solid var(--line);border-radius:12px;background:#fff}
input:focus,select:focus{outline:none;border-color:var(--acc)}
.btn{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;font:inherit;font-weight:700;border:0;border-radius:12px;padding:12px 16px;background:#e9e4d6;color:var(--ink);cursor:pointer;text-decoration:none;transition:transform .05s}
.btn:active{transform:scale(.97)}.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn.primary{background:var(--acc);color:#2b1d00}.btn.danger{background:var(--red);color:#fff}.btn.gold{background:#f3d36b;color:#3a2b00}.btn.ghost{background:transparent;color:var(--muted);width:100%;margin-top:6px}
.btn.big{width:100%;padding:15px;font-size:17px;margin-top:10px}.btn small{font-weight:400;font-size:12px;opacity:.85}
.btn.sq{width:46px;height:48px;padding:0;font-size:22px}
.sticky{position:sticky;bottom:12px;box-shadow:0 8px 20px #0006}
.row{display:flex;gap:8px}.row input{flex:1}
.code-in{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-transform:uppercase;letter-spacing:4px;font-weight:700;text-align:center}
.or{text-align:center;margin:16px 0 6px;color:var(--muted);font-size:13px}
.err{color:var(--red);min-height:1em;margin:8px 0 0}
.top{display:flex;align-items:center;gap:12px;color:#fff;padding:4px 2px}.top .muted{color:#cfe3d6}.home{font-size:30px;text-decoration:none}
.codebig{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:28px;font-weight:800;letter-spacing:6px;cursor:pointer}
.plist,.seats,.hist,.reveal{list-style:none;margin:0;padding:0}
.plist li,.seats li{display:flex;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}.plist li:last-child,.seats li:last-child{border:0}
.dot{width:9px;height:9px;border-radius:50%;background:#bbb;flex:none}.dot.on{background:var(--green)}
.tag{font-size:11px;background:#efe6c8;padding:2px 7px;border-radius:99px;font-weight:700}.tag.you{background:#d5ecdd}
.x{margin-left:auto;border:0;background:none;color:var(--muted);font-size:18px;cursor:pointer}
.setting{position:relative;display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.setting:last-child{border:0}
.slabel{font-weight:600;display:flex;align-items:center;gap:8px}
.q{width:22px;height:22px;border-radius:50%;border:0;background:#2c6e49;color:#fff;font-weight:800;font-size:13px;cursor:pointer;padding:0}
.pop{flex-basis:100%;margin-top:8px;background:#203a2c;color:#f2f7f3;border-radius:12px;padding:10px 12px;font-size:14px;position:relative;animation:fade .15s}
.pop:before{content:"";position:absolute;top:-6px;left:60px;border:6px solid transparent;border-top:0;border-bottom-color:#203a2c}
@keyframes fade{from{opacity:0;transform:translateY(-4px)}}
.sw{position:relative;width:52px;height:30px;flex:none}.sw input{opacity:0;width:0;height:0;position:absolute}
.sw span{position:absolute;inset:0;background:#cfc8b6;border-radius:99px;transition:.2s;cursor:pointer}
.sw span:before{content:"";position:absolute;width:24px;height:24px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px #0004}
.sw input:checked+span{background:var(--green)}.sw input:checked+span:before{transform:translateX(22px)}.sw input:disabled+span{opacity:.6;cursor:default}
.die{width:46px;height:46px;flex:none}.die rect{fill:#fff;stroke:#2a2a2a;stroke-width:4}.die circle{fill:#1d1d1d}
.die.sm{width:26px;height:26px;vertical-align:middle}
.die.hit rect{fill:#ffe08a;stroke:#c98a00}.die.miss{opacity:.35}
.hiddendie{display:inline-flex;align-items:center;justify-content:center;background:#ddd;border-radius:8px}
.dice{display:flex;flex-wrap:wrap;gap:8px}
.hand .die{width:54px;height:54px;filter:drop-shadow(0 3px 3px #0003)}
.status{text-align:center}.curbid{font-size:30px;font-weight:800;margin:2px 0 8px}.curbid .die.sm{width:38px;height:38px}
.whose{font-weight:700;padding:8px;border-radius:10px;background:#f1ece0}.whose.mine{background:#ffe9a8;animation:pulse 1.5s infinite}
@keyframes pulse{50%{background:#ffd76a}}
.bidrow{display:flex;gap:12px;align-items:flex-start}
.cnt{flex:0 0 40%}.stepper{display:flex;gap:4px;align-items:center}.stepper input{text-align:center;font-size:22px;font-weight:800;padding:8px 2px;min-width:0}
.faces{flex:1}.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.facebtn{border:2px solid transparent;background:#f1ece0;border-radius:12px;padding:4px;cursor:pointer;display:flex;justify-content:center}
.facebtn .die{width:100%;max-width:44px;height:auto}.facebtn.sel{border-color:var(--acc);background:#ffe9a8;box-shadow:0 0 0 2px #e0a52655}
.chal{display:flex;gap:8px}.chal .btn{flex:1}
.hist li{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px dashed var(--line)}.hist li.last{font-weight:700}
.seats li.turn{background:#fff3cc;border-radius:10px;padding-left:6px}.seats li.out{opacity:.45}.seats li.me .pname{font-weight:700}
.seatno{width:20px;height:20px;border-radius:50%;background:#e9e4d6;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex:none}
.pname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cups{display:flex;align-items:center;gap:2px;font-size:14px}.mini{display:inline-block;width:9px;height:9px;border-radius:2px;background:#2c6e49}
.reveal li{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}.reveal .pname{flex:0 0 30%}.reveal .dice{gap:4px}
.loser{font-size:18px;text-align:center;background:#fde2df;border-radius:10px;padding:8px}
.win{text-align:center}.trophy{font-size:64px}
.choices{display:flex;flex-direction:column;gap:2px}
.seg{display:flex;background:#eee6d3;border-radius:12px;padding:3px;margin-bottom:6px}.seg button{flex:1;border:0;background:none;padding:10px;font:inherit;font-weight:700;border-radius:10px;cursor:pointer}.seg .sel{background:#fff;box-shadow:0 1px 3px #0003}
#toast{pointer-events:none;position:fixed;left:50%;bottom:20px;transform:translate(-50%,40px);opacity:0;background:#203a2c;color:#fff;padding:10px 16px;border-radius:12px;transition:.25s;z-index:9;max-width:90%}#toast.show{opacity:1;transform:translate(-50%,0)}#toast.bad{background:var(--red)}
.big{font-size:20px}
.pickgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.tally{width:100%;border-collapse:collapse;text-align:center;font-size:15px}.tally th,.tally td{padding:4px 2px;border-bottom:1px solid var(--line)}.tally td:first-child{text-align:left;font-size:12px;color:var(--muted)}.wildrow{background:#fff3cc}
