@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700;900&family=Plus+Jakarta+Sans:wght@400;600;700;800&family=Long+Cang&display=swap";:root{--ink-900: #1a1a1f;--ink-800: #2a2a33;--ink-700: #42424d;--ink-600: #62626e;--ink-400: #8c8c99;--ink-200: #cfcfd6;--ink-100: #f0f0f4;--sakura-deep: #dc3562;--sakura-dark: #e8557e;--sakura-pink: #f47298;--sakura-light: #fba3bb;--sakura-soft: #fcd5df;--sakura-mist: #fff0f4;--sakura-wash: #fff8f9;--ink-gold: #c98b2c;--ink-gold-light: #e5b364;--ink-cinnabar: #dc2644;--morandi-pink-deep: var(--sakura-deep);--morandi-pink-dark: var(--sakura-dark);--morandi-pink: var(--sakura-pink);--morandi-pink-light: var(--sakura-light);--morandi-pink-soft: var(--sakura-soft);--morandi-pink-mist: var(--sakura-mist);--morandi-pink-wash: var(--sakura-wash);--sol-base03: #1a1a1f;--sol-base02: #2a2a33;--sol-base01: #42424d;--sol-base00: #62626e;--sol-base0: #8c8c99;--sol-base1: #cfcfd6;--sol-base2: #f0f0f4;--sol-base3: #fff8f9;--sol-yellow: #c98b2c;--sol-orange: #e06d53;--sol-red: #dc2644;--sol-magenta: #e8557e;--sol-violet: #d05378;--sol-blue: #5b7da8;--sol-cyan: #f47298;--sol-green: #e8557e;--mj-red: #dc2644;--mj-green: #e8557e;--mj-gold: #c98b2c;--mj-gold-light: #e5b364;--mj-teal: #e8557e;--mj-rose: #f47298;--primary: var(--sakura-dark);--primary-light: var(--sakura-pink);--accent: var(--sakura-pink);--bg: var(--sakura-wash);--bg-muted: var(--sakura-mist);--card: #ffffff;--card-muted: #fffbfa;--text: var(--ink-800);--text-light: var(--ink-600);--text-muted: var(--ink-400);--text-on-accent: #ffffff;--border: #fae4ea;--border-muted: #f5d6de;--rank-silver: #94949e;--rank-bronze: var(--sakura-pink);--danger: var(--ink-cinnabar);--success: var(--sakura-dark);--radius: 14px;--shadow: 0 4px 18px -2px rgba(42, 42, 51, .05), 0 2px 6px -1px rgba(232, 85, 126, .08);--shadow-lg: 0 12px 28px -4px rgba(42, 42, 51, .1), 0 4px 10px -2px rgba(232, 85, 126, .12);--font-main: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-serif: "Noto Serif SC", "Songti SC", STSong, serif;--font-brush: "Long Cang", cursive, serif;--fs-slate-900: #18181d;--fs-slate-500: #62626e;--fs-slate-200: #f5e4e8;--fs-slate-50: #fff9fa;--fs-red-600: #dc2644;--fs-red-100: #fee8ec;--fs-green-500: #e8557e}.rank-tag{font-family:var(--font-serif);font-weight:800;font-size:.9rem}.rank-tag-1{color:var(--ink-gold)}.rank-tag-2{color:var(--rank-silver)}.rank-tag-3{color:var(--sakura-pink)}.rank-tag-4{color:var(--ink-600)}html{scroll-behavior:smooth}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-main);background-color:var(--bg);color:var(--text);line-height:1.6;background-image:radial-gradient(ellipse at 50% 6%,#fff,#fff7f9,#fcecf0),radial-gradient(rgba(244,114,152,.06) 1px,transparent 1px);background-size:100% 100%,24px 24px;min-height:100vh}h1,h2,h3,h4{font-family:var(--font-serif);letter-spacing:.5px}.app-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:12px 24px;background:#fff7f9eb;color:var(--text);box-shadow:0 2px 14px #e8557e14;border-bottom:1px solid rgba(244,114,152,.22);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);position:sticky;top:0;z-index:1000}.app-header .auth-actions{display:flex;align-items:center;gap:12px;justify-self:end}.btn-header-new{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#e8557e,#dc2644);color:#fff!important;text-decoration:none;font-size:1.4rem;font-weight:300;line-height:1;box-shadow:0 2px 8px #dc264447;transition:all .2s ease;flex-shrink:0}.btn-header-new:hover{transform:translateY(-2px) scale(1.06);box-shadow:0 4px 12px #dc264466}.btn-header-new:active{transform:translateY(0) scale(.96)}.header-new-plus{margin-top:-3px;margin-left:.5px}.logo-link{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text)}.logo{height:44px;width:44px;border-radius:10px;object-fit:cover;box-shadow:0 2px 8px #e8557e26}.app-header h1{font-family:var(--font-serif);font-size:1.45rem;font-weight:700;letter-spacing:2px;color:var(--ink-800)}.app-header nav{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.app-header nav a{color:var(--ink-600);text-decoration:none;font-weight:600;padding:6px 14px;border-radius:8px;transition:all .2s ease}.app-header nav a:hover,.app-header nav a.active{color:var(--sakura-deep);background:#f472981f;box-shadow:inset 0 0 0 1px #f4729840}main{max-width:960px;margin:0 auto;padding:24px}@keyframes hero-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.btn-large{padding:14px 32px;font-size:1.05rem;border-radius:10px}.card{background:var(--card);padding:24px;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:24px;border:1px solid var(--border)}.card h2{color:var(--primary);margin-bottom:16px;font-size:1.2rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 20px;border:none;border-radius:8px;font-size:.95rem;font-weight:600;text-decoration:none;box-shadow:var(--shadow)}.btn-primary{background:var(--primary);color:#fff}.btn-accent{background:var(--accent);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-small{padding:6px 12px;font-size:.85rem}.btn-outline{background:transparent;border:2px solid var(--primary);color:var(--primary)}input,select{padding:10px 14px;border:1px solid var(--border);border-radius:8px;font-size:.95rem;width:100%;background:#fff}select.select-inline{width:auto;min-width:120px}input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #1a472a1a}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-weight:600;color:var(--text-light);font-size:.9rem}table{width:100%;border-collapse:collapse}th,td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border)}th{background:var(--bg);font-weight:600;color:var(--text-light);font-size:.85rem;letter-spacing:.5px}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.8rem;font-weight:600;white-space:nowrap}.badge-progress{background:#e8f5e9;color:var(--success)}.badge-completed{background:#fff3e0;color:#e65100}.badge-sm{font-size:.65rem;padding:2px 6px;border-radius:4px}.session-meta{font-size:.85rem;color:var(--text-light)}.scoreboard-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.player-chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--bg);border:1px solid var(--border);border-radius:20px;font-size:.9rem}.chip.selected{background:var(--primary);color:#fff;border-color:var(--primary)}.table-wrap{overflow-x:auto}.table-wrap table{min-width:100%}.table-wrap th,.table-wrap td{vertical-align:middle}table.fixed-table{table-layout:fixed;width:100%;min-width:0}table.fixed-table th,table.fixed-table td{padding-left:6px;padding-right:6px;vertical-align:middle}table.fixed-table .col-rank{width:44px}table.fixed-table .col-num,table.fixed-table .col-num-narrow,table.fixed-table .col-num-wide,table.fixed-table .col-num-widest,table.fixed-table .col-rating{text-align:right}table.stats-table .col-name{width:50%}table.fixed-table .col-name{padding-left:12px}table.fixed-table .col-round{white-space:nowrap;text-align:center}table.auto-table{table-layout:auto}.table-wrap td.score-cell{text-align:center;font-variant-numeric:tabular-nums}.score-cell.score-positive,.score-positive{color:var(--success)}.score-cell.score-negative,.score-negative{color:var(--danger)}.table-wrap .total-row td{font-weight:700;background:var(--bg);border-top:2px solid var(--primary)}.round-form-title{font-size:1rem;color:var(--primary);margin-bottom:14px}.round-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.checkbox-toggle{display:flex!important;align-items:center;gap:8px;font-weight:500!important;color:var(--text)!important}.checkbox-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary)}.tab-bar{display:flex;gap:4px;background:var(--bg);border-radius:8px;padding:3px}.tab-btn{flex:1;text-align:center;padding:6px 16px;border:none;border-radius:6px;background:transparent;font-size:.9rem;font-weight:600;color:var(--text-light);transition:all .2s}.tab-active{background:var(--primary);color:#fff}.status-box{background:#e8f5e9;color:var(--primary);padding:10px 14px;border-radius:8px;font-weight:600;font-size:.95rem;margin-bottom:12px}.status-box.error{background:#dc322f14;color:var(--danger)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.login-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 120px);padding:40px 20px}.login-card{background:var(--card);padding:40px 30px;border-radius:var(--radius);box-shadow:var(--shadow-lg);border:1px solid var(--border);width:100%;max-width:420px;text-align:center}.login-logo{width:160px;height:160px;object-fit:contain;display:block;margin:0 auto 12px}.login-title{margin:0 0 28px;color:var(--primary);font-size:26px;font-weight:700;letter-spacing:-.01em}.login-alert-spaced{margin-bottom:20px}.alert-retry-btn{padding:4px 12px;border-radius:6px;border:1px solid #f59e0b;background:var(--card);color:#92400e;font-size:12px;font-weight:600}.login-signin-area{display:flex;flex-direction:column;align-items:center;gap:14px;margin:8px 0 0}.login-loading-text{font-size:12px;color:var(--text-muted);margin:0}.login-helper-text{font-size:12px;color:var(--text-light);margin:4px 0 0;letter-spacing:.02em}.profile-card{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 30px #0000000f;width:100%;padding:25px}.profile-card-banner{padding:0;overflow:hidden}.profile-card-warning{background:#b5890005;border:1px dashed var(--mj-gold)}.profile-info-row{display:flex;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--border)}.profile-info-row:last-child{border-bottom:none;padding-bottom:0}.profile-info-label{font-size:14px;color:var(--text-light)}.profile-info-value{font-size:14px;color:var(--text);font-weight:500}.profile-page{display:flex;flex-direction:column;align-items:center;padding:30px 20px;gap:24px;max-width:550px;margin:0 auto}.empty-state .btn-signup{margin-top:20px}.profile-banner{padding:30px 25px;background:var(--mj-teal);color:var(--text-on-accent);text-align:center}.profile-banner h2{margin:0;font-size:24px;font-weight:700;letter-spacing:.5px}.profile-banner-handle{margin:6px 0 0;font-size:14px;color:#ffffffd9;font-weight:500}.profile-card-body{padding:25px}.profile-info-list{display:flex;flex-direction:column;gap:16px}.profile-section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.profile-section-head h3{margin:0;font-size:18px;color:var(--primary);display:flex;align-items:center;gap:8px}.stat-value-pct{font-size:.6rem;color:var(--text-light);vertical-align:bottom;margin-left:2px}.profile-achievements{margin-top:24px;padding-top:20px;border-top:1px solid var(--border-muted)}.profile-achievements h4{margin:0 0 16px;font-size:15px;color:var(--primary);display:flex;align-items:center;gap:6px}.profile-achievement-list{display:flex;flex-direction:column;gap:12px}.profile-achievement-item{display:flex;justify-content:space-between;align-items:center;background:linear-gradient(135deg,#218c7405,#b5890005);border:1px solid #eef7f4;border-radius:10px;padding:12px 16px}.profile-achievement-name{font-weight:700;color:var(--mj-teal);font-size:15px}.profile-achievement-date{font-size:11px;color:var(--text-light);margin-top:4px}.profile-claim-card h3{margin:0 0 10px;font-size:18px;color:var(--mj-gold);display:flex;align-items:center;gap:8px}.profile-claim-hint{margin:0 0 16px;font-size:13px;color:var(--text-muted);line-height:1.5}.profile-claim-hint p{margin:0}.profile-claim-form{display:flex;flex-direction:column;gap:14px}.profile-field-label{display:block;font-size:12px;color:var(--text-muted);font-weight:600;margin-bottom:6px}.profile-field-input{width:100%;padding:10px;border-radius:8px;border:1px solid var(--border-muted);font-size:14px}.profile-claim-submit{background:var(--mj-gold);color:var(--text-on-accent);border:none;padding:12px;border-radius:8px;font-weight:700}.profile-claim-submit:disabled{opacity:.6}.user-profile-capsule{display:flex;align-items:center;gap:8px;margin-left:15px;background:#f472981f;border:1px solid rgba(244,114,152,.28);padding:5px 12px;border-radius:8px;box-shadow:0 2px 6px #e8557e14}.user-profile-capsule a{display:flex;align-items:center;text-decoration:none;color:var(--sakura-deep)}.user-profile-capsule .user-display-name{font-size:13px;color:var(--sakura-deep);font-weight:600;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-logout{padding:3px 8px;border-radius:6px;border:1px solid rgba(244,114,152,.35);background:#fff;font-size:11px;color:var(--sakura-dark);margin-left:4px;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-logout:hover{background:var(--sakura-mist);color:var(--sakura-deep)}.claim-name-row{display:flex;gap:12px}.claim-name-col{flex:1}.stat-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;text-align:center}.stat-card .stat-value{font-size:2rem;font-weight:700;color:var(--primary);line-height:2.5rem;height:2.5rem}.stat-card .stat-label{font-size:.85rem;color:var(--text-light);margin-top:4px}.stat-card .stat-sublabel{font-size:.7rem;color:var(--text-light);margin-top:2px}.empty-state{text-align:center;padding:48px 24px;color:var(--text-light)}.empty-state p{margin-bottom:16px}.empty-state-compact{padding:20px 0}.alert{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:6px;border-left:3px solid;font-size:13px;line-height:1.5;text-align:left;margin:0}.alert-icon{font-size:15px;line-height:1.3;flex-shrink:0}.alert-body{flex:1}.alert-title{font-weight:600;margin-bottom:2px}.alert-error{background:#fef2f2;color:#b91c1c;border-left-color:#ef4444}.alert-warning{background:#fffbeb;color:#92400e;border-left-color:#f59e0b}.alert-success{background:#ecfdf5;color:#047857;border-left-color:#10b981}.page-subtitle{color:var(--text-light);margin-bottom:24px}.filter-bar{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap;align-items:center}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.flex-between h2{margin-bottom:0}.new-session-actions{display:flex;flex-direction:column;gap:16px;margin-top:24px}.new-session-actions .btn{align-self:flex-start}.text-right{text-align:right}.text-center{text-align:center}.num-cell{text-align:right;font-variant-numeric:tabular-nums}.num-cell-rank{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;color:var(--primary)}.num-cell-rank-delta{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.stats-table .num-cell,.stats-table .num-cell-rank{white-space:nowrap;font-size:.9rem}.stat-unit{font-size:.6em;margin-left:1px}.config-row-label{font-size:.8rem;font-weight:700;color:var(--text-muted)}.player-header-cell{display:flex;flex-direction:column;align-items:center;gap:2px}.player-name{max-width:100%;overflow-wrap:anywhere;font-weight:500}.total-score-box{display:flex;flex-direction:column;align-items:center}.rank-delta-val{font-size:.75rem;font-weight:600;color:var(--text-light);margin-top:2px}@media (width <= 640px){table.session-rounds-table th,table.session-rounds-table td{padding-left:4px;padding-right:4px}.session-rounds-table .score-cell,.session-rounds-table .total-val{font-size:.8rem}.session-rounds-table .round-wind-tag{font-size:.8rem;padding:2px 4px}}.round-wind-tag{font-size:.85rem;background:var(--sol-base2);color:var(--sol-yellow);padding:2px 6px;border-radius:4px;border:1px solid var(--sol-base1);font-weight:700;white-space:nowrap}.best-hand-card{margin-top:24px}.best-hand-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;color:var(--sol-yellow)}.best-hand-crown{font-size:1.8rem}.best-hand-item{padding:16px;background:var(--sol-base3);border:1px solid var(--sol-base2);border-radius:12px;margin-bottom:16px}.best-hand-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;border-bottom:1px dashed var(--sol-base2)}.best-hand-fan-count{font-size:1.2rem;font-weight:800;color:var(--sol-orange)}.best-hand-players{font-size:.95rem;color:var(--sol-base01)}.winner-label{color:var(--mj-green);font-weight:800}.session-link-label a{color:var(--sol-cyan);text-decoration:underline;font-size:.85rem}.ml-2{margin-left:8px}.best-hand-display{display:flex;flex-direction:column;gap:8px}.form-group.full-width{grid-column:1 / -1}.inline-calc-wrapper{grid-column:1 / -1;width:100%;animation:slide-down .3s ease-out}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.delete-btn{background:none;border:none;color:var(--danger);font-size:.85rem;opacity:.6;padding:2px 6px}.field-hint{display:block;margin-top:4px;font-size:.8rem;color:var(--text-light)}.error-text{color:var(--danger);font-size:.85rem;margin:8px 0}.btn-signup{background:var(--accent);color:#fff!important;padding:6px 16px;border-radius:6px;font-weight:600;font-size:.9rem;text-decoration:none}.auth-actions{display:flex;align-items:center;gap:10px;margin-left:15px}.player-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.player-select-card{position:relative;padding:12px;border:2px solid var(--border);border-radius:var(--radius);background:var(--card);color:var(--text);text-align:center;transition:all .2s;overflow:visible}.player-select-card div{overflow-wrap:anywhere}.player-select-card.selected{border-color:var(--primary);background:var(--primary);color:#fff}.player-card-wind{background:linear-gradient(135deg,#e8557e,#dc2644);color:#fff;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:800;box-shadow:0 2px 5px #0003;border:none;position:absolute;top:-8px;right:-8px;z-index:2}.player-select-card.disabled{opacity:.5;cursor:not-allowed}.rank-badge{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;flex-shrink:0}.rank-badge-img{display:block;border-radius:50%;object-fit:cover}.rank-badge-sm .rank-badge-img,.rank-badge-sm .rank-badge-fallback{width:52px;height:52px}.rank-badge-md .rank-badge-img,.rank-badge-md .rank-badge-fallback,.rank-badge-unranked.rank-badge-md{width:112px;height:112px}.rank-badge-lg .rank-badge-img,.rank-badge-lg .rank-badge-fallback,.rank-badge-unranked.rank-badge-lg{width:220px;height:220px}.rank-badge-sm{font-size:.75rem}.rank-badge-md .rank-badge-img{border-radius:50%}.rank-badge-md .rank-badge-meta,.rank-badge-lg .rank-badge-meta{display:inline-flex;flex-direction:column;line-height:1.2}.rank-badge-md .rank-badge-name,.rank-badge-lg .rank-badge-name{font-weight:700;color:var(--text)}.rank-badge-md .rank-badge-rating,.rank-badge-lg .rank-badge-rating{color:var(--text-light);font-size:.85em;font-variant-numeric:tabular-nums}.rank-badge-throne .rank-badge-img{filter:drop-shadow(0 0 8px rgb(255 200 50 / 60%))}.rank-badge-fallback{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-muted);color:var(--text-muted);font-weight:800;font-size:.85rem;border:1px solid var(--border)}.rank-badge-throne .rank-badge-name{background:linear-gradient(90deg,var(--mj-gold),#ff9800,var(--mj-gold));-webkit-background-clip:text;background-clip:text;color:transparent}.rank-badge-unranked,.rank-badge-unranked-sm{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;border-radius:50%;background:var(--bg-muted);color:var(--text-muted);font-weight:600;font-size:.7rem;border:1px dashed var(--border)}.rank-badge-unranked-sm{width:52px;height:52px;font-size:.95rem;padding:0 4px;white-space:nowrap}.rank-badge-new{font-size:1.4rem;font-weight:700}.rank-badge-bot{font-size:1.6rem;line-height:1}.rank-badge-bot.rank-badge-md,.rank-badge-bot.rank-badge-lg{font-size:3rem}.player-name-with-rank{display:flex;align-items:center;gap:6px}.player-detail-header{display:flex;align-items:center;gap:24px;flex-wrap:wrap;justify-content:space-between}.player-detail-name{display:flex;flex-direction:column;gap:4px}.player-detail-name h2{margin:0}.player-detail-tiers{display:flex;flex-wrap:wrap;gap:24px}.player-detail-tier-cell{display:flex;flex-direction:column;align-items:center;gap:4px}.player-detail-tier-mode{font-size:.8rem;color:var(--primary);font-weight:700;letter-spacing:.5px}.profile-tier-section{display:flex;justify-content:center;padding:12px 0 16px;border-bottom:1px solid var(--border);margin-bottom:16px}.table-strength{display:inline-flex;align-items:center;gap:5px;padding:4px 12px;border-radius:999px;font-size:.85rem;font-weight:700;letter-spacing:.3px;white-space:nowrap}.table-strength-md{font-size:1rem;padding:6px 16px}.table-strength-emoji{font-size:1.1em}@keyframes dasheng-flame{0%,to{box-shadow:inset 0 0 0 2px #781e0099,inset 0 1px #ffffff59,0 0 8px 1px #ff641e8c,0 0 16px 3px #ff3c004d}50%{box-shadow:inset 0 0 0 2px #781e0099,inset 0 1px #ffffff8c,0 0 14px 2px #ff961ebf,0 0 26px 5px #ff50007f}}.table-strength-dasheng{background:linear-gradient(135deg,#d4351c,#f0a429);color:#fff;text-shadow:0 1px 2px rgb(0 0 0 / 30%);animation:dasheng-flame 1.8s ease-in-out infinite}.table-strength-tan{background:linear-gradient(135deg,#1a3a3a,#0d2828);color:#f4d03f;box-shadow:0 1px 4px #0000004d,inset 0 0 0 2px #f4d03f59,inset 0 1px #f4d03f4d;text-shadow:0 1px 2px rgb(0 0 0 / 50%)}.table-strength-tan .table-strength-emoji{filter:drop-shadow(0 0 3px rgb(244 208 63 / 70%))}.table-strength-hen{background:linear-gradient(135deg,#e8557e,#a82046);color:#fff;box-shadow:0 1px 3px #a8204659,inset 0 0 0 2px #5a0f2380,inset 0 1px #ffffff40;text-shadow:0 1px 2px rgba(0,0,0,.25)}.table-strength-hen .table-strength-emoji{filter:drop-shadow(0 0 2px rgba(255,255,255,.5))}.table-strength-yu{background:linear-gradient(135deg,#2a2a33,#4a2835);color:#fff;box-shadow:0 2px 6px #2a2a334d,inset 0 0 0 2px #1a1a1f8c,inset 0 1px #fff3}.table-strength-chong{background:linear-gradient(135deg,#fff0f4,#fcd5df);color:#8c2844;box-shadow:inset 0 0 0 2px #f4729859,inset 0 1px #ffffff80}.calc-page-wrapper{max-width:580px;margin:0 auto;padding:12px 8px}.calc-page-wrapper .tabs{display:flex;justify-content:center;margin-bottom:12px;border-bottom:2px solid var(--border);padding-bottom:2px}.calc-mode-tab-btn{flex:1;text-align:center;font-size:1.1rem;font-weight:700;padding:10px 24px;border:none;background:none;border-bottom:4px solid transparent;color:var(--text-muted);transition:all .2s ease;margin:0 4px}.calc-mode-tab-btn.active{border-bottom-color:var(--primary);color:var(--primary)}.calc-card{padding:18px 20px;background:var(--card);box-shadow:var(--shadow);border-radius:14px;border:1px solid var(--border)}.calc-card .inline-calculator,.inline-calc-wrapper .inline-calculator{background:transparent;border:none;box-shadow:none;padding:0;margin-top:0}.compact-toggle-btn{padding:5px 11px;font-size:.82rem;font-weight:700;border:1px solid var(--border);background:var(--card);border-radius:6px;transition:all .15s ease;display:inline-flex;align-items:center;justify-content:center}.compact-toggle-btn.active{background:var(--primary);color:var(--card);border-color:var(--primary)}.compact-toggle-btn-reset{margin-left:auto;background:var(--bg-muted);color:var(--text-muted);border-color:var(--border-muted)}.configs-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;background:transparent;padding:0 0 12px;margin-bottom:12px;border-bottom:1px dashed var(--border)}.configs-row-section{display:flex;align-items:center}@media (width <= 640px){.player-detail-header{flex-direction:column;align-items:stretch;gap:16px}.player-detail-tiers{justify-content:space-around;flex-wrap:nowrap;gap:8px}.player-detail-tiers .rank-badge{flex-direction:column;gap:2px}.player-detail-tiers .rank-badge-md .rank-badge-img,.player-detail-tiers .rank-badge-md .rank-badge-fallback,.player-detail-tiers .rank-badge-unranked.rank-badge-md{width:76px;height:76px}.player-detail-tiers .rank-badge-md .rank-badge-meta{align-items:center;text-align:center}.player-detail-tiers .rank-badge-name{font-size:.75rem}.stats-table th{font-size:.62rem;letter-spacing:0}table.stats-table{--stats-rank-col: 36px;--stats-name-col: 118px;--stats-widest-col: 0px}table.stats-table.stats-table-riichi{--stats-widest-col: 60px}table.stats-table th,table.stats-table td{padding-left:2px;padding-right:2px}table.stats-table .col-rank{width:var(--stats-rank-col)}table.stats-table .col-name{width:var(--stats-name-col);padding-left:6px}table.stats-table .col-num-widest{width:var(--stats-widest-col)}table.stats-table .col-num-narrow{width:calc((100% - var(--stats-rank-col) - var(--stats-name-col) - var(--stats-widest-col)) * .24)}table.stats-table .col-num-wide{width:calc((100% - var(--stats-rank-col) - var(--stats-name-col) - var(--stats-widest-col)) * .38)}.stats-table .num-cell,.stats-table .num-cell-rank{font-size:.78rem}.stats-table .num-cell-narrow{font-size:.65rem}.stats-table .rank-badge-sm .rank-badge-img,.stats-table .rank-badge-sm .rank-badge-fallback,.stats-table .rank-badge-unranked-sm{width:38px;height:38px}.stats-table .rank-badge-unranked-sm:not(.rank-badge-bot){font-size:.8rem}.stats-table .player-name-with-rank{gap:4px;min-width:0}.stats-table .player-name{min-width:0}.login-container{min-height:0;justify-content:flex-start;padding:12px 16px 32px}.login-card{padding:20px}.login-title{margin-bottom:16px;font-size:22px}.app-header{display:flex;flex-flow:row wrap;gap:8px 12px;padding:10px 16px}.app-header h1{font-size:1.1rem}.logo-link{flex:1 1 auto;justify-content:flex-start;min-width:0}.logo{height:36px;width:36px}.app-header nav{flex:1 1 100%;gap:8px;flex-wrap:wrap;justify-content:center;order:3}.app-header nav a{padding:4px 10px;font-size:.85rem}main{padding:20px 16px 16px}.card{padding:16px;margin-bottom:12px}.card h2{font-size:1.05rem}.flex-between{flex-direction:column;align-items:flex-start;gap:10px}.flex-between select{width:100%;min-width:0}.dashboard-header{padding:12px 16px}.dashboard-header-actions{width:100%;flex-direction:column;gap:8px}.dashboard-header-actions .btn-primary{width:100%;justify-content:center}select.select-inline{width:100%;min-width:0}.tab-bar{align-self:stretch}th,td{padding:8px 6px;font-size:.85rem}.round-form-grid{grid-template-columns:1fr}.round-form .btn-primary{width:100%;justify-content:center}.status-box{font-size:.85rem;overflow-wrap:anywhere}.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:14px}.stat-card .stat-value{font-size:1.4rem}.player-chips{gap:6px}.chip{padding:5px 10px;font-size:.8rem}.btn-accent,.btn-primary,.btn-outline,.btn-danger{width:100%;justify-content:center}.btn-small{width:auto}.auth-actions{margin-left:0;gap:6px;order:2}.btn-signup{padding:4px 10px;font-size:.8rem}.delete-btn{padding:6px 10px;font-size:1rem}.btn-large{width:100%;justify-content:center}.player-select-grid{grid-template-columns:repeat(2,1fr);gap:10px}.tab-btn{flex:1;text-align:center;padding:6px 8px;font-size:.8rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fan-item-example{overflow-x:auto}.best-hand-meta{flex-wrap:wrap;gap:4px}.best-hand-item{padding:10px}.best-hand-header{gap:8px;margin-bottom:12px}.best-hand-crown{font-size:1.4rem}.options-grid.compact{grid-template-columns:repeat(2,1fr)}.fan-item-header{flex-wrap:wrap;gap:6px}.fan-item-name{flex-wrap:wrap}.ting-row-item{flex-wrap:wrap;gap:6px}.ting-row-item .pattern-list{width:100%}.tile-grid-compact{grid-template-columns:repeat(9,1fr)}.active-games-grid{grid-template-columns:1fr;gap:12px}.round-form .score-inline-group{flex-wrap:wrap;width:100%}.options-grid.compact.cols-3{grid-template-columns:repeat(2,1fr)}.quick-win-container{margin-bottom:12px}.rank-badge-sm .rank-badge-img,.rank-badge-sm .rank-badge-fallback,.rank-badge-unranked-sm{width:38px;height:38px}.rank-badge-md .rank-badge-img,.rank-badge-md .rank-badge-fallback,.rank-badge-unranked.rank-badge-md{width:80px;height:80px}.rank-badge-lg .rank-badge-img,.rank-badge-lg .rank-badge-fallback,.rank-badge-unranked.rank-badge-lg{width:140px;height:140px}.rank-badge-new{font-size:1.1rem}.rank-badge-bot{font-size:1.3rem}.rank-badge-bot.rank-badge-md,.rank-badge-bot.rank-badge-lg{font-size:2.2rem}}@media (width <= 768px){.calc-page-wrapper{padding:0}.calc-card{padding:12px 8px;border-radius:12px}.calc-mode-tab-btn{font-size:.95rem;padding:8px 14px;margin:0 2px}.configs-row{gap:6px;padding:0 0 8px;margin-bottom:10px}.compact-toggle-btn{padding:4px 7px;font-size:.78rem;border-radius:5px}.tile-grid-compact{gap:3.5px;margin-bottom:10px}.hand-display-area.compact{padding:8px 6px 10px}}@media (width <= 380px){.stats-grid{grid-template-columns:1fr}}.fan-group{margin-bottom:32px}.fan-group-title{font-size:1.4rem;color:var(--primary);border-bottom:2px solid var(--primary);padding-bottom:8px;margin-bottom:16px;display:inline-block}.fan-item-grid{display:grid;grid-template-columns:1fr;gap:8px}.fan-item-card{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.fan-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.fan-item-name{font-size:1.05rem;font-weight:700;color:var(--text)}.fan-item-score{background:var(--primary);color:#fff;padding:2px 8px;border-radius:20px;font-size:.8rem;font-weight:600}.fan-item-desc{font-size:.85rem;color:var(--text-light);line-height:1.4;margin-bottom:8px}.fan-item-example-container{position:relative;margin-top:32px;background:#00000008;border-radius:8px;border:1px solid rgb(0 0 0 / 5%);width:100%}.fan-item-example{padding:16px 10px 10px;display:flex;flex-wrap:nowrap;column-gap:4px;align-items:center;overflow-x:auto}.fan-item-example-real{margin-top:32px;padding:16px 10px 10px;background:#2aa1980d;border-radius:8px;border:1px dashed var(--sol-cyan);position:relative}.fan-item-example-real.prev-season{background:#2aa19805;border-color:#2aa19833;opacity:.8}.example-hint{position:absolute;top:-13px;left:10px;font-size:.75rem;background:var(--mj-teal);color:#fff;padding:2px 10px;border-radius:6px 6px 0 0;font-weight:800;text-transform:uppercase;z-index:10}.example-hint.prev{background:#a2cecd;color:#033}.badge-discovery{background:var(--mj-teal);color:#fff;font-weight:700}.badge-discovery-prev{background:#a2cecd;color:#033;font-weight:700}.mahjong-hand{display:flex;flex-wrap:nowrap;gap:6px;align-items:flex-end;padding:4px 0}.mahjong-hand-container{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.mahjong-group{display:flex;flex-wrap:nowrap;flex-shrink:0;gap:2px;padding:0;border-radius:6px;background:transparent;border:none}.mahjong-group.highlighted-group{background:#f472981f;border-radius:6px;padding:2px}.mahjong-tile{height:auto;width:100%;max-width:24px;min-width:0;flex-shrink:0;object-fit:contain;border:none;border-radius:0;background-color:transparent;box-shadow:none;transition:transform .15s ease,filter .15s ease;padding:0}@media (width <= 480px){.mahjong-tile{max-width:19px}.claim-name-row{flex-direction:column;gap:12px}}.mahjong-tile[src*=Back]{filter:none;border:none!important;box-shadow:none}.inline-calculator{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px;margin-top:10px;box-sizing:border-box;width:100%;max-width:100%;overflow-x:auto;box-shadow:var(--shadow)}.score-winner{background:#f472981f!important;font-weight:600}.score-chombo{background:linear-gradient(135deg,#dc26441f,#dc26440d)!important;color:var(--danger)!important;font-weight:700;border:1px dashed rgba(220,38,68,.4)!important}.chombo-badge{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#e8557e,#dc2644);color:#fff;font-size:.65rem;font-weight:800;padding:1px 5px;border-radius:4px;box-shadow:0 1px 3px #dc26444d;letter-spacing:.5px;margin-top:2px}.hand-details-row{background:var(--bg-muted)!important}.hand-details-cell{padding:8px 12px!important;border-top:none!important}.mahjong-tile.highlighted-tile,.calc-tile.highlighted-tile{filter:drop-shadow(0 0 6px rgba(232,85,126,.75));border:none;box-shadow:none}.round-info-cell{display:flex;align-items:center;gap:6px}.round-info-stack{display:flex;flex-direction:column;align-items:center;gap:2px;width:100%}.tile-grid-compact{display:grid;grid-template-columns:repeat(9,minmax(0,52px));max-width:500px;margin:0 auto 14px;gap:5px;justify-content:center;touch-action:manipulation;user-select:none;-webkit-user-select:none}.calc-tile-container{-moz-appearance:none;appearance:none;-webkit-appearance:none;font:inherit;color:inherit;outline:none;height:auto;width:100%;padding:0;border-radius:0;background:transparent;border:none;box-shadow:none;cursor:pointer;display:flex;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transform-origin:center center;transition:transform .08s ease,filter .08s ease}@media (hover: hover) and (pointer: fine){.calc-tile-container.selectable:hover{transform:translateY(-3px);filter:drop-shadow(0 4px 6px rgba(220,53,98,.25))}}.calc-tile-container.selectable:active{transform:scale(.9)!important;filter:brightness(.92);transition:transform .04s ease}.calc-tile-container.disabled{opacity:.35;filter:grayscale(.85);cursor:not-allowed;pointer-events:none}.hua-tile-btn{display:flex;align-items:center;justify-content:center;background:transparent;border:none;box-shadow:none;padding:0;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.calc-tile-container.small{width:24px;height:auto;padding:0;background:transparent;border:none;box-shadow:none;display:flex;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transform-origin:center center}.calc-tile-container.small.selectable:active{transform:scale(.85)!important;transition:transform .04s ease}.calc-tile{width:100%;height:auto;display:block;border:none;box-shadow:none}.hand-display-area.compact{background:var(--bg);padding:10px 12px 12px;border-radius:10px;margin-bottom:14px;display:flex;flex-wrap:nowrap;gap:6px;align-items:flex-end;min-height:56px;border:1px solid var(--border);overflow-x:auto;-webkit-overflow-scrolling:touch}.hand-display-area.compact .meld-box .calc-tile-container{transform:none;box-shadow:none}.hand-display-area.compact>.hua-tile-btn{transform:none;box-shadow:none!important}.hua-hand-tile{margin-left:8px;position:relative;flex-shrink:0}.hua-count-badge{position:absolute;bottom:-4px;right:-4px;font-size:.55rem;font-weight:900;color:#fff;background:var(--primary);border-radius:4px;padding:1px 4px;line-height:1.2;white-space:nowrap;pointer-events:none;box-shadow:0 1px 3px #0003}.hand-display-area.compact .tiles-row .calc-tile-container{transform:none;box-shadow:none}.tiles-row{display:flex;flex-wrap:nowrap;gap:1px}.meld-box{display:flex;flex-wrap:nowrap;flex-shrink:0;gap:1px;padding:0;margin-right:4px}.win-tile-area{border-left:2px solid var(--accent);padding-left:6px;margin-left:4px;display:flex;align-items:center}.result-preview-mini{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding:12px;border-top:1px solid var(--border);background:#1a472a08;border-radius:8px}.result-preview-mini.error{background:#c0392b0d;border-top-color:#c0392b33}.result-main-row{display:flex;align-items:center;gap:12px}.pattern-list{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.winning-options-section{margin-top:8px}.ting-row-item .pattern-list{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px}.pattern-tag{font-size:.75rem;font-weight:600;background:#1f8a3b14;border:1px solid rgba(31,138,59,.25);padding:2px 7px;border-radius:5px;color:#1f8a3b;white-space:nowrap}.score-badge.small.badge-error{background:var(--danger)}.score-warning-text{color:var(--danger);font-size:.85rem;font-weight:600;text-align:center;padding:4px}.ting-display-area{display:flex;flex-direction:column;gap:8px;padding:12px;background:#d4a0170d;border-radius:10px;border:1px solid rgb(212 160 23 / 20%);margin-top:12px}.ting-header{display:flex;align-items:center;justify-content:space-between;width:100%;border-bottom:1px dashed rgb(212 160 23 / 20%);padding-bottom:6px}.ting-label{font-size:.85rem;font-weight:800;color:var(--accent)}.ting-list{display:flex;flex-direction:column;gap:6px;width:100%}.ting-row-item{display:flex;align-items:center;gap:10px;transition:all .2s;background:#fff;padding:6px 10px;border-radius:8px;border:1px solid var(--border);position:relative}.ting-row-item.invalid{border-color:#c0392b33;background:#c0392b05}.ting-row-left{display:flex;align-items:center;gap:8px;flex-shrink:0}.ting-tile-wrap{width:28px;flex-shrink:0}.ting-tile-wrap .calc-tile-container{width:100%;height:auto;padding:0;border:none;border-radius:0;background:transparent;box-shadow:none}.ting-row-status{margin-left:auto;font-size:.7rem;font-weight:700;color:var(--danger);background:#c0392b1a;padding:2px 6px;border-radius:4px;white-space:nowrap}.no-ting-text{font-size:.8rem;color:var(--text-light);font-style:italic}.options-grid.compact{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.options-grid.compact.cols-3{grid-template-columns:repeat(3,1fr)}.options-grid.compact .opt-btn{padding:6px 0;font-size:.75rem;border:1px solid var(--border);border-radius:4px;background:#fff}.options-grid.compact .opt-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.score-badge.small{background:var(--primary);color:#fff;border-radius:14px;width:auto;min-width:38px;height:28px;padding:0 10px;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:2px;flex-shrink:0;box-shadow:0 1px 3px #00000026}.score-badge.small.wide{width:auto;min-width:40px;padding:0 10px;border-radius:14px}.score-badge.small .score-num{font-size:.95rem;font-weight:800;line-height:1}.score-badge.small .score-unit{font-size:.7rem;font-weight:600;line-height:1;opacity:.9}.mode-selector-container{margin-bottom:10px}.mode-group{display:flex;flex-wrap:wrap;gap:3px}.mode-btn{padding:4px 8px;font-size:.75rem;border:1px solid var(--border);border-radius:4px;background:#fff;min-width:36px;text-align:center}.mode-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.quick-win-container{grid-column:1 / -1;margin-bottom:16px}.quick-win-row{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:8px}.quick-player-btn{width:100%;padding:6px 28px 6px 10px;border:1px solid var(--border);border-radius:10px;background:#fff;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:var(--shadow);color:var(--text);position:relative;min-height:40px}.quick-player-btn.winner{background-color:#8599001f!important;color:var(--sol-green)!important;border-color:var(--sol-green)!important;font-weight:700;box-shadow:0 0 0 1px var(--sol-green)}.quick-player-btn.chombo-offender{background-color:#dc322f26!important;color:var(--sol-red)!important;border-color:var(--sol-red)!important;font-weight:700;box-shadow:0 0 0 1px var(--sol-red)}.quick-player-btn.loser{background-color:#dc322f1f!important;color:var(--sol-red)!important;border-color:var(--sol-red)!important;font-weight:700;box-shadow:0 0 0 1px var(--sol-red)}.quick-player-btn.reset-btn{border-color:var(--primary);color:var(--primary);background:#0736420f}.round-form .score-inline-group{display:flex;flex-direction:row;align-items:center;gap:12px;margin-bottom:12px}.round-form .score-inline-group label{margin-bottom:0;white-space:nowrap;font-weight:700}@media (width <= 640px){.round-form .score-inline-group{flex-direction:column;align-items:stretch}.round-form .score-inline-group .btn-photo-rec{width:100%;justify-content:center}}.round-form .form-section-title{background:var(--sol-base3);font-size:.85rem;color:var(--text-light);text-transform:uppercase;letter-spacing:1px;padding:6px 12px;border-radius:4px;margin-bottom:12px;font-weight:800;display:inline-block}.round-form .no-border-top{border-top:none;padding-top:0;margin-top:0}.quick-player-btn .btn-name{font-size:.9rem}.quick-player-btn .btn-wind{font-size:.7rem;opacity:.8;margin-top:2px}.quick-player-btn .btn-wind-dealer{color:var(--danger);font-weight:600;opacity:1}@media (width <= 600px){.quick-win-row{gap:4px}.quick-player-btn{min-width:60px;padding:10px 4px}}.example-hint.reference{background:var(--mj-gold)}.hero-section{text-align:center;margin-bottom:40px;padding:32px 0 16px}.hero-logo-link{display:inline-flex;flex-direction:column;align-items:center;gap:16px;text-decoration:none}.hero-logo-ring{width:108px;height:108px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #b8728559,0 0 0 4px #b8728526;animation:hero-ring-pulse 3s ease-in-out infinite;overflow:hidden;border:2px solid rgba(219,164,178,.4)}.hero-logo-img{width:100%;height:100%;object-fit:cover}.hero-cta{font-family:var(--font-serif);font-size:1.3rem;font-weight:700;letter-spacing:3px;color:var(--morandi-pink-deep);background:linear-gradient(135deg,var(--morandi-pink-deep) 0%,var(--morandi-pink) 50%,var(--ink-cinnabar) 100%);background-size:200% 200%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;animation:hero-gradient 4s ease infinite}@keyframes hero-ring-pulse{0%,to{box-shadow:0 8px 24px #b8728559,0 0 0 4px #b8728526}50%{box-shadow:0 12px 32px #b8728580,0 0 0 8px #b8728540}}.active-games-section{margin-bottom:40px}.active-games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-top:16px}.player-score{font-weight:700;color:var(--primary)}.wind-tag{font-size:.85rem;padding:2px 7px;border:1.5px solid var(--mj-gold);color:var(--mj-gold);background-color:transparent;border-radius:4px;font-weight:700;min-width:26px;text-align:center;display:inline-block;line-height:1.2}.wind-tag-dealer{border-color:var(--mj-red);color:#fff;background-color:var(--mj-red)}.hall-of-fame-grid{display:grid;grid-template-columns:1fr;gap:24px;margin-top:16px}@media (width <= 600px){.hall-of-fame-grid{gap:16px}}.mode-rank-column{background:var(--card);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);min-width:0}.mode-rank-title{font-size:1.1rem;border-bottom:2px solid var(--mj-gold);padding-bottom:8px;margin-bottom:16px;color:var(--mj-gold);text-align:center;font-weight:800}.rank-item{display:flex;align-items:center;gap:12px;margin-bottom:12px}.rank-info{flex:1;display:flex;align-items:center;justify-content:space-between}.best-hand-summary{margin-top:20px;padding:12px;background:var(--sol-base3);border-radius:8px;border-left:4px solid var(--mj-green)}.best-hand-label{font-size:.8rem;color:var(--text-light);display:block;margin-bottom:4px}.best-hand-value{font-weight:700;color:var(--mj-green);font-size:.9rem}.best-hand-summary-detail{font-size:.75rem;margin-top:4px;color:var(--sol-base01);overflow-wrap:anywhere}.dashboard-card{padding:0;overflow:hidden}.dashboard-header{padding:16px 24px;border-bottom:1px solid var(--border)}.dashboard-header-actions{display:flex;align-items:center;gap:8px;flex:1;justify-content:flex-end}.dashboard-sessions-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;padding:24px;background:var(--sol-base2)}.game-card{background:var(--card);padding:20px;border:1px solid var(--border);border-radius:12px;transition:all .25s cubic-bezier(.4,0,.2,1);outline:none;display:flex;flex-direction:column;box-shadow:0 2px 4px #00000005;text-decoration:none;color:inherit;touch-action:manipulation}.game-card:focus-visible{border-color:var(--mj-green);box-shadow:0 0 0 3px #218c7433}.session-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;border-bottom:1px solid var(--border);padding-bottom:12px}.session-card-mode{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mode-text{font-weight:700;color:var(--mj-gold);font-size:.95rem;letter-spacing:.5px}.session-card-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.session-card-date{font-size:.75rem;color:var(--text-light)}.session-card-players{display:flex;flex-direction:column;gap:10px}.player-rank-item{display:flex;justify-content:space-between;align-items:center;padding:2px 0}.player-rank-item:not(:last-child){border-bottom:1px dashed var(--border);padding-bottom:8px}.game-card .rank-number{font-weight:900;font-size:.75rem;min-width:18px;opacity:.4}.game-card .rank-number.rank-tag-1,.game-card .rank-number.rank-tag-2,.game-card .rank-number.rank-tag-3,.game-card .rank-number.rank-tag-4{opacity:1}.game-card .player-name{font-weight:600;color:var(--primary);font-size:.9rem;overflow-wrap:anywhere}.game-card .player-score{font-size:.85rem;font-weight:800}.game-fs-overlay{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:99999;background:var(--card);color:var(--fs-slate-900);display:flex;flex-direction:column;box-sizing:border-box;padding:max(20px,env(safe-area-inset-top)) max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left));overflow-y:auto;animation:fade-in-fs .2s ease-out;transition:background .3s ease}.game-fs-overlay-warning{background:#fde68a}.game-fs-overlay-expired{background:#fdecea}@keyframes fade-in-fs{0%{opacity:0;transform:scale(.99)}to{opacity:1;transform:scale(1)}}.game-fs-topbar{position:relative;display:flex;align-items:center;justify-content:center;padding-bottom:18px;padding-left:64px;padding-right:64px;border-bottom:1px solid var(--fs-slate-200);min-height:44px;gap:16px;box-sizing:border-box}.game-fs-title-area{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin:0 auto;text-align:center}.game-fs-mode{font-size:1.35rem;font-weight:800;color:var(--fs-slate-900);letter-spacing:-.02em}.game-fs-date{font-size:.9rem;color:var(--fs-slate-500)}.game-fs-round-badge{display:flex;align-items:center;justify-content:center;gap:10px;font-size:2.2rem;padding:14px 32px;margin:0 auto}.game-fs-timer-banner{font-size:3rem;font-weight:800;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;text-align:center;padding:12px;border-radius:14px;color:var(--fs-slate-500);background:var(--fs-slate-50)}.game-fs-timer-warning{background:#fbbf24;color:#78350f}.game-fs-timer-expired{background:var(--fs-red-100);color:var(--fs-red-600)}.game-fs-actions{position:absolute;right:0;top:50%;transform:translateY(-60%);display:flex;align-items:center;gap:12px}.game-fs-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:8px;border:1px solid #cbd5e1;background:var(--fs-slate-50);color:#334155;font-size:.9rem;font-weight:600}.game-fs-close-btn{background:var(--fs-red-100);border-color:#fca5a5;color:var(--fs-red-600)}.game-fs-main{flex:1;display:flex;align-items:center;justify-content:center;width:100%;max-width:900px;margin:0 auto;padding:24px 0}.game-fs-scoreboard-col{display:flex;flex-direction:column;gap:16px;width:100%}.game-fs-player-card{background:var(--card);border:1px solid var(--fs-slate-200);border-radius:14px;padding:20px 28px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 4px 16px -2px #0f172a0f;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.game-fs-player-card.is-dealer{border-color:#f59e0b;background:linear-gradient(135deg,#fffbeb 0%,var(--card) 100%);box-shadow:0 4px 20px -2px #f59e0b33}.game-fs-player-left{display:flex;align-items:center;gap:20px}.game-fs-rank-badge{font-size:2.2rem;line-height:1;width:52px;flex-shrink:0;text-align:center}.game-fs-player-info{display:flex;flex-direction:column;gap:6px}.game-fs-player-name-row{display:flex;align-items:center;gap:14px}.game-fs-player-card .wind-tag{font-size:1.25rem;padding:4px 0;width:76px;flex-shrink:0;border-width:2px;border-radius:6px;line-height:1.2;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}.game-fs-player-name{font-size:1.4rem;font-weight:700;color:var(--fs-slate-900)}.game-fs-player-score{font-size:2.6rem;font-weight:900;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;letter-spacing:-.03em}.game-fs-player-score.score-positive{color:#16a34a}.game-fs-player-score.score-negative{color:var(--fs-red-600)}.pulse-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--fs-green-500);margin-right:6px;box-shadow:0 0 8px var(--fs-green-500);animation:pulse-dot 1.5s infinite}@keyframes pulse-dot{0%{transform:scale(.95);opacity:.8}50%{transform:scale(1.3);opacity:1}to{transform:scale(.95);opacity:.8}}.game-fs-footer{display:flex;align-items:center;justify-content:space-between;padding-top:16px;border-top:1px solid var(--fs-slate-200)}.game-fs-detail-link{background:var(--accent, var(--mj-gold));color:var(--card);border:none;padding:10px 22px;border-radius:8px;font-weight:700;font-size:.95rem}.game-fs-tip{font-size:.85rem;color:var(--fs-slate-500)}@media (width <= 768px){.game-fs-overlay{padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.game-fs-topbar{padding-left:48px;padding-right:48px}.game-fs-player-card{padding:14px 18px}.game-fs-player-score{font-size:2rem}.game-fs-player-name{font-size:1.2rem}.game-fs-timer-banner{font-size:2.2rem}.game-fs-round-badge{font-size:1.6rem}}@media (width <= 640px){.dashboard-sessions-list{padding:16px;gap:16px;grid-template-columns:1fr}.fan-table-page .card{padding:12px}.fan-item-card{padding:10px}.fan-item-example,.fan-item-example-real{padding:12px 6px 6px}}.col-action .btn{padding:4px 8px;font-size:.78rem}.pagination-container{display:flex;justify-content:center;align-items:center;gap:16px;padding:16px 24px;background:var(--sol-base3);border-top:1px solid var(--border)}.pagination-btn{padding:6px 16px;border:1px solid var(--border);background:#fff;border-radius:8px;font-size:.85rem;font-weight:600;color:var(--primary);transition:all .2s;box-shadow:var(--shadow)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}.pagination-info{font-size:.85rem;color:var(--text-light);font-weight:500}.btn-photo-rec{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:linear-gradient(135deg,#1b4d3e,#2e7d67);color:#fff;border:1px solid rgb(255 255 255 / 20%);border-radius:999px;font-size:.9rem;font-weight:700;box-shadow:0 4px 12px #1b4d3e40}.btn-photo-rec-icon{font-size:1.1rem}.btn-photo-rec-badge{background:#f0a429;color:#002b36;font-size:.7rem;font-weight:800;padding:2px 6px;border-radius:4px;letter-spacing:.5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#002b36a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:center;justify-content:center;padding:16px}.modal-card.photo-rec-modal{background:#fff;border-radius:16px;width:100%;max-width:620px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 40px #00000040;overflow:hidden;animation:modal-pop .25s ease-out}@keyframes modal-pop{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--sol-base3)}.photo-rec-title{display:flex;align-items:center;gap:12px}.photo-rec-icon{font-size:1.8rem}.photo-rec-title h3{margin:0;font-size:1.15rem;color:var(--sol-base02)}.photo-rec-subtitle{font-size:.75rem;color:var(--text-light);margin:0}.btn-close{background:transparent;border:none;font-size:1.2rem;color:var(--text-light);padding:4px 8px;border-radius:6px}.photo-rec-body{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.upload-dropzone{display:block;border:2px dashed var(--mj-green);border-radius:12px;padding:24px 16px;text-align:center;background:#218c7408}.dropzone-content{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-icon{font-size:2.2rem}.upload-main-text{font-weight:700;color:var(--sol-base02);margin:0}.upload-sub-text{font-size:.75rem;color:var(--text-light);margin:0}.photo-rec-tips{margin:12px 0 0;padding-left:18px;font-size:.75rem;line-height:1.7;color:var(--text-light)}.image-preview-wrapper{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px}.uploaded-img-preview{max-width:100%;max-height:220px;object-fit:contain;border-radius:8px;border:1px solid var(--border);box-shadow:var(--shadow)}.photo-rec-error{background:#fde8e8;border-left:4px solid var(--danger);color:var(--danger);padding:10px 14px;border-radius:6px;font-size:.85rem}.photo-rec-warning{background:#fff8e1;border-left:4px solid #d98a00;color:#8a5a00;padding:10px 14px;border-radius:6px;font-size:.85rem}.photo-rec-fallback-text{font-size:.85rem;color:var(--text-light);margin:0}.photo-rec-submit-btn{background:linear-gradient(135deg,var(--morandi-pink) 0%,var(--morandi-pink-deep) 100%);color:#fff;padding:12px;border-radius:10px;font-weight:700;font-size:1rem;border:none;transition:all .2s;width:100%;box-shadow:0 4px 14px #8c485c40}.photo-rec-submit-btn:disabled{opacity:.5;cursor:not-allowed}.loading-spinner-wrap{display:inline-flex;align-items:center;gap:8px}.spinner{width:16px;height:16px;border:2px solid rgb(255 255 255 / 30%);border-radius:50%;border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.photo-rec-controls-bar{display:flex;justify-content:center;gap:16px;margin-bottom:12px;background:#f8faf9;padding:8px 12px;border-radius:8px;border:1px solid #e0eae5}.icon-control-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;margin:0;border-radius:8px;background:#fff;color:#2c3e50;border:1px solid #d1d8d0;font-size:1.1rem;font-weight:700;box-shadow:0 2px 5px #00000014}.modal-card.seat-assign-modal{background:var(--card);border-radius:16px;width:100%;max-width:460px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 20px 40px #00000040;overflow:hidden;animation:modal-pop .25s ease-out}.seat-assign-body{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:20px}.seat-compass{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;gap:10px;aspect-ratio:1;max-width:340px;margin:0 auto}.seat-compass-slot{display:flex;align-items:center;justify-content:center}.seat-compass-top,.seat-compass-south{grid-column:2;grid-row:1}.seat-compass-bottom,.seat-compass-north{grid-column:2;grid-row:3}.seat-compass-left,.seat-compass-west{grid-column:1;grid-row:2}.seat-compass-right,.seat-compass-east{grid-column:3;grid-row:2}.seat-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 8px;border-radius:12px;background:var(--card);border:2px solid var(--primary);width:100%;box-sizing:border-box;box-shadow:var(--shadow)}.seat-card-tile{width:36px;height:auto;display:flex;align-items:center;justify-content:center}.seat-card-tile-img{width:100%;height:auto;display:block}.seat-card-name{font-weight:600;color:var(--text);text-align:center;overflow-wrap:anywhere}.seat-assign-confirm-btn{width:100%}
