.tile{display:inline-flex;align-items:center;justify-content:center;width:52px;height:72px;border-radius:6px;border:1px solid rgba(0,0,0,.3);line-height:1;overflow:hidden;-webkit-user-select:none;user-select:none;transition:transform .15s ease,box-shadow .15s ease;position:relative;flex-shrink:0}.tile-small{width:38px;height:52px;border-radius:4px}.tile-face{width:80%;height:80%;font-family:Noto Sans JP,Hiragino Sans,Yu Gothic,sans-serif;pointer-events:none}.tile-opaque{background:linear-gradient(135deg,#d9c9a5,#c4b48a);color:#1a1000;box-shadow:2px 3px 6px #00000080}.tile-transparent{background:#b4d2f02e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(180,210,255,.35);color:#dcebffe6;box-shadow:0 2px 8px #0050a04d,inset 0 1px #fff3}.tile-back{background-color:#1b5e20;background-image:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(0,0,0,.15) 4px,rgba(0,0,0,.15) 8px);border:1px solid #2e7d32;color:transparent;box-shadow:2px 3px 6px #00000080}.tile-drawn{transform:translateY(-10px)}.tile-selected{transform:translateY(-8px);box-shadow:2px 8px 16px #0009}.tile-drawn.tile-selected{transform:translateY(-16px)}.tile-clickable{cursor:pointer}.tile-clickable:hover:not(.tile-selected){transform:translateY(-4px);box-shadow:2px 6px 12px #00000080}.game-board{display:flex;flex-direction:column;width:100vw;height:100vh;overflow:hidden;background:var(--bg)}.game-middle{display:flex;flex-direction:row;flex:1;overflow:hidden}.player-hand{display:flex;flex-direction:column;align-items:center;padding:12px 16px;background:var(--surface);border-top:2px solid #333;gap:8px}.player-hand-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.player-hand-tiles{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;align-items:flex-end;min-height:80px}.player-hand-actions{display:flex;gap:8px;align-items:center}.btn-draw{background:#2e7d32;color:#fff;padding:8px 20px}.player-hand-riichi{color:gold;font-size:13px;font-weight:700}.btn-sort{margin-left:12px;padding:2px 10px;font-size:11px;background:#ffffff1a;color:var(--muted);border:1px solid #444;border-radius:4px;cursor:pointer;vertical-align:middle}.btn-sort:hover{background:#fff3;color:var(--text)}.opponent-hand{display:flex;align-items:center;justify-content:center;gap:3px;padding:8px;background:transparent}.opponent-hand-top{flex-direction:row;padding:8px 16px;border-bottom:1px solid #333}.opponent-hand-left{flex-direction:column;writing-mode:vertical-rl;padding:16px 8px;border-right:1px solid #333}.opponent-hand-right{flex-direction:column;writing-mode:vertical-rl;padding:16px 8px;border-left:1px solid #333}.opponent-label{font-size:11px;color:var(--muted);white-space:nowrap;letter-spacing:.05em}.opponent-active .opponent-label{color:gold}.game-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;overflow:auto}.discard-pool{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;width:100%;max-width:480px}.discard-zone{background:#ffffff08;border:1px solid #333;border-radius:6px;padding:6px;min-height:80px;display:flex;flex-wrap:wrap;gap:2px;align-content:flex-start}.discard-zone-label{font-size:10px;color:var(--muted);width:100%;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.game-info{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;justify-content:center;align-items:center}.game-info-item{background:var(--surface);border-radius:6px;padding:6px 12px;font-size:13px;color:var(--text);text-align:center}.game-info-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;display:block;margin-bottom:2px}.game-info-value{font-weight:700}.dora-indicators{display:flex;gap:4px;align-items:center}.call-buttons{display:flex;flex-direction:row;gap:8px;flex-wrap:wrap;justify-content:center}.call-btn{padding:10px 18px;font-size:14px;font-weight:700;border-radius:6px;min-width:72px}.call-btn-chi{background:#2e7d32;color:#fff}.call-btn-pon{background:#1565c0;color:#fff}.call-btn-kan{background:#6a1b9a;color:#fff}.call-btn-ron{background:var(--accent);color:#fff}.call-btn-tsumo{background:#e65100;color:#fff}.call-btn-skip{background:#555;color:#ccc}.lobby{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:32px 24px;gap:28px}.lobby-header{text-align:center}.lobby-header h1{font-size:2rem;color:var(--accent)}.lobby-subtitle{color:var(--muted);margin-top:6px;font-size:14px}.lobby-seats{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:400px}.seat{background:var(--surface);border-radius:8px;padding:14px 16px;border:1px solid #333;display:flex;flex-direction:column;gap:6px}.seat-filled{border-color:#2e7d32}.seat-disconnected{border-color:#555;opacity:.6}.seat-wind{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.seat-name{font-weight:700;font-size:14px;color:var(--text)}.seat-status{font-size:11px;color:var(--accent);margin-left:8px}.seat-waiting{font-size:13px;color:var(--muted);font-style:italic}.lobby-share{display:flex;flex-direction:column;gap:8px;width:100%;max-width:400px}.share-label{font-size:12px;color:var(--muted)}.share-row{display:flex;gap:8px}.share-input{flex:1;font-size:13px}.btn-copy{background:var(--surface);color:var(--text);border:1px solid #444;min-width:70px}.btn-start{background:var(--accent);color:#fff;font-size:15px;padding:12px 32px;width:100%;max-width:400px}.lobby-wait-host{color:var(--muted);font-size:13px;font-style:italic}.scores-bar{display:flex;flex-direction:row;gap:8px;justify-content:center;padding:6px 12px;background:var(--surface);border-bottom:1px solid #333}.score-item{display:flex;flex-direction:column;align-items:center;padding:4px 12px;border-radius:4px;font-size:12px;gap:2px}.score-item.active-player{background:#e9456026;border:1px solid var(--accent)}.score-name{color:var(--muted);font-size:11px}.score-value{font-weight:700;color:var(--text)}:root{--bg: #1a1a2e;--surface: #16213e;--text: #e0e0e0;--accent: #e94560;--muted: #888}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--text);font-family:Noto Sans JP,sans-serif;min-height:100vh}button{cursor:pointer;border:none;border-radius:6px;padding:10px 20px;font-family:Noto Sans JP,sans-serif;font-size:14px;font-weight:700;transition:opacity .15s,transform .1s}button:hover:not(:disabled){opacity:.85;transform:translateY(-1px)}button:disabled{opacity:.4;cursor:not-allowed}input{background:var(--surface);border:1px solid #333;border-radius:6px;color:var(--text);font-family:Noto Sans JP,sans-serif;font-size:14px;padding:10px 14px;outline:none;transition:border-color .15s}input:focus{border-color:var(--accent)}.home{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:24px;gap:32px}.home h1{font-size:2.5rem;color:var(--accent);letter-spacing:.05em}.home-form{display:flex;flex-direction:column;gap:12px;width:100%;max-width:360px}.home-form label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.home-actions{display:flex;flex-direction:column;gap:10px;width:100%;max-width:360px}.btn-primary{background-color:var(--accent);color:#fff;width:100%}.btn-secondary{background-color:var(--surface);color:var(--text);border:1px solid #333;width:100%}.join-section{display:flex;flex-direction:column;gap:12px;width:100%;max-width:360px}.join-section h2{font-size:1rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.join-row{display:flex;gap:8px}.join-row input{flex:1;text-transform:uppercase}.error-msg{color:var(--accent);font-size:13px;text-align:center}
