*,*:before,*:after{box-sizing:border-box}:root{--bg: #1a1a2e;--surface: #16213e;--surface2: #0f3460;--accent: #e94560;--accent2: #f5a623;--text: #eee;--muted: #888;--border: #334;--green: #27ae60;--shadow: 0 4px 20px rgba(0,0,0,.5);--pad: clamp(10px, 1.5vw, 24px)}body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;min-height:100vh}.lobby{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.lobby-card{background:var(--surface);border-radius:16px;padding:32px;width:100%;max-width:420px;box-shadow:var(--shadow)}.lobby-card h1{margin:0 0 4px;font-size:2.2rem;text-align:center}.subtitle{color:var(--muted);text-align:center;margin:0 0 24px;font-size:.95rem}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:6px}.form-group input[type=text],.form-group select{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:1rem;outline:none;transition:border-color .15s}.form-group input[type=text]:focus,.form-group select:focus{border-color:var(--accent2)}.checkbox-label{display:flex!important;align-items:center;gap:8px;cursor:pointer;font-size:.95rem!important;color:var(--text)!important}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent2)}.btn{padding:12px 20px;background:var(--accent2);color:#1a1a2e;border:none;border-radius:8px;font-size:1rem;font-weight:700;cursor:pointer;transition:opacity .15s,transform .1s}.btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.secondary{background:var(--surface2);color:var(--text)}.divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.85rem;margin:20px 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.error-msg{color:var(--accent);font-size:.9rem;margin:8px 0 0;text-align:center}.waiting-room{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.waiting-card{background:var(--surface);border-radius:16px;padding:32px;text-align:center;max-width:480px;width:100%;box-shadow:var(--shadow)}.waiting-card h2{margin:0 0 12px}.share-link{background:var(--bg);border-radius:8px;padding:12px;font-size:.85rem;word-break:break-all;margin:16px 0;color:var(--muted)}.share-link strong{color:var(--text)}.game-shell{display:flex;height:100vh;overflow:hidden;gap:0}.game-board{flex:1;display:flex;flex-direction:column;gap:12px;padding:var(--pad);overflow-y:auto;min-width:0;min-height:0}.phase-banner{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:10px;font-size:.95rem;font-weight:600;gap:8px}.phase-banner.your-turn{background:linear-gradient(90deg,#27ae60,#2ecc71);color:#fff}.phase-banner.waiting{background:var(--surface2);color:var(--muted)}.round-badge{font-size:.8rem;opacity:.85;white-space:nowrap}.dice-area{background:var(--surface);border-radius:12px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:14px}.dice-row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}@keyframes die-roll{0%{transform:translateY(0) rotate(0) scale(1)}18%{transform:translateY(-10px) rotate(-22deg) scale(1.06)}36%{transform:translateY(-5px) rotate(16deg) scale(.94)}54%{transform:translateY(-7px) rotate(-11deg) scale(1.03)}72%{transform:translateY(-2px) rotate(5deg) scale(.98)}88%{transform:translateY(-1px) rotate(-2deg) scale(1.01)}to{transform:translateY(0) rotate(0) scale(1)}}.die.rolling{animation:die-roll .6s ease-out forwards;cursor:default!important;pointer-events:none}.die{width:clamp(56px,9vw,80px);height:clamp(56px,9vw,80px);border-radius:12px;background:#fff;border:3px solid #ccc;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:clamp(1.6rem,3.5vw,2.8rem);cursor:default;-webkit-user-select:none;user-select:none;position:relative;transition:transform .15s,border-color .15s,box-shadow .15s;padding:0;box-shadow:0 3px 8px #0006,inset 0 1px #ffffffe6;color:#111}.die.clickable{cursor:pointer}.die.clickable:hover{transform:translateY(-4px);border-color:var(--accent2);box-shadow:0 6px 16px #00000080,inset 0 1px #ffffffe6}.die.held{background:#fff;border-color:#2ecc71;box-shadow:0 0 0 3px #27ae6066,0 3px 8px #0006;transform:translateY(-2px);animation:none}.die-face{line-height:1}.held-badge{position:absolute;bottom:3px;font-size:.45rem;font-weight:800;letter-spacing:.5px;color:#27ae60;text-transform:uppercase}.dice-controls{display:flex;flex-direction:column;align-items:center;gap:6px}.roll-btn{font-size:1.1rem;padding:10px 28px}.roll-hint{margin:0;font-size:.8rem;color:var(--muted)}.scorecards-row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start}.scorecard-panel{flex:1;min-width:220px;background:var(--surface);border-radius:12px;padding:12px}.scorecard-name{font-size:.9rem;font-weight:700;color:var(--accent2);margin-bottom:8px;text-align:center}.scorecard{font-size:.85rem}.score-table{width:100%;border-collapse:collapse}.score-table th,.score-table td{padding:4px 6px}.section-header{font-size:.8rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;padding:6px 6px 4px;text-align:left}.upper-header{color:var(--accent2);border-bottom:1px solid var(--border)}.lower-header{color:#9b59b6;border-bottom:1px solid var(--border)}.score-row{transition:background .1s}.score-row:hover.valid{background:#f5a6231f;cursor:pointer}.score-row.valid{background:#f5a6230f}.score-row.valid.zero-potential{background:#e945600f}.score-row.scored td{opacity:.7}.score-label{color:var(--text)}.score-value{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.score-filled{color:var(--text)}.score-potential{color:var(--accent2);opacity:.85}.score-empty{color:var(--border)}.subtotal-row td{padding:4px 6px;font-size:.8rem;color:var(--muted);border-top:1px solid var(--border)}.subtotal-row td:last-child{text-align:right;font-weight:600;color:var(--text)}.bonus-earned{color:var(--green)}.bonus-close{color:var(--accent2)}.bonus-far{color:var(--muted)}.bonus-yatzy-row td{color:#f1c40f!important}.grand-total{display:flex;justify-content:space-between;align-items:center;background:var(--surface2);border-radius:8px;padding:8px 10px;margin-top:10px;font-weight:700}.grand-total-score{font-size:1.3rem;color:var(--accent2)}.log-panel{width:220px;min-width:180px;max-width:260px;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;padding:12px;gap:8px;overflow:hidden;min-height:0}.log-panel-title{font-size:.8rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.game-log{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.log-entry{font-size:.78rem;display:flex;gap:6px;align-items:flex-start}.log-round{color:var(--muted);font-size:.7rem;min-width:24px;padding-top:1px}.log-msg{color:var(--text);line-height:1.4}.winner-overlay{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#00000080}.winner-box{background:var(--surface);border-radius:16px;padding:32px;text-align:center;max-width:520px;width:100%;box-shadow:var(--shadow)}.winner-box h1{margin:0 0 12px;font-size:2rem}.final-scores{width:100%;border-collapse:collapse;margin:16px 0;font-size:.9rem}.final-scores th,.final-scores td{padding:8px 10px;text-align:right;border-bottom:1px solid var(--border)}.final-scores th:first-child,.final-scores td:first-child{text-align:left}.final-scores .winner-row td{color:#f1c40f;font-weight:700}.error-banner{background:var(--accent);color:#fff;padding:8px 12px;border-radius:8px;font-size:.85rem}@media(max-width:640px){.game-shell{flex-direction:column;overflow-y:auto}.log-panel{width:100%;max-width:none;border-left:none;border-top:1px solid var(--border);height:160px;min-height:160px;flex-shrink:0}.scorecards-row{flex-direction:column}}
