﻿:root{
  --bg:#0c0c10;--surf:#14141c;--surf2:#1e1e2a;--surf3:#282838;
  --bdr:#32324a;--gold:#c8942a;--goldL:#e8b84b;--goldD:#6a4e10;
  --red:#b03020;--redL:#e05040;--green:#3aaa66;--blue:#4a9ecc;
  --text:#f0ede8;--textD:#9a9080;--textM:#ab9acc;
  --man:#cc3030;--tong:#2278b8;--suo:#228844;--ji:#aa7722;--hua:#9b59b6;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:'Noto Sans TC',sans-serif;min-height:100vh;
  background-image:radial-gradient(ellipse at 15% 10%,rgba(200,148,42,.07) 0%,transparent 45%),
  radial-gradient(ellipse at 85% 85%,rgba(180,50,30,.05) 0%,transparent 45%);}
.header{text-align:center;padding:20px 20px 14px;border-bottom:2px solid var(--bdr);
  background:linear-gradient(180deg,rgba(200,148,42,.1) 0%,transparent 100%);position:relative;overflow:hidden;}
.header::before{content:'🀄';font-size:180px;opacity:.03;position:absolute;top:-35px;left:50%;transform:translateX(-50%);pointer-events:none;}
.header h1{font-family:'Noto Serif TC',serif;font-size:clamp(18px,3vw,30px);font-weight:900;color:var(--goldL);letter-spacing:.08em;text-shadow:0 0 40px rgba(200,148,42,.5);}
.header p{color:var(--textM);font-size:12px;margin-top:4px;letter-spacing:.14em;}
.app-version-meta{display:block;margin-top:4px;font-family:'Noto Sans TC',sans-serif;font-size:11px;font-weight:500;color:var(--textM);letter-spacing:.02em;}
.tab-bar{display:flex;background:var(--surf2);border-bottom:2px solid var(--bdr);}
.tab-btn{padding:11px 24px;font-size:13px;font-family:'Noto Serif TC',serif;font-weight:700;color:var(--textM);border:none;background:none;cursor:pointer;letter-spacing:.05em;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .15s;}
.tab-btn:hover{color:var(--textD);}
.tab-btn.active{color:var(--goldL);border-bottom-color:var(--gold);background:rgba(200,148,42,.06);}
.tab-pane{display:none;}.tab-pane.active{display:block;}
.main{max-width:1320px;margin:0 auto;padding:16px 12px 110px;display:grid;grid-template-columns:1fr 368px;gap:14px;}
@media(max-width:980px){.main{grid-template-columns:1fr;}}
.panel{background:var(--surf);border:1px solid var(--bdr);border-radius:10px;overflow:hidden;margin-bottom:12px;}
.panel:last-child{margin-bottom:0;}
.panel-hdr{background:var(--surf2);border-bottom:1px solid var(--bdr);padding:10px 14px;display:flex;align-items:center;gap:8px;}
.panel-title{font-family:'Noto Serif TC',serif;font-size:13px;font-weight:700;color:var(--goldL);letter-spacing:.05em;flex:1;}
.step-badge{background:var(--gold);color:#000;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0;}
.panel-body{padding:12px 14px;}
.phase-bar{display:flex;gap:5px;margin-bottom:10px;}
.phase-step{flex:1;padding:5px 3px;border-radius:5px;text-align:center;font-size:15px;border:1px solid var(--bdr);color:var(--textM);background:var(--surf2);}
.phase-step.active{border-color:var(--gold);color:var(--goldL);background:rgba(200,148,42,.1);}
.phase-step.done{border-color:var(--green);color:var(--green);background:rgba(58,170,102,.08);}
.suit-section{margin-bottom:10px;}
.suit-label{font-size:16px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px;display:flex;align-items:center;gap:6px;}
.suit-label.man{color:var(--man);}.suit-label.tong{color:var(--tong);}.suit-label.suo{color:var(--suo);}
.suit-label.feng{color:#4a9ecc;}.suit-label.yuan{color:#e8c060;}.suit-label.hua{color:var(--hua);}
.tile-grid{display:flex;flex-wrap:wrap;gap:4px;}
.tile-btn{border:none;background:transparent;padding:0;cursor:pointer;position:relative;transition:transform .1s,filter .1s;user-select:none;display:block;border-radius:6px;}
.tile-btn:hover:not(:disabled){transform:translateY(-3px);filter:brightness(1.05);}
.tile-btn:disabled{opacity:.35;cursor:not-allowed;transform:none!important;filter:none!important;}
.tile-btn.selected .tile-sel-ring{display:block;}
.tile-sel-ring{display:none;position:absolute;inset:-2px;border-radius:8px;border:2px solid var(--gold);box-shadow:0 0 8px rgba(200,148,42,.5);pointer-events:none;}
.tile-count-badge{position:absolute;top:-3px;right:-3px;background:var(--gold);color:#000;width:15px;height:15px;border-radius:50%;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;z-index:2;}
.zones-wrap{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;}
.zone{border-radius:8px;padding:7px;min-height:66px;position:relative;}
.zone-an{background:rgba(74,158,204,.05);border:1.5px solid rgba(74,158,204,.2);}
.zone-ming{background:rgba(200,148,42,.05);border:1.5px dashed rgba(200,148,42,.3);}
.zone-label{font-size:13px;font-weight:700;letter-spacing:.08em;margin-bottom:5px;}
.zone-an .zone-label{color:var(--blue);}.zone-ming .zone-label{color:var(--gold);}
.zone-tiles{display:flex;flex-wrap:wrap;gap:3px;min-height:46px;align-items:flex-start;}
.zone-empty{font-size:15px;color:var(--textM);width:100%;text-align:center;padding:8px 0;}
.zone-tile-btn{border:none;background:transparent;padding:0;cursor:pointer;display:block;transition:transform .1s;border-radius:4px;}
.zone-tile-btn:hover{transform:translateY(-2px);}
.win-label{font-size:15px;color:var(--gold);margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.win-label span{color:var(--textM);}
.win-slot{background:rgba(232,184,75,.05);border:1.5px dashed var(--goldD);border-radius:7px;padding:7px;min-height:56px;display:flex;flex-wrap:wrap;gap:4px;align-items:center;}
.wait-options{background:rgba(232,184,75,.05);border:1px solid rgba(200,148,42,.22);border-radius:7px;padding:8px 9px;margin:0 0 8px;}
.wait-options-label{font-size:13px;color:var(--goldL);letter-spacing:.05em;margin-bottom:6px;}
.wait-options-wrap{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.wait-option-btn{border:none;background:transparent;padding:0;cursor:pointer;border-radius:4px;transition:transform .1s,box-shadow .12s;}
.wait-option-btn:hover{transform:translateY(-2px);}
.wait-option-btn.active{box-shadow:0 0 0 2px rgba(200,148,42,.55);background:rgba(200,148,42,.10);}
.wait-options-msg{font-size:13px;color:var(--textM);line-height:1.6;}
.wait-options-msg.error{color:#e8a0a0;}
.ting-display{background:var(--surf2);border:1px solid var(--bdr);border-radius:6px;padding:7px 10px;margin-bottom:8px;}
.ting-display-label{font-size:14px;color:var(--textM);letter-spacing:.05em;margin-bottom:3px;}
.ting-badge{display:inline-block;padding:4px 12px;border-radius:4px;font-size:16px;font-weight:700;}
.ting-badge.multi{background:rgba(58,170,102,.18);color:var(--green);border:1px solid rgba(58,170,102,.3);}
.ting-badge.single{background:rgba(200,148,42,.18);color:var(--goldL);border:1px solid rgba(200,148,42,.3);}
.ting-badge.edge{background:rgba(155,89,182,.18);color:#c39bd3;border:1px solid rgba(155,89,182,.3);}
.ting-badge.none{background:var(--surf3);color:var(--textM);border:1px solid var(--bdr);}
.status-bar{display:flex;justify-content:space-between;align-items:center;padding:3px 0;margin-bottom:7px;}
.status-text{font-size:15px;color:var(--textM);}
.status-badge{font-size:15px;padding:3px 8px;border-radius:4px;}
.status-badge.need{background:rgba(200,148,42,.12);color:var(--gold);}
.status-badge.ok{background:rgba(58,170,102,.12);color:var(--green);}
.status-badge.win{background:rgba(74,158,204,.12);color:var(--blue);}
.cond-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;}
.cond-group{margin-bottom:7px;}
.cond-label{font-size:15px;color:var(--textM);margin-bottom:4px;}
.toggle-row{display:flex;gap:3px;flex-wrap:wrap;}
.tbtn{padding:5px 10px;border-radius:4px;border:1px solid var(--bdr);background:var(--surf2);color:var(--textM);font-size:15px;cursor:pointer;transition:all .12s;font-family:'Noto Sans TC';white-space:nowrap;}
.tbtn:hover{border-color:var(--goldD);color:var(--text);}
.tbtn.on{background:rgba(200,148,42,.18);border-color:var(--gold);color:var(--goldL);}
.lz-control{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.lz-step-btn{
  width:34px;height:34px;border-radius:8px;border:1px solid var(--bdr);
  background:var(--surf2);color:var(--goldL);font-size:20px;line-height:1;
  cursor:pointer;transition:all .12s;font-family:'Noto Sans TC',sans-serif;
}
.lz-step-btn:hover{border-color:var(--gold);background:rgba(200,148,42,.1);}
.lz-input{
  width:40px;height:34px;padding:4px 8px;border-radius:8px;border:1px solid var(--goldD);
  background:rgba(200,148,42,.08);color:var(--text);font-size:16px;text-align:center;
  font-family:'Noto Sans TC',sans-serif;
  appearance:textfield;
  -moz-appearance:textfield;
}
.lz-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,148,42,.12);}
.lz-input::-webkit-outer-spin-button,
.lz-input::-webkit-inner-spin-button{
  -webkit-appearance:none;
  margin:0;
}
.lz-unit{font-size:14px;color:var(--textM);}
.chain-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.chain-card{border:1px solid var(--bdr);border-radius:8px;padding:10px;background:rgba(255,255,255,.02);}
.chain-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;}
.chain-name{font-size:15px;color:var(--text);}
.chain-fan{font-size:14px;color:var(--goldL);font-weight:700;white-space:nowrap;}
.chain-hint{font-size:13px;color:var(--textM);margin-top:8px;line-height:1.6;}
@media(max-width:980px){.chain-grid{grid-template-columns:1fr;}}
hr.div{border:none;border-top:1px solid var(--bdr);margin:9px 0;}
.result-panel{background:var(--surf);border:1px solid var(--bdr);border-radius:10px;overflow:hidden;}
.total-fan{background:linear-gradient(135deg,rgba(200,148,42,.2),rgba(200,148,42,.06));border-bottom:1px solid var(--bdr);padding:16px;text-align:center;}
.total-fan-label{font-size:14px;color:var(--textM);letter-spacing:.1em;text-transform:uppercase;margin-bottom:4px;}
.total-fan-num{font-family:'Noto Serif TC',serif;font-size:46px;font-weight:900;color:var(--goldL);line-height:1;text-shadow:0 0 30px rgba(200,148,42,.6);}
.total-fan-unit{font-size:16px;color:var(--gold);margin-left:2px;}
.total-fan-note{font-size:15px;color:var(--textM);margin-top:4px;}
.fan-scroll{max-height:460px;overflow-y:auto;padding:8px 11px;}
.fan-scroll::-webkit-scrollbar{width:3px;}
.fan-scroll::-webkit-scrollbar-thumb{background:var(--bdr);border-radius:2px;}
.fan-cat{font-size:14px;font-weight:700;letter-spacing:.1em;color:var(--textM);text-transform:uppercase;margin:8px 0 4px;padding-bottom:3px;border-bottom:1px solid var(--bdr);}
.fan-item{display:flex;justify-content:space-between;align-items:center;padding:5px 6px;border-radius:5px;margin-bottom:2px;transition:background .1s;}
.fan-item:hover{background:var(--surf2);}
.fan-name{font-size:16px;color:var(--text);flex:1;}
.fan-note-txt{font-size:14px;color:var(--textM);margin-left:4px;}
.fan-num{font-family:'Noto Serif TC',serif;font-weight:700;color:var(--goldL);font-size:18px;white-space:nowrap;}
.fan-num::after{content:' 番';font-size:10px;color:var(--textM);font-family:'Noto Sans TC';font-weight:400;}
.groups-row{padding:8px 11px;border-bottom:1px solid var(--bdr);}
.groups-row-label{font-size:14px;color:var(--textM);letter-spacing:.05em;margin-bottom:5px;}
.groups-wrap{display:flex;flex-wrap:wrap;gap:5px;}
.group-box{background:var(--surf2);border:1px solid var(--bdr);border-radius:5px;padding:4px 5px;display:flex;flex-direction:column;align-items:center;gap:2px;}
.group-box.is-ming{border-color:rgba(200,148,42,.5);background:rgba(200,148,42,.07);}
.group-box.is-an{border-color:rgba(74,158,204,.35);background:rgba(74,158,204,.05);}
.group-tiles{display:flex;gap:2px;}
.group-type-lbl{font-size:8px;color:var(--textM);}
.group-type-lbl .mtag{color:var(--gold);font-weight:700;}
.group-type-lbl .atag{color:var(--blue);font-weight:700;}
.mini-tile-wrap{display:inline-block;position:relative;}
.win-hl-wrap{outline:2px solid var(--gold);outline-offset:1px;border-radius:3px;}
.waiting-msg{padding:26px 16px;text-align:center;color:var(--textM);font-size:17px;line-height:1.9;}
.waiting-msg .ico{font-size:28px;display:block;margin-bottom:7px;opacity:.4;}
.warning-box{background:rgba(180,50,30,.1);border:1px solid rgba(180,50,30,.3);border-radius:7px;padding:10px 12px;font-size:16px;color:#e88;line-height:1.7;margin:12px;}
.bottom-note{background:var(--surf);border:1px solid var(--bdr);border-radius:10px;padding:12px;font-size:15px;color:var(--textM);line-height:1.9;}
.bottom-note strong{color:var(--textD);}
/* FAB */
.fab-wrap{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:center;align-items:center;padding:12px 16px 16px;gap:12px;background:linear-gradient(0deg,rgba(10,5,0,.98) 60%,transparent 100%);z-index:1000;pointer-events:none;}
.fab-reset{pointer-events:all;height:54px;padding:0 20px;background:rgba(30,20,8,.92);border:2px solid rgba(200,148,42,.35);border-radius:40px;color:var(--gold);font-size:14px;font-family:'Noto Serif TC',serif;font-weight:700;white-space:nowrap;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:7px;}
.fab-reset:hover{border-color:var(--gold);background:rgba(50,35,10,.95);}
.fab-calc{pointer-events:all;display:flex;align-items:center;gap:10px;background:linear-gradient(160deg,#e8b84b 0%,#c8942a 50%,#a87020 100%);color:#1a0a00;border:none;border-radius:40px;padding:0 28px;height:54px;font-family:'Noto Serif TC',serif;font-size:20px;font-weight:900;letter-spacing:.1em;cursor:pointer;transition:all .18s;white-space:nowrap;position:relative;overflow:hidden;box-shadow:0 0 0 3px rgba(200,148,42,.3),0 4px 20px rgba(200,148,42,.6);}
.fab-calc::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.22) 0%,transparent 55%);pointer-events:none;}
.fab-calc:hover{transform:translateY(-2px);box-shadow:0 0 0 4px rgba(200,148,42,.4),0 8px 28px rgba(200,148,42,.8);}
.fab-calc:disabled{background:linear-gradient(160deg,#555,#444);color:#777;box-shadow:0 2px 8px rgba(0,0,0,.5);cursor:not-allowed;transform:none;}
.fab-calc:disabled::before{display:none;}
.fab-settings{pointer-events:all;width:52px;height:52px;border-radius:50%;border:2px solid rgba(200,148,42,.35);background:rgba(30,20,8,.92);box-shadow:0 4px 16px rgba(0,0,0,.6);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;color:var(--gold);}
.fab-settings:hover{transform:rotate(60deg);border-color:var(--gold);}
/* Fan Table */
.fan-table-page{max-width:1100px;margin:0 auto;padding:18px 12px 60px;}
.fan-table-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;}
.fan-table-hdr h2{font-family:'Noto Serif TC',serif;font-size:17px;font-weight:700;color:var(--goldL);}
.fan-sec-title{font-family:'Noto Serif TC',serif;font-size:12px;font-weight:700;color:var(--goldL);background:var(--surf2);border:1px solid var(--bdr);border-radius:5px;padding:6px 11px;margin:12px 0 7px;}
.fan-tbl{width:100%;table-layout:fixed;border-collapse:collapse;background:var(--surf);border:1px solid var(--bdr);border-radius:8px;overflow:hidden;}
.fan-tbl th{background:var(--surf3);color:var(--textD);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:7px 11px;text-align:left;border-bottom:1px solid var(--bdr);}
.fan-tbl td{padding:6px 11px;border-bottom:1px solid rgba(74,60,30,.4);vertical-align:middle;}
.fan-tbl tr:last-child td{border-bottom:none;}
.fan-tbl tr:hover td{background:rgba(255,255,255,.02);}
.fan-tbl th:nth-child(1),.fan-tbl td:nth-child(1){width:24%;}
.fan-tbl th:nth-child(2),.fan-tbl td:nth-child(2){width:290px;text-align:center;}
.fan-tbl th:nth-child(3),.fan-tbl td:nth-child(3){width:auto;}
.fan-name-cell{font-size:13px;color:var(--text);}
.fan-note-cell{font-size:11px;color:var(--textM);line-height:1.5;}
.fan-dual-inputs{display:inline-flex;align-items:center;gap:18px;vertical-align:middle;}
.fan-mingan-pair{display:inline-flex;align-items:center;gap:6px;}
.fan-mingan-label{font-size:13px;font-weight:700;color:var(--text);vertical-align:middle;}
.fan-stepper{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;}
.fan-step-btn{
  width:28px;height:28px;border-radius:7px;border:1px solid var(--bdr);
  background:var(--surf2);color:var(--goldL);font-size:18px;line-height:1;
  cursor:pointer;transition:all .12s;font-family:'Noto Sans TC',sans-serif;
}
.fan-step-btn:hover{border-color:var(--gold);background:rgba(200,148,42,.1);}
.fan-input{background:var(--surf2);border:1px solid var(--bdr);color:var(--text);padding:3px 4px;border-radius:4px;font-size:11px;font-family:'Noto Sans TC';width:36px;text-align:center;}
.fan-input{
  appearance:textfield;
  -moz-appearance:textfield;
}
.fan-input:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,148,42,.12);}
.fan-input::-webkit-outer-spin-button,
.fan-input::-webkit-inner-spin-button{
  -webkit-appearance:none;
  margin:0;
}
.reset-tbl-btn{padding:6px 12px;background:var(--surf2);border:1px solid var(--bdr);color:var(--textM);border-radius:5px;font-size:11px;cursor:pointer;transition:all .15s;}
.reset-tbl-btn:hover{border-color:var(--goldD);color:var(--text);}
.save-ind{font-size:11px;color:var(--green);opacity:0;transition:opacity .3s;}
.save-ind.show{opacity:1;}
.menqing-auto{font-size:13px;color:var(--textM);margin-left:4px;}
.kang-zone{border-radius:8px;padding:7px;min-height:58px;}
.kang-an{background:rgba(74,158,204,.05);border:1.5px solid rgba(74,158,204,.25);}
.kang-ming{background:rgba(200,148,42,.05);border:1.5px dashed rgba(200,148,42,.4);}
.kang-label{font-size:15px;font-weight:700;letter-spacing:.06em;margin-bottom:4px;}
.kang-an .kang-label{color:#5abcde;}
.kang-ming .kang-label{color:#e8b050;}
.kang-tiles{display:flex;flex-wrap:wrap;gap:6px;min-height:40px;align-items:flex-start;}
.kang-group{display:flex;gap:2px;padding:4px;border-radius:6px;cursor:pointer;transition:background .12s;position:relative;}
.kang-group:hover{background:rgba(255,255,255,.08);}
.kang-group.kang-group-an{background:rgba(74,158,204,.1);border:1px solid rgba(74,158,204,.3);}
.kang-group.kang-group-ming{background:rgba(200,148,42,.12);border:1px solid rgba(200,148,42,.4);}
.kang-remove{position:absolute;top:-4px;right:-4px;width:16px;height:16px;border-radius:50%;background:var(--red);color:white;border:none;font-size:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;}
.kang-info{font-size:13px;color:var(--textM);margin-top:3px;}
.kang-empty{font-size:14px;color:var(--textM);padding:6px 0;}
.can-kang-badge{
  position:absolute;bottom:-2px;left:50%;transform:translateX(-50%);
  background:var(--gold);color:#000;font-size:9px;font-weight:700;
  padding:1px 5px;border-radius:3px;white-space:nowrap;pointer-events:none;z-index:3;
}
.hand-limit-info{font-size:14px;color:var(--textD);padding:3px 0 5px;text-align:right;}

/* AI battle */
.game-page{max-width:1420px;margin:0 auto;padding:16px 12px 80px;}
.game-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px;}
.game-toolbar h2{font-family:'Noto Serif TC',serif;font-size:22px;color:var(--goldL);letter-spacing:.04em;}
.game-toolbar-sub{font-size:13px;color:var(--textM);margin-top:2px;}
.game-new-btn,.game-action-btn{
  border:1px solid rgba(200,148,42,.45);background:rgba(200,148,42,.12);color:var(--goldL);
  min-height:36px;border-radius:8px;padding:7px 13px;font-size:14px;font-weight:700;
  font-family:'Noto Sans TC',sans-serif;cursor:pointer;transition:background .14s,border-color .14s,transform .14s;
}
.game-new-btn:hover,.game-action-btn:hover{border-color:var(--gold);background:rgba(200,148,42,.2);transform:translateY(-1px);}
.game-action-btn.primary{background:linear-gradient(160deg,#e8b84b,#bd8a24);border-color:var(--gold);color:#120b05;}
.game-action-btn.subtle{background:rgba(74,158,204,.12);border-color:rgba(74,158,204,.42);color:#8fd0ed;}
.game-action-btn:disabled{opacity:.45;cursor:not-allowed;transform:none;}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start;}
.game-table{min-height:650px;border:1px solid var(--bdr);border-radius:10px;background:
  linear-gradient(160deg,rgba(34,136,68,.13),rgba(20,20,28,.96) 48%,rgba(74,158,204,.1));
  padding:12px;display:grid;grid-template-rows:auto minmax(170px,1fr) auto;gap:12px;}
.game-opponents{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.game-player-card,.game-human,.game-center,.game-side-panel{
  border:1px solid rgba(255,255,255,.08);background:rgba(10,10,16,.64);border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);
}
.game-player-card{padding:9px;min-height:132px;}
.game-player-card.active{border-color:rgba(232,184,75,.65);box-shadow:0 0 0 1px rgba(232,184,75,.16),0 8px 24px rgba(0,0,0,.2);}
.game-player-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--textM);margin-bottom:8px;}
.game-player-head strong{font-size:14px;color:var(--text);margin-right:auto;}
.game-seat{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:rgba(74,158,204,.16);color:#8fd0ed;font-weight:900;}
.game-ai-hand,.game-river,.game-meld-row{display:flex;flex-wrap:wrap;gap:3px;min-height:25px;align-items:center;}
.game-ai-hand{min-height:42px;}
.game-tile-back{display:inline-block;width:17px;height:24px;border-radius:4px;background:linear-gradient(150deg,#215f49,#123a33);border:1px solid rgba(130,220,178,.35);box-shadow:inset 0 1px rgba(255,255,255,.15);}
.game-center{align-self:stretch;display:grid;grid-template-columns:120px minmax(110px,1fr) 160px;gap:12px;align-items:center;justify-items:center;padding:16px;position:relative;}
.game-center-stat,.game-last-discard{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:94px;min-width:96px;border-radius:8px;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.2);}
.game-center-stat span,.game-last-discard span{font-size:12px;color:var(--textM);}
.game-center-stat strong{font-family:'Noto Serif TC',serif;font-size:42px;line-height:1;color:#78d39a;}
.game-status-pill{justify-self:stretch;text-align:center;border-radius:8px;border:1px solid rgba(74,158,204,.35);background:rgba(74,158,204,.11);color:#b6e4f5;padding:10px 12px;font-weight:700;line-height:1.45;}
.game-prompt{display:none;position:absolute;left:50%;bottom:12px;transform:translateX(-50%);width:min(520px,calc(100% - 24px));border:1px solid rgba(232,184,75,.55);border-radius:8px;background:rgba(14,12,10,.96);padding:12px;box-shadow:0 16px 40px rgba(0,0,0,.42);z-index:3;}
.game-prompt.show{display:block;}
.game-prompt-title{font-size:13px;color:var(--goldL);margin-bottom:8px;font-weight:700;letter-spacing:.04em;}
.game-prompt-main{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
.game-prompt-main strong{font-family:'Noto Serif TC',serif;color:var(--goldL);font-size:24px;}
.game-prompt-actions{display:flex;gap:8px;align-items:center;}
.game-prompt-actions.wrap{flex-wrap:wrap;}
.game-human{padding:12px;}
.game-human-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px;}
.game-human-title{font-size:15px;color:var(--goldL);font-weight:800;letter-spacing:.04em;margin-bottom:6px;}
.game-kang-actions{display:flex;flex-wrap:wrap;gap:6px;min-height:0;}
.game-human-flowers{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:3px;min-width:120px;min-height:34px;}
.game-human-hand{display:flex;flex-wrap:wrap;gap:5px;min-height:68px;align-items:flex-start;padding:8px;border-radius:8px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);}
.game-hand-tile{border:none;background:transparent;padding:0;border-radius:6px;cursor:default;transition:transform .12s,filter .12s,box-shadow .12s;}
.game-hand-tile.can-discard{cursor:pointer;}
.game-hand-tile.can-discard:hover{transform:translateY(-5px);filter:brightness(1.08);}
.game-hand-tile:disabled{opacity:.78;}
.game-human-sets{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;}
.game-human-sets>div{border-top:1px solid rgba(255,255,255,.07);padding-top:8px;}
.game-human-sets span{display:block;font-size:12px;color:var(--textM);margin-bottom:5px;}
.game-mini-tile{display:inline-block;vertical-align:middle;}
.game-meld{display:inline-flex;gap:2px;align-items:center;padding:3px;border-radius:6px;margin-right:4px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);}
.game-meld-peng,.game-meld-kang{border-color:rgba(232,184,75,.34);}
.game-meld-shang{border-color:rgba(58,170,102,.34);}
.game-empty{color:var(--textM);font-size:13px;}
.game-tile-fallback{display:inline-flex;align-items:center;justify-content:center;width:32px;height:42px;border:1px solid var(--bdr);border-radius:5px;background:#fff;color:#111;font-weight:800;font-size:12px;}
.game-side{display:flex;flex-direction:column;gap:12px;}
.game-side-panel{padding:12px;}
.game-side-panel h3{font-size:14px;color:var(--goldL);font-family:'Noto Serif TC',serif;margin-bottom:8px;letter-spacing:.04em;}
.game-log{max-height:312px;overflow:auto;display:flex;flex-direction:column;gap:5px;padding-right:4px;}
.game-log-line{font-size:13px;line-height:1.55;color:var(--textM);border-left:2px solid rgba(255,255,255,.09);padding-left:8px;}
.game-log-line.win{color:#ffd77a;border-color:var(--gold);}
.game-log-line.meld{color:#93d7f0;border-color:#4a9ecc;}
.game-log-line.discard{color:#d7c6b0;border-color:#9a9080;}
.game-log-line.draw{color:#9fe0b5;border-color:#3aaa66;}
.game-log-line.round{color:#d6b5f0;border-color:#9b59b6;}
.game-result-empty{font-size:13px;color:var(--textM);line-height:1.7;}
.game-result-total{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:9px;margin-bottom:8px;}
.game-result-total span{font-size:13px;color:var(--textM);}
.game-result-total strong{font-family:'Noto Serif TC',serif;color:var(--goldL);font-size:32px;line-height:1;}
.game-result-fans{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow:auto;}
.game-result-fans div{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--text);}
.game-result-fans em{font-style:normal;color:var(--textM);font-size:12px;}
.game-result-fans b{color:var(--goldL);}
@media(max-width:1100px){
  .game-layout{grid-template-columns:1fr;}
  .game-side{display:grid;grid-template-columns:1fr 1fr;}
}
@media(max-width:780px){
  .game-toolbar{align-items:stretch;flex-direction:column;}
  .game-opponents{grid-template-columns:1fr;}
  .game-table{grid-template-rows:auto auto auto;min-height:0;}
  .game-center{grid-template-columns:1fr 1fr;align-items:stretch;}
  .game-status-pill{grid-column:1 / -1;}
  .game-human-sets{grid-template-columns:1fr;}
  .game-side{grid-template-columns:1fr;}
}


/* Meld type toggle badge */
.meld-type-badge{border:none;border-radius:4px;font-size:11px;font-weight:700;padding:2px 7px;cursor:pointer;letter-spacing:.04em;transition:background .15s,color .15s;white-space:nowrap;}
.meld-type-badge.meld-shang{background:rgba(58,170,102,.22);color:#4ccc88;border:1px solid rgba(58,170,102,.4);}
.meld-type-badge.meld-shang:hover{background:rgba(58,170,102,.35);}
.meld-type-badge.meld-peng{background:rgba(200,148,42,.22);color:var(--goldL);border:1px solid rgba(200,148,42,.4);}
.meld-type-badge.meld-peng:hover{background:rgba(200,148,42,.35);}

/* Dual-win (雙食) toggle */
.dual-win-toggle{background:rgba(200,148,42,.10);border:1px solid rgba(200,148,42,.35);border-radius:10px;padding:10px 12px;margin-bottom:10px;}
.dual-win-label{font-size:12px;color:var(--goldL);font-weight:600;margin-bottom:8px;letter-spacing:.04em;}
.dual-win-btns{display:flex;gap:6px;}
.dual-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid rgba(200,148,42,.4);background:transparent;color:var(--textM);border-radius:6px;padding:9px 10px;cursor:pointer;font-weight:600;transition:background .15s,color .15s,border-color .15s;line-height:1.1;}
.dual-btn:hover{background:rgba(200,148,42,.15);color:var(--textL);}
.dual-btn.active{background:linear-gradient(135deg,var(--gold),var(--goldD));color:#1a1410;border-color:var(--gold);box-shadow:0 0 8px rgba(200,148,42,.35);}
.dual-btn-name{font-size:13px;}
.dual-btn-fan{font-size:18px;font-weight:700;}
.dual-btn-unit{font-size:11px;font-weight:500;margin-left:2px;opacity:.85;}

.tab-btn,.tile-btn,.zone-tile-btn,.tbtn,.lz-step-btn,.fab-reset,.fab-calc,.fab-settings,.kang-remove,.meld-type-badge,.dual-btn,.game-new-btn,.game-action-btn,.game-hand-tile{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
}
