.ttt-board{display:grid;grid-template-columns:repeat(3,60px);gap:4px}.ttt-cell{width:60px;height:60px;font-size:2rem;cursor:pointer}.db-board{display:inline-block}.db-row{display:flex;align-items:center}.db-row .dot{width:12px;height:12px;border-radius:50%;background:#333;flex:none}.db-row .edge{border:none;background:#ddd;cursor:pointer;padding:0;flex:none}.db-row .edge.h{width:48px;height:8px;margin:0 2px}.db-row .edge.v{width:8px;height:48px;margin:2px 0}.db-row .edge.taken{cursor:default}.db-row .edge.taken.p0{background:#e74c3c}.db-row .edge.taken.p1{background:#3498db}.db-row .box{width:44px;height:48px;margin:2px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;flex:none}.db-row .box.p0{background:#fadbd8;color:#e74c3c}.db-row .box.p1{background:#d6eaf8;color:#3498db}.db-scores{font-size:.9rem}.r30-total{font-size:3rem;font-weight:700;margin:1rem 0}.r30-target{font-size:1.2rem;color:#888;font-weight:400}.r30-buttons{display:flex;gap:.5rem}.r30-add{font-size:1.2rem;padding:.5rem 1.2rem;cursor:pointer}.r30-add:disabled{cursor:default;opacity:.5}:root{--color-bg: #ffffff;--color-surface: #f7f9fc;--color-surface-alt: #eef1f7;--color-border: #e3e7ee;--color-text: #111111;--color-muted: #767b86;--color-primary: #7f5cff;--color-primary-soft: #f0ecff;--color-success: #27ae60;--color-success-soft: #eafaf1;--color-danger: #c0392b;--color-danger-soft: #fbeae7;--color-warning: #e67e22;--radius: 14px;--radius-sm: 8px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;padding:1.5rem;margin:0;background:var(--color-bg);color:var(--color-text);color-scheme:light}.home{max-width:560px;margin:0 auto}button,input,select{font-family:inherit;font-size:.9rem}button{padding:.5rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color .15s,background .15s,transform .05s}button:hover:not(:disabled){border-color:var(--color-primary)}button:active:not(:disabled){transform:scale(.97)}button:disabled{cursor:not-allowed;opacity:.45}.btn-primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background:#6c47f5;border-color:#6c47f5}input,select{padding:.45rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:#fff;color:var(--color-text);transition:border-color .15s}input:focus,select:focus{outline:none;border-color:var(--color-primary)}input:disabled,select:disabled{background:var(--color-surface);color:var(--color-muted)}.copyable{font-family:inherit;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.15rem .55rem;cursor:pointer;font-size:.85rem;color:#333;transition:background .15s,border-color .15s}.copyable:hover{border-color:var(--color-primary)}.identity-card{display:flex;align-items:center;gap:.9rem;padding:.9rem 1.1rem;margin-bottom:.8rem;border-radius:var(--radius);background:linear-gradient(135deg,var(--color-surface),var(--color-surface-alt));border:1px solid var(--color-border)}.identity-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.identity-name{font-weight:600;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.identity-row{display:flex;align-items:center;gap:.4rem;font-size:.85rem}.identity-label{color:var(--color-muted);min-width:4.2rem}.identity-id{font-family:monospace}.share-app{display:flex;align-items:center;gap:.7rem;padding:.7rem 1.1rem;margin-bottom:1.5rem;border-radius:var(--radius);background:var(--color-primary-soft);border:1px solid #ded4ff;flex-wrap:wrap}.share-link{font-size:.8rem;color:var(--color-muted)}.home section{margin-bottom:1.5rem}.home h3{border-bottom:1px solid var(--color-border);padding-bottom:.3rem}.join-by-link .row input{flex:1;min-width:0}.join-by-link .row button{flex:0 0 auto}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:.7rem;margin-top:.5rem}.game-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;padding:.9rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;transition:border-color .15s,background .15s}.game-card:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.game-card-icon{font-size:2rem;line-height:1}.game-card-label{font-size:.85rem;text-align:center}.setup-page h3{display:flex;align-items:center;gap:.5rem;border-bottom:1px solid var(--color-border);padding-bottom:.3rem}.setup-icon{font-size:1.3rem}.setup-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1rem}.practice-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;width:100%;height:100dvh;overflow:hidden;background:var(--color-bg)}.practice-chrome{flex:0 0 auto;padding:max(.35rem,env(safe-area-inset-top)) max(.5rem,env(safe-area-inset-right)) .35rem max(.5rem,env(safe-area-inset-left));border-bottom:1px solid var(--color-border);background:var(--color-bg)}.practice-leave{padding:.4rem .5rem;border:0;background:transparent;color:var(--color-danger);font-weight:600}.practice-game{flex:1 1 auto;min-width:0;min-height:0;display:flex;align-items:flex-start;justify-content:center;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.practice-game::-webkit-scrollbar{display:none}.practice-game>.bgio-client{flex:0 0 100%;width:100%;min-width:0;min-height:100%;box-sizing:border-box}.practice-game .splendor-board{width:100%;max-width:none;min-height:100%;margin:0;padding-right:max(8px,env(safe-area-inset-right));padding-left:max(8px,env(safe-area-inset-left));box-sizing:border-box}.practice-game .splendor-canvas-shell{border-radius:0}.roster-text{color:var(--color-muted);margin:.2rem 0 .8rem}.roles,.roles .btn-primary,.assign .btn-primary{margin-top:.5rem}.role-row .role-label{display:flex;align-items:center;gap:.4rem;min-width:6rem;padding-top:.45rem}.role-occupant{color:var(--color-success);font-size:.85em}.invite-btn{margin:.2rem 0}.pending-invite{border-left:3px solid var(--color-warning);padding-left:.6rem;flex-wrap:wrap}.pending-invite .game-actions{flex-wrap:wrap;align-items:center}.cancel-game{margin-top:1rem;color:var(--color-danger);border-color:#f3d4ce;white-space:nowrap}.row{display:flex;align-items:center;gap:.5rem;padding:.4rem 0}.role-row,.assign .row{align-items:flex-start}.row span{flex:1}.row.clickable{cursor:pointer}.game-row{align-items:flex-start}.game-row .game-title{flex:1 1 auto;min-width:0}.game-row .game-actions{flex:0 0 auto;display:flex;gap:.4rem;margin-left:auto}.icon-btn{flex:0 0 auto;width:2.1rem;height:2.1rem;padding:0;border-radius:50%;border:1px solid var(--color-border);background:var(--color-surface);display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1}.icon-btn.enter{color:var(--color-success);border-color:#cdeedd}.icon-btn.leave{color:var(--color-danger);border-color:#f3d4ce}.icon-btn.add{color:var(--color-primary);border-color:#ded4ff;font-size:1.2rem;font-weight:700}.icon-btn.view{color:var(--color-muted)}.your-turn{color:var(--color-success);font-weight:700;margin-left:.5rem}.outcome{margin-left:.5rem;font-weight:700}.outcome.won{color:var(--color-success)}.outcome.lost{color:var(--color-danger)}.outcome.draw,.empty{color:var(--color-muted)}.error{color:var(--color-danger);background:var(--color-danger-soft);border-radius:var(--radius-sm);padding:.5rem .7rem}.back{background:none;border:none;color:var(--color-muted);padding:.3rem 0;margin-bottom:1rem;font-weight:500}.back:hover:not(:disabled){color:var(--color-primary);border-color:transparent}.dev-harness{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center}.dev-phone{width:min(100vw,calc(100dvh * 390 / 844));aspect-ratio:390 / 844;box-sizing:border-box;display:flex;flex-direction:column;border:10px solid #1a1a1a;border-radius:40px;overflow:hidden;background:var(--color-bg);box-shadow:0 20px 60px #00000059}.dev-phone-header{flex:0 0 auto;padding:.75rem 1rem;font-weight:600;text-align:center;background:var(--color-surface-alt);border-bottom:1px solid var(--color-border)}.dev-phone-body{flex:1 1 auto;overflow-y:auto;padding:1rem}.dev-phone-footer{flex:0 0 auto;padding:.5rem 1rem;border-top:1px solid var(--color-border)}.dev-phone-footer .back{margin-bottom:0}.dev-game-chrome{border-color:#2a3140;background:#10141c;color:#f2f4f8}.dev-game-body{padding:0;background:#10141c}.dev-game-chrome .back{color:#b8c0cf}.dev-game-chrome .back:hover:not(:disabled){color:#fff}
