@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Thin.ttf)format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-ExtraLight.ttf)format("truetype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Light.ttf)format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Medium.ttf)format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-SemiBold.ttf)format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-ExtraBold.ttf)format("truetype");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Saira Condensed;src:url(/assets/fonts/saira-condensed/SairaCondensed-Black.ttf)format("truetype");font-weight:900;font-style:normal;font-display:swap}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0906;--surface:#1a110a;--surface2:#241810;--border:#3a2510;--border2:#4a3518;--text:#d4c4a8;--text-dim:#8a7a60;--gold:#e8b86d;--gold-dark:#8b6914;--miner:#3a8a3a;--saboteur:#8a3a3a;--danger:#c0392b;--success:#27ae60}html,body{background:var(--bg);height:100%;color:var(--text);font-family:Saira Condensed,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.4}#root{flex-direction:column;height:100%;display:flex}a{color:var(--gold)}button{cursor:pointer;font-family:inherit}input{font-family:inherit}.btn{border:1px solid var(--border2);background:var(--surface2);color:var(--text);border-radius:4px;align-items:center;gap:4px;padding:8px 16px;font-size:13px;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover{border-color:var(--gold-dark);background:#2e2018}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--gold-dark);border-color:var(--gold);color:#fff}.btn-primary:hover:not(:disabled){background:#a07820}.btn-secondary{background:var(--surface)}.btn-danger{border-color:var(--danger);color:#f88;background:#3a1010}.btn-danger:hover{background:#4a1818}.btn-large{padding:12px 28px;font-size:16px;font-weight:700}.btn-sm{padding:4px 10px;font-size:12px}.btn-xs{padding:2px 8px;font-size:11px}.btn-cancel{border-color:#555}.landing{flex:1;justify-content:center;align-items:center;padding:20px;display:flex}.landing-card{background:var(--surface);border:1px solid var(--border2);border-radius:8px;width:100%;max-width:460px;padding:40px;box-shadow:0 8px 32px #0009}.landing-title{color:var(--gold);text-align:center;margin-bottom:6px;font-size:36px}.landing-subtitle{color:var(--text-dim);text-align:center;margin-bottom:32px;font-style:italic}.landing-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-dim);text-transform:uppercase;letter-spacing:1px;font-size:12px}.form-group input,.landing-form input{background:var(--surface2);border:1px solid var(--border2);color:var(--text);border-radius:4px;outline:none;padding:10px 12px;font-size:15px}.form-group input:focus,.landing-form input:focus{border-color:var(--gold-dark)}.landing-buttons{flex-direction:column;align-items:center;gap:12px;display:flex}.landing-buttons .btn-primary{justify-content:center;width:100%}.landing-divider{color:var(--text-dim);font-size:12px}.join-row{gap:8px;width:100%;display:flex}.join-row input{background:var(--surface2);border:1px solid var(--border2);color:var(--text);border-radius:4px;outline:none;flex:1;padding:8px 12px;font-size:14px}.join-row input:focus{border-color:var(--gold-dark)}.connecting{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;display:flex}.connecting-spinner{font-size:48px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.lobby{flex-direction:column;flex:1;gap:20px;width:100%;max-width:640px;margin:0 auto;padding:24px 20px;display:flex;overflow-y:auto}.lobby-header{text-align:center}.lobby-title{color:var(--gold);font-size:32px}.lobby-subtitle{color:var(--text-dim);margin-top:4px;font-style:italic}.lobby-room{background:var(--surface);border:1px solid var(--border2);border-radius:8px;padding:16px}.lobby-room-label{text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;font-size:11px}.lobby-room-id{color:var(--gold);letter-spacing:4px;margin:4px 0 12px;font-size:28px;font-weight:700}.lobby-share{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.lobby-link{background:var(--surface2);color:var(--gold);text-overflow:ellipsis;border-radius:3px;flex:1;padding:4px 8px;font-size:11px;overflow:hidden}.lobby-players{background:var(--surface);border:1px solid var(--border2);border-radius:8px;padding:16px}.lobby-players-title{text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;margin-bottom:12px;font-size:12px}.lobby-player{border-radius:4px;align-items:center;gap:8px;padding:8px;display:flex}.lobby-player--me{background:var(--surface2)}.lobby-player-num{color:var(--text-dim);width:20px;font-size:12px}.lobby-player-name{font-weight:700}.lobby-empty{color:var(--text-dim);padding:8px;font-style:italic}.lobby-waiting{text-align:center;color:var(--text-dim);font-style:italic}.lobby-note{text-align:center;color:var(--text-dim);font-size:12px}.lobby-rules{background:var(--surface2);border-radius:8px;padding:16px;font-size:13px}.lobby-rules h3{color:var(--gold);margin-bottom:8px}.lobby-rules li{color:var(--text-dim);margin:4px 0 4px 20px}.me-badge{color:var(--gold);background:#8b69144d;border-radius:3px;padding:1px 5px;font-size:11px}.dc-badge{color:#888;font-size:11px}.your-turn-badge{color:#fff;background:var(--gold-dark);border-radius:10px;margin-left:8px;padding:2px 8px;font-size:12px;animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.game-screen{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.game-topbar{background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:12px;padding:6px 12px;display:flex}.game-round-info{color:var(--gold);font-weight:700}.game-deck-info{color:var(--text-dim);font-size:13px}.game-role{border-radius:12px;padding:3px 10px;font-size:12px;font-weight:700}.game-role.miner{color:#90ef90;background:#163316;border:1px solid #3a8a3a}.game-role.saboteur{color:#f09090;background:#331616;border:1px solid #8a3a3a}.broken-warning{color:#faa;background:#3a1010;border:1px solid #c0392b;border-radius:12px;padding:3px 10px;font-size:12px;animation:1s ease-in-out infinite pulse}.turn-indicator{background:var(--surface2);border-bottom:1px solid var(--border);color:var(--text-dim);flex-shrink:0;padding:6px 12px;font-size:13px}.turn-indicator--mine{color:var(--gold);font-weight:700}.action-context{background:#1a1a0a;border-bottom:1px solid #3a3a10;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:6px 12px;font-size:13px;display:flex}.map-buttons{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.peek-result{font-weight:700}.peek-result--gold{color:var(--gold)}.peek-result--coal{color:#888}.game-main{flex:1;min-height:0;display:flex;overflow:hidden}.error-toast{background:var(--danger);color:#fff;z-index:1000;border-radius:6px;padding:10px 20px;font-weight:700;animation:.2s slideIn;position:fixed;top:80px;left:50%;transform:translate(-50%)}@keyframes slideIn{0%{opacity:0;transform:translate(-50%)translateY(-10px)}}.game-board-area{flex:1;min-width:0;position:relative;overflow:hidden}.board-scroll{background:repeating-linear-gradient(45deg,#0000,#0000 20px,#ffffff03 20px 40px);width:100%;height:100%;padding:20px;overflow:auto}.board-inner{position:relative}.board-cell{cursor:default;position:absolute}.board-cell--valid{cursor:pointer}.board-cell--valid:hover .board-ghost{opacity:.85}.board-cell--rockfall{cursor:crosshair}.board-cell--rockfall:hover{outline:2px solid var(--danger);outline-offset:-2px;border-radius:4px}.board-ghost{opacity:.3;transition:opacity .1s}.game-sidebar{border-left:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;width:220px;display:flex;overflow-y:auto}.player-list{padding:10px}.player-list-title{text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;margin-bottom:8px;font-size:11px}.player-row{border:1px solid #0000;border-radius:4px;flex-direction:row;align-items:center;gap:8px;margin-bottom:4px;padding:6px 8px;transition:background .1s;display:flex}.player-row--me{background:var(--surface2)}.player-row--current{border-color:var(--gold-dark)}.player-row--disconnected{opacity:.5}.player-row--target{cursor:pointer;border-color:var(--border2)}.player-row--target:hover{border-color:var(--gold-dark);background:#2a1a0a}.player-name{font-size:13px;font-weight:700}.turn-arrow{color:var(--gold)}.player-stats{flex-direction:column;gap:2px;display:flex}.player-tools{gap:2px;display:flex}.tool-icon{font-size:14px}.tool-icon--broken{filter:grayscale();opacity:.4}.player-info{color:var(--text-dim);gap:6px;font-size:11px;display:flex}.cards-badge{background:var(--surface2);border-radius:3px;padding:1px 5px}.nuggets-badge{color:var(--gold)}.role-badge{border-radius:3px;margin-top:2px;padding:2px 6px;font-size:11px;display:inline-block}.role-badge--miner{color:#90ef90;background:#163316}.role-badge--saboteur{color:#f09090;background:#331616}.game-log{flex-direction:column;flex:1;min-height:0;padding:10px;display:flex;overflow:hidden}.game-log-title{text-transform:uppercase;color:var(--text-dim);letter-spacing:1px;flex-shrink:0;margin-bottom:6px;font-size:11px}.game-log-entries{flex-direction:column;flex:1;gap:2px;display:flex;overflow-y:auto}.log-entry{color:var(--text-dim);border-bottom:1px solid var(--border);padding:2px 0;font-size:11px}.hand-container{background:var(--surface);border-top:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:8px;padding:10px 12px;display:flex}.hand-title{color:var(--text-dim);align-items:center;font-size:12px;font-weight:700;display:flex}.hand-cards{gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.hand-card{cursor:default;border:2px solid #0000;border-radius:6px;flex-shrink:0;transition:transform .1s}.hand-card--playable{cursor:pointer}.hand-card--playable:hover{border-color:var(--border2);transform:translateY(-4px)}.hand-card--selected{transform:translateY(-6px);border-color:var(--gold)!important}.hand-empty{color:var(--text-dim);padding:8px;font-style:italic}.hand-actions{align-items:center;gap:6px;display:flex}.peek-overlays{pointer-events:none;position:absolute;top:0;left:0}.peek-marker{background:#000000b3;border-radius:50%;padding:2px;font-size:14px}.peek-marker--gold{filter:drop-shadow(0 0 4px gold)}.round-end,.game-over{flex-direction:column;flex:1;align-items:center;gap:20px;max-width:600px;margin:0 auto;padding:32px 20px;display:flex;overflow-y:auto}.round-end-banner{text-align:center;border-radius:8px;padding:16px 32px;font-size:28px;font-weight:700}.round-end-banner--miners{color:#90ef90;border:2px solid var(--miner);background:#163316}.round-end-banner--saboteurs{color:#f09090;border:2px solid var(--saboteur);background:#331616}.round-end-roles{background:var(--surface);border-radius:8px;width:100%;padding:16px}.round-end-roles h3{color:var(--gold);margin-bottom:10px}.role-reveal{border-radius:4px;justify-content:space-between;align-items:center;margin-bottom:4px;padding:8px;display:flex}.role-reveal--miner{background:#3a8a3a26}.role-reveal--saboteur{background:#8a3a3a26}.role-name{font-size:12px}.nuggets-gained{color:var(--gold);font-weight:700}.round-end-scores{background:var(--surface);border-radius:8px;width:100%;padding:16px}.round-end-scores h3{color:var(--gold);margin-bottom:10px}.score-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.round-end-log{width:100%}.game-over-title{color:var(--gold);font-size:36px;font-weight:700}.game-over-winner{font-size:18px}.final-scores{background:var(--surface);border-radius:8px;width:100%;padding:16px}.final-score-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:8px 0;display:flex}.final-score-row--winner{color:var(--gold);font-size:16px;font-weight:700}.rank{width:24px;color:var(--text-dim)}.name{flex:1}.nuggets{color:var(--gold)}.game-over-log{width:100%}.landing-identity{align-items:center;gap:14px;display:flex}.landing-avatar-preview{border:2px solid var(--border2);background:var(--surface2);border-radius:50%;flex-shrink:0;width:64px;height:64px;overflow:hidden}.landing-avatar-preview img{object-fit:cover;width:100%;height:100%}.avatar-picker{flex-direction:column;gap:6px;display:flex}.avatar-picker-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);font-size:11px}.avatar-picker-grid{background:var(--surface2);border:1px solid var(--border);border-radius:6px;grid-template-columns:repeat(8,1fr);gap:4px;max-height:180px;padding:4px;display:grid;overflow-y:auto}.avatar-option{aspect-ratio:1;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:6px;padding:2px;transition:border-color .1s,background .1s}.avatar-option img{object-fit:cover;border-radius:4px;width:100%;height:100%;display:block}.avatar-option:hover{border-color:var(--border2);background:var(--surface)}.avatar-option--selected{background:#8b691433;border-color:var(--gold)!important}.lobby-player-avatar,.player-avatar{object-fit:cover;border:1px solid var(--border2);border-radius:50%;flex-shrink:0;width:32px;height:32px}.player-row-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gold-dark)}
