*{box-sizing:border-box}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;background:#1a472a}#root{min-height:100vh}h1{font-size:1.5em;line-height:1.1;margin:0}:root{--domino-width: clamp(36px, 5vmin, 50px);--domino-height: clamp(72px, 10vmin, 100px);--pip-size: clamp(5px, .8vmin, 8px)}.domino{display:flex;flex-direction:column;width:var(--domino-width);height:var(--domino-height);background:ivory;border:2px solid #333;border-radius:4px;padding:0;cursor:pointer;transition:transform .15s,box-shadow .15s;box-shadow:1px 1px 3px #0000004d;flex-shrink:0}.domino:hover:not(:disabled){transform:translateY(-4px);box-shadow:1px 5px 6px #0000004d}.domino:active:not(:disabled){transform:translateY(-2px)}.domino-disabled{opacity:.5;cursor:default}.domino-disabled:hover{transform:none;box-shadow:1px 1px 3px #0000004d}.domino-highlighted{box-shadow:0 0 8px 2px #4caf5099;border-color:#4caf50}.domino-highlighted:hover:not(:disabled){box-shadow:0 0 12px 3px #4caf50cc}.domino-facedown{cursor:default}.domino-back{flex:1;background:linear-gradient(135deg,#1a1a2e 25%,#16213e 25% 50%,#1a1a2e 50% 75%,#16213e 75%);background-size:6px 6px;border-radius:2px;margin:2px}.domino-half{flex:1;position:relative}.domino-divider{height:2px;background:#333;margin:0 2px}.pip{position:absolute;width:var(--pip-size);height:var(--pip-size);background:#333;border-radius:50%;transform:translate(-50%,-50%)}.pip-colored{box-shadow:inset 0 -1px 2px #0000004d}.domino-back-classic .domino-back{background:linear-gradient(145deg,#8b4513,#654321);display:flex;align-items:center;justify-content:center}.classic-pattern-back{width:calc(100% - 4px);height:calc(100% - 4px);background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(0,0,0,.15) 3px,rgba(0,0,0,.15) 5px),repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(0,0,0,.15) 3px,rgba(0,0,0,.15) 5px);border-radius:2px}.domino-back-texas-am .domino-back{background:linear-gradient(145deg,#500000,#3c0000);display:flex;align-items:center;justify-content:center}.tamu-logo-back{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:700;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.tamu-logo-back .tamu-t{font-size:clamp(14px,2.5vmin,22px);line-height:1;font-family:Times New Roman,Georgia,serif}.tamu-logo-back .tamu-star{font-size:clamp(8px,1.2vmin,12px);line-height:1;margin-top:-1px}.player-hand{display:flex;flex-direction:column;align-items:center;padding:clamp(6px,1vmin,12px);border-radius:6px;background:#ffffff14}.player-hand.current-player{background:#4caf5040;box-shadow:0 0 10px #4caf5066}.player-name{font-size:clamp(9px,1.2vmin,12px);font-weight:700;margin-bottom:clamp(4px,.8vmin,8px);color:#fff;text-transform:uppercase;letter-spacing:1px;white-space:nowrap}.hand-dominoes{display:flex;gap:clamp(2px,.3vmin,4px);flex-wrap:nowrap;justify-content:center;align-items:center}.play-area{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,1.5vmin,16px);padding:clamp(10px,2vmin,20px);background:#0000004d;border-radius:12px;max-width:100%;max-height:100%}.game-info{display:flex;gap:clamp(12px,2vmin,24px);padding:6px 12px;background:#ffffff1a;border-radius:6px;flex-wrap:wrap;justify-content:center}.info-row{display:flex;gap:4px}.info-label{color:#aaa;font-size:clamp(10px,1.2vmin,12px)}.info-value{color:#fff;font-weight:700;font-size:clamp(10px,1.2vmin,12px)}.trick-area{display:flex;flex-direction:column;align-items:center;gap:8px}.trick-label{color:#888;font-size:clamp(9px,1vmin,11px);text-transform:uppercase;letter-spacing:1px}.played-dominoes{display:flex;gap:clamp(6px,1vmin,12px);min-height:clamp(60px,9vmin,100px);align-items:center;justify-content:center;flex-wrap:wrap}.no-plays{color:#555;font-style:italic;font-size:clamp(11px,1.3vmin,14px)}.played-domino{display:flex;flex-direction:column;align-items:center;gap:4px}.played-by{font-size:clamp(9px,1vmin,11px);color:#aaa}.scoreboard{display:flex;gap:clamp(12px,2vmin,20px);align-items:center;padding:8px 14px;background:#ffffff0d;border-radius:6px;flex-wrap:wrap;justify-content:center}.score-section{display:flex;flex-direction:column;align-items:center;gap:2px}.team-name{font-size:clamp(10px,1.2vmin,12px);font-weight:700;color:#fff}.score-details{display:flex;gap:8px;font-size:clamp(9px,1vmin,11px);color:#aaa}.tricks,.total-score{padding:2px 5px;background:#0003;border-radius:3px}.score-divider{width:1px;height:24px;background:#444}.bidding-panel{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px;background:#0006;border-radius:12px;min-width:280px}.bidding-panel h2{margin:0;font-size:18px;color:#fff;text-transform:uppercase;letter-spacing:2px}.bid-history{display:flex;flex-direction:column;gap:6px;min-height:80px;width:100%}.bid-entry{display:flex;justify-content:space-between;padding:6px 12px;background:#ffffff0d;border-radius:4px;font-size:14px}.bidder-name{color:#aaa}.bid-value{color:#fff;font-weight:700}.current-bidder{font-size:14px;color:#4caf50;font-weight:500}.bid-controls{display:flex;flex-direction:column;gap:10px;width:100%}.bid-buttons{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.bid-btn{padding:8px 16px;font-size:14px;font-weight:600;color:#fff;background:#1976d2;border:none;border-radius:6px;cursor:pointer;transition:background .2s,transform .1s;min-width:50px}.bid-btn:hover{background:#1565c0;transform:translateY(-1px)}.bid-btn:active{transform:translateY(0)}.bid-high{background:#7b1fa2}.bid-high:hover{background:#6a1b9a}.bid-pass{background:#616161;width:100%}.bid-pass:hover{background:#757575}.trump-selector{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px;background:#0006;border-radius:12px;min-width:280px}.trump-selector h2{margin:0;font-size:18px;color:#fff;text-transform:uppercase;letter-spacing:2px}.bid-info{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;font-size:14px}.winner-name{color:#4caf50;font-weight:700}.won-text{color:#aaa}.bid-amount{color:#fff;font-weight:700;background:#ffffff1a;padding:2px 8px;border-radius:4px}.trump-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}.trump-buttons>:last-child:nth-child(odd){grid-column:2 / 4}.trump-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;font-size:14px;color:#fff;background:#2e7d32;border:none;border-radius:8px;cursor:pointer;transition:background .2s,transform .1s}.trump-btn:hover{background:#388e3c;transform:translateY(-2px)}.trump-btn:active{transform:translateY(0)}.suit-number{font-size:20px;font-weight:700}.suit-name{font-size:11px;text-transform:uppercase;letter-spacing:1px;opacity:.9}.waiting-message{color:#888;font-style:italic;font-size:14px}.draw-pile-container{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px;background:#0006;border-radius:12px;max-width:90vw;max-height:70vh;overflow:auto}.draw-pile-header{text-align:center;color:#fff}.draw-pile-header h3{margin:0 0 4px;font-size:18px}.draw-pile-header p{margin:0;font-size:14px;color:#aaa}.draw-pile{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:600px}.draw-domino{width:50px;height:100px;border:none;border-radius:6px;cursor:default;padding:0;background:transparent;transition:transform .15s ease,box-shadow .15s ease}.draw-domino.clickable{cursor:pointer}.draw-domino.clickable:hover{transform:translateY(-4px)}.draw-domino.clickable:active{transform:translateY(-2px)}.draw-back-classic .domino-back{width:100%;height:100%;background:linear-gradient(145deg,#8b4513,#654321);border-radius:6px;border:2px solid #2d1810;box-shadow:2px 2px 4px #0000004d;display:flex;align-items:center;justify-content:center;padding:4px;box-sizing:border-box}.domino-back-pattern{width:100%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(0,0,0,.15) 4px,rgba(0,0,0,.15) 6px),repeating-linear-gradient(-45deg,transparent,transparent 4px,rgba(0,0,0,.15) 4px,rgba(0,0,0,.15) 6px);border-radius:3px}.draw-back-texas-am .domino-back{width:100%;height:100%;background:linear-gradient(145deg,#500000,#3c0000);border-radius:6px;border:2px solid #2a0000;box-shadow:2px 2px 4px #0000004d;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.tamu-logo-draw{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:700;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.tamu-logo-draw .tamu-t{font-size:28px;line-height:1;font-family:Times New Roman,Georgia,serif}.tamu-logo-draw .tamu-star{font-size:14px;line-height:1;margin-top:-2px}.settings-backdrop{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.settings-modal{background:#1a1a2e;border-radius:12px;padding:24px;min-width:320px;max-width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0006}.settings-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.1)}.settings-header h2{margin:0;color:#fff;font-size:20px}.close-btn{background:none;border:none;color:#aaa;font-size:28px;cursor:pointer;padding:0;line-height:1;transition:color .2s}.close-btn:hover{color:#fff}.settings-content{display:flex;flex-direction:column;gap:24px}.setting-group{display:flex;flex-direction:column;gap:12px}.setting-label{color:#ccc;font-size:14px;font-weight:500}.setting-options{display:flex;gap:12px;flex-wrap:wrap}.option-btn{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#ffffff0d;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s;color:#aaa;font-size:12px}.option-btn:hover{background:#ffffff1a}.option-btn.selected{border-color:#4caf50;background:#4caf5026;color:#fff}.back-preview{width:40px;height:70px;border-radius:4px;display:flex;align-items:center;justify-content:center}.classic-back{background:linear-gradient(145deg,#8b4513,#654321);border:2px solid #2d1810;padding:4px}.classic-pattern{width:100%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(0,0,0,.15) 3px,rgba(0,0,0,.15) 5px),repeating-linear-gradient(-45deg,transparent,transparent 3px,rgba(0,0,0,.15) 3px,rgba(0,0,0,.15) 5px);border-radius:2px}.tamu-back{background:linear-gradient(145deg,#500000,#3c0000);border:2px solid #2a0000}.tamu-logo{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:700}.tamu-t{font-size:20px;line-height:1;font-family:Times New Roman,serif}.tamu-star{font-size:12px;line-height:1;margin-top:-2px}.pip-preview{display:flex;gap:4px;padding:8px 12px;background:beige;border-radius:4px}.preview-pip{width:10px;height:10px;border-radius:50%;background:#222}.colored-pips .preview-pip{box-shadow:inset 0 -1px 2px #0000004d}.game-container{height:100vh;width:100vw;display:flex;flex-direction:column;background:linear-gradient(135deg,#1a472a,#0d2818);overflow:hidden}.game-header{display:flex;justify-content:space-between;align-items:center;padding:8px 20px;background:#0000004d;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.game-header h1{margin:0;font-size:18px;color:#fff;font-weight:600}.header-info{display:flex;align-items:center;gap:16px}.marks{font-size:14px;color:#fff;background:#0000004d;padding:4px 12px;border-radius:4px}.new-hand-btn{padding:5px 14px;font-size:12px;font-weight:600;color:#fff;background:#2e7d32;border:none;border-radius:6px;cursor:pointer;transition:background .2s}.new-hand-btn:hover{background:#388e3c}.shake-btn{background:#1565c0}.shake-btn:hover{background:#1976d2}.settings-btn{background:transparent;border:none;color:#ccc;font-size:20px;cursor:pointer;padding:4px 8px;transition:color .2s}.settings-btn:hover{color:#fff}.game-table{flex:1;display:grid;grid-template-areas:".       partner   ." "left    center    right" ".       player    .";grid-template-columns:auto 1fr auto;grid-template-rows:auto 1fr auto;padding:10px;gap:8px;min-height:0;overflow:hidden}.seat-top{grid-area:partner;display:flex;justify-content:center;align-items:flex-start;min-height:0}.seat-left{grid-area:left;display:flex;justify-content:center;align-items:center;min-width:0}.seat-right{grid-area:right;display:flex;justify-content:center;align-items:center;min-width:0}.seat-bottom{grid-area:player;display:flex;justify-content:center;align-items:flex-end;min-height:0}.center-area{grid-area:center;display:flex;justify-content:center;align-items:center;min-height:0;min-width:0;overflow:hidden}.seat-left .player-hand,.seat-right .player-hand{flex-direction:row}.seat-left .hand-dominoes,.seat-right .hand-dominoes{flex-direction:column;gap:0}.seat-left .domino,.seat-right .domino{transform:rotate(90deg);margin:4px 0}.seat-left .player-name,.seat-right .player-name{writing-mode:vertical-rl;text-orientation:mixed;margin-bottom:0;margin-right:8px}.seat-left .player-hand{flex-direction:row-reverse}.seat-left .player-name{margin-right:0;margin-left:8px;transform:rotate(180deg)}.start-message,.hand-result,.game-over{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:#0006;border-radius:12px;color:#fff;text-align:center}.start-message p,.hand-result p,.game-over p{margin:0;font-size:14px;color:#ccc}.hand-result h2,.game-over h2{margin:0;font-size:20px}.game-over .winner{font-size:24px;font-weight:700;color:#4caf50}.hand-result.made h2{color:#4caf50}.hand-result.set h2{color:#f44336}.hand-result .score-detail{font-size:12px;color:#888}
