:root{
  --paper:#f3f1ec;--paper-2:#ebe8e1;--ink:#171815;--muted:#77776f;--line:rgba(23,24,21,.13);
  --felt:#173f37;--felt-dark:#0e2e28;--cream:#fffdf7;--red:#d84a45;--blue:#2f6ff2;
  --shadow:0 30px 80px rgba(28,31,26,.13);--serif:"Iowan Old Style","Songti SC","STSong",serif;
  --sans:"Avenir Next","PingFang SC","Hiragino Sans GB",sans-serif;
}
*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);overflow-x:hidden}
button,input{font:inherit}.grain{position:fixed;inset:0;pointer-events:none;opacity:.22;z-index:100;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E")}
[hidden]{display:none!important}.app-shell{width:min(1540px,100%);min-height:100vh;margin:auto;padding:20px 34px 34px}.topbar{height:62px;display:flex;align-items:center;border-bottom:1px solid var(--line);position:relative;z-index:20}.brand{display:flex;align-items:center;gap:12px;border:0;background:none;color:inherit;cursor:pointer;text-align:left}.brand-mark{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-size:17px}.brand strong{display:block;font-family:var(--serif);font-size:18px;letter-spacing:-.3px}.brand small{display:block;color:var(--muted);font-size:8px;letter-spacing:2px;margin-top:2px}.connection{margin-left:auto;display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;letter-spacing:.4px}.connection i{width:7px;height:7px;border-radius:50%;background:#d0a342;box-shadow:0 0 0 4px rgba(208,163,66,.12)}.connection i.ok{background:#2b9b66;box-shadow:0 0 0 4px rgba(43,155,102,.12)}.profile{display:flex;align-items:center;gap:12px;margin-left:18px;padding-left:18px;border-left:1px solid var(--line)}.profile>div{text-align:right}.profile strong{display:block;font-size:12px}.profile small{font-size:9px;color:var(--muted);letter-spacing:1px}.ghost-btn,.soft-btn,.primary-btn,.icon-btn,.action-btn{border:0;cursor:pointer;transition:.22s ease}.ghost-btn{background:transparent;color:var(--muted);padding:9px 12px;border-radius:99px}.ghost-btn:hover{color:var(--ink);background:rgba(23,24,21,.06)}.soft-btn{background:#fff;border:1px solid var(--line);padding:10px 15px;border-radius:99px;color:var(--ink);font-weight:650}.soft-btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(0,0,0,.07)}.primary-btn{background:var(--ink);color:#fff;padding:12px 20px;border-radius:99px;font-weight:700;box-shadow:0 10px 25px rgba(23,24,21,.17)}.primary-btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(23,24,21,.25)}.primary-btn:disabled,.soft-btn:disabled{opacity:.35;pointer-events:none}.primary-btn.wide,.soft-btn.wide{width:100%}.primary-btn.compact{padding:10px 17px}.icon-btn{width:34px;height:34px;border-radius:50%;background:#fff;border:1px solid var(--line)}
.eyebrow{font-size:10px;font-weight:800;letter-spacing:2.8px;color:var(--muted);margin:0 0 16px}.auth-view{min-height:calc(100vh - 120px);display:grid;grid-template-columns:minmax(0,1.18fr) minmax(350px,.82fr);align-items:center;gap:8vw}.auth-copy{max-width:790px;padding:40px 0 50px 6vw}.auth-copy h1{font-family:var(--serif);font-size:clamp(56px,6.2vw,100px);line-height:.92;font-weight:500;letter-spacing:-5px;margin:0}.auth-copy h1 em{font-style:italic;color:var(--red)}.auth-copy>p:not(.eyebrow){max-width:570px;color:var(--muted);font-family:var(--serif);font-size:18px;line-height:1.8;margin:32px 0}.auth-features{display:flex;gap:30px;flex-wrap:wrap}.auth-features span{font-size:11px;font-weight:700;letter-spacing:.4px}.auth-features b{font-family:var(--serif);font-size:17px;color:var(--red);margin-right:8px}.auth-card{width:min(450px,100%);justify-self:center;background:rgba(255,253,247,.82);border:1px solid rgba(255,255,255,.8);box-shadow:var(--shadow);border-radius:32px;padding:36px;backdrop-filter:blur(18px);position:relative}.auth-suits{font-family:var(--serif);letter-spacing:9px;text-align:center;font-size:22px;margin:0 0 25px}.auth-suits i{font-style:normal;color:var(--red)}.segmented{display:grid;grid-template-columns:1fr 1fr;background:var(--paper-2);border-radius:13px;padding:4px;margin-bottom:25px}.segmented button{border:0;background:transparent;padding:10px;border-radius:10px;color:var(--muted);font-weight:700;cursor:pointer}.segmented button.on{background:#fff;color:var(--ink);box-shadow:0 4px 12px rgba(0,0,0,.07)}.auth-form{display:grid;gap:16px}.auth-form label,.small-modal label{display:grid;gap:8px;font-size:11px;font-weight:750;color:var(--muted)}.auth-form input,.small-modal input{width:100%;border:1px solid var(--line);background:rgba(255,255,255,.82);border-radius:13px;padding:14px 15px;color:var(--ink);outline:none}.auth-form input:focus,.small-modal input:focus{border-color:rgba(23,24,21,.45);box-shadow:0 0 0 4px rgba(23,24,21,.05)}.legal{font-size:9px;color:#99998f;text-align:center;line-height:1.5;margin:18px 0 0}
.lobby-view{padding:54px 0 20px}.lobby-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px}.lobby-heading h2{font-family:var(--serif);font-size:48px;font-weight:500;letter-spacing:-2px;margin:0 0 8px}.lobby-heading>div>p:last-child{color:var(--muted);font-size:13px;margin:0}.lobby-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px}.panel{background:rgba(255,253,247,.7);border:1px solid rgba(23,24,21,.10);border-radius:24px;box-shadow:0 14px 45px rgba(24,26,22,.06)}.room-panel{min-height:520px;padding:10px}.panel-head{height:52px;padding:0 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.panel-head strong{font-family:var(--serif);font-size:16px}.panel-head span{font-size:9px;letter-spacing:1.4px;color:var(--muted)}.room-list{display:grid;gap:8px;padding:10px}.room-row{display:grid;grid-template-columns:1fr auto auto;gap:20px;align-items:center;padding:16px 18px;border-radius:16px;background:rgba(255,255,255,.55);border:1px solid transparent}.room-row:hover{border-color:var(--line);background:#fff}.room-row h3{font-family:var(--serif);font-size:19px;margin:0 0 4px}.room-row p{margin:0;color:var(--muted);font-size:10px;letter-spacing:.6px}.room-pop{display:flex;gap:4px}.room-pop i{width:8px;height:8px;border-radius:50%;background:#d7d3c9}.room-pop i.human{background:var(--ink)}.room-pop i.bot{background:var(--blue)}.room-empty{display:grid;place-items:center;text-align:center;min-height:380px;color:var(--muted)}.room-empty b{display:block;font-family:var(--serif);font-size:28px;color:var(--ink);margin-bottom:8px}.lobby-side{display:grid;gap:18px;align-content:start}.profile-card{text-align:center;padding:28px}.card-kicker{font-size:9px;letter-spacing:2px;color:var(--muted);font-weight:800}.avatar-medal{width:70px;height:70px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--serif);font-size:30px;margin:22px auto 12px;box-shadow:0 0 0 7px var(--paper-2),0 0 0 8px var(--line)}.profile-card h3{font-family:var(--serif);font-size:23px;margin:0}.profile-card>p{font-size:11px;color:var(--muted);margin:4px 0 22px}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line);margin-bottom:20px}.stats div{padding:15px 4px}.stats div+div{border-left:1px solid var(--line)}.stats b{display:block;font-family:var(--serif);font-size:20px}.stats span{font-size:9px;color:var(--muted)}.etiquette{padding:22px}.etiquette p{font-family:var(--serif);font-size:14px;line-height:1.75;margin:14px 0 0;color:#55564f}
.table-view{padding:22px 0 0}.table-toolbar{display:flex;align-items:center;gap:18px;margin-bottom:14px}.table-toolbar>div:nth-child(2){display:grid;gap:1px}.table-toolbar strong{font-family:var(--serif);font-size:18px}.table-toolbar small{color:var(--muted);font-size:9px;letter-spacing:.8px}.table-tools{margin-left:auto;display:flex;gap:8px}.game-layout{display:grid;grid-template-columns:minmax(700px,1fr) 280px;gap:18px}.felt-wrap{position:relative;min-height:700px;display:flex;align-items:center;justify-content:center;padding-bottom:100px}.felt{width:min(1050px,94%);aspect-ratio:1.95;border-radius:50%;position:relative;background:radial-gradient(ellipse at 50% 43%,#24594e 0%,var(--felt) 60%,var(--felt-dark) 100%);border:15px solid #26251f;box-shadow:inset 0 0 0 2px rgba(255,255,255,.11),inset 0 24px 70px rgba(0,0,0,.13),0 32px 80px rgba(34,34,28,.24)}.felt::before{content:"";position:absolute;inset:-23px;border-radius:50%;border:7px solid #c8b98d;box-shadow:inset 0 1px 0 #f3e8c2}.felt-line{position:absolute;inset:28px;border:1px dashed rgba(255,255,255,.16);border-radius:50%}.table-signature{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);display:grid;text-align:center;color:rgba(255,255,255,.18)}.table-signature span{font-size:27px}.table-signature b{font-family:var(--serif);font-size:23px;letter-spacing:5px}.table-signature small{font-size:7px;letter-spacing:5px}.pot{position:absolute;left:50%;top:20%;transform:translateX(-50%);display:flex;align-items:baseline;gap:7px;padding:8px 13px;border-radius:99px;background:rgba(7,25,21,.40);color:#fff;border:1px solid rgba(255,255,255,.13);backdrop-filter:blur(10px)}.pot span,.pot small{font-size:8px;letter-spacing:1px;opacity:.6}.pot b{font-family:var(--serif);font-size:18px}.board{position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);display:flex;gap:8px}.playing-card{width:58px;aspect-ratio:.70;border-radius:8px;background:#fffdf8;border:1px solid rgba(0,0,0,.18);box-shadow:0 8px 18px rgba(0,0,0,.2);display:flex;flex-direction:column;justify-content:space-between;padding:6px;color:#111;font-family:Georgia,serif;font-weight:bold;line-height:.9}.playing-card.red{color:var(--red)}.playing-card .suit{font-size:20px;align-self:flex-end}.playing-card.back{background:repeating-linear-gradient(45deg,#173f37 0 4px,#d8c99f 4px 6px);border:4px solid #fff}.playing-card.placeholder{background:rgba(255,255,255,.05);border:1px dashed rgba(255,255,255,.18);box-shadow:none}.seat-layer{position:absolute;inset:0}.seat{position:absolute;transform:translate(-50%,-50%);min-width:132px;text-align:center}.seat:nth-child(1){left:50%;top:96%}.seat:nth-child(2){left:8%;top:72%}.seat:nth-child(3){left:10%;top:18%}.seat:nth-child(4){left:50%;top:3%}.seat:nth-child(5){left:90%;top:18%}.seat:nth-child(6){left:92%;top:72%}.seat-pod{display:inline-flex;align-items:center;gap:8px;background:rgba(255,253,247,.94);border:1px solid rgba(0,0,0,.11);border-radius:18px;padding:5px 10px 5px 5px;box-shadow:0 10px 25px rgba(0,0,0,.18);position:relative}.seat.acting .seat-pod{box-shadow:0 0 0 3px #76a1ff,0 10px 30px rgba(0,0,0,.22)}.seat.folded{opacity:.48;filter:saturate(.3)}.seat-avatar{width:35px;height:35px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:#fff;font-family:var(--serif)}.seat.bot .seat-avatar{background:var(--blue)}.seat-copy{text-align:left}.seat-copy b{display:block;font-size:10px;white-space:nowrap}.seat-copy span{display:block;font-size:9px;color:var(--muted)}.seat-tag{position:absolute;right:-6px;top:-8px;border-radius:99px;background:var(--ink);color:#fff;font-size:7px;padding:3px 6px;letter-spacing:.5px}.seat.bet .seat-pod::after{content:attr(data-bet);position:absolute;left:50%;top:calc(100% + 7px);transform:translateX(-50%);background:#c7b77f;color:#171815;border-radius:99px;padding:3px 8px;font-size:8px;font-weight:800}.hole-cards{position:absolute;left:50%;transform:translateX(-50%);display:flex;gap:3px;bottom:calc(100% + 5px)}.seat:nth-child(4) .hole-cards,.seat:nth-child(3) .hole-cards,.seat:nth-child(5) .hole-cards{bottom:auto;top:calc(100% + 5px)}.hole-cards .playing-card{width:33px;border-radius:5px;padding:3px;font-size:9px}.hole-cards .suit{font-size:11px}.dealer-chip{position:absolute;left:-5px;bottom:-7px;width:19px;height:19px;border-radius:50%;background:#f4e8bd;border:1px solid #8a7c51;display:grid;place-items:center;font-size:7px;font-weight:900}.hand-message{position:absolute;left:50%;bottom:19%;transform:translateX(-50%);font-family:var(--serif);color:rgba(255,255,255,.72);font-size:13px}.action-dock{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);width:min(880px,92%);min-height:72px;background:rgba(255,253,247,.92);border:1px solid rgba(255,255,255,.85);box-shadow:0 20px 60px rgba(25,26,22,.18);border-radius:25px;padding:12px 14px;display:flex;align-items:center;gap:9px;backdrop-filter:blur(18px)}.action-dock.idle{opacity:.55}.turn-copy{min-width:105px}.turn-copy span{display:block;font-size:8px;color:var(--muted);letter-spacing:1.5px}.turn-copy b{font-family:var(--serif);font-size:13px}.raise-control{flex:1;display:flex;align-items:center;gap:10px}.raise-control input{width:100%;accent-color:var(--ink)}.raise-control output{font-family:var(--serif);min-width:48px;text-align:right}.action-btn{border-radius:99px;background:#fff;border:1px solid var(--line);padding:12px 18px;font-weight:750}.action-btn:hover{transform:translateY(-2px)}.action-btn.danger{color:var(--red)}.action-btn.dark{background:var(--ink);color:#fff}.game-sidebar{margin-top:20px;height:610px;display:flex;flex-direction:column}.activity-log{padding:12px;display:flex;flex-direction:column;gap:7px;overflow:auto}.log-row{padding:10px;border-radius:11px;background:rgba(255,255,255,.65);font-size:10px;color:#55564f}.log-row:first-child{color:var(--ink);font-weight:700}.legend{margin-top:auto;padding:15px;border-top:1px solid var(--line);font-size:9px;color:var(--muted)}.legend i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--blue);margin-right:6px}
.modal-backdrop{position:fixed;inset:0;background:rgba(27,28,24,.32);backdrop-filter:blur(14px);z-index:80;display:grid;place-items:center;padding:20px}.modal{width:min(720px,96vw);max-height:90vh;overflow:auto;background:var(--cream);border-radius:30px;padding:38px;box-shadow:0 40px 100px rgba(0,0,0,.28);position:relative}.small-modal{width:min(440px,94vw);text-align:center}.modal-close{position:absolute;right:20px;top:18px;border:0;background:var(--paper-2);border-radius:99px;padding:7px 12px;color:var(--muted);cursor:pointer}.modal-symbol{font-family:var(--serif);font-size:30px}.modal h2{font-family:var(--serif);font-weight:500;font-size:34px;margin:8px 0 25px}.small-modal form{display:grid;gap:18px;text-align:left}.tutorial-modal{min-height:560px;display:flex;flex-direction:column}.tutorial-progress{display:flex;gap:6px;margin-bottom:40px}.tutorial-progress i{height:3px;flex:1;background:var(--paper-2);border-radius:3px}.tutorial-progress i.on{background:var(--ink)}.tutorial-slide{display:grid;grid-template-columns:1fr 1fr;gap:35px;align-items:center;flex:1}.tutorial-visual{min-height:320px;border-radius:24px;background:var(--paper-2);display:grid;place-items:center;padding:28px}.tutorial-visual .big-symbol{font-family:var(--serif);font-size:94px}.tutorial-visual .rank-stack{display:grid;gap:8px;width:100%}.tutorial-visual .rank-stack span{display:flex;justify-content:space-between;padding:10px 13px;background:#fff;border-radius:10px;font-size:10px}.tutorial-copy h2{font-family:var(--serif);font-size:44px;line-height:1.02;font-weight:500;letter-spacing:-1.5px;margin:0 0 20px}.tutorial-copy p{color:var(--muted);line-height:1.8;font-size:13px}.tutorial-copy ul{padding-left:18px;color:#4f504a;font-size:12px;line-height:1.9}.tutorial-nav{display:flex;justify-content:space-between;margin-top:30px}.toast-stack{position:fixed;right:24px;bottom:24px;z-index:120;display:grid;gap:8px}.toast{background:#171815;color:#fff;border-radius:14px;padding:12px 16px;box-shadow:0 12px 35px rgba(0,0,0,.2);font-size:12px;animation:toastIn .25s ease}.toast.error{background:#9d332f}@keyframes toastIn{from{opacity:0;transform:translateY(8px)}}
@media(max-width:1050px){.auth-view{grid-template-columns:1fr}.auth-copy{padding:60px 0 0}.auth-card{margin:0 auto 60px}.lobby-grid{grid-template-columns:1fr}.lobby-side{grid-template-columns:1fr 1fr}.game-layout{grid-template-columns:1fr}.game-sidebar{height:260px}.felt-wrap{min-height:620px}.game-sidebar{margin-top:0}}
@media(max-width:720px){.app-shell{padding:12px 14px 22px}.topbar{height:56px}.connection{display:none}.profile .ghost-btn{display:none}.auth-copy{padding:45px 5px 15px}.auth-copy h1{font-size:52px;letter-spacing:-3px}.auth-copy>p:not(.eyebrow){font-size:15px;margin:22px 0}.auth-features{gap:13px}.auth-card{padding:25px}.lobby-heading{align-items:start;gap:20px}.lobby-heading h2{font-size:38px}.lobby-heading>div>p:last-child{display:none}.lobby-grid{display:block}.lobby-side{display:none}.room-row{grid-template-columns:1fr auto;gap:10px}.room-pop{display:none}.table-toolbar>div:nth-child(2){display:none}.game-layout{display:block}.game-sidebar{display:none}.felt-wrap{min-height:570px;padding-bottom:120px}.felt{width:100%;aspect-ratio:1.32;border-width:9px}.felt::before{inset:-15px;border-width:5px}.seat{min-width:88px}.seat:nth-child(2){left:5%;top:70%}.seat:nth-child(3){left:8%;top:20%}.seat:nth-child(5){left:92%;top:20%}.seat:nth-child(6){left:95%;top:70%}.seat-pod{padding:4px 6px 4px 4px;gap:5px}.seat-avatar{width:28px;height:28px}.seat-copy b{font-size:8px}.seat-copy span{font-size:7px}.playing-card{width:43px}.board{gap:3px}.pot{top:24%}.hand-message{bottom:23%}.action-dock{bottom:10px;display:grid;grid-template-columns:repeat(3,1fr);padding:10px;border-radius:20px}.turn-copy{grid-column:1/2;min-width:0}.raise-control{grid-column:2/4}.action-btn{padding:10px 8px}.tutorial-slide{grid-template-columns:1fr}.tutorial-visual{min-height:190px}.tutorial-copy h2{font-size:34px}.tutorial-modal{padding:28px}.modal-close{right:12px;top:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* v2 · private card-room edition */
:root{--gold:#b89a58;--gold-light:#e8d8aa;--wine:#7d272b;--night:#111713;--paper:#eeeae1;--felt:#123e34;--felt-dark:#08271f}
body{background-color:var(--paper);background-image:linear-gradient(rgba(36,37,32,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(36,37,32,.025) 1px,transparent 1px);background-size:48px 48px}
.app-shell{position:relative}.app-shell::before{content:"♠";position:fixed;left:-5vw;bottom:-24vh;font-family:var(--serif);font-size:55vw;color:rgba(23,24,21,.018);pointer-events:none}
.topbar{height:72px}.brand-mark{background:var(--wine);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25),0 8px 20px rgba(125,39,43,.2)}
.music-console{position:relative;margin-left:18px}.music-button{display:flex;align-items:center;gap:9px;min-width:174px;height:42px;padding:4px 10px 4px 5px;border:1px solid var(--line);border-radius:22px;background:rgba(255,253,247,.68);color:var(--ink);cursor:pointer;text-align:left}.music-button>i{width:31px;height:31px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-style:normal}.music-button.playing>i{background:var(--wine);animation:recordSpin 6s linear infinite}.music-button>span{display:grid;min-width:0;flex:1}.music-button small{font-size:6px;letter-spacing:1.4px;color:var(--muted)}.music-button b{font-family:var(--serif);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:94px}.music-button em{font-size:8px;font-style:normal;color:var(--muted)}
.music-menu{position:fixed;left:-9999px;top:-9999px;width:300px;padding:17px;border-radius:20px;background:#fbf8f0;border:1px solid rgba(23,24,21,.15);box-shadow:0 24px 70px rgba(22,24,20,.3);z-index:130;animation:musicMenuIn .18s ease}@keyframes musicMenuIn{from{opacity:0;transform:translateY(-5px)}}.music-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font-family:var(--serif);font-size:15px}.music-head button{border:1px solid var(--line);background:transparent;border-radius:99px;font-size:8px;padding:5px 8px;cursor:pointer}.track-list{display:grid;gap:3px}.track-list button{display:grid;grid-template-columns:25px 1fr auto;align-items:center;gap:8px;border:0;background:transparent;border-radius:10px;padding:9px;color:var(--muted);cursor:pointer;text-align:left}.track-list button:hover,.track-list button.on{background:#ede7d9;color:var(--ink)}.track-list i,.track-list em{font-size:8px;font-style:normal}.track-list span{font-size:11px}.volume-row{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:12px;margin-top:10px;color:var(--muted);font-size:9px}.volume-row input{flex:1;accent-color:var(--wine)}
@keyframes recordSpin{to{transform:rotate(360deg)}}

.auth-view{position:relative}.auth-copy::after{content:"PRIVATE TABLE · EST. 2026";display:block;width:max-content;margin-top:45px;padding:8px 12px;border:1px solid var(--line);font-size:7px;letter-spacing:2px;transform:rotate(-2deg);color:var(--muted)}
.auth-card{border-radius:5px 34px 5px 34px;border-color:rgba(184,154,88,.3)}.auth-card::before{content:"";position:absolute;inset:9px;border:1px solid rgba(184,154,88,.16);border-radius:2px 26px 2px 26px;pointer-events:none}.primary-btn{background:var(--wine);box-shadow:0 10px 25px rgba(125,39,43,.2)}.primary-btn:hover{box-shadow:0 14px 30px rgba(125,39,43,.3)}
.lobby-heading{padding:18px 0 8px;border-bottom:1px solid var(--line)}.panel{background:rgba(253,250,242,.76);border-color:rgba(74,64,43,.14)}.room-panel{border-radius:7px 28px 7px 28px}.room-row{position:relative;border-radius:4px 15px 4px 15px}.room-row::before{content:"";position:absolute;left:0;top:15%;height:70%;width:2px;background:var(--gold);opacity:0;transition:.2s}.room-row:hover::before{opacity:1}
.profile-card{position:relative;overflow:hidden;border-radius:28px 5px 28px 5px}.profile-card::after{content:"MEMBER";position:absolute;right:-28px;top:25px;transform:rotate(45deg);background:var(--wine);color:#fff;width:110px;padding:4px 0;font-size:6px;letter-spacing:2px}
.avatar-medal{position:relative;border:0;cursor:pointer;background-position:center;background-size:cover;overflow:visible}.avatar-medal i{font-style:normal}.avatar-medal span{position:absolute;inset:auto -2px -8px;background:var(--wine);color:#fff;border-radius:99px;padding:3px;font-family:var(--sans);font-size:7px;opacity:0;transform:translateY(4px);transition:.2s}.avatar-medal:hover span{opacity:1;transform:none}.avatar-medal.has-image .avatar-letter{opacity:0}
.identity-tools{margin:-8px 0 14px}.cardback-uploader{width:100%;display:flex;align-items:center;gap:12px;border:1px solid var(--line);background:rgba(255,255,255,.5);border-radius:13px;padding:9px;text-align:left;cursor:pointer;color:var(--ink)}.cardback-uploader:hover{border-color:var(--gold)}.cardback-uploader b{font-size:10px}.mini-cardback{width:30px;height:42px;border-radius:4px;background:repeating-linear-gradient(45deg,var(--felt) 0 3px,var(--gold-light) 3px 5px);border:2px solid #fff;box-shadow:0 3px 8px rgba(0,0,0,.14);color:#fff;display:grid;place-items:center;background-size:cover;background-position:center}.mini-cardback.has-image{border-width:1px}
.quick-links{display:grid;grid-template-columns:1fr 1fr;padding:8px;border-radius:5px 20px 5px 20px}.quick-links button{display:grid;grid-template-columns:auto 1fr;gap:0 8px;align-items:center;border:0;background:transparent;padding:14px 10px;text-align:left;cursor:pointer;color:var(--ink)}.quick-links button+button{border-left:1px solid var(--line)}.quick-links button:hover{background:rgba(255,255,255,.55)}.quick-links button>span{grid-row:1/3;font-family:var(--serif);font-size:24px;color:var(--wine)}.quick-links b{font-size:11px}.quick-links small{font-size:7px;color:var(--muted);white-space:nowrap}

.table-toolbar{position:relative}.auto-start-pill{display:flex;align-items:center;gap:7px;padding:0 12px;border:1px solid var(--line);border-radius:99px;font-size:9px;color:var(--muted);background:rgba(255,255,255,.55)}.auto-start-pill i{width:6px;height:6px;border-radius:50%;background:var(--gold)}.auto-start-pill.live i{background:#43a673;box-shadow:0 0 0 4px rgba(67,166,115,.12);animation:pulseDot 1.6s infinite}.auto-start-pill.live{color:var(--ink)}@keyframes pulseDot{50%{box-shadow:0 0 0 8px rgba(67,166,115,0)}}
.felt-wrap{background:radial-gradient(circle at 50% 45%,rgba(184,154,88,.08),transparent 48%);border-radius:40px}.felt{background-color:var(--felt);background-image:radial-gradient(ellipse at 50% 43%,rgba(44,109,89,.72),rgba(7,35,28,.9) 74%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.5' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E");border-color:#211c16;box-shadow:inset 0 0 0 2px rgba(255,255,255,.09),inset 0 22px 70px rgba(0,0,0,.2),0 0 0 2px #6f5b31,0 0 0 10px #bda46c,0 38px 90px rgba(34,34,28,.3)}.felt::before{border-color:#463a23;box-shadow:inset 0 1px 0 #efe0ab}.felt-line{border-color:rgba(232,216,170,.22)}.table-signature span{color:rgba(232,216,170,.27)}.table-signature b,.table-signature small{color:rgba(255,255,255,.17)}
.seat-pod{border-radius:6px 18px 6px 18px;border-color:rgba(184,154,88,.36)}.seat-pod.vacant{opacity:.32}.seat.acting .seat-pod{box-shadow:0 0 0 3px var(--gold-light),0 0 30px rgba(232,216,170,.45),0 10px 30px rgba(0,0,0,.22);animation:actingGlow 1.4s ease-in-out infinite alternate}@keyframes actingGlow{to{box-shadow:0 0 0 5px rgba(232,216,170,.5),0 0 36px rgba(232,216,170,.3),0 10px 30px rgba(0,0,0,.22)}}
.seat-avatar{background-position:center;background-size:cover}.seat-avatar i{font-style:normal}.seat-avatar.has-image i{opacity:0}.seat.bot .seat-avatar{background:#394858}.seat-tag{background:var(--wine)}.dealer-chip{background:var(--gold-light)}
.playing-card{border-radius:5px 10px 5px 10px;animation:cardArrival .24s ease both}.playing-card.back{background-color:#173f37;background-image:repeating-linear-gradient(45deg,#173f37 0 4px,#d8c99f 4px 6px)}.playing-card.custom-back{background-size:cover;background-position:center;border:3px solid #fff}.playing-card.placeholder{animation:none}@keyframes cardArrival{from{opacity:0;transform:translateY(-8px) rotate(-2deg)}}
.pot{border-color:rgba(232,216,170,.32);background:rgba(5,24,18,.58)}.pot b{color:var(--gold-light)}.hand-message{letter-spacing:.5px}.action-dock{border-radius:7px 28px 7px 28px;border-color:rgba(184,154,88,.28)}.action-btn.dark{background:var(--wine)}.action-btn:disabled{opacity:.35;pointer-events:none}
.game-sidebar{border-radius:25px 5px 25px 5px}.log-row:first-child{border-left:2px solid var(--gold);border-radius:2px 11px 11px 2px}.legend i{background:var(--gold)}

.ranking-modal,.history-modal{width:min(760px,96vw);border-radius:7px 34px 7px 34px}.rank-tabs{max-width:360px}.ranking-list{display:grid;gap:5px}.ranking-row{display:grid;grid-template-columns:44px 42px 1fr auto;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line)}.ranking-row:first-child{background:#ebe3cf;border:1px solid rgba(184,154,88,.32);border-radius:3px 15px 3px 15px}.ranking-row.me{box-shadow:inset 3px 0 var(--wine)}.rank-number{font-family:var(--serif);font-size:17px;color:var(--gold)}.rank-avatar,.result-avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background-color:var(--ink);background-size:cover;background-position:center;color:#fff;font-family:var(--serif)}.rank-name{display:grid}.rank-name strong{font-size:12px}.rank-name small{font-size:8px;color:var(--muted)}.rank-score{text-align:right}.rank-score b{display:block;font-family:var(--serif);font-size:18px}.rank-score span{font-size:7px;color:var(--muted);letter-spacing:1px}
.history-list{display:grid;gap:7px}.history-row{display:grid;grid-template-columns:70px 75px 1fr auto;align-items:center;gap:13px;padding:12px;border:1px solid var(--line);border-radius:4px 14px 4px 14px;background:rgba(255,255,255,.43)}.history-row.won{border-left:3px solid var(--gold)}.history-outcome{display:grid}.history-outcome b{font-size:9px;letter-spacing:1px;color:var(--muted)}.history-row.won .history-outcome b{color:var(--wine)}.history-outcome span{font-family:var(--serif);font-size:13px}.history-cards{display:flex;gap:3px}.history-cards .playing-card{width:31px;padding:3px;font-size:9px;border-radius:3px}.history-cards .suit{font-size:10px}.history-copy{display:grid}.history-copy strong{font-size:11px}.history-copy span,.history-row time{font-size:8px;color:var(--muted)}.archive-empty{min-height:180px;display:grid;place-items:center;align-content:center;text-align:center;color:var(--muted);gap:6px}.archive-empty b{font-family:var(--serif);font-size:24px;color:var(--ink)}.archive-empty span{font-size:10px}

.settlement{background:rgba(7,18,14,.68)}.settlement-modal{width:min(880px,97vw);border-radius:5px 38px 5px 38px;padding:32px 38px}.settlement-head{display:flex;justify-content:space-between;align-items:start}.settlement-head h2{margin-bottom:18px}.countdown-orbit{width:76px;height:76px;border-radius:50%;border:1px solid var(--gold);display:grid;place-items:center;align-content:center;box-shadow:inset 0 0 0 6px rgba(184,154,88,.08)}.countdown-orbit b{font-family:var(--serif);font-size:24px}.countdown-orbit span{font-size:7px;color:var(--muted)}.settlement-board{display:flex;gap:6px;padding:15px;border-block:1px solid var(--line);margin-bottom:9px}.settlement-board .playing-card{width:42px}.result-list{display:grid}.result-row{display:grid;grid-template-columns:42px 42px 1fr 115px 90px;align-items:center;gap:11px;padding:10px;border-bottom:1px solid var(--line)}.result-row.winner{background:#eee4cb;border-radius:3px 14px 3px 14px;border-bottom-color:transparent}.result-row.folded:not(.winner){opacity:.58}.result-place{display:grid;text-align:center}.result-place b{font-family:var(--serif);font-size:22px;color:var(--gold)}.result-place span{font-size:6px;color:var(--muted)}.result-name{display:grid}.result-name strong{font-size:12px}.result-name strong i{font-style:normal;background:var(--wine);color:#fff;border-radius:99px;padding:2px 6px;font-size:7px;margin-left:6px}.result-name span{font-size:9px;color:var(--muted)}.result-cards{display:flex;gap:5px}.mini-face{font-family:Georgia,serif;font-style:normal;background:#fff;border:1px solid var(--line);border-radius:4px;padding:6px 5px;font-size:11px;box-shadow:0 3px 8px rgba(0,0,0,.08)}.mini-face.red{color:var(--red)}.result-net{text-align:right;font-family:var(--serif);font-size:14px;color:var(--wine)}.result-net.up{color:#23754f}
.pot-breakdown{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:7px;margin:9px 0 12px}.pot-award{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:2px 9px;padding:9px 11px;border:1px solid rgba(184,154,88,.34);border-radius:7px;background:#f4eddb}.pot-award span{font-size:8px;letter-spacing:.12em;color:var(--wine)}.pot-award b{justify-self:end;font-family:var(--serif);font-size:14px}.pot-award em{grid-column:1/-1;font-style:normal;font-size:8px;color:var(--muted)}.pot-award.returned{background:#eef1eb;border-style:dashed}.pot-award.returned span{color:#4b6557}

@media(max-width:1050px){.music-console{margin-left:auto}.connection{display:none}.lobby-side{grid-template-columns:1fr 1fr 1fr}.quick-links{align-self:start}.settlement-modal{padding:28px}}
@media(max-width:720px){.topbar{height:60px}.music-console{order:2;margin-left:auto}.music-button{min-width:42px;width:42px;padding:4px}.music-button>span,.music-button>em{display:none}.music-menu{right:-46px;width:290px}.profile{order:3;margin-left:7px;padding-left:7px}.profile>div{display:none}.lobby-side{display:grid;grid-template-columns:1fr;margin-top:16px}.etiquette{display:none}.lobby-heading{display:grid}.lobby-heading .primary-btn{justify-self:start}.auto-start-pill{position:absolute;left:50%;transform:translateX(-50%);top:45px;z-index:3;background:rgba(255,253,247,.92);white-space:nowrap}.table-tools{margin-left:auto}.table-tools .soft-btn{padding:8px 11px;font-size:9px}.felt{box-shadow:inset 0 0 0 2px rgba(255,255,255,.09),inset 0 22px 70px rgba(0,0,0,.2),0 0 0 2px #6f5b31,0 0 0 5px #bda46c,0 25px 55px rgba(34,34,28,.28)}.settlement-modal{padding:25px 16px}.settlement-head h2{font-size:28px}.result-row{grid-template-columns:30px 34px 1fr 72px;padding:9px 3px;gap:6px}.result-avatar{width:32px;height:32px}.result-cards{grid-column:3/4}.result-net{grid-column:4;grid-row:1/3}.result-name strong{font-size:10px}.history-row{grid-template-columns:58px 65px 1fr}.history-row time{display:none}.ranking-modal,.history-modal{padding:28px 16px}.quick-links button{padding:12px}.profile-card{padding:23px}.modal{max-height:94vh}}

/* v3 · cinematic table room */
body.table-mode{background:#070b09;color:#f5efe2;overflow-x:hidden}
body.table-mode .grain{opacity:.11;mix-blend-mode:screen}
body.table-mode .app-shell{width:100%;max-width:none;padding:0 28px 22px;background:radial-gradient(circle at 50% 58%,rgba(45,98,76,.16),transparent 44%),linear-gradient(180deg,#111713 0,#070b09 78%)}
body.table-mode .app-shell::before{color:rgba(224,197,128,.018)}
body.table-mode .topbar{height:72px;border-color:rgba(232,216,170,.12);color:#f8f2e6}
body.table-mode .brand-mark{background:#d7b85f;color:#16130d}
body.table-mode .brand small,body.table-mode .connection,body.table-mode .profile small{color:rgba(245,239,226,.5)}
body.table-mode .music-button,body.table-mode .icon-btn{background:rgba(255,255,255,.055);border-color:rgba(232,216,170,.18);color:#f8f2e6}
body.table-mode .music-button>i{background:#d7b85f;color:#15140f}
body.table-mode .ghost-btn{color:rgba(245,239,226,.62)}
body.table-mode .ghost-btn:hover{color:#fff;background:rgba(255,255,255,.07)}
.table-view{padding:14px 0 0;min-height:calc(100vh - 72px)}
.table-toolbar{height:56px;margin:0 auto 5px;width:min(1500px,96vw);padding:0 10px;color:#f5efe2}
.table-toolbar strong{font-size:22px;font-weight:500}.table-toolbar small{color:rgba(245,239,226,.42)}
.table-tools{align-items:center}.table-tools .soft-btn{background:rgba(255,255,255,.07);color:#f8f2e6;border-color:rgba(232,216,170,.18);box-shadow:none}.table-tools .soft-btn:hover{background:rgba(215,184,95,.15);border-color:rgba(215,184,95,.55)}
.auto-start-pill{height:38px;color:rgba(245,239,226,.55);background:rgba(255,255,255,.045);border-color:rgba(232,216,170,.16)}.auto-start-pill.live{color:#f7f0e1}
.game-layout{position:relative;display:block;width:100%;max-width:none}
.felt-wrap{min-height:calc(100vh - 148px);padding:16px 0 112px;border-radius:0;background:radial-gradient(ellipse at center,rgba(32,95,72,.17),transparent 60%);overflow:visible}
.felt{width:min(1420px,92vw);aspect-ratio:2.08;border-width:20px;background-color:#0f4738;background-image:radial-gradient(ellipse at 50% 44%,rgba(31,116,85,.76) 0,rgba(13,72,55,.94) 54%,rgba(4,35,26,.98) 100%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.42' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.14'/%3E%3C/svg%3E");box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),inset 0 35px 110px rgba(0,0,0,.3),0 0 0 3px #6e5725,0 0 0 12px #c4a656,0 0 0 16px #3b2f18,0 45px 120px rgba(0,0,0,.62);animation:tableReveal .75s cubic-bezier(.2,.75,.2,1) both}
.felt::before{inset:-32px;border:9px solid #17140f;box-shadow:inset 0 2px 0 #f0d88d,0 2px 0 rgba(255,255,255,.08)}
.felt::after{content:"";position:absolute;inset:12px;border-radius:50%;pointer-events:none;box-shadow:inset 0 0 45px rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.035)}
.felt-line{inset:42px;border:1px dashed rgba(239,214,145,.24)}
@keyframes tableReveal{from{opacity:0;transform:translateY(16px) scale(.975)}to{opacity:1;transform:none}}
.table-signature{top:40%}.table-signature span{font-size:42px;color:rgba(232,216,170,.2)}.table-signature b{font-size:34px;letter-spacing:9px;color:rgba(255,255,255,.105)}.table-signature small{font-size:9px;letter-spacing:8px;color:rgba(255,255,255,.11)}
.pot{top:16%;padding:10px 19px;gap:9px;background:rgba(2,24,17,.72);border-color:rgba(232,216,170,.35);box-shadow:0 10px 30px rgba(0,0,0,.24)}.pot span,.pot small{font-size:9px}.pot b{font-size:25px;color:#f0d987}
.board{top:49%;gap:11px;z-index:3}.board .playing-card{width:78px;border-radius:8px 15px 8px 15px;padding:9px;font-size:18px;box-shadow:0 15px 28px rgba(0,0,0,.35)}.board .playing-card .suit{font-size:28px}.board .playing-card:nth-child(2){animation-delay:.05s}.board .playing-card:nth-child(3){animation-delay:.1s}.board .playing-card:nth-child(4){animation-delay:.15s}.board .playing-card:nth-child(5){animation-delay:.2s}
.seat{min-width:172px;z-index:4}.seat:nth-child(1){top:97%}.seat:nth-child(2){left:5%;top:71%}.seat:nth-child(3){left:10%;top:17%}.seat:nth-child(4){top:2%}.seat:nth-child(5){left:90%;top:17%}.seat:nth-child(6){left:95%;top:71%}
.seat-pod{min-width:158px;justify-content:flex-start;gap:11px;padding:7px 14px 7px 7px;border-radius:12px 25px 12px 25px;background:linear-gradient(135deg,rgba(255,253,247,.98),rgba(232,224,205,.96));border:1px solid rgba(240,217,145,.72);box-shadow:0 16px 35px rgba(0,0,0,.34)}
.seat:not(.folded) .seat-pod:not(.vacant){color:#171815}.seat.hero .seat-pod{background:linear-gradient(135deg,#fffdf5,#f0dfad);border-color:#ffe7a0;box-shadow:0 0 0 2px rgba(240,209,117,.4),0 18px 40px rgba(0,0,0,.4)}
.seat-pod.vacant{min-width:136px;background:rgba(3,31,23,.58);border:1px dashed rgba(240,217,145,.24);color:rgba(255,255,255,.65);box-shadow:none}.seat-pod.vacant .seat-avatar{background:rgba(255,255,255,.08);color:#e4d29a}.seat-pod.vacant .seat-copy span{color:rgba(255,255,255,.4)}
.seat-avatar{width:47px;height:47px;flex:0 0 47px;font-size:17px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.seat-copy b{font-size:12px}.seat-copy span{font-size:10px;margin-top:3px}.seat-tag{right:-7px;top:-9px;font-size:7px;padding:4px 7px}.dealer-chip{left:-8px;bottom:-9px;width:25px;height:25px;font-size:9px;border:2px solid #6f5b27;box-shadow:0 5px 12px rgba(0,0,0,.25)}
.seat.acting .seat-pod{animation:actingGlowV3 1.15s ease-in-out infinite alternate}@keyframes actingGlowV3{from{box-shadow:0 0 0 3px rgba(242,211,119,.76),0 0 25px rgba(242,211,119,.28),0 16px 35px rgba(0,0,0,.34)}to{box-shadow:0 0 0 6px rgba(242,211,119,.25),0 0 48px rgba(242,211,119,.5),0 16px 35px rgba(0,0,0,.34)}}
.hole-cards{gap:5px;bottom:calc(100% + 8px)}.seat:nth-child(3) .hole-cards,.seat:nth-child(4) .hole-cards,.seat:nth-child(5) .hole-cards{top:calc(100% + 8px)}.hole-cards .playing-card{width:47px;border-radius:6px 10px 6px 10px;padding:5px;font-size:12px;box-shadow:0 9px 20px rgba(0,0,0,.35)}.hole-cards .playing-card .suit{font-size:16px}
.seat.bet .seat-pod::after{top:calc(100% + 10px);padding:5px 11px;font-size:9px;background:#e1bd5f;box-shadow:0 5px 13px rgba(0,0,0,.25)}
.hand-message{bottom:16%;font-size:16px;color:rgba(255,250,231,.8);text-shadow:0 2px 10px rgba(0,0,0,.5)}
.action-dock{bottom:6px;width:min(1040px,88vw);min-height:94px;padding:14px 18px;gap:12px;border-radius:18px 36px 18px 36px;background:rgba(13,18,15,.92);border:1px solid rgba(230,202,125,.4);box-shadow:0 26px 80px rgba(0,0,0,.58),inset 0 1px rgba(255,255,255,.07);color:#f8f1e4;backdrop-filter:blur(22px)}.action-dock.idle{opacity:.72}.turn-copy{min-width:145px}.turn-copy span{color:rgba(245,239,226,.45)}.turn-copy b{font-size:15px;color:#fff}.raise-control output{font-size:18px;color:#ead386}.raise-control input{accent-color:#d4b351}.action-btn{min-width:92px;padding:15px 22px;border-radius:14px 26px 14px 26px;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16);color:#f8f2e6;font-size:14px}.action-btn:hover{background:rgba(255,255,255,.14)}.action-btn.danger{color:#ff9f95;border-color:rgba(255,127,115,.25)}.action-btn.dark{background:#d5b451;color:#16130c;box-shadow:0 9px 24px rgba(213,180,81,.2)}
.game-sidebar{display:flex;position:fixed;z-index:65;right:18px;top:88px;bottom:18px;width:350px;height:auto;margin:0;border-radius:20px 5px 20px 5px;background:rgba(247,241,225,.97);color:#171815;box-shadow:0 30px 100px rgba(0,0,0,.56);transform:translateX(calc(100% + 40px));opacity:0;pointer-events:none;transition:transform .42s cubic-bezier(.2,.75,.2,1),opacity .3s}.game-sidebar.open{transform:none;opacity:1;pointer-events:auto}.game-sidebar .panel-head button{margin-left:8px;width:28px;height:28px;border:0;border-radius:50%;background:#e7e0d1;cursor:pointer}.log-toggle{display:inline-flex!important}
.activity-log{gap:9px}.log-row{padding:13px;font-size:11px}.legend{font-size:10px}

@media(max-width:900px){body.table-mode .app-shell{padding-inline:14px}.table-toolbar{width:100%;padding:0}.table-toolbar>div:nth-child(2){display:grid}.felt-wrap{min-height:760px;padding-top:36px}.felt{width:96vw;aspect-ratio:1.35}.board .playing-card{width:58px;padding:6px;font-size:13px}.board .playing-card .suit{font-size:20px}.seat{min-width:120px}.seat-pod{min-width:118px;padding:5px 9px 5px 5px}.seat-avatar{width:38px;height:38px;flex-basis:38px}.seat-copy b{font-size:10px}.seat-copy span{font-size:8px}.hole-cards .playing-card{width:38px}.action-dock{width:94vw}.game-sidebar{width:min(350px,92vw)}}
@media(min-width:901px) and (max-height:820px){body.table-mode .topbar{height:56px}.table-view{min-height:calc(100vh - 56px);padding-top:6px}.table-toolbar{height:48px}.felt-wrap{min-height:calc(100vh - 110px);padding-top:8px}.seat:nth-child(1){top:79%}.action-dock{position:fixed;z-index:40;bottom:10px}}
@media(max-width:600px){body.table-mode .app-shell{padding:0 8px 14px}.table-view{padding-top:6px}.table-toolbar{height:70px;align-items:flex-start;padding-top:8px}.table-toolbar .ghost-btn{padding-inline:6px}.table-toolbar>div:nth-child(2){display:none}.table-tools{gap:5px}.table-tools .soft-btn{font-size:8px;padding:8px}.auto-start-pill{position:absolute;top:43px;left:50%;height:28px;transform:translateX(-50%);font-size:8px}.felt-wrap{min-height:720px;padding:48px 0 126px}.felt{width:94vw;height:560px;aspect-ratio:auto;border-width:11px;border-radius:46%}.felt::before{inset:-19px;border-width:6px}.felt-line{inset:23px}.pot{top:21%;padding:7px 11px}.pot b{font-size:18px}.board{top:48%;gap:4px}.board .playing-card{width:43px;padding:4px;font-size:11px;border-radius:5px 8px 5px 8px}.board .playing-card .suit{font-size:15px}.table-signature{top:39%}.table-signature b{font-size:20px}.table-signature span{font-size:26px}.seat{min-width:82px}.seat:nth-child(1){left:50%;top:98%}.seat:nth-child(2){left:5%;top:73%}.seat:nth-child(3){left:7%;top:27%}.seat:nth-child(4){left:50%;top:3%}.seat:nth-child(5){left:93%;top:27%}.seat:nth-child(6){left:95%;top:73%}.seat-pod,.seat-pod.vacant{min-width:78px;gap:4px;padding:4px 6px 4px 4px;border-radius:8px 15px 8px 15px}.seat-avatar{width:31px;height:31px;flex-basis:31px;font-size:10px}.seat-copy b{max-width:55px;overflow:hidden;text-overflow:ellipsis;font-size:8px}.seat-copy span{font-size:7px}.seat-tag{font-size:5px;padding:2px 4px}.dealer-chip{width:18px;height:18px;font-size:6px}.hole-cards{gap:2px}.hole-cards .playing-card{width:29px;padding:3px;font-size:8px}.hole-cards .playing-card .suit{font-size:10px}.seat.bet .seat-pod::after{font-size:6px;padding:3px 6px}.hand-message{bottom:15%;font-size:11px;white-space:nowrap}.action-dock{bottom:8px;width:96vw;min-height:108px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:10px;border-radius:13px 24px 13px 24px}.turn-copy{min-width:0}.raise-control{grid-column:2/4}.action-btn{min-width:0;padding:11px 4px;font-size:11px}.game-sidebar{top:70px;right:8px;bottom:8px}}

/* v4 · stable cards, table talk, novice hand guide */
.lobby-actions{display:flex;align-items:center;gap:9px}.refresh-btn.syncing{pointer-events:none;animation:refreshPulse .65s ease infinite alternate}@keyframes refreshPulse{to{border-color:var(--gold);box-shadow:0 0 0 5px rgba(184,154,88,.12)}}
.playing-card{backface-visibility:hidden;contain:paint}.board .playing-card{width:92px;padding:10px;font-size:21px}.board .playing-card .suit{font-size:32px}.hole-cards .playing-card{width:58px;padding:6px;font-size:15px}.hole-cards .playing-card .suit{font-size:20px}
.hand-readout{position:absolute;z-index:5;right:13%;top:57%;display:grid;min-width:154px;padding:10px 15px;border:1px solid rgba(238,210,132,.24);border-radius:7px 18px 7px 18px;background:rgba(4,31,23,.76);box-shadow:0 14px 35px rgba(0,0,0,.26);backdrop-filter:blur(12px);color:#f8f0dc}.hand-readout span{font-size:8px;letter-spacing:1.5px;color:rgba(248,240,220,.48)}.hand-readout b{margin-top:2px;font-family:var(--serif);font-size:19px;color:#fff}.hand-readout small{font-size:9px;color:rgba(248,240,220,.56)}.hand-readout.made{border-color:rgba(234,199,101,.55);box-shadow:0 0 24px rgba(211,174,74,.13)}.hand-readout.made b{color:#f0d678}
.seat-chat-bubble{position:absolute;z-index:12;left:50%;bottom:calc(100% + 96px);transform:translateX(-50%);width:max-content;max-width:220px;padding:10px 14px;border-radius:18px 18px 18px 4px;background:#fff9e9;color:#171815;font-size:12px;line-height:1.45;text-align:left;box-shadow:0 15px 38px rgba(0,0,0,.38);animation:bubbleIn .28s cubic-bezier(.2,.8,.2,1) both}.seat-chat-bubble::after{content:"";position:absolute;left:18px;bottom:-7px;border:8px solid transparent;border-top-color:#fff9e9;border-bottom:0}.seat:nth-child(3) .seat-chat-bubble,.seat:nth-child(4) .seat-chat-bubble,.seat:nth-child(5) .seat-chat-bubble{bottom:auto;top:calc(100% + 92px);border-radius:4px 18px 18px 18px}.seat:nth-child(3) .seat-chat-bubble::after,.seat:nth-child(4) .seat-chat-bubble::after,.seat:nth-child(5) .seat-chat-bubble::after{top:-7px;bottom:auto;border-top:0;border-bottom:8px solid #fff9e9}@keyframes bubbleIn{from{opacity:0;transform:translate(-50%,8px) scale(.94)}to{opacity:1;transform:translate(-50%,0) scale(1)}}
.chat-toggle{position:relative}.chat-toggle i{position:absolute;right:-5px;top:-7px;min-width:18px;height:18px;padding:0 4px;border-radius:99px;background:#b83a35;color:#fff;font:700 9px/18px sans-serif;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.chat-panel{position:fixed;z-index:64;right:18px;bottom:122px;width:min(350px,calc(100vw - 36px));height:390px;display:flex;flex-direction:column;border:1px solid rgba(230,202,125,.34);border-radius:22px 7px 22px 7px;background:rgba(12,18,15,.96);box-shadow:0 30px 90px rgba(0,0,0,.58);color:#f8f1e4;backdrop-filter:blur(22px);animation:chatPanelIn .3s cubic-bezier(.2,.75,.2,1) both}@keyframes chatPanelIn{from{opacity:0;transform:translateY(12px) scale(.97)}}.chat-head{display:flex;align-items:center;padding:15px 16px;border-bottom:1px solid rgba(230,202,125,.14)}.chat-head div{display:grid}.chat-head span{font-size:7px;letter-spacing:2px;color:#c7a957}.chat-head strong{font-family:var(--serif);font-size:17px}.chat-head button{margin-left:auto;width:30px;height:30px;border:0;border-radius:50%;background:rgba(255,255,255,.08);color:#fff;cursor:pointer}.chat-stream{flex:1;display:flex;flex-direction:column;gap:10px;padding:14px;overflow:auto;scrollbar-width:thin}.chat-stream>p{margin:auto;color:rgba(248,241,228,.42);font-size:11px}.chat-line{align-self:flex-start;display:grid;max-width:86%}.chat-line b{margin:0 0 3px 7px;font-size:8px;letter-spacing:.5px;color:rgba(248,241,228,.45)}.chat-line span{padding:9px 12px;border-radius:5px 16px 16px 16px;background:rgba(255,255,255,.09);font-size:12px;line-height:1.5;overflow-wrap:anywhere}.chat-line.mine{align-self:flex-end}.chat-line.mine b{text-align:right;margin:0 7px 3px 0;color:#d8bd71}.chat-line.mine span{border-radius:16px 5px 16px 16px;background:#cfad50;color:#17130b}.chat-form{display:flex;gap:8px;padding:12px;border-top:1px solid rgba(230,202,125,.14)}.chat-form input{min-width:0;flex:1;height:42px;padding:0 13px;border:1px solid rgba(255,255,255,.13);border-radius:11px;background:rgba(255,255,255,.07);color:#fff;outline:none}.chat-form input:focus{border-color:#cdb15e;box-shadow:0 0 0 3px rgba(205,177,94,.12)}.chat-form button{padding:0 16px;border:0;border-radius:11px;background:#d2b252;color:#17130c;font-weight:800;cursor:pointer}

@media(max-width:900px){.board .playing-card{width:67px}.hole-cards .playing-card{width:45px}.hand-readout{right:9%;top:59%}.chat-panel{bottom:132px}}
@media(max-width:600px){.lobby-actions{width:100%;justify-content:flex-start}.lobby-actions .soft-btn,.lobby-actions .primary-btn{padding:10px 14px}.table-tools{max-width:270px;flex-wrap:wrap;justify-content:flex-end}.table-tools .soft-btn{height:30px}.table-tools #addBotBtn{font-size:0}.table-tools #addBotBtn::before{content:"＋AI";font-size:8px}.table-tools #refreshRoomBtn{font-size:0;width:32px;padding:0}.table-tools #refreshRoomBtn::before{content:"↻";font-size:13px}.table-tools #logToggleBtn{font-size:0}.table-tools #logToggleBtn::before{content:"记录";font-size:8px}.board .playing-card{width:49px;padding:5px;font-size:12px}.board .playing-card .suit{font-size:17px}.hole-cards .playing-card{width:36px;padding:4px;font-size:9px}.hole-cards .playing-card .suit{font-size:12px}.seat:nth-child(1){top:82%}.hand-readout{top:59%;right:50%;transform:translateX(50%);min-width:125px;padding:7px 10px;text-align:center}.hand-readout b{font-size:15px}.hand-readout small{font-size:7px}.seat-chat-bubble{bottom:calc(100% + 67px);max-width:145px;padding:7px 10px;font-size:10px}.seat:nth-child(3) .seat-chat-bubble,.seat:nth-child(4) .seat-chat-bubble,.seat:nth-child(5) .seat-chat-bubble{top:calc(100% + 64px)}.action-dock{position:fixed;z-index:40;bottom:8px}.chat-panel{left:8px;right:8px;bottom:128px;width:auto;height:330px}}

/* v5 · ready check, clear card lanes, visible custom deck */
.board{top:42%}.hand-readout{top:59%}
.deal-shoe{position:absolute;z-index:4;right:7%;top:42%;transform:translateY(-50%);display:flex;align-items:center;gap:11px;color:#f7ecd1}.deck-cards{position:relative;width:60px;height:82px}.deck-cards i{position:absolute;inset:0;width:54px;aspect-ratio:.70;border:4px solid #f7f2e7;border-radius:7px 12px 7px 12px;background:repeating-linear-gradient(45deg,#173f37 0 4px,#d8c99f 4px 6px);background-position:center;background-size:cover;box-shadow:0 12px 25px rgba(0,0,0,.35)}.deck-cards i:nth-child(1){transform:translate(-8px,-7px) rotate(-3deg);opacity:.55}.deck-cards i:nth-child(2){transform:translate(-4px,-3px) rotate(-1deg);opacity:.78}.deck-cards i:nth-child(3){transform:none}.deal-shoe>span{display:grid;min-width:92px}.deal-shoe b{font-family:var(--serif);font-size:14px}.deal-shoe small{font-size:8px;color:rgba(247,236,209,.5)}.deal-shoe small em{font-style:normal;color:#e8c970}
.ready-panel{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;padding-inline:8px}.ready-panel>div{display:grid}.ready-panel span{font-size:8px;letter-spacing:2px;color:#c9aa54}.ready-panel b{font-family:var(--serif);font-size:18px;color:#fff}.ready-panel small{font-size:9px;color:rgba(248,241,228,.46)}.ready-panel button{min-width:150px;padding:15px 24px;border:1px solid #efd47e;border-radius:14px 28px 14px 28px;background:linear-gradient(135deg,#efd16e,#cfa743);color:#17130b;font-weight:900;cursor:pointer;box-shadow:0 10px 28px rgba(211,174,74,.25);transition:.2s}.ready-panel button:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 14px 35px rgba(211,174,74,.38)}.ready-panel button:disabled{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.45);box-shadow:none;cursor:default}.action-dock.awaiting{opacity:1;min-height:94px}.action-dock.awaiting>:not(.ready-panel){display:none}
.ready-chip{position:absolute;left:-8px;top:-10px;padding:4px 7px;border-radius:99px;background:#2d8a61;color:#fff;font-size:6px;font-style:normal;letter-spacing:.7px;box-shadow:0 5px 12px rgba(0,0,0,.22)}
.settlement-actions{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:18px}.settlement-actions p{margin:0;color:var(--muted);font-size:10px}.settlement-actions button:disabled{opacity:.48;pointer-events:none}

@media(max-width:1100px){.deal-shoe{right:2%}.deal-shoe>span{display:none}}
@media(max-width:900px){.board{top:42%}.deal-shoe{right:2.5%;top:42%}.deck-cards{width:45px;height:64px}.deck-cards i{width:42px}.hand-readout{top:60%}}
@media(max-width:600px){.board{top:42%}.seat:nth-child(1){top:88%}.seat:nth-child(2){left:16%}.seat:nth-child(3){left:16%}.seat:nth-child(5){left:84%}.seat:nth-child(6){left:84%}.hand-readout{top:60%}.deal-shoe{right:1%;top:42%}.deck-cards{width:35px;height:51px}.deck-cards i{width:33px;border-width:3px}.deck-cards i:nth-child(1){transform:translate(-4px,-4px) rotate(-3deg)}.deck-cards i:nth-child(2){transform:translate(-2px,-2px) rotate(-1deg)}.action-dock.awaiting{display:flex}.ready-panel{grid-column:1/-1;gap:8px;padding-inline:0}.ready-panel>div{min-width:0}.ready-panel b{font-size:14px;white-space:nowrap}.ready-panel small{font-size:7px;white-space:nowrap}.ready-panel button{flex:0 0 auto;min-width:112px;padding:13px 12px}.settlement-actions{align-items:stretch;flex-direction:column}.settlement-actions button{width:100%}}

/* v6 · 德州扑克练习室：清晰、克制、以复盘为中心 */
:root{--paper:#ece6d8;--paper-2:#dfd6c4;--ink:#24251f;--muted:#6e6b60;--line:rgba(51,48,39,.18);--felt:#205344;--felt-dark:#143a31;--cream:#f8f1df;--red:#963b35;--blue:#405767;--gold:#a8833f;--gold-light:#dbc78f;--wine:#963b35;--shadow:0 18px 50px rgba(45,39,27,.11);--serif:"Songti SC","STSong","Iowan Old Style",serif;--sans:"PingFang SC","Hiragino Sans GB","Avenir Next",sans-serif}
body{background-color:var(--paper);background-image:linear-gradient(rgba(92,76,48,.035) 1px,transparent 1px);background-size:100% 32px}.grain{opacity:.08}.site-credit{position:fixed;z-index:8;right:22px;bottom:14px;color:rgba(50,47,39,.48);font-size:9px;letter-spacing:.7px}.table-mode .site-credit{display:none}
.brand{gap:10px}.brand-mark{width:36px;height:36px;border-radius:8px;background:var(--wine);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}.brand strong{font-size:19px}.brand small{font-size:8px;letter-spacing:.9px}.eyebrow{letter-spacing:1.2px;color:#786f5e}.auth-copy::after{content:"油豆腐制作 · 多人博弈游戏学习与练习";margin-top:38px;border:0;border-left:3px solid var(--wine);border-radius:0;padding:5px 10px;transform:none;letter-spacing:.8px}.auth-copy h1{letter-spacing:-3px;line-height:1.02}.auth-copy h1 em{font-style:normal;color:var(--wine)}
.panel,.auth-card{border-radius:10px;background:rgba(248,243,231,.88);border-color:rgba(68,60,43,.15);box-shadow:0 14px 40px rgba(53,45,30,.08);backdrop-filter:none}.auth-card{padding:34px}.soft-btn,.primary-btn,.icon-btn,.action-btn{border-radius:8px}.soft-btn{background:#f8f3e7}.primary-btn{background:var(--wine);box-shadow:0 7px 18px rgba(111,38,34,.16)}.primary-btn:hover{box-shadow:0 9px 22px rgba(111,38,34,.22)}.segmented{border-radius:8px}.segmented button,.segmented button.on{border-radius:6px}.room-row{border-radius:7px;background:rgba(255,253,246,.52);border-bottom:1px solid rgba(62,55,42,.12)}.room-row:hover{background:#faf6eb}.profile-card{border-radius:10px}.profile-card::after{display:none}.avatar-medal{border-radius:50%}.cardback-uploader,.quick-links button{border-radius:7px}.lobby-heading h2{letter-spacing:-1px}
body.table-mode{background:#101713}.table-mode .grain{opacity:.045}.table-mode .app-shell{background:#101713}.table-mode .brand-mark{background:#a8453f;color:#fff}.table-mode .music-button>i{background:#b18e4d}.table-toolbar strong{font-family:var(--serif)}.table-tools .soft-btn,.auto-start-pill{border-radius:7px;background:#18221d;border-color:rgba(224,203,151,.2)}
.felt-wrap{background:none}.felt{background-color:#164838;background-image:radial-gradient(ellipse at 50% 45%,rgba(43,108,83,.72),rgba(19,73,57,.92) 58%,#10392e 100%);border-color:#30291d;box-shadow:inset 0 0 0 2px rgba(255,255,255,.06),inset 0 20px 75px rgba(0,0,0,.24),0 0 0 3px #776239,0 0 0 9px #b39a5d,0 24px 70px rgba(0,0,0,.48);animation:none}.felt::before{border-color:#211d16;box-shadow:inset 0 1px 0 #d8c58b}.felt::after{box-shadow:inset 0 0 35px rgba(0,0,0,.24)}.felt-line{border-style:solid;border-color:rgba(224,206,157,.16)}
.table-signature{top:38%}.table-signature span{font-size:35px;color:rgba(234,217,171,.16)}.table-signature b{font-size:24px;letter-spacing:5px;color:rgba(255,248,226,.095)}.table-signature small{font-size:8px;letter-spacing:2px;color:rgba(255,248,226,.13)}
.pot{z-index:10;top:18%;border-radius:8px;background:#102b23;border-color:rgba(222,199,137,.38);box-shadow:0 7px 18px rgba(0,0,0,.2)}.pot span,.pot small{letter-spacing:.4px}.board{z-index:7;top:43%}.seat-layer{z-index:6}.hand-readout{z-index:8;border-radius:8px;background:#123128;box-shadow:0 8px 22px rgba(0,0,0,.2)}
.seat-pod{border-radius:10px;background:#f0eadc;border-color:#d5c59d;box-shadow:0 10px 24px rgba(0,0,0,.28)}.seat.hero .seat-pod{background:#eadfbf;border-color:#d6bd78;box-shadow:0 0 0 2px rgba(224,195,111,.32),0 10px 24px rgba(0,0,0,.3)}.seat-pod.vacant{border-radius:8px;background:rgba(12,48,38,.62)}.seat-avatar{background:#384a52}.seat.bot .seat-avatar{background:#4d5d66}.seat-tag{border-radius:5px;background:#a33f3a}.ready-chip{border-radius:5px;background:#347155}.dealer-chip{background:#d8c582;border-color:#695726}.seat.acting .seat-pod{animation:none;box-shadow:0 0 0 4px rgba(224,195,111,.48),0 12px 27px rgba(0,0,0,.34)}
.hole-cards .playing-card,.board .playing-card{border-radius:7px;box-shadow:0 8px 20px rgba(0,0,0,.28)}.seat:nth-child(4) .hole-cards{left:calc(100% + 2px);top:50%;bottom:auto;transform:translateY(-50%)}.seat:nth-child(4) .seat-chat-bubble{left:auto;right:calc(100% + 12px);top:50%;bottom:auto;transform:translateY(-50%)}.seat:nth-child(4) .seat-chat-bubble::after{display:none}
.deal-shoe{z-index:8}.deck-cards i{border-radius:7px;background-color:#173f37}.action-dock{border-radius:12px;background:#151d19;border-color:rgba(225,204,150,.35);box-shadow:0 18px 48px rgba(0,0,0,.5);backdrop-filter:none}.action-btn{border-radius:8px}.action-btn.dark{background:#c7a952;box-shadow:none}.ready-panel button{border-radius:8px;background:#c7a952;box-shadow:none}.chat-panel,.game-sidebar{border-radius:10px}.chat-line span,.chat-line.mine span{border-radius:8px}.settlement-modal,.ranking-modal,.history-modal{border-radius:10px}.result-row.winner{border-radius:7px;background:#e7dcc0}.countdown-orbit{border-radius:50%}
@media(max-width:900px){.seat:nth-child(4) .hole-cards{left:calc(100% + 5px)}.table-signature b{font-size:19px}.table-signature small{font-size:7px}.pot{top:19%}}
@media(max-width:600px){.site-credit{position:static;text-align:center;margin:12px 0 4px}.auth-copy h1{letter-spacing:-2px}.table-signature b{font-size:14px;letter-spacing:2px}.table-signature small{display:none}.pot{top:21%;z-index:10}.board{top:43%;z-index:7}.seat-layer{z-index:6}.seat:nth-child(4) .hole-cards{left:calc(100% + 4px);top:50%;transform:translateY(-50%)}.seat:nth-child(4) .seat-chat-bubble{right:calc(100% + 6px);max-width:110px}.ready-panel button{border-radius:7px}.table-tools #addBotBtn::before{content:"＋机"}}

/* v13 · 三榜称号与个人名片 */
#profileTitle{display:inline-block;margin-right:7px;padding:1px 5px;border:1px solid rgba(168,131,63,.45);border-radius:4px;color:var(--gold);font-style:normal;font-size:7px;letter-spacing:.3px}.title-ribbon{position:relative;width:100%;margin:14px 0 7px;padding:10px 36px 10px 12px;border:1px solid rgba(168,131,63,.28);border-radius:7px;background:linear-gradient(100deg,#f2ead7,#faf6eb);color:var(--ink);cursor:pointer;text-align:left}.title-ribbon span{display:block;font-size:7px;letter-spacing:1.3px;color:var(--muted)}.title-ribbon b{display:block;margin-top:3px;font-family:var(--serif);font-size:15px;color:#766039}.title-ribbon em{position:absolute;right:11px;top:50%;transform:translateY(-50%);font-style:normal;font-size:8px;color:var(--wine)}.title-ribbon.equipped::before{content:"◆";position:absolute;left:-7px;top:-8px;color:var(--gold);font-size:12px}.profile-edit-link{border:0;background:transparent;color:var(--muted);font-size:8px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;margin-bottom:15px}.profile-edit-link:hover{color:var(--wine)}
.profile-modal{width:min(620px,96vw);border-radius:10px;padding:34px}.profile-identity-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;padding-bottom:24px;border-bottom:1px solid var(--line)}.profile-identity-form label{display:grid;gap:6px;font-size:9px;font-weight:800;color:var(--muted)}.profile-identity-form label small{font-weight:400;font-size:7px}.profile-identity-form input{width:100%;border:1px solid var(--line);border-radius:7px;background:#fff;padding:11px 12px;outline:none}.profile-identity-form input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(168,131,63,.1)}.profile-identity-form .primary-btn{height:40px;padding:0 16px;white-space:nowrap}.title-vault{padding-top:22px}.title-vault>div:first-child{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:11px}.title-vault>div:first-child span{font-family:var(--serif);font-size:18px}.title-vault>div:first-child small{font-size:8px;color:var(--muted)}.title-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.title-options button{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;min-height:54px;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:rgba(255,255,255,.52);color:var(--ink);cursor:pointer;text-align:left}.title-options button:hover{border-color:var(--gold);background:#fff}.title-options button.selected{border-color:rgba(150,59,53,.55);background:#f2e7d8;box-shadow:inset 3px 0 var(--wine)}.title-options button>i{font-style:normal;color:var(--gold);text-align:center}.title-options button>span{display:grid}.title-options button b{font-family:var(--serif);font-size:12px}.title-options button small{font-size:7px;color:var(--muted)}.title-options button>em{font-style:normal;font-size:7px;color:var(--wine)}
.rank-tabs{max-width:500px;grid-template-columns:repeat(3,1fr)}.rank-title{width:max-content;margin-top:4px;padding:2px 6px;border:1px solid rgba(168,131,63,.3);border-radius:4px;color:#80672e;font-style:normal;font-size:7px;background:#f3ead4}.ranking-row:nth-child(-n+3){background:linear-gradient(90deg,rgba(232,216,170,.38),rgba(255,255,255,.22));border:1px solid rgba(184,154,88,.26);border-radius:7px}.ranking-row:nth-child(n+4):nth-child(-n+10) .rank-number{color:#80672e}.player-title-chip{position:absolute;left:48px;bottom:-9px;max-width:122px;padding:2px 6px;border:1px solid rgba(218,191,119,.42);border-radius:4px;background:#201d16;color:#e7ca79;font-style:normal;font-size:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 10px rgba(0,0,0,.25)}.seat.hero .player-title-chip{left:78px;bottom:-8px}.seat.bot .player-title-chip{display:none}
@media(max-width:720px){.profile-identity-form{grid-template-columns:1fr}.title-options{grid-template-columns:1fr}.profile-modal{padding:28px 16px}.rank-tabs{max-width:none}.ranking-row{grid-template-columns:34px 34px 1fr auto;padding-inline:8px}.rank-title{font-size:6px}.seat.hero .player-title-chip{left:62px}.player-title-chip{left:38px}}

/* v7 · game HUD */
body.table-mode .topbar{height:58px;padding-inline:8px;background:rgba(8,14,11,.82);border-bottom:1px solid rgba(215,190,125,.16);backdrop-filter:blur(16px)}
body.table-mode .brand strong{font-size:17px}body.table-mode .brand small{font-size:7px}.table-view{padding-top:6px;min-height:calc(100vh - 58px)}.table-toolbar{height:50px;margin-bottom:2px}.table-toolbar>div:nth-child(2){padding-left:4px}.table-toolbar strong{font-size:20px}.table-tools .soft-btn{height:38px;padding:0 15px}.auto-start-pill{height:38px}
.felt-wrap{min-height:calc(100vh - 116px);padding:14px 0 136px}.felt{width:min(1460px,94vw);box-shadow:inset 0 0 0 2px rgba(255,255,255,.055),inset 0 26px 100px rgba(0,0,0,.28),0 0 0 3px #675634,0 0 0 10px #a88d52,0 30px 90px rgba(0,0,0,.55)}.felt::after{inset:15px;box-shadow:inset 0 0 60px rgba(0,0,0,.3),0 0 90px rgba(17,93,67,.08)}.felt-line{inset:48px;border-color:rgba(231,210,153,.13)}
.pot{min-width:150px;justify-content:center;padding:12px 18px;margin-top:6px}.pot::before{content:attr(data-phase);position:absolute;left:50%;bottom:calc(100% + 7px);transform:translateX(-50%);width:max-content;padding:4px 9px;border-radius:5px;background:rgba(7,17,13,.72);border:1px solid rgba(219,199,143,.18);color:rgba(244,233,205,.7);font-size:8px;letter-spacing:.8px}.pot b{font-size:28px}.pot small{font-size:8px}
.hand-message{z-index:9;left:50%;top:29%;bottom:auto;padding:6px 12px;border:1px solid rgba(226,205,149,.18);border-radius:6px;background:rgba(7,27,21,.7);color:rgba(248,239,216,.78);font-family:var(--sans);font-size:10px;letter-spacing:.5px;white-space:nowrap;text-shadow:none}.hand-readout{right:9%;top:58%;min-width:178px;padding:12px 15px;border-left:3px solid #a98a45;border-radius:6px;background:rgba(8,29,22,.9)}.hand-readout span{font-size:7px}.hand-readout b{font-size:21px}.hand-readout small{font-size:8px}
.board{top:43%;gap:9px}.board .playing-card{width:86px;border-radius:8px;padding:9px;font-size:19px;box-shadow:0 13px 27px rgba(0,0,0,.34)}.board .playing-card .suit{font-size:29px}.board .playing-card:not(.placeholder){animation:boardDeal .26s cubic-bezier(.2,.75,.2,1) both}@keyframes boardDeal{from{opacity:0;transform:translateY(-16px) scale(.94)}to{opacity:1;transform:none}}
.seat{z-index:6}.seat:not(.hero) .seat-pod:not(.vacant){min-width:150px;padding:6px 12px 6px 6px;border:1px solid rgba(220,199,143,.34);background:linear-gradient(180deg,rgba(18,27,23,.96),rgba(8,16,13,.96));color:#f5ecd7;box-shadow:0 12px 28px rgba(0,0,0,.38)}.seat:not(.hero) .seat-copy b{color:#fff}.seat:not(.hero) .seat-copy span{color:rgba(242,232,208,.6)}.seat:not(.hero) .seat-avatar{width:42px;height:42px;flex-basis:42px;border:1px solid rgba(255,255,255,.12)}
.seat.hero{top:87%;min-width:250px;z-index:12}.seat.hero .seat-pod{min-width:232px;min-height:72px;padding:8px 18px 8px 8px;gap:13px;border:1px solid rgba(236,209,131,.72);border-radius:12px;background:linear-gradient(180deg,rgba(24,29,24,.98),rgba(9,15,12,.98));color:#fff;box-shadow:0 0 0 2px rgba(212,178,87,.2),0 18px 42px rgba(0,0,0,.52)}.seat.hero .seat-pod::before{content:"我的座位";position:absolute;left:82px;top:7px;color:#bda15b;font-size:7px;letter-spacing:1.2px}.seat.hero .seat-avatar{width:58px;height:58px;flex:0 0 58px;border:2px solid #d6b65e;font-size:19px;box-shadow:0 0 0 4px rgba(214,182,94,.12);background-color:#37464d;background-position:center;background-size:cover}.seat.hero .seat-copy{padding-top:10px;min-width:125px}.seat.hero .seat-copy b{font-size:14px;color:#fff}.seat.hero .seat-copy span{font-size:10px;color:rgba(245,235,211,.68)}.seat.hero .hole-cards{bottom:calc(100% + 9px);gap:7px}.seat.hero .hole-cards .playing-card{width:68px;border:2px solid rgba(255,255,255,.94);border-radius:9px;padding:8px;font-size:17px;box-shadow:0 15px 32px rgba(0,0,0,.45);animation:heroCardIn .3s cubic-bezier(.2,.8,.2,1) both}.seat.hero .hole-cards .playing-card:nth-child(2){animation-delay:.06s}.seat.hero .hole-cards .playing-card .suit{font-size:24px}@keyframes heroCardIn{from{opacity:0;transform:translateY(14px) rotate(-2deg)}to{opacity:1;transform:none}}
.seat.acting .seat-avatar{animation:activeAvatar 1.25s ease-in-out infinite alternate}@keyframes activeAvatar{to{box-shadow:0 0 0 5px rgba(232,198,105,.18),0 0 28px rgba(232,198,105,.46)}}.seat.hero.acting .seat-pod{box-shadow:0 0 0 3px rgba(223,190,98,.56),0 18px 45px rgba(0,0,0,.55)}.seat-tag{top:-7px;right:-5px;padding:3px 6px}.ready-chip{top:-8px}.dealer-chip{left:-8px;bottom:-8px}
.action-dock:not(.awaiting){display:grid;grid-template-columns:165px minmax(230px,1fr) repeat(3,112px);align-items:center}.action-dock{bottom:4px;width:min(1120px,92vw);min-height:96px;padding:13px 15px;border:1px solid rgba(222,196,126,.4);border-radius:12px;background:linear-gradient(180deg,rgba(19,27,23,.98),rgba(8,13,11,.98));box-shadow:0 22px 65px rgba(0,0,0,.6)}.turn-copy{min-width:0;padding-left:5px;border-right:1px solid rgba(255,255,255,.1)}.turn-copy span{font-size:8px;letter-spacing:1.4px;color:#b79b55}.turn-copy b{display:block;margin-top:5px;font-size:14px}.raise-control{padding:0 12px}.raise-control output{font-size:20px;color:#e1c46f}.action-btn{height:58px;min-width:0;padding:0 12px;border-radius:9px;font-size:15px}.action-btn.danger{background:rgba(129,43,39,.2);border-color:rgba(204,84,77,.42);color:#ffaaa3}.action-btn:not(.danger):not(.dark){background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}.action-btn.dark{background:linear-gradient(180deg,#ddc06c,#b89136);color:#19150c;font-weight:850}.action-btn:not(:disabled):hover{transform:translateY(-2px);filter:brightness(1.08)}.action-dock.idle{opacity:.82}.action-dock.awaiting{width:min(940px,92vw);background:rgba(10,17,14,.98)}
@media(min-width:901px) and (max-height:820px){.felt-wrap{padding-bottom:118px}.seat.hero{top:80%}.seat.hero .seat-pod{min-height:62px}.seat.hero .seat-avatar{width:50px;height:50px;flex-basis:50px}.seat.hero .hole-cards .playing-card{width:57px}.seat.hero .seat-pod::before{left:73px}.action-dock{min-height:86px}.action-btn{height:50px}}
@media(max-width:900px){.felt-wrap{padding-bottom:138px}.board .playing-card{width:62px}.seat:not(.hero) .seat-pod:not(.vacant){min-width:112px}.seat.hero{top:84%;min-width:190px}.seat.hero .seat-pod{min-width:178px;min-height:60px;padding:6px 11px 6px 6px;gap:8px}.seat.hero .seat-avatar{width:48px;height:48px;flex-basis:48px}.seat.hero .seat-pod::before{left:62px;top:5px}.seat.hero .seat-copy{padding-top:9px;min-width:100px}.seat.hero .seat-copy b{font-size:11px}.seat.hero .seat-copy span{font-size:8px}.seat.hero .hole-cards .playing-card{width:50px;padding:5px;font-size:12px}.seat.hero .hole-cards .playing-card .suit{font-size:17px}.action-dock:not(.awaiting){grid-template-columns:125px minmax(150px,1fr) repeat(3,88px)}.action-dock{width:96vw}.action-btn{height:52px;font-size:12px}.hand-readout{right:5%;min-width:145px}}
@media(max-width:600px){body.table-mode .topbar{height:62px}.table-view{min-height:calc(100vh - 62px)}.table-toolbar{height:70px}.felt-wrap{min-height:720px;padding:48px 0 142px}.felt{height:560px}.pot{min-width:110px;padding:8px 11px}.pot::before{font-size:6px;bottom:calc(100% + 4px)}.pot b{font-size:20px}.hand-message{top:29%;padding:4px 8px;font-size:7px}.board{top:43%}.board .playing-card{width:47px;padding:4px;font-size:11px}.board .playing-card .suit{font-size:16px}.seat:not(.hero) .seat-pod:not(.vacant){min-width:84px;padding:4px 6px 4px 4px}.seat:not(.hero) .seat-avatar{width:30px;height:30px;flex-basis:30px}.seat.hero{top:82%;min-width:160px}.seat.hero .seat-pod{min-width:154px;min-height:54px}.seat.hero .seat-avatar{width:42px;height:42px;flex-basis:42px;border-width:1px}.seat.hero .seat-pod::before{left:55px;font-size:5px}.seat.hero .seat-copy{min-width:85px}.seat.hero .seat-copy b{font-size:9px}.seat.hero .seat-copy span{font-size:7px}.seat.hero .hole-cards{gap:4px}.seat.hero .hole-cards .playing-card{width:43px;border-width:1px}.hand-readout{top:52%;right:50%;min-width:130px;padding:7px 10px;border-left-width:2px}.hand-readout b{font-size:15px}.action-dock:not(.awaiting){display:grid;grid-template-columns:repeat(3,1fr)}.action-dock{bottom:6px;min-height:116px;padding:9px}.turn-copy{grid-column:1/2;padding-left:2px}.raise-control{grid-column:2/4;padding:0 4px}.action-btn{height:44px;font-size:11px}.action-dock.awaiting{min-height:104px}}

/* v8 · paced dealing, board reveals and bot turn presentation */
.table-cue{position:absolute;z-index:15;left:50%;top:32%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;min-width:218px;padding:10px 14px;border:1px solid rgba(231,205,137,.34);border-radius:9px;background:linear-gradient(180deg,rgba(9,31,24,.94),rgba(5,18,14,.94));color:#f6ecd3;box-shadow:0 14px 38px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.06);animation:cueEnter .28s cubic-bezier(.2,.8,.2,1) both;pointer-events:none}.table-cue[hidden]{display:none}.table-cue>i{display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(222,192,111,.42);border-radius:50%;color:#d9ba65;font-family:Georgia,serif;font-size:16px;font-style:normal}.table-cue>span{display:grid;flex:1;text-align:left}.table-cue small{color:rgba(240,226,190,.5);font-size:7px;letter-spacing:1.3px}.table-cue b{margin-top:2px;font-family:var(--serif);font-size:14px;letter-spacing:.3px}.cue-dots{display:flex;gap:3px}.cue-dots i{width:4px;height:4px;border-radius:50%;background:#d9ba65;animation:cueDot 1s ease-in-out infinite}.cue-dots i:nth-child(2){animation-delay:.15s}.cue-dots i:nth-child(3){animation-delay:.3s}@keyframes cueEnter{from{opacity:0;transform:translate(-50%,-44%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes cueDot{0%,70%,100%{opacity:.24;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
.seat.bot.thinking .seat-pod::before{content:"思考中 ···";position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);width:max-content;padding:4px 8px;border:1px solid rgba(225,199,127,.34);border-radius:5px;background:#10271f;color:#e1c46f;font-size:7px;letter-spacing:.8px;box-shadow:0 6px 15px rgba(0,0,0,.25)}.seat.bot.thinking .seat-avatar{animation:thinkingPulse .8s ease-in-out infinite alternate}@keyframes thinkingPulse{to{filter:brightness(1.28);box-shadow:0 0 0 5px rgba(224,190,96,.14),0 0 24px rgba(224,190,96,.3)}}
.hole-cards .playing-card.deal-in{transform-origin:center;animation:holeDeal .58s cubic-bezier(.18,.72,.16,1) var(--deal-delay,0ms) both!important}@keyframes holeDeal{0%{opacity:0;transform:translate(var(--deal-x,120px),var(--deal-y,-80px)) scale(.72) rotate(9deg)}35%{opacity:1}82%{transform:translate(-2px,1px) scale(1.035) rotate(-1deg)}100%{opacity:1;transform:none}}
.board .playing-card.board-reveal{position:relative;transform-style:preserve-3d;animation:boardFlip .76s cubic-bezier(.2,.72,.18,1) var(--reveal-delay,0ms) both!important}.board .playing-card.board-reveal::after{content:"";position:absolute;inset:0;border:4px solid #f8f4e9;border-radius:inherit;background:repeating-linear-gradient(45deg,#173f37 0 4px,#d8c99f 4px 6px);box-shadow:inset 0 0 0 1px rgba(0,0,0,.18);animation:boardBackReveal .76s steps(1,end) var(--reveal-delay,0ms) both;pointer-events:none}@keyframes boardFlip{0%{opacity:0;transform:translate(105px,-24px) scale(.78) rotateY(180deg) rotateZ(5deg)}15%{opacity:1}48%{transform:translate(0,0) scale(1) rotateY(94deg) rotateZ(0)}58%{transform:rotateY(72deg)}84%{transform:rotateY(-7deg) scale(1.025)}100%{opacity:1;transform:none}}@keyframes boardBackReveal{0%,49%{opacity:1}50%,100%{opacity:0}}
.seat.action-pop .seat-pod{animation:seatAction .54s cubic-bezier(.2,.75,.2,1)}@keyframes seatAction{0%{transform:scale(1)}35%{transform:translateY(-5px) scale(1.035)}100%{transform:none}}
.flying-chip{position:absolute;z-index:18;width:14px;height:14px;margin:-7px 0 0 -7px;border:3px solid #ead16e;border-radius:50%;background:#9b3430;box-shadow:0 0 0 2px #25231e,0 5px 10px rgba(0,0,0,.35);pointer-events:none;animation:chipToPot .72s cubic-bezier(.18,.68,.2,1) var(--chip-delay,0ms) both}.flying-chip:nth-of-type(even){background:#274f75;border-color:#d5e0e9}@keyframes chipToPot{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.65)}18%{opacity:1}72%{opacity:1;transform:translate(calc(var(--chip-x) * .82),calc(var(--chip-y) * .82 - 15px)) rotate(390deg) scale(1)}100%{opacity:0;transform:translate(var(--chip-x),var(--chip-y)) rotate(540deg) scale(.72)}}
.flying-chip.collect{animation:chipFromPot .9s cubic-bezier(.24,.62,.3,1) var(--chip-delay,0ms) both}@keyframes chipFromPot{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.7)}16%{opacity:1}78%{opacity:1;transform:translate(calc(var(--chip-x) * .86),calc(var(--chip-y) * .86 + 14px)) rotate(-380deg) scale(1)}100%{opacity:0;transform:translate(var(--chip-x),var(--chip-y)) rotate(-540deg) scale(.68)}}
.seat.win-glow .seat-pod{animation:winPodGlow 1.9s ease-out both}@keyframes winPodGlow{0%{box-shadow:0 0 0 0 rgba(240,214,150,0)}22%{box-shadow:0 0 0 4px rgba(240,214,150,.65),0 0 34px rgba(240,214,150,.4)}60%{box-shadow:0 0 0 3px rgba(240,214,150,.35),0 0 22px rgba(240,214,150,.22)}100%{box-shadow:0 0 0 0 rgba(240,214,150,0)}}
.seat.win-glow .hole-cards .playing-card:not(.back){animation:winCardPop 1.6s cubic-bezier(.2,.8,.25,1) both}@keyframes winCardPop{0%,18%{transform:none}32%{transform:translateY(-7px) scale(1.09)}52%{transform:translateY(0) scale(1)}100%{transform:none}}
@media(max-width:600px){.table-cue{top:34%;min-width:174px;padding:7px 9px;gap:7px}.table-cue>i{width:24px;height:24px;font-size:12px}.table-cue b{font-size:10px}.table-cue small{font-size:6px}.flying-chip{width:11px;height:11px;border-width:2px}}
@media(prefers-reduced-motion:reduce){.table-cue,.cue-dots i,.seat.bot.thinking .seat-avatar,.hole-cards .playing-card.deal-in,.board .playing-card.board-reveal,.board .playing-card.board-reveal::after,.seat.action-pop .seat-pod,.flying-chip,.seat.win-glow .seat-pod,.seat.win-glow .hole-cards .playing-card{animation-duration:.01ms!important;animation-delay:0ms!important;animation-iteration-count:1!important}}

/* v9 · local seat perspective, reconnect and host controls */
.seat[data-visual-pos="0"]{left:50%;top:87%}.seat[data-visual-pos="1"]{left:8%;top:72%}.seat[data-visual-pos="2"]{left:10%;top:18%}.seat[data-visual-pos="3"]{left:50%;top:3%}.seat[data-visual-pos="4"]{left:90%;top:18%}.seat[data-visual-pos="5"]{left:92%;top:72%}
.seat[data-visual-pos] .hole-cards{left:50%;right:auto;top:auto;bottom:calc(100% + 8px);transform:translateX(-50%)}.seat[data-visual-pos="2"] .hole-cards,.seat[data-visual-pos="4"] .hole-cards{top:calc(100% + 8px);bottom:auto}.seat[data-visual-pos="3"] .hole-cards{left:calc(100% + 2px);right:auto;top:50%;bottom:auto;transform:translateY(-50%)}
.seat[data-visual-pos] .seat-chat-bubble{left:50%;right:auto;top:auto;bottom:calc(100% + 96px);transform:translateX(-50%)}.seat[data-visual-pos="2"] .seat-chat-bubble,.seat[data-visual-pos="4"] .seat-chat-bubble{top:calc(100% + 92px);bottom:auto}.seat[data-visual-pos="3"] .seat-chat-bubble{left:auto;right:calc(100% + 12px);top:50%;bottom:auto;transform:translateY(-50%)}
.host-chip{position:absolute;left:-7px;top:-8px;padding:3px 6px;border:1px solid rgba(248,222,147,.5);border-radius:5px;background:#8d6b2d;color:#fff7dc;font-size:6px;font-style:normal;letter-spacing:.6px;box-shadow:0 5px 12px rgba(0,0,0,.24)}.seat.hero .host-chip{left:auto;right:-7px;top:-8px}.seat.removing .seat-pod{filter:grayscale(.75);opacity:.58}.seat.removing .seat-copy span::after{content:" · 已移出";color:#c97c74}
.seat-kick{position:absolute;z-index:5;right:-8px;bottom:-10px;padding:4px 7px;border:1px solid rgba(255,142,132,.45);border-radius:5px;background:#4a1d1b;color:#ffb0a8;font-size:7px;font-weight:800;cursor:pointer;opacity:0;transform:translateY(3px);transition:opacity .18s,transform .18s,background .18s}.seat-pod:hover .seat-kick,.seat-kick:focus-visible{opacity:1;transform:none}.seat-kick:hover{background:#722c28}.seat.hero .seat-kick{display:none}
.owner-end-btn{border-color:rgba(213,99,90,.36)!important;color:#efaaa4!important;background:rgba(102,35,31,.25)!important}.owner-end-btn:hover{border-color:rgba(235,125,115,.62)!important;background:rgba(127,43,38,.4)!important}
.owner-close-btn{border-color:rgba(213,99,90,.24)!important;color:#d79691!important;background:transparent!important}.owner-close-btn:hover{border-color:rgba(235,125,115,.58)!important;color:#ffc0ba!important;background:rgba(127,43,38,.28)!important}
.owner-confirm-modal{width:min(460px,92vw);padding:34px}.owner-confirm-modal h2{color:var(--ink)}.owner-confirm-modal .modal-symbol{color:#9c413b}.owner-confirm-modal>p:not(.eyebrow){margin:10px 0 24px;color:var(--muted);font-size:12px;line-height:1.75}.owner-confirm-actions{display:flex;justify-content:flex-end;gap:9px}.owner-confirm-actions button{min-width:110px}.danger-confirm{background:#963b35!important;box-shadow:0 8px 22px rgba(150,59,53,.2)!important}
@media(max-width:900px){.seat[data-visual-pos="0"]{top:84%}.seat[data-visual-pos="1"]{left:8%;top:72%}.seat[data-visual-pos="2"]{left:10%;top:18%}.seat[data-visual-pos="3"]{left:50%;top:3%}.seat[data-visual-pos="4"]{left:90%;top:18%}.seat[data-visual-pos="5"]{left:92%;top:72%}.seat[data-visual-pos="3"] .hole-cards{left:calc(100% + 5px)}}
@media(max-width:600px){.seat[data-visual-pos="0"]{left:50%;top:82%}.seat[data-visual-pos="1"]{left:16%;top:73%}.seat[data-visual-pos="2"]{left:16%;top:27%}.seat[data-visual-pos="3"]{left:50%;top:3%}.seat[data-visual-pos="4"]{left:84%;top:27%}.seat[data-visual-pos="5"]{left:84%;top:73%}.seat[data-visual-pos="3"] .hole-cards{left:calc(100% + 4px)}.seat[data-visual-pos] .seat-chat-bubble{bottom:calc(100% + 67px);max-width:145px}.seat[data-visual-pos="2"] .seat-chat-bubble,.seat[data-visual-pos="4"] .seat-chat-bubble{top:calc(100% + 64px);bottom:auto}.seat[data-visual-pos="3"] .seat-chat-bubble{right:calc(100% + 6px);top:50%}.seat-kick{opacity:1;right:-4px;bottom:-9px;padding:3px 5px;font-size:6px}.owner-end-btn{font-size:0!important;width:32px!important;padding:0!important}.owner-end-btn::before{content:"■";font-size:10px}.host-chip{font-size:5px;padding:2px 4px}}

/* v10 · rules handbook, turn guidance, precise betting and hand-by-hand review */
.turn-alert{position:absolute;z-index:16;left:50%;top:58%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:10px;min-width:260px;padding:9px 13px;border:1px solid rgba(242,210,116,.58);border-radius:8px;background:rgba(8,28,21,.94);color:#fff6dc;box-shadow:0 13px 34px rgba(0,0,0,.35),0 0 28px rgba(223,187,85,.13);pointer-events:none;animation:turnAlertIn .28s cubic-bezier(.2,.8,.2,1) both}.turn-alert[hidden]{display:none}.turn-alert>i{display:grid;place-items:center;width:29px;height:29px;flex:0 0 29px;border-radius:50%;background:#d3b352;color:#17130b;font:900 15px/1 var(--sans);font-style:normal}.turn-alert>span{display:grid}.turn-alert small{color:#d2b65f;font-size:6px;letter-spacing:1.4px}.turn-alert b{font-family:var(--serif);font-size:14px}.turn-alert>em{margin-left:auto;padding-left:13px;border-left:1px solid rgba(255,255,255,.14);color:rgba(255,247,222,.65);font-size:9px;font-style:normal;white-space:nowrap}.felt.your-turn .felt-line{border-color:rgba(242,210,116,.48);animation:turnRing 1.15s ease-in-out infinite alternate}.action-dock.your-turn{border-color:rgba(235,204,116,.8);box-shadow:0 22px 65px rgba(0,0,0,.6),0 0 0 2px rgba(213,180,81,.12),0 0 34px rgba(213,180,81,.14)}@keyframes turnAlertIn{from{opacity:0;transform:translate(-50%,-43%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes turnRing{to{border-color:rgba(255,224,135,.78);box-shadow:inset 0 0 34px rgba(231,197,101,.08)}}
.turn-copy{display:grid;align-content:center;gap:2px}.turn-copy small{display:block;max-width:150px;margin-top:3px;padding-right:8px;color:rgba(245,239,226,.43);font-size:7px;line-height:1.35}.raise-control{min-width:0}.raise-control>input[type="range"]{min-width:70px;flex:1}.raise-input{width:116px;min-width:116px;height:48px;display:grid;grid-template-columns:1fr auto;grid-template-rows:14px 1fr;align-items:center;padding:5px 8px;border:1px solid rgba(237,211,141,.28);border-radius:7px;background:rgba(255,255,255,.055);color:#fff}.raise-input>span{grid-column:1/-1;color:rgba(245,239,226,.46);font-size:6px;letter-spacing:1px}.raise-input input{grid-column:1;width:100%!important;min-width:0;border:0;background:transparent;color:#f1d57e;font:700 17px/1 var(--serif);outline:0;appearance:textfield}.raise-input input::-webkit-inner-spin-button,.raise-input input::-webkit-outer-spin-button{margin:0;appearance:none}.raise-input input:focus{color:#fff}.raise-input em{grid-column:2;color:rgba(245,239,226,.45);font-size:8px;font-style:normal}
.log-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:10px 12px 0;padding:4px;border-radius:7px;background:#e7dfce}.log-tabs button{height:32px;border:0;border-radius:5px;background:transparent;color:#777267;font-size:9px;font-weight:700;cursor:pointer}.log-tabs button.on{background:#fffaf0;color:#332f26;box-shadow:0 2px 7px rgba(48,41,28,.09)}.activity-log,.hand-record-list{min-height:0;flex:1;overflow:auto}.hand-record-list{display:flex;flex-direction:column;gap:9px;padding:12px}.hand-record-list[hidden]{display:none}.hand-record{flex:0 0 auto;border:1px solid rgba(69,60,43,.13);border-radius:7px;background:rgba(255,253,247,.7);overflow:hidden}.hand-record.cancelled{opacity:.72}.hand-record summary{display:flex;align-items:center;gap:12px;padding:12px;cursor:pointer;list-style:none}.hand-record summary::-webkit-details-marker{display:none}.hand-record summary::after{content:"＋";order:3;color:#9b854b;font-size:14px}.hand-record[open] summary::after{content:"−"}.hand-record summary>span{display:grid;min-width:0;flex:1}.hand-record summary small{color:#9a8b68;font-size:7px;letter-spacing:1px}.hand-record summary b{margin-top:3px;overflow:hidden;color:#302e28;font-family:var(--serif);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.hand-record summary>em{color:#80672c;font-size:9px;font-style:normal;font-weight:800}.record-board{display:flex;gap:4px;padding:11px 12px 7px;border-top:1px solid rgba(69,60,43,.1)}.record-board .mini-face{padding:4px 5px;border:1px solid rgba(69,60,43,.13);border-radius:4px;background:#fff;font-size:10px;font-style:normal}.record-board .mini-face.red{color:#a13d38}.record-board .no-board{color:#8a8579;font-size:9px}.hand-record>p{margin:0;padding:3px 12px 9px;color:#686359;font-size:9px;line-height:1.5}.hand-record ol{display:grid;gap:7px;margin:0;padding:10px 12px 13px;border-top:1px dashed rgba(69,60,43,.15);list-style:none}.hand-record li{display:grid;grid-template-columns:23px 1fr;gap:7px;align-items:start;color:#5e5a51;font-size:9px;line-height:1.45}.hand-record li i{color:#ad9451;font-size:7px;font-style:normal}.record-empty{display:grid;place-items:center;align-content:center;gap:7px;min-height:190px;padding:25px;text-align:center}.record-empty b{font-family:var(--serif);font-size:15px}.record-empty span{color:#7c776d;font-size:9px;line-height:1.6}
.tutorial-modal{width:min(880px,96vw)}.tutorial-games{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px;padding-right:86px}.tutorial-games button{display:inline-flex;align-items:center;gap:6px;border:1px solid rgba(140,115,60,.26);border-radius:20px;padding:6px 12px;background:transparent;color:#7a6c4d;font:700 9px/1 var(--sans);letter-spacing:.04em;cursor:pointer;transition:.16s ease}.tutorial-games button i{font:700 11px/1 Georgia,serif;font-style:normal}.tutorial-games button:hover{border-color:#a5843f;background:rgba(206,171,94,.12)}.tutorial-games button.on{border-color:#967336;background:#f2e8d2;color:#4a3c1c;box-shadow:0 2px 8px rgba(150,115,54,.18)}.tutorial-progress{gap:7px;margin-bottom:28px;padding-right:86px}.tutorial-progress button{height:24px;flex:1;border:0;border-bottom:2px solid #d7cebc;background:transparent;color:#9a9387;font:700 8px/1 var(--sans);cursor:pointer}.tutorial-progress button.current{border-bottom-color:var(--wine);color:var(--wine)}.tutorial-progress button.done{border-bottom-color:#a99159;color:#655a43}.tutorial-slide{grid-template-columns:.9fr 1.1fr}.tutorial-visual{min-height:350px;padding:22px}.tutorial-visual .rank-stack{gap:4px}.tutorial-visual .rank-stack span{padding:7px 10px}.tutorial-visual .rank-stack i{color:#78736a;font-style:normal}.tutorial-copy p{margin-top:0}.tutorial-copy ul{margin:10px 0 0}
@media(max-width:900px){.action-dock:not(.awaiting){grid-template-columns:125px minmax(210px,1fr) repeat(3,82px)}.turn-alert{top:57%}.tutorial-modal{width:min(760px,96vw)}.tutorial-slide{grid-template-columns:1fr 1fr;gap:24px}.tutorial-copy h2{font-size:36px}}
@media(max-width:600px){.turn-alert{top:56%;min-width:0;width:max-content;max-width:76vw;padding:7px 9px;gap:7px}.turn-alert>i{width:23px;height:23px;flex-basis:23px;font-size:11px}.turn-alert b{font-size:10px}.turn-alert>em{max-width:130px;padding-left:8px;overflow:hidden;font-size:7px;text-overflow:ellipsis}.action-dock:not(.awaiting){grid-template-columns:repeat(3,1fr)}.turn-copy small{max-width:92px;font-size:6px}.raise-control{gap:6px}.raise-control>input[type="range"]{min-width:42px}.raise-input{width:82px;min-width:82px;height:41px;padding:4px 6px}.raise-input input{font-size:13px}.raise-input>span{font-size:5px}.tutorial-modal{padding:24px 16px}.tutorial-games{gap:4px;margin:4px 0 14px;padding-right:70px}.tutorial-games button{padding:5px 9px;font-size:8px}.tutorial-progress{gap:3px;margin:6px 0 18px;padding-right:76px}.tutorial-progress button{height:20px;font-size:6px}.tutorial-slide{display:flex;flex-direction:column;gap:18px;align-items:stretch}.tutorial-visual{min-height:155px;max-height:250px;overflow:auto;padding:15px}.tutorial-visual .big-symbol{font-size:58px}.tutorial-copy h2{font-size:30px;margin-bottom:12px}.tutorial-copy p{font-size:11px;line-height:1.65}.tutorial-copy ul{font-size:10px;line-height:1.65}.tutorial-nav{margin-top:18px}.game-sidebar .legend{padding:10px 14px}}
@media(prefers-reduced-motion:reduce){.turn-alert,.felt.your-turn .felt-line{animation:none!important}}

/* v11 · capped preflop pressure and dismissible turn notice */
.action-dock .turn-alert{z-index:3;left:10px;top:-35px;transform:none;width:auto;min-width:0;min-height:28px;padding:5px 9px;gap:6px;border-color:rgba(235,204,116,.48);border-radius:6px;background:#1b2a23;box-shadow:0 8px 22px rgba(0,0,0,.34);font-family:var(--sans);cursor:pointer;pointer-events:auto;animation:turnDockIn .22s ease both}.action-dock .turn-alert:hover{border-color:rgba(245,216,133,.85);background:#22372d}.action-dock .turn-alert>i{width:18px;height:18px;flex-basis:18px;font-size:9px}.action-dock .turn-alert>span{display:block}.action-dock .turn-alert small{display:none}.action-dock .turn-alert b{font-family:var(--sans);font-size:9px;letter-spacing:.4px}.action-dock .turn-alert>em{margin-left:2px;padding-left:7px;font-size:7px}.action-dock .turn-alert::after{content:"点击收起";margin-left:2px;color:rgba(255,247,222,.34);font-size:6px}@keyframes turnDockIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.action-dock .turn-alert[hidden]{display:none!important}
@media(max-width:600px){.action-dock .turn-alert{left:4px;top:-30px;min-height:25px;padding:4px 7px}.action-dock .turn-alert>em{max-width:105px}.action-dock .turn-alert::after{display:none}}

/* v12 · table buy-in and record-player controls */
.buyin-modal{width:min(480px,94vw)}.buyin-picker{display:grid;gap:11px;padding:16px;border:1px solid rgba(82,69,43,.16);border-radius:9px;background:#eee7d7}.buyin-head{display:flex;align-items:end;justify-content:space-between;gap:15px}.buyin-head>span{display:grid;color:#4d493f;font-size:10px;font-weight:800}.buyin-head small{margin-top:3px;color:#8a8273;font-size:7px;font-weight:500}.buyin-head>b{font-family:var(--serif);font-size:26px;font-weight:500;color:var(--wine)}.small-modal .buyin-picker>input[type="range"]{padding:0;border:0;background:transparent;box-shadow:none;accent-color:var(--wine)}.buyin-number{height:47px;display:grid!important;grid-template-columns:1fr auto!important;grid-template-rows:13px 1fr;gap:0!important;padding:5px 9px;border:1px solid rgba(74,64,43,.17);border-radius:7px;background:#fffaf0}.buyin-number>span{grid-column:1/-1;color:#8c8578;font-size:6px;letter-spacing:1px}.small-modal .buyin-number>input{grid-column:1;width:100%;min-width:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#2c2a24;font:700 17px/1 var(--serif);appearance:textfield}.buyin-number input::-webkit-inner-spin-button,.buyin-number input::-webkit-outer-spin-button{appearance:none}.buyin-number>em{grid-column:2;color:#8c8578;font-size:8px;font-style:normal}.buyin-picker>small{color:#777063;font-size:8px;text-align:left}.small-modal button[type="submit"]:disabled{opacity:.45;pointer-events:none}
.music-head>span{display:grid}.music-head>span b{font-weight:600}.music-head>span small{margin-top:2px;color:var(--muted);font-family:var(--sans);font-size:6px;letter-spacing:.7px}.music-transport{display:grid;grid-template-columns:40px 52px 40px;justify-content:center;align-items:center;gap:8px;margin:4px 0 12px;padding:10px;border-block:1px solid var(--line)}.music-transport button{height:34px;border:1px solid var(--line);border-radius:50%;background:#f7f1e4;color:#332f27;font-family:Georgia,serif;font-size:19px;cursor:pointer}.music-transport .music-play{height:44px;background:var(--wine);border-color:var(--wine);color:#fff;font-size:13px;box-shadow:0 7px 18px rgba(125,39,43,.2)}.music-transport button:hover{transform:translateY(-1px);filter:brightness(1.03)}.track-list button.on{box-shadow:inset 2px 0 var(--wine)}.track-list button.on em{color:var(--wine);font-weight:900}
@media(max-width:600px){.buyin-picker{padding:13px}.buyin-head>b{font-size:22px}.music-transport{margin-top:0}}

/* v14 · 头像修复、底牌旁实时牌型、强化聊天与完整教材 */
:root{--serif:"Songti SC","STSong","Noto Serif CJK SC","Source Han Serif SC",serif;--sans:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC","Hiragino Sans GB","Avenir Next",sans-serif}
html{-webkit-text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.profile,.stats,.pot,.seat-copy,.hand-readout,.action-dock,.ranking-row{font-variant-numeric:tabular-nums}button,input{font-family:var(--sans)}

.seat-avatar{position:relative;isolation:isolate;overflow:hidden;border-radius:50%;background-image:none!important;background-position:center;background-size:cover;background-repeat:no-repeat}.seat-avatar img{position:absolute;z-index:2;inset:0;width:100%;height:100%;display:block;border-radius:inherit;object-fit:cover;object-position:center;user-select:none;pointer-events:none}.seat-avatar img[hidden]{display:none}.seat-avatar>i{position:relative;z-index:1;display:grid;width:100%;height:100%;place-items:center}.seat-avatar.has-image>i{visibility:hidden;opacity:0}.seat.hero .seat-avatar{background-image:none!important}.seat.hero[data-visual-pos="0"]{top:82%}

.seat.hero>.hand-readout{right:auto;left:calc(100% + 13px);top:-76px;bottom:auto;transform:none;width:176px;min-width:0;padding:10px 13px;border:1px solid rgba(232,204,124,.58);border-left:3px solid #d2ad4f;border-radius:8px;background:linear-gradient(135deg,rgba(7,29,22,.97),rgba(15,47,36,.97));box-shadow:0 13px 34px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.04);text-align:left;pointer-events:none}.seat.hero>.hand-readout::before{content:"◆";position:absolute;left:-8px;top:13px;color:#d6b55c;font-size:10px}.seat.hero>.hand-readout span{font-size:8px;letter-spacing:.9px}.seat.hero>.hand-readout b{margin-top:2px;font-family:var(--serif);font-size:20px;line-height:1.15}.seat.hero>.hand-readout small{margin-top:2px;font-size:9px;line-height:1.35}

.seat-chat-bubble{z-index:30;max-width:260px;padding:11px 15px;border:2px solid rgba(211,176,76,.78);border-radius:13px 13px 13px 3px;background:#fffaf0;color:#181712;font-size:13px;font-weight:650;line-height:1.48;box-shadow:0 17px 44px rgba(0,0,0,.52),0 0 0 3px rgba(255,250,240,.12);filter:none}.seat-chat-bubble::after{bottom:-9px;border-width:9px;border-top-color:#d3b04c}.seat[data-visual-pos="2"] .seat-chat-bubble,.seat[data-visual-pos="4"] .seat-chat-bubble{top:calc(100% + 82px)}.seat.hero .seat-chat-bubble{left:auto;right:calc(100% + 14px);top:-62px;bottom:auto;transform:none;border-radius:13px 13px 3px 13px}.seat.hero .seat-chat-bubble::after{left:auto;right:-9px;top:auto;bottom:14px;border:9px solid transparent;border-left-color:#d3b04c;border-right:0}

.chat-panel{width:min(400px,calc(100vw - 36px));height:min(540px,calc(100vh - 150px));border:2px solid rgba(223,190,98,.55);background:linear-gradient(180deg,rgba(17,28,23,.99),rgba(7,13,10,.99));box-shadow:0 32px 100px rgba(0,0,0,.68),0 0 0 1px rgba(255,255,255,.04)}.chat-head{padding:16px 18px;background:rgba(255,255,255,.025)}.chat-head span{font-size:8px}.chat-head strong{font-size:19px}.quick-chat{padding:12px 13px;border-bottom:1px solid rgba(230,202,125,.18);background:rgba(207,173,80,.06)}.quick-chat>div:first-child{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}.quick-chat b{color:#e8ce82;font-size:10px;letter-spacing:.7px}.quick-chat small{color:rgba(248,241,228,.45);font-size:8px}.quick-chat-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}.quick-chat-list button{display:grid;grid-template-columns:20px 1fr;align-items:center;gap:6px;min-height:36px;padding:6px 8px;border:1px solid rgba(222,191,104,.2);border-radius:7px;background:rgba(255,255,255,.055);color:#f5edd9;cursor:pointer;text-align:left;transition:background .16s,border-color .16s,transform .16s}.quick-chat-list button:hover{border-color:rgba(229,199,115,.58);background:rgba(229,199,115,.12);transform:translateY(-1px)}.quick-chat-list button:disabled{opacity:.55;cursor:default}.quick-chat-list button.sending{border-color:#d6b75d;background:rgba(214,183,93,.18)}.quick-chat-list i{display:grid;width:18px;height:18px;place-items:center;border-radius:50%;background:#c8a94f;color:#19150c;font-size:8px;font-style:normal;font-weight:900}.quick-chat-list span{font-size:9px;line-height:1.35}.chat-stream{gap:12px;padding:16px}.chat-line{max-width:90%}.chat-line b{font-size:9px;color:rgba(248,241,228,.62)}.chat-line span{padding:10px 13px;border:1px solid rgba(255,255,255,.1);background:#25322c;color:#fffaf0;font-size:13px;font-weight:550;box-shadow:0 7px 18px rgba(0,0,0,.22)}.chat-line.mine span{border-color:rgba(245,219,141,.48);background:#d6b75d;color:#17130b}.chat-form{padding:13px}.chat-form input{font-size:12px}.chat-form button{min-width:64px}.chat-form button:disabled{opacity:.5}

.tutorial-progress{display:grid;grid-template-columns:repeat(12,1fr)}.tutorial-copy p,.tutorial-copy li{font-family:var(--sans)}.tutorial-copy p{color:#5f5d55}.tutorial-visual .rank-stack i{font-family:var(--sans)}

@media(min-width:901px) and (max-height:820px){.board{top:37%}.deal-shoe{top:37%}.seat.hero[data-visual-pos="0"]{top:72%}.seat.hero>.hand-readout{top:-70px}.hand-message{top:24%}}
@media(max-width:900px){.seat.hero>.hand-readout{left:calc(100% + 8px);top:-66px;width:142px;padding:8px 10px}.seat.hero>.hand-readout b{font-size:17px}.seat.hero>.hand-readout small{font-size:8px}}
@media(max-width:600px){.board{top:37%}.deal-shoe{top:37%}.seat.hero[data-visual-pos="0"]{top:69%}.seat.hero>.hand-readout{left:calc(100% + 4px);top:-49px;width:92px;padding:6px 7px;border-left-width:2px}.seat.hero>.hand-readout::before{display:none}.seat.hero>.hand-readout span{font-size:6px;letter-spacing:.2px}.seat.hero>.hand-readout b{font-size:13px}.seat.hero>.hand-readout small{font-size:6px}.seat.hero .seat-chat-bubble{right:calc(100% + 5px);top:-45px;max-width:125px;padding:8px 10px;font-size:10px}.chat-panel{left:6px;right:6px;bottom:128px;width:auto;height:min(500px,calc(100vh - 145px))}.quick-chat-list{grid-template-columns:1fr}.quick-chat-list button{min-height:30px;padding:4px 7px}.quick-chat-list span{font-size:8px}.quick-chat{padding:9px 10px}.chat-stream{padding:11px}.chat-line span{font-size:11px}.tutorial-progress{grid-template-columns:repeat(6,1fr);row-gap:3px}}
/* ── V15 · multiplayer mode selector + Russian roulette practice room ── */
.create-mode-picker{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:4px 0 18px}.create-mode-picker button{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid rgba(45,39,31,.14);border-radius:14px;padding:13px;background:#f5f1e8;color:#29251e}.create-mode-picker button>i{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;font:700 21px/1 Georgia,serif;background:#dfd8c9}.create-mode-picker button span{display:flex;flex-direction:column;gap:3px}.create-mode-picker button b{font-size:14px}.create-mode-picker button small{font-size:10px;color:#787063}.create-mode-picker button.on{border-color:#967336;box-shadow:0 0 0 2px rgba(150,115,54,.14);background:#fffaf0}.create-mode-picker button.on>i{background:#2f2b24;color:#e4c784}.room-row .room-mode{display:inline-block;margin-bottom:5px;color:#846a35;font:800 9px/1.1 system-ui;letter-spacing:.1em}.room-row.roulette-room{position:relative;overflow:hidden;border-color:rgba(123,34,38,.2)}.room-row.roulette-room:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#7b2226}.room-row.roulette-room .room-mode{color:#8b2529}.room-row.roulette-room .soft-btn{border-color:#8b2529;color:#7b2226}

.roulette-mode{background:#0b0b0b;color:#e8e0d0}.roulette-mode>.site-header{display:none}.roulette-view{min-height:100svh;background:radial-gradient(circle at 50% 42%,#22201c 0,#121211 48%,#070707 100%);color:#e8e0d0;overflow:hidden}.roulette-toolbar{height:76px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(18px,3vw,52px);border-bottom:1px solid rgba(223,199,148,.16);background:rgba(9,9,9,.88);backdrop-filter:blur(18px);position:relative;z-index:30}.roulette-back,.roulette-tools button{border:1px solid rgba(223,199,148,.18);background:rgba(255,255,255,.035);color:#d8cfbd;border-radius:9px;padding:9px 13px;font:650 11px/1 system-ui;letter-spacing:.04em}.roulette-back{justify-self:start}.roulette-tools{justify-self:end;display:flex;gap:8px}.roulette-tools button:hover,.roulette-back:hover{background:rgba(220,191,130,.1);border-color:rgba(223,199,148,.4)}.roulette-tools .roulette-end{color:#d98d8d;border-color:rgba(151,48,51,.5)}.roulette-room-id{text-align:center;display:grid;gap:2px}.roulette-room-id small{font:800 8px/1 system-ui;letter-spacing:.26em;text-transform:uppercase;color:#9d8148}.roulette-room-id strong{font:700 17px/1.15 "Songti SC",serif}.roulette-room-id span{font:500 9px/1.2 system-ui;color:#7e786d}.roulette-room-id b{color:#c3ab7c;letter-spacing:.12em}.roulette-shell{position:relative;min-height:calc(100svh - 76px);padding:24px clamp(18px,3vw,52px) 30px;isolation:isolate}.roulette-ambient{position:absolute;inset:0;overflow:hidden;z-index:-1}.roulette-ambient i{position:absolute;width:1px;height:62%;top:17%;background:linear-gradient(transparent,rgba(224,196,136,.16),transparent);transform:rotate(24deg)}.roulette-ambient i:nth-child(1){left:12%}.roulette-ambient i:nth-child(2){right:15%;transform:rotate(-18deg)}.roulette-ambient i:nth-child(3){left:52%;opacity:.38;transform:rotate(4deg)}
.roulette-status{text-align:center;display:grid;gap:5px;margin:0 auto 18px}.roulette-status>span{color:#a68b54;font:800 9px/1 system-ui;letter-spacing:.22em}.roulette-status>strong{font:600 clamp(17px,2vw,24px)/1.25 "Songti SC",serif;color:#f0e7d7}.roulette-status>small{font-size:10px;color:#77736b}.roulette-status>small b{color:#cdb986}.roulette-players{max-width:1120px;margin:0 auto 18px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}.roulette-player{position:relative;min-width:0;display:flex;align-items:center;gap:9px;padding:9px 10px;background:rgba(255,255,255,.038);border:1px solid rgba(224,201,155,.13);border-radius:12px;transition:.3s ease}.roulette-player.acting{border-color:#d0ad61;background:rgba(174,128,46,.12);box-shadow:0 0 24px rgba(194,146,57,.13)}.roulette-player.me:after{content:"你";position:absolute;right:6px;top:-7px;background:#c3a35e;color:#15130f;border-radius:5px;padding:3px 5px;font:800 7px/1 system-ui}.roulette-player.eliminated{filter:grayscale(1);opacity:.38}.roulette-player.empty{justify-content:center;opacity:.42}.roulette-player.empty>div{display:grid;place-items:center;width:31px;height:31px;border:1px dashed #8f887a;border-radius:50%}.roulette-avatar{width:36px;height:36px;flex:0 0 36px;border:1px solid rgba(222,195,139,.32);border-radius:50%;display:grid;place-items:center;background:#302e2a;color:#cdbd9c;overflow:hidden}.roulette-avatar img{width:100%;height:100%;object-fit:cover}.roulette-avatar i{font:700 15px/1 Georgia,serif}.roulette-player>span{min-width:0;display:grid;gap:2px}.roulette-player>span b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#e4ddcf}.roulette-player>span small{font-size:8px;color:#858076}.roulette-player>span em{font:700 7px/1.2 system-ui;color:#ae9259;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roulette-player mark{position:absolute;left:5px;top:-6px;border:0;border-radius:4px;padding:2px 4px;background:#342b1e;color:#d1af6b;font:800 6px/1 system-ui}.roulette-player>button{position:absolute;right:4px;bottom:4px;width:18px;height:18px;border:0;border-radius:50%;background:#5c2629;color:#e7b8b8;font-size:12px}
.roulette-main{max-width:1120px;margin:auto;display:grid;grid-template-columns:minmax(170px,1fr) minmax(350px,1.65fr) minmax(170px,1fr);gap:28px;align-items:center}.roulette-rules,.roulette-ledger{align-self:stretch;max-height:410px;border-top:1px solid rgba(213,183,121,.25);padding-top:16px}.roulette-rules>span,.roulette-ledger>span{font:800 8px/1 system-ui;color:#967d4d;letter-spacing:.2em}.roulette-rules h3{margin:14px 0;font:600 20px/1.4 "Songti SC",serif;color:#e4d8c3}.roulette-rules ol{margin:0;padding:0 0 0 19px;display:grid;gap:9px;color:#979188;font-size:10px;line-height:1.45}.roulette-rules p{margin:18px 0 0;padding:10px 0;border-top:1px solid rgba(255,255,255,.07);font-size:8px;color:#625f59}.roulette-ledger{overflow:hidden}.roulette-ledger>div{margin-top:12px;height:355px;overflow:auto;padding-right:6px}.roulette-ledger p{display:grid;grid-template-columns:24px 1fr;gap:8px;margin:0;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.055);font:500 9px/1.45 system-ui;color:#918b81}.roulette-ledger p i{color:#655d4d;font-style:normal}.roulette-machine{display:grid;place-items:center;position:relative}.roulette-pointer{z-index:4;margin-bottom:-16px;display:grid;place-items:center;gap:4px}.roulette-pointer i{width:0;height:0;border-left:13px solid transparent;border-right:13px solid transparent;border-top:24px solid #bd9448;filter:drop-shadow(0 3px 6px #000)}.roulette-pointer span{position:absolute;top:-8px;font:800 7px/1 system-ui;letter-spacing:.14em;color:#8b7650;white-space:nowrap}.roulette-cylinder-wrap{position:relative;width:min(38vw,350px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#25231f 0 47%,#111 48% 57%,#2f2c27 58% 63%,#0c0c0b 64%);box-shadow:0 22px 55px #000,0 0 0 1px #4e4535,0 0 0 9px #131210,0 0 0 10px rgba(209,177,111,.22)}.roulette-cylinder{position:relative;width:82%;height:82%;border-radius:50%;will-change:transform;background:radial-gradient(circle,#1b1a18 0 17%,transparent 17.5%),conic-gradient(from 15deg,#3a3731,#171715,#474139,#161513,#38342f,#151412,#403b34,#171614,#3a3731);box-shadow:inset 0 0 35px #000,0 0 0 2px #171613}.cylinder-core{position:absolute;left:50%;top:50%;width:27%;height:27%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 37% 33%,#716651,#292620 46%,#0a0a09 74%);box-shadow:0 0 0 4px #111,0 0 0 5px #594d38;display:grid;place-items:center}.cylinder-core i{width:28%;height:28%;border-radius:50%;background:#0a0908;box-shadow:inset 0 1px 4px #000}.chamber{--a:0deg;position:absolute;left:50%;top:50%;width:24%;height:24%;margin:-12%;transform:rotate(var(--a)) translateY(-108%) rotate(calc(var(--a) * -1));border-radius:50%;background:radial-gradient(circle,#050505 0 49%,#171613 51% 63%,#8a7c62 65%,#28251f 71%);box-shadow:inset 0 4px 11px #000,0 2px 5px #000;display:grid;place-items:center}.chamber:nth-of-type(2){--a:0deg}.chamber:nth-of-type(3){--a:60deg}.chamber:nth-of-type(4){--a:120deg}.chamber:nth-of-type(5){--a:180deg}.chamber:nth-of-type(6){--a:240deg}.chamber:nth-of-type(7){--a:300deg}.chamber i{width:47%;height:47%;border-radius:50%;background:#030303;box-shadow:inset 0 3px 6px #000}.chamber b{position:absolute;color:#8a7b60;font:700 8px/1 system-ui;opacity:.52}.roulette-flash{position:absolute;inset:-20%;border-radius:50%;pointer-events:none;opacity:0;background:radial-gradient(circle at 50% 12%,#fff 0,#ffe4a5 7%,#c63227 16%,transparent 50%)}.roulette-flash.on{animation:roulette-flash .5s ease-out}.roulette-result{width:min(100%,360px);margin-top:20px;padding:12px 16px;border:1px solid rgba(211,184,128,.16);border-radius:10px;text-align:center;background:rgba(0,0,0,.26);display:grid;gap:3px}.roulette-result span{font:800 7px/1 system-ui;color:#796e5d;letter-spacing:.2em}.roulette-result b{font:600 15px/1.2 "Songti SC",serif;color:#ddd4c4}.roulette-result small{font:500 9px/1.4 system-ui;color:#827c72}.roulette-result[data-state="ready"]{border-color:rgba(202,165,88,.5)}.roulette-result[data-state="safe"] b{color:#a8c79c}.roulette-result[data-state="fired"] b,.roulette-result[data-state="fired"] small{color:#d78484}.roulette-spinning .roulette-cylinder-wrap{box-shadow:0 22px 55px #000,0 0 0 1px #6e5b39,0 0 0 9px #131210,0 0 38px rgba(210,164,72,.22)}.roulette-fired .roulette-cylinder-wrap{animation:roulette-recoil .5s cubic-bezier(.2,.7,.2,1)}
.roulette-controls{max-width:760px;margin:18px auto 0;min-height:72px;display:flex;justify-content:center;align-items:center}.roulette-ready{width:100%;display:grid;grid-template-columns:1fr auto;grid-template-areas:"label btn" "title btn" "count btn";column-gap:20px;padding:13px 16px;border:1px solid rgba(213,184,127,.16);border-radius:12px;background:rgba(0,0,0,.2)}.roulette-ready>span{grid-area:label;font:800 7px/1 system-ui;letter-spacing:.16em;color:#8c7955}.roulette-ready>b{grid-area:title;font:600 14px/1.4 "Songti SC",serif}.roulette-ready>small{grid-area:count;font-size:8px;color:#777167}.roulette-ready>button{grid-area:btn;align-self:center;border:1px solid #a48247;border-radius:8px;background:#b49355;color:#111;padding:11px 18px;font-weight:800}.roulette-ready>button:disabled{opacity:.5}.roulette-trigger{position:relative;min-width:260px;height:70px;border:1px solid #755052;border-radius:13px;background:linear-gradient(#522429,#2b1416);color:#eed8c9;display:flex;align-items:center;justify-content:center;gap:14px;box-shadow:0 10px 30px rgba(0,0,0,.4);transition:.25s}.roulette-trigger>i{width:30px;height:30px;border:3px solid #c38667;border-radius:50%;box-shadow:inset 0 0 0 7px #32181a}.roulette-trigger span{display:grid;text-align:left}.roulette-trigger small{font:700 8px/1 system-ui;color:#b58c7b;letter-spacing:.14em}.roulette-trigger b{font:700 17px/1.5 "Songti SC",serif}.roulette-trigger.your-turn{border-color:#d69d6d;background:linear-gradient(#822e35,#461a1e);box-shadow:0 0 0 4px rgba(177,67,74,.12),0 12px 36px #000;animation:roulette-ready-pulse 1.8s ease-in-out infinite}.roulette-trigger:not(:disabled):hover{transform:translateY(-2px);filter:brightness(1.15)}.roulette-trigger:disabled{opacity:.4;filter:grayscale(.5)}
@keyframes roulette-ready-pulse{50%{box-shadow:0 0 0 8px rgba(177,67,74,.07),0 12px 36px #000}}@keyframes roulette-flash{0%{opacity:0}8%{opacity:1}35%{opacity:.75}100%{opacity:0}}@keyframes roulette-recoil{15%{transform:translateY(8px) scale(.97)}45%{transform:translateY(-4px) scale(1.015)}100%{transform:none}}
@media(max-width:900px){.roulette-toolbar{grid-template-columns:auto 1fr auto;height:66px;padding:0 12px}.roulette-room-id span,.roulette-tools #rouletteRefreshBtn{display:none}.roulette-tools button,.roulette-back{padding:8px;font-size:9px}.roulette-shell{min-height:calc(100svh - 66px);padding:16px 12px 24px}.roulette-players{grid-template-columns:repeat(3,1fr)}.roulette-main{grid-template-columns:1fr}.roulette-rules{display:none}.roulette-ledger{order:3;max-height:180px}.roulette-ledger>div{height:130px}.roulette-cylinder-wrap{width:min(72vw,330px)}}
@media(max-width:520px){.create-mode-picker{grid-template-columns:1fr}.roulette-toolbar{grid-template-columns:auto 1fr}.roulette-tools{gap:5px}.roulette-tools #rouletteChatBtn{position:fixed;right:12px;bottom:14px;z-index:50;background:#34251f}.roulette-room-id{padding-right:38px}.roulette-players{grid-template-columns:repeat(2,1fr);gap:6px}.roulette-player{padding:7px}.roulette-status{margin-bottom:11px}.roulette-main{gap:14px}.roulette-cylinder-wrap{width:min(76vw,290px)}.roulette-controls{margin-top:13px}.roulette-trigger{height:62px}.roulette-ledger{display:none}.roulette-shell{overflow:auto}.roulette-back{font-size:0}.roulette-back:first-letter{font-size:17px}}
@media(prefers-reduced-motion:reduce){.roulette-trigger.your-turn,.roulette-fired .roulette-cylinder-wrap,.roulette-flash.on{animation-duration:.01ms!important;animation-iteration-count:1!important}}
.roulette-cylinder .chamber{transform:rotate(var(--a)) translateY(-108%)}
body.roulette-mode .topbar,body.roulette-mode>footer{display:none}body.roulette-mode .app-shell{width:100%;padding:0;min-height:100svh}
@media(min-width:901px) and (max-height:820px){.roulette-toolbar{height:60px}.roulette-shell{min-height:calc(100svh - 60px);padding-top:12px;padding-bottom:12px}.roulette-status{margin-bottom:9px;gap:3px}.roulette-status>strong{font-size:19px}.roulette-players{margin-bottom:10px}.roulette-player{padding-block:7px}.roulette-avatar{width:32px;height:32px;flex-basis:32px}.roulette-main{gap:24px}.roulette-cylinder-wrap{width:min(31vw,285px)}.roulette-result{margin-top:10px;padding:8px 14px}.roulette-rules,.roulette-ledger{max-height:335px}.roulette-ledger>div{height:280px}.roulette-controls{min-height:58px;margin-top:8px}.roulette-trigger{height:58px}.roulette-ready{padding-block:8px}}
@media(max-width:520px){.roulette-controls{flex-direction:column;align-items:stretch;gap:8px}.roulette-trigger{width:100%;min-width:0}.roulette-ready{width:100%}}

/* ── V16 · European red/black roulette ── */
.room-row.casino-room{position:relative;overflow:hidden;border-color:rgba(173,132,52,.25)}.room-row.casino-room:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(#c3a34f,#8b231f)}.room-row.casino-room .room-mode{color:#9b762a}.room-row.casino-room .soft-btn{border-color:#aa883f;color:#745719}.create-mode-picker{grid-template-columns:repeat(3,1fr)}
body.casino-mode{background:#091710;color:#eee7d8}body.casino-mode .topbar,body.casino-mode>footer{display:none}body.casino-mode .app-shell{width:100%;padding:0;min-height:100svh}.casino-view{min-height:100svh;background:radial-gradient(circle at 28% 42%,rgba(34,87,59,.38),transparent 34%),linear-gradient(118deg,#07110c,#0b1b12 52%,#080c09);color:#eee7d8;overflow:hidden}.casino-toolbar{height:64px;padding:0 clamp(16px,3vw,48px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid rgba(214,184,114,.18);background:rgba(4,10,7,.84);backdrop-filter:blur(18px);position:relative;z-index:20}.casino-back,.casino-tools button{border:1px solid rgba(216,190,128,.22);border-radius:4px;background:rgba(255,255,255,.035);color:#d8cdb7;padding:9px 12px;font:700 9px/1 var(--sans);letter-spacing:.08em}.casino-back{justify-self:start}.casino-tools{justify-self:end;display:flex;gap:7px}.casino-tools .casino-end{color:#e19b94;border-color:rgba(176,59,54,.55)}.casino-room-id{text-align:center;display:grid;gap:2px}.casino-room-id small{font:800 7px/1 var(--sans);letter-spacing:.25em;color:#b79547}.casino-room-id strong{font:600 18px/1.15 var(--serif);letter-spacing:.08em}.casino-room-id span{font-size:8px;color:#777369}.casino-room-id b{color:#c4a75f;letter-spacing:.12em}.casino-shell{position:relative;min-height:calc(100svh - 64px);padding:12px clamp(14px,2.7vw,44px) 18px}.casino-shell:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(30deg,transparent 49.8%,rgba(211,177,92,.025) 50%,transparent 50.2%);background-size:55px 55px}.casino-status{height:54px;position:relative;z-index:1;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;max-width:1220px;margin:auto}.casino-status>span{font:800 8px/1 var(--sans);letter-spacing:.19em;color:#ae8e48}.casino-status>strong{font:600 18px/1.2 var(--serif);text-align:center}.casino-status>div{justify-self:end;display:flex;align-items:baseline;gap:5px}.casino-status>div>i{font:600 25px/1 Georgia,serif;color:#d4b86f}.casino-status>div>small{font-size:7px;color:#7e796f}.casino-status>div>em{margin-left:12px;font:600 8px/1 var(--sans);color:#8e887d}.casino-status>div b{color:#d3bb7b}.casino-players{position:relative;z-index:1;max-width:1220px;margin:2px auto 10px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.casino-player{height:47px;min-width:0;display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid rgba(215,189,126,.12);background:rgba(255,255,255,.028);position:relative}.casino-player.me{border-color:rgba(210,173,81,.48);background:rgba(186,145,49,.08)}.casino-player.has-bet{box-shadow:inset 0 -2px #ae8e44}.casino-player.empty{opacity:.34}.casino-player>i{width:31px;height:31px;flex:0 0 31px;display:grid;place-items:center;border:1px solid rgba(216,190,132,.25);border-radius:50%;font:600 12px/1 var(--serif);color:#bfab7c;overflow:hidden;font-style:normal}.casino-player>i img{width:100%;height:100%;object-fit:cover}.casino-player>span{min-width:0;display:grid;gap:1px}.casino-player>span b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.casino-player>span small{font-size:7px;color:#858075;white-space:nowrap}.casino-player>span em{font-size:7px;color:#b59d67}.casino-player mark{position:absolute;left:3px;top:-5px;padding:2px 4px;background:#a6863d;color:#111;border:0;font:800 6px/1 var(--sans)}.casino-player>button{position:absolute;right:3px;top:3px;width:17px;height:17px;border:0;border-radius:50%;background:#632c29;color:#e9bcb5}.casino-game{position:relative;z-index:1;max-width:1220px;height:min(58vh,440px);min-height:390px;margin:auto;display:grid;grid-template-columns:minmax(330px,1.05fr) minmax(420px,1.4fr) minmax(155px,.55fr);gap:22px;align-items:center}.casino-wheel-stage{height:100%;display:grid;place-items:center;align-content:center}.casino-wheel{position:relative;width:min(31vw,350px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#221d13 0 9%,#a78a4a 9.5% 10%,#2c2517 10.5% 27%,#b49b61 27.5% 29%,#12130f 30% 68%,#b39857 69% 71%,#1b1710 72% 80%,#a4874b 81% 83%,#0a0b08 84%);box-shadow:0 30px 60px rgba(0,0,0,.62),0 0 0 1px #836d40,0 0 0 7px #0d0e0a,0 0 0 8px rgba(216,185,109,.25)}.casino-outer-ring{position:absolute;inset:7%;border:1px solid rgba(237,213,156,.23);border-radius:50%;box-shadow:inset 0 0 25px #000}.casino-ball-track{position:absolute;inset:5%;border-radius:50%;z-index:7;will-change:transform}.casino-ball-track>i{--ball-inset:0px;position:absolute;left:50%;top:var(--ball-inset);width:10px;height:10px;margin-left:-5px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#e6dcc4 45%,#837a69 76%);box-shadow:0 2px 5px #000;transition:top .06s linear}.casino-rotor{position:absolute;width:73%;height:73%;border-radius:50%;will-change:transform;background:radial-gradient(circle,#b59a59 0 5%,#322916 6% 18%,#a98b48 19% 20%,#131510 21% 68%,#b08f4a 69% 72%,#17130d 73%);box-shadow:inset 0 0 22px #000}.casino-rotor>#casinoPockets{position:absolute;inset:0}.casino-pocket{position:absolute;left:50%;top:50%;width:16px;height:47%;margin-left:-8px;transform-origin:50% 100%;transform:translateY(-100%) rotate(var(--angle));clip-path:polygon(18% 0,82% 0,100% 100%,0 100%);display:flex;justify-content:center;padding-top:3px;border-left:1px solid rgba(233,211,160,.32);border-right:1px solid rgba(0,0,0,.7)}.casino-pocket.red{background:linear-gradient(#9c2826,#4e1312)}.casino-pocket.black{background:linear-gradient(#22231f,#080907)}.casino-pocket.green{background:linear-gradient(#176a42,#0a3320)}.casino-pocket span{font:700 6px/1 var(--sans);color:#f5ead4;writing-mode:vertical-rl;text-shadow:0 1px 2px #000}.casino-hub{position:absolute;left:50%;top:50%;width:36%;height:36%;transform:translate(-50%,-50%);border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 40% 34%,#c8b076,#705b2e 45%,#17130b 73%);box-shadow:0 0 0 3px #211b0e,0 0 0 4px #bc9c54}.casino-hub i{font:700 17px/1 Georgia,serif;color:#201a0f;text-shadow:0 1px #d7c08c}.casino-hub span{position:absolute;bottom:22%;font:800 5px/1 var(--sans);letter-spacing:.15em;color:#2d2515}.casino-marker{position:absolute;z-index:9;top:-4px;width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-top:22px solid #d2ad5a;filter:drop-shadow(0 3px 4px #000)}.casino-winning{width:180px;height:48px;margin-top:9px;border:1px solid rgba(203,177,111,.2);display:grid;grid-template-columns:44px 1fr;grid-template-rows:1fr 1fr;padding:7px 10px;background:rgba(0,0,0,.25)}.casino-winning>span{grid-column:2;font:800 6px/1 var(--sans);letter-spacing:.18em;color:#837a68}.casino-winning>b{grid-row:1/3;font:600 28px/1 Georgia,serif;color:#d5c397;align-self:center}.casino-winning>small{grid-column:2;font-size:7px;color:#898278}.casino-winning[data-color="red"]{border-color:#9d4038;background:rgba(103,22,21,.28)}.casino-winning[data-color="red"]>b{color:#dc7770}.casino-winning[data-color="black"]{border-color:#615b4e;background:rgba(0,0,0,.5)}.casino-winning[data-color="green"]{border-color:#3a8e65;background:rgba(13,74,46,.28)}.casino-winning[data-color="green"]>b{color:#74c49a}.casino-winning[data-color="spinning"]>b{animation:casino-dot 1s ease-in-out infinite}.casino-history-strip{height:22px;display:flex;gap:4px;margin-top:5px}.casino-history-strip i{width:21px;height:21px;display:grid;place-items:center;border-radius:50%;font:700 7px/1 var(--sans);font-style:normal;color:#fff}.casino-history-strip i.red{background:#8e2926}.casino-history-strip i.black{background:#1d1e1b;border:1px solid #5f5a50}.casino-history-strip i.green{background:#17673f}.casino-table{align-self:stretch;display:flex;flex-direction:column;justify-content:center;padding:17px;border:1px solid rgba(213,186,120,.16);background:linear-gradient(135deg,rgba(23,75,50,.7),rgba(8,40,26,.8));box-shadow:inset 0 0 55px rgba(0,0,0,.35),0 16px 36px rgba(0,0,0,.22);position:relative}.casino-table:before{content:"";position:absolute;inset:8px;border:1px solid rgba(230,207,152,.13);pointer-events:none}.casino-table-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px;position:relative;z-index:1}.casino-table-head span{display:grid}.casino-table-head small{font:800 6px/1 var(--sans);letter-spacing:.19em;color:#b59c62}.casino-table-head b{font:600 11px/1.5 var(--serif)}.casino-table-head>em{font:700 7px/1 var(--sans);color:#9d947f}.casino-number-board{display:grid;grid-template-columns:42px 1fr;gap:3px;position:relative;z-index:1}.casino-number-board button,.casino-even-board button{position:relative;border:1px solid rgba(240,220,174,.46);background:rgba(3,20,12,.7);color:#f3ead8;font:700 9px/1 var(--sans);transition:.15s}.casino-number-board button:hover:not(:disabled),.casino-even-board button:hover:not(:disabled){filter:brightness(1.4);transform:translateY(-1px);z-index:2}.casino-number-board button:disabled,.casino-even-board button:disabled{cursor:not-allowed}.casino-zero{background:#14633e!important;font:700 21px/1 Georgia,serif!important}.casino-number-board>div{display:grid;grid-template-rows:repeat(3,29px);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px}.casino-number-board button.number-red{background:#8f2926}.casino-number-board button.number-black{background:#151714}.casino-number-board button.placed:after,.casino-even-board button.placed:after{content:attr(data-bet);position:absolute;right:-3px;top:-5px;min-width:17px;height:17px;padding:0 3px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,#ecd68f,#a27b28);color:#1d180d;font:800 6px/1 var(--sans);box-shadow:0 2px 6px #000;z-index:5}.casino-even-board{display:grid;grid-template-columns:repeat(6,1fr);gap:3px;margin-top:3px;position:relative;z-index:1}.casino-even-board button{height:31px}.casino-even-board .bet-red{background:#882925}.casino-even-board .bet-black{background:#151714}.casino-even-board button>i{display:inline-block;width:7px;height:7px;margin-right:4px;transform:rotate(45deg);background:currentColor}.casino-bet-console{position:relative;z-index:1;margin-top:12px;display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center}.casino-chips{display:flex;gap:5px}.casino-chips button{width:34px;height:34px;border:3px dashed rgba(255,255,255,.45);border-radius:50%;background:#aa8c43;color:#201a0d;font:800 7px/1 var(--sans);box-shadow:inset 0 0 0 2px #d9c078,0 3px 7px #000}.casino-chips button:nth-child(2){background:#b1b0a5}.casino-chips button:nth-child(3){background:#6d8da5}.casino-chips button:nth-child(4){background:#a8574e}.casino-chips button.selected{transform:translateY(-5px);box-shadow:inset 0 0 0 2px #fff0b4,0 7px 12px #000}.casino-bet-summary{min-width:0;display:grid}.casino-bet-summary>span{font:800 6px/1 var(--sans);letter-spacing:.15em;color:#9b906f}.casino-bet-summary>b{font:600 14px/1.45 var(--serif)}.casino-bet-summary>small{font-size:6px;color:#8c887d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.casino-clear{border:1px solid rgba(218,193,134,.3);background:rgba(0,0,0,.2);color:#c5b99f;padding:9px;font:700 7px/1 var(--sans)}.casino-clear:disabled{opacity:.3}.casino-ledger{align-self:stretch;border-left:1px solid rgba(214,186,116,.14);padding:15px 0 0 14px;overflow:hidden}.casino-ledger>span{font:800 6px/1 var(--sans);letter-spacing:.23em;color:#a28442}.casino-ledger>strong{display:block;margin:5px 0 14px;font:600 16px/1 var(--serif)}.casino-ledger>div{max-height:345px;overflow:auto}.casino-ledger p{display:grid;grid-template-columns:22px 1fr;gap:6px;margin:0;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.055);font-size:7px;line-height:1.45;color:#8f8a80}.casino-ledger p i{font-style:normal;color:#5f594c}.casino-ready{position:relative;z-index:4;max-width:620px;margin:8px auto 0;padding:9px 12px;border:1px solid rgba(211,182,111,.2);background:rgba(2,10,6,.82);display:flex;justify-content:space-between;align-items:center}.casino-ready>span{display:grid}.casino-ready small{font:800 6px/1 var(--sans);letter-spacing:.17em;color:#9f8447}.casino-ready b{font:600 13px/1.5 var(--serif)}.casino-ready em{font:600 7px/1 var(--sans);color:#77736b}.casino-ready>button{border:1px solid #b3934c;background:#b59650;color:#17130b;padding:10px 22px;font:800 9px/1 var(--sans)}.casino-ready>button:disabled{opacity:.45}.casino-spinning .casino-wheel{box-shadow:0 30px 60px rgba(0,0,0,.62),0 0 0 1px #b69242,0 0 0 7px #0d0e0a,0 0 38px rgba(194,150,51,.2)}.casino-landed .casino-wheel{animation:casino-land .55s cubic-bezier(.16,.75,.24,1)}
@keyframes casino-dot{50%{opacity:.25;transform:scale(.75)}}@keyframes casino-land{20%{transform:scale(.985)}50%{transform:scale(1.01)}100%{transform:none}}
@media(max-width:1040px){.casino-game{grid-template-columns:minmax(300px,.9fr) minmax(420px,1.3fr)}.casino-ledger{display:none}.casino-wheel{width:min(35vw,330px)}}
@media(max-width:760px){.create-mode-picker{grid-template-columns:1fr}.casino-toolbar{height:58px;padding:0 11px;grid-template-columns:auto 1fr auto}.casino-room-id span,.casino-tools #casinoRefreshBtn{display:none}.casino-back{font-size:0;width:34px;height:34px}.casino-back:first-letter{font-size:16px}.casino-tools button{padding:8px;font-size:8px}.casino-shell{min-height:calc(100svh - 58px);padding:10px}.casino-status{height:64px;grid-template-columns:1fr auto}.casino-status>strong{text-align:left;grid-column:1/3;grid-row:1;font-size:16px}.casino-status>span{grid-row:2}.casino-status>div{grid-row:2}.casino-status>div>em{display:none}.casino-players{grid-template-columns:repeat(2,1fr);gap:5px}.casino-game{height:auto;min-height:0;display:flex;flex-direction:column;gap:18px}.casino-wheel-stage{width:100%;height:auto}.casino-wheel{width:min(78vw,320px)}.casino-winning{margin-top:12px}.casino-table{width:100%;padding:14px 10px}.casino-number-board{grid-template-columns:35px 1fr}.casino-number-board>div{grid-template-rows:repeat(3,31px)}.casino-bet-console{grid-template-columns:1fr auto}.casino-chips{grid-column:1/3}.casino-bet-summary{grid-column:1}.casino-clear{grid-column:2}.casino-ready{position:sticky;bottom:8px;margin-top:12px}.casino-view{overflow:auto}}
@media(max-width:420px){.casino-player{height:44px}.casino-player>i{width:28px;height:28px;flex-basis:28px}.casino-wheel{width:88vw}.casino-pocket{width:13px;margin-left:-6.5px}.casino-table-head>em{display:none}.casino-number-board>div{grid-template-rows:repeat(3,29px);gap:2px}.casino-number-board,.casino-even-board{gap:2px}.casino-even-board button{font-size:8px}.casino-chips{justify-content:center}.casino-chips button{width:38px;height:38px}.casino-status>div>i{font-size:20px}}
@media(prefers-reduced-motion:reduce){.casino-landed .casino-wheel,.casino-winning[data-color="spinning"]>b{animation-duration:.01ms!important}}

/* Shared room lifecycle controls */
.roulette-tools .roulette-close,.casino-tools .casino-close{color:#bd7872;border-color:rgba(176,59,54,.3);background:transparent}.roulette-tools .roulette-close:hover,.casino-tools .casino-close:hover{color:#ffc0b8;border-color:rgba(218,91,83,.62);background:rgba(121,32,29,.2)}
@media(max-width:600px){.owner-close-btn{font-size:0!important;width:32px!important;padding:0!important}.owner-close-btn::before{content:"×";font-size:14px}.roulette-tools .roulette-close,.casino-tools .casino-close{font-size:0;width:32px;height:32px;padding:0}.roulette-tools .roulette-close::before,.casino-tools .casino-close::before{content:"×";font-size:14px}}

/* ===== v2 交互与美术优化 pass ===== */
/* 准备操作按钮组 */
.ready-actions{grid-area:btn;display:flex;gap:8px;align-items:center}
.casino-ready .ready-actions,.ready-panel .ready-actions{grid-area:auto}
.ready-actions>button{transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}
.ready-actions>button:not(:disabled):hover{transform:translateY(-1px);filter:brightness(1.08)}
.cancel-ready{border:1px solid rgba(203,148,74,.55)!important;background:rgba(121,79,32,.16)!important;color:#e6c988!important;border-radius:8px;padding:10px 16px;font-weight:800}
.cancel-ready:not(:disabled):hover{border-color:#d8a55e!important;background:rgba(146,92,34,.3)!important}
.casino-ready .cancel-ready{border:1px solid rgba(216,165,94,.5)!important;background:rgba(20,60,40,.35)!important;color:#e8cf9a!important}
.cancel-ready:disabled{opacity:.4}
/* 闲置倒计时徽章 */
.idle-chip{display:inline-flex;align-items:center;gap:3px;justify-self:start;font:800 8px/1 system-ui;font-style:normal;text-decoration:none;color:#e9d9a8;background:rgba(140,104,44,.28);border:1px solid rgba(222,186,110,.4);border-radius:20px;padding:3px 7px;letter-spacing:.04em;animation:idlePulse 2.4s ease-in-out infinite}
.idle-chip.warn{color:#ffd9c9;background:rgba(140,42,34,.4);border-color:rgba(226,116,92,.65);animation-duration:1s}
@keyframes idlePulse{50%{box-shadow:0 0 10px rgba(224,186,110,.22)}}
/* 全局行动提示条 */
.idle-hint{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:8px;padding:9px 16px;border-radius:24px;border:1px solid rgba(222,186,110,.4);background:rgba(14,11,7,.92);backdrop-filter:blur(10px);color:#eadbb4;font:700 10px/1.3 system-ui;letter-spacing:.03em;box-shadow:0 10px 26px rgba(0,0,0,.5);animation:idleHintIn .3s ease}
.idle-hint>i{font-style:normal;font-size:13px}
.idle-hint.warn{border-color:rgba(228,120,96,.7);background:rgba(64,17,13,.94);color:#ffd9c9;animation:idleHintWarn 1s ease-in-out infinite}
.idle-hint[data-mode="casino"]{border-color:rgba(150,208,166,.4);color:#d9ead9}
.idle-hint[data-mode="casino"].warn{border-color:rgba(228,120,96,.7);background:rgba(64,17,13,.94)}
@keyframes idleHintIn{from{opacity:0;transform:translate(-50%,10px)}}
@keyframes idleHintWarn{50%{box-shadow:0 0 22px rgba(226,116,92,.35)}}
/* 轮盘倒计时紧迫态 */
#casinoCountdown.urgent{color:#ff9d8a;animation:countdownUrgent .8s ease-in-out infinite}
@keyframes countdownUrgent{50%{transform:scale(1.14);text-shadow:0 0 14px rgba(255,120,90,.5)}}
/* --- 命运角斗场美术 --- */
.roulette-player{background:linear-gradient(150deg,rgba(255,255,255,.05),rgba(255,255,255,.015));backdrop-filter:blur(4px)}
.roulette-player.acting{background:linear-gradient(150deg,rgba(196,148,60,.2),rgba(150,102,40,.08));animation:actingGlow 2.6s ease-in-out infinite}
@keyframes actingGlow{50%{box-shadow:0 0 30px rgba(206,156,62,.24)}}
.roulette-trigger:not(:disabled){background:linear-gradient(160deg,#632a30,#311619 68%)}
.roulette-trigger:not(:disabled):after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(115deg,transparent 30%,rgba(255,226,180,.14) 48%,transparent 62%);transform:translateX(-120%);transition:transform .8s ease}
.roulette-trigger:not(:disabled):hover:after{transform:translateX(120%)}
.roulette-ready{background:linear-gradient(135deg,rgba(28,22,14,.55),rgba(8,6,4,.55));box-shadow:inset 0 1px 0 rgba(255,236,190,.06)}
/* --- 红黑轮盘美术 --- */
.casino-player{transition:border-color .25s ease,box-shadow .25s ease}
.casino-player.has-bet{border-color:rgba(226,190,102,.4);box-shadow:inset 0 -2px #ae8e44,0 0 14px rgba(196,150,60,.12)}
.casino-chips button{transition:transform .18s ease,box-shadow .18s ease}
.casino-chips button:not(.selected):hover{transform:translateY(-2px)}
.casino-number-board button.placed,.casino-even-board button.placed{animation:betPlaced 1.8s ease-in-out infinite}
@keyframes betPlaced{50%{box-shadow:0 0 12px rgba(240,214,150,.35)}}
.casino-ready{border:1px solid rgba(211,182,111,.28);background:linear-gradient(135deg,rgba(10,36,24,.9),rgba(4,16,10,.92));box-shadow:0 12px 30px rgba(0,0,0,.35)}
.casino-tools button,.roulette-tools button{transition:transform .16s ease,background .16s ease,border-color .16s ease}
.casino-tools button:not(.casino-end):not(.casino-close):hover,.roulette-tools button:not(.roulette-end):not(.roulette-close):hover{transform:translateY(-1px)}
/* 键盘可达性 */
.roulette-view button:focus-visible,.casino-view button:focus-visible,.chat-panel button:focus-visible,.idle-hint:focus-visible{outline:2px solid rgba(232,196,120,.75);outline-offset:2px}
/* 日志滚动条统一 */
.roulette-ledger>div::-webkit-scrollbar,.casino-ledger>div::-webkit-scrollbar,.activity-log::-webkit-scrollbar,.chat-stream::-webkit-scrollbar{width:5px}
.roulette-ledger>div::-webkit-scrollbar-thumb,.casino-ledger>div::-webkit-scrollbar-thumb,.activity-log::-webkit-scrollbar-thumb,.chat-stream::-webkit-scrollbar-thumb{background:rgba(200,170,105,.28);border-radius:4px}
@media(max-width:520px){.idle-hint{bottom:56px;font-size:9px;padding:7px 12px}.ready-actions{flex-direction:column;align-items:stretch}.ready-actions>button{width:100%}}

/* ═══════════════ V17 · 三界面 UI/动画 强化层 ═══════════════ */

/* —— 红黑轮盘：转盘数字与区域显示 —— */
.casino-pocket span{position:absolute;left:50%;top:27%;z-index:2;transform:translate(-50%,-50%) rotate(calc(var(--angle) * -1));font:800 9px/1 var(--sans);color:#fff;writing-mode:horizontal-tb;letter-spacing:.2px;text-shadow:0 0 3px rgba(0,0,0,.9),0 1px 2px #000;transition:color .2s ease,text-shadow .2s ease}
#casinoPockets::before{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;background:repeating-conic-gradient(from 4.86deg,rgba(228,203,142,.5) 0 .5deg,transparent .5deg 9.73deg)}
.casino-pocket.hit{filter:brightness(1.55) saturate(1.3);z-index:2}
.casino-pocket.hit span{color:#ffeaa8;font-size:10px;text-shadow:0 0 7px rgba(255,196,84,.95),0 1px 2px #000}
.casino-pocket.hit::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 26%,rgba(255,234,175,.55),transparent 62%);animation:pocketHit 1.1s ease-in-out infinite}
@keyframes pocketHit{0%,100%{opacity:.35}50%{opacity:1}}

/* —— 轮盘机械结构：障碍钉 / 辐条 / 球道 —— */
.casino-deflectors{position:absolute;inset:5%;border-radius:50%;z-index:8;pointer-events:none}
.casino-deflector{position:absolute;width:7px;height:7px;background:linear-gradient(135deg,#f2dfa0 0,#8a6f35 62%,#c9ae67);transform:rotate(45deg);box-shadow:0 0 3px rgba(0,0,0,.85),0 0 7px rgba(240,220,150,.3)}
.casino-deflector:nth-of-type(1){top:4%;left:50%;margin-left:-3.5px}
.casino-deflector:nth-of-type(2){bottom:4%;left:50%;margin-left:-3.5px}
.casino-deflector:nth-of-type(3){left:4%;top:50%;margin-top:-3.5px}
.casino-deflector:nth-of-type(4){right:4%;top:50%;margin-top:-3.5px}
.casino-spokes{position:absolute;inset:20%;border-radius:50%;pointer-events:none;background:repeating-conic-gradient(rgba(238,216,160,.16) 0 1.6deg,transparent 1.6deg 45deg);-webkit-mask:radial-gradient(circle,transparent 0 42%,#000 43% 96%,transparent 97%);mask:radial-gradient(circle,transparent 0 42%,#000 43% 96%,transparent 97%)}
.casino-ball-track::before{content:"";position:absolute;inset:9%;border-radius:50%;box-shadow:inset 0 0 9px rgba(0,0,0,.55),inset 0 0 0 1px rgba(16,12,6,.45)}
.casino-spinning #casinoBall{box-shadow:0 2px 5px #000,0 0 13px rgba(255,250,230,.8),0 0 28px rgba(255,244,200,.4)}
.casino-hub{box-shadow:0 0 0 3px #211b0e,0 0 0 4px #bc9c54,0 6px 18px rgba(0,0,0,.55)}
.casino-hub i{text-shadow:0 1px #d7c08c,0 0 14px rgba(246,224,160,.45)}
.casino-marker{filter:drop-shadow(0 3px 4px #000) drop-shadow(0 0 6px rgba(240,214,140,.55))}
.casino-spinning .casino-marker{animation:markerVibrate .16s linear infinite}
@keyframes markerVibrate{0%,100%{transform:translateX(-1px)}50%{transform:translateX(1px)}}

/* —— 中奖联动：号码板与区域高亮 —— */
.casino-number-board button.hit,.casino-even-board button.hit{z-index:3;border-color:#ffe9a6;animation:numberHit .95s ease-in-out infinite}
.casino-number-board button.zone-hit,.casino-even-board button.zone-hit{border-color:rgba(255,220,130,.85);box-shadow:inset 0 0 0 1px rgba(255,220,130,.5),0 0 12px rgba(255,210,110,.3)}
@keyframes numberHit{0%,100%{transform:scale(1);box-shadow:0 0 0 2px #ffd873,0 0 12px rgba(255,216,115,.45)}50%{transform:scale(1.07);box-shadow:0 0 0 2px #ffe9a6,0 0 26px rgba(255,216,115,.9)}}
.casino-landed .casino-winning{animation:winningPop .6s cubic-bezier(.2,1.5,.3,1)}
@keyframes winningPop{0%{transform:scale(.9)}55%{transform:scale(1.06)}100%{transform:scale(1)}}
.casino-winning{transition:border-color .3s ease,background .3s ease}
.casino-history-strip i{animation:historyIn .4s ease}
@keyframes historyIn{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}

/* —— 命运角斗场：待发弹巢 / 震屏 / 安全反馈 —— */
.chamber{transition:box-shadow .3s ease}
.chamber b{transition:color .3s ease,opacity .3s ease}
.chamber.armed{background:radial-gradient(circle at 38% 32%,#3d2c14 0 46%,#050505 47% 60%,#8a7c62 62%,#28251f 68%);animation:chamberArmed 1.6s ease-in-out infinite}
.chamber.armed b{color:#eccd84;opacity:1}
.chamber.armed i{background:#170c05;box-shadow:inset 0 0 9px #000,0 0 10px rgba(226,150,60,.55)}
@keyframes chamberArmed{0%,100%{box-shadow:inset 0 4px 11px #000,0 0 0 2px rgba(214,178,102,.4),0 0 10px rgba(222,186,110,.22)}50%{box-shadow:inset 0 4px 11px #000,0 0 0 2px rgba(244,208,134,.9),0 0 24px rgba(236,200,124,.6)}}
.roulette-fired{animation:screenShake .55s cubic-bezier(.36,.07,.19,.97)}
@keyframes screenShake{10%,90%{transform:translate(-1px,1px)}20%,80%{transform:translate(2px,-1px)}30%,50%,70%{transform:translate(-3px,2px)}40%,60%{transform:translate(3px,-2px)}}
.roulette-safe .roulette-cylinder-wrap{box-shadow:0 22px 55px #000,0 0 0 1px rgba(122,160,110,.65),0 0 0 9px #131210,0 0 38px rgba(110,190,130,.28)}
.roulette-player.acting{animation:playerActingV17 1.9s ease-in-out infinite}
@keyframes playerActingV17{0%,100%{box-shadow:0 0 0 1px rgba(226,190,102,.35),0 0 14px rgba(210,174,90,.16)}50%{box-shadow:0 0 0 1px rgba(244,210,126,.7),0 0 26px rgba(222,186,102,.34)}}

/* —— 德州扑克：桌面灯光 / 底池筹码 / 按钮手感 —— */
.felt-wrap::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:40px;background:radial-gradient(ellipse 62% 46% at 50% 6%,rgba(216,238,210,.10),transparent 70%)}
.pot b{position:relative}
.pot b::before{content:"";display:inline-block;width:12px;height:12px;margin-right:7px;border-radius:50%;vertical-align:-1.5px;border:1.5px solid rgba(58,44,18,.6);background:radial-gradient(circle at 50% 42%,#f4e3ae 0 27%,transparent 28%),repeating-conic-gradient(#c9a45c 0 22deg,#8b231f 22deg 44deg);box-shadow:0 2px 4px rgba(0,0,0,.4),inset 0 0 0 1.5px rgba(255,240,200,.28)}
.action-btn{transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}
.action-btn:active{transform:translateY(1px) scale(.97)}
.deck-cards i{transition:transform .25s ease}
.deck-cards{animation:deckBreathe 3.6s ease-in-out infinite}
@keyframes deckBreathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.deal-shoe:hover .deck-cards{transform:translateY(-3px)}
.deal-shoe:hover .deck-cards i:nth-child(3){transform:translateX(-4px) rotate(-5deg)}
.deal-shoe{transition:transform .25s ease}
.deal-shoe:hover{transform:translateY(-2px)}

/* —— 响应式与动效偏好 —— */
@media(max-width:420px){.casino-pocket span{font-size:7px}.casino-pocket.hit span{font-size:8px}.casino-deflector{width:5px;height:5px;margin:-2.5px!important}.casino-deflector:nth-of-type(1),.casino-deflector:nth-of-type(2){margin-left:-2.5px!important;margin-top:0!important}.casino-deflector:nth-of-type(3),.casino-deflector:nth-of-type(4){margin-top:-2.5px!important;margin-left:0!important}}
@media(prefers-reduced-motion:reduce){.roulette-fired,.chamber.armed,.roulette-player.acting,.casino-landed .casino-winning,.casino-spinning .casino-marker,.casino-pocket.hit::after,.casino-pocket.hit span,.casino-number-board button.hit,.casino-even-board button.hit,.casino-history-strip i,.deck-cards,.casino-ball-track::before{animation:none!important}}

/* ═══════════════ V18 · 轮盘整盘色环 + 角斗场依次击发 ═══════════════ */

/* —— 红黑轮盘：37 段 conic 整盘色环（JS 注入背景）—— */
.casino-disc{position:absolute;inset:0;border-radius:50%;z-index:1;-webkit-mask:radial-gradient(circle closest-side,transparent 0 29%,#000 31% 96%,transparent 97%);mask:radial-gradient(circle closest-side,transparent 0 29%,#000 31% 96%,transparent 97%)}
.casino-disc::after{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 4.865deg,rgba(244,228,178,.55) 0deg .5deg,transparent .5deg 9.73deg)}
.casino-hit-wedge{position:absolute;inset:0;border-radius:50%;z-index:2;pointer-events:none;-webkit-mask:radial-gradient(circle closest-side,transparent 0 29%,#000 31% 96%,transparent 97%);mask:radial-gradient(circle closest-side,transparent 0 29%,#000 31% 96%,transparent 97%);animation:wedgePulse 1.05s ease-in-out infinite}
@keyframes wedgePulse{0%,100%{opacity:.45}50%{opacity:1}}
.casino-spokes{z-index:3}
.casino-rotor>#casinoPockets{z-index:4}
.casino-hub{z-index:5}
.casino-deflectors{z-index:6}
#casinoPockets::before{display:none}

/* —— 数字环：白字黑描边，中奖金色脉冲 —— */
.casino-num{position:absolute;z-index:4;transform:translate(-50%,-50%);font:900 13px/1 var(--sans);color:#fdfaf2;letter-spacing:.2px;text-shadow:0 0 3px rgba(0,0,0,.95),0 0 6px rgba(0,0,0,.8),0 1px 2px #000;pointer-events:none;transition:color .2s ease}
.casino-num.green{color:#9fe8c0}
.casino-num.hit{color:#ffe9a6;font-size:15px;font-weight:900;z-index:6;text-shadow:0 0 8px rgba(255,205,90,.95),0 0 18px rgba(255,180,60,.6),0 1px 2px #000;animation:numPulse 1s ease-in-out infinite}
@keyframes numPulse{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.3)}}

/* —— 命运角斗场：已试空弹巢 / 待发弹巢 —— */
.chamber.spent{background:radial-gradient(circle at 38% 32%,#241d10 0 46%,#040404 47% 60%,#4d463a 62%,#1b1915 68%);opacity:.55}
.chamber.spent b{color:#6f675a;opacity:.75}
.chamber.spent::after{content:"✓";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:800 8px/1 var(--sans);color:#8ec98f;text-shadow:0 0 4px rgba(80,160,90,.8)}
.chamber.spent i{background:#0a0805}
.chamber.armed b{color:#eccd84}
.roulette-trigger small{font-weight:800;letter-spacing:.04em}
.roulette-trigger.your-turn small{color:#f3d68e}

/* —— 大厅：命运角斗场房间卡模式色 —— */
.room-row.roulette-room{border-left:3px solid #8e2f2f}
.room-row.roulette-room .room-mode{color:#d98f8f}
.room-row.casino-room{border-left:3px solid #9d7f36}
.room-row.roulette-room:hover,.room-row.casino-room:hover{transform:translateY(-2px)}
.room-row{transition:transform .18s ease,box-shadow .18s ease}

/* —— 响应式与动效偏好（V18）—— */
@media(max-width:520px){.casino-num{font-size:10px}.casino-num.hit{font-size:12px}.chamber.spent::after{font-size:7px}}
@media(prefers-reduced-motion:reduce){.casino-hit-wedge,.casino-num.hit{animation:none!important}}

/* ═══════════════ V18.2 · 创建弹窗升级 + 各游戏音乐/教材按钮 ═══════════════ */
/* 创建弹窗 · 模式卡片主题化 */
.create-mode-picker{gap:9px;margin:6px 0 20px}
.create-mode-picker button{flex-direction:column;align-items:center;gap:9px;text-align:center;padding:15px 9px 13px;border-radius:14px;transition:border-color .18s,transform .18s,box-shadow .18s,background .18s}
.create-mode-picker button>i{width:44px;height:44px;font-size:22px;transition:background .18s,color .18s,transform .18s}
.create-mode-picker button b{font-size:13px}
.create-mode-picker button small{font-size:9px;line-height:1.45}
.create-mode-picker button[data-create-mode="poker"]{--mode-accent:#2f5d4e;--mode-glow:rgba(47,93,78,.16)}
.create-mode-picker button[data-create-mode="roulette"]{--mode-accent:#8b2529;--mode-glow:rgba(139,37,41,.16)}
.create-mode-picker button[data-create-mode="casino"]{--mode-accent:#8a6d2f;--mode-glow:rgba(138,109,47,.2)}
.create-mode-picker button:hover{border-color:var(--mode-accent);transform:translateY(-2px);box-shadow:0 10px 22px rgba(31,27,20,.1)}
.create-mode-picker button.on{border-color:var(--mode-accent);background:#fffdf6;box-shadow:0 0 0 2px var(--mode-glow),0 10px 24px rgba(31,27,20,.12)}
.create-mode-picker button.on>i{background:var(--mode-accent);color:#f7f0dd;transform:scale(1.06)}
/* 创建弹窗 · 命运角斗场无入场提示 */
.create-roulette-note{display:flex;align-items:center;gap:11px;padding:13px 15px;border:1px dashed rgba(139,37,41,.42);border-radius:12px;background:rgba(139,37,41,.06)}
.create-roulette-note[hidden]{display:none}
.create-roulette-note i{width:36px;height:36px;flex:0 0 36px;display:grid;place-items:center;border-radius:50%;background:#8b2529;color:#f2e4c8;font:700 17px/1 Georgia,serif;font-style:normal}
.create-roulette-note span{display:grid;gap:3px;text-align:left}
.create-roulette-note b{font-size:12px;color:#5d2426}
.create-roulette-note small{font-size:9px;color:#8a8273}
/* 各游戏工具栏 · 音乐/教材按钮播放态 */
.music-toggle.playing{border-color:rgba(214,183,93,.6);color:#e8ce82}
/* 窄屏按钮图标化 */
@media(max-width:900px){
  .table-tools .music-toggle,.table-tools .tutorial-open,.roulette-tools .music-toggle,.roulette-tools .tutorial-open{font-size:0;padding-inline:11px}
  .table-tools .music-toggle::before,.roulette-tools .music-toggle::before{content:"♫";font-size:15px}
  .table-tools .tutorial-open::before{content:"♠";font-size:15px}
  .roulette-tools .tutorial-open::before{content:"◎";font-size:15px}
}
@media(max-width:760px){
  .casino-tools .music-toggle,.casino-tools .tutorial-open{font-size:0;padding-inline:10px}
  .casino-tools .music-toggle::before{content:"♫";font-size:14px}
  .casino-tools .tutorial-open::before{content:"◉";font-size:14px}
}

/* ═══════════════ V18.3 · 团建小游戏（谁是卧底 / 大话骰 / 数字炸弹）+ 主页模式速览 ═══════════════ */

/* —— 主页：游戏模式速览卡 —— */
.lobby-modes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px;margin:26px 0 30px}
.mode-card{position:relative;overflow:hidden;display:grid;justify-items:start;gap:5px;padding:16px 15px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(248,243,231,.9);box-shadow:0 8px 22px rgba(53,45,30,.07);cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;text-align:left}
.mode-card>i{width:42px;height:42px;display:grid;place-items:center;border-radius:11px;font:700 21px/1 Georgia,serif;font-style:normal;color:#f6efdc;background:var(--mode-accent,#2f5d4e);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 5px 12px rgba(31,27,20,.16);transition:transform .18s ease}
.mode-card b{font:600 15px/1.25 var(--serif);color:var(--ink)}
.mode-card small{font-size:9px;color:var(--muted);letter-spacing:.03em}
.mode-card em{margin-top:7px;font:800 8px/1 var(--sans);font-style:normal;letter-spacing:.14em;color:var(--mode-accent,#2f5d4e);border:1px solid currentColor;border-radius:20px;padding:4px 9px;transition:.18s ease}
.mode-card[data-quick-mode="poker"]{--mode-accent:#2f5d4e}
.mode-card[data-quick-mode="roulette"]{--mode-accent:#8b2529}
.mode-card[data-quick-mode="casino"]{--mode-accent:#8a6d2f}
.mode-card[data-quick-mode="spy"]{--mode-accent:#4a5d7a}
.mode-card[data-quick-mode="liar"]{--mode-accent:#6d4f7a}
.mode-card[data-quick-mode="bomb"]{--mode-accent:#a8502f}
.mode-card:hover{transform:translateY(-3px);border-color:var(--mode-accent);box-shadow:0 14px 30px rgba(53,45,30,.13)}
.mode-card:hover>i{transform:scale(1.08) rotate(-3deg)}
.mode-card:hover em{background:var(--mode-accent);color:#f8f2e2}
.mode-card.party{background:linear-gradient(150deg,rgba(248,243,231,.95),rgba(240,232,214,.9))}
.mode-card.party:after{content:"团建";position:absolute;right:11px;top:11px;font:800 6px/1 var(--sans);letter-spacing:.1em;color:#8d6f3a;background:rgba(206,171,94,.18);border:1px solid rgba(178,140,62,.32);border-radius:4px;padding:3px 5px}
.mode-card em{margin-top:2px}
.mode-tutorial{border:1px solid rgba(140,115,60,.32);border-radius:20px;padding:3px 9px;background:transparent;color:#7d6a3e;font:700 7px/1 var(--sans);letter-spacing:.08em;cursor:pointer;transition:.16s ease}
.mode-tutorial:hover{border-color:var(--mode-accent,#8a6d2f);color:#fff;background:var(--mode-accent,#8a6d2f)}
@media(max-width:1050px){.lobby-modes{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:560px){.lobby-modes{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:18px 0 22px}.mode-card{padding:12px 11px 11px}.mode-card>i{width:34px;height:34px;font-size:17px;border-radius:9px}.mode-card b{font-size:13px}.mode-card small{font-size:8px}.mode-card em{margin-top:5px;padding:3px 7px}}

/* —— 房间列表：团建房间色带 —— */
.room-row.spy-room{border-left:3px solid #4a5d7a}.room-row.spy-room .room-mode{color:#7d92b4}
.room-row.liar-room{border-left:3px solid #6d4f7a}.room-row.liar-room .room-mode{color:#a586b4}
.room-row.bomb-room{border-left:3px solid #a8502f}.room-row.bomb-room .room-mode{color:#c98d6f}
.room-row.spy-room:hover,.room-row.liar-room:hover,.room-row.bomb-room:hover{transform:translateY(-2px)}

/* —— 创建弹窗：团建底注提示 —— */
.create-roulette-note.party-note i{background:#5d5470}
.create-roulette-note.party-note b{color:#4a4260}

/* —— 团建视图：暗色主题 —— */
body.party-mode{background:#0c1116;color:#e6e0d2}
body.party-mode .topbar,body.party-mode>footer{display:none}
body.party-mode .app-shell{width:100%;padding:0;min-height:100svh}
body.party-mode .grain{opacity:.04}
.party-view{min-height:100svh;display:flex;flex-direction:column;overflow:hidden}
.party-view.spy-view{background:radial-gradient(circle at 24% 40%,rgba(62,84,122,.32),transparent 40%),linear-gradient(118deg,#080d14,#0d1520 55%,#0a0f16)}
.party-view.liar-view{background:radial-gradient(circle at 24% 40%,rgba(101,72,116,.3),transparent 40%),linear-gradient(118deg,#0d0a11,#151020 55%,#0e0b14)}
.party-view.bomb-view{background:radial-gradient(circle at 24% 40%,rgba(158,76,42,.28),transparent 40%),linear-gradient(118deg,#120b08,#1c110b 55%,#140d09)}

/* 工具栏 */
.party-toolbar{height:64px;flex:0 0 64px;padding:0 clamp(14px,2.6vw,44px);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid rgba(214,184,114,.18);background:rgba(5,8,12,.86);backdrop-filter:blur(18px);position:relative;z-index:20}
.party-back,.party-tools button{border:1px solid rgba(216,190,128,.22);border-radius:4px;background:rgba(255,255,255,.035);color:#d8cdb7;padding:9px 12px;font:700 9px/1 var(--sans);letter-spacing:.08em;transition:transform .16s ease,background .16s ease,border-color .16s ease}
.party-back{justify-self:start;cursor:pointer}
.party-back:hover,.party-tools button:hover{background:rgba(220,191,130,.1);border-color:rgba(223,199,148,.4)}
.party-tools button:not(.party-end):not(.party-close):hover{transform:translateY(-1px)}
.party-tools{justify-self:end;display:flex;gap:7px}
.party-tools .party-end{color:#e19b94;border-color:rgba(176,59,54,.55)}
.party-tools .party-close{color:#bd7872;border-color:rgba(176,59,54,.3);background:transparent}
.party-tools .party-close:hover{color:#ffc0b8;border-color:rgba(218,91,83,.62);background:rgba(121,32,29,.2)}
.party-tools button i{display:inline-grid;place-items:center;min-width:15px;height:15px;margin-left:4px;padding:0 3px;border-radius:8px;background:#a8502f;color:#ffe9dc;font:800 8px/1 var(--sans);font-style:normal}
.party-room-id{text-align:center;display:grid;gap:2px}
.party-room-id small{font:800 7px/1 var(--sans);letter-spacing:.25em;color:#b79547}
.party-room-id strong{font:600 18px/1.15 var(--serif);letter-spacing:.08em}
.party-room-id span{font-size:8px;color:#777369}
.party-room-id b{color:#c4a75f;letter-spacing:.12em}

/* 主舞台 */
.party-shell{flex:1;display:flex;flex-direction:column;min-height:0;padding:14px clamp(14px,2.6vw,44px) 18px;position:relative}
.party-status{flex:0 0 auto;height:52px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;max-width:1220px;width:100%;margin:0 auto}
.party-status>span{font:800 8px/1 var(--sans);letter-spacing:.19em;color:#ae8e48}
.party-status>strong{font:600 18px/1.2 var(--serif);text-align:center;color:#f0e7d7}
.party-status>small{justify-self:end;font-size:8px;color:#77736b}
.party-status>small b{color:#cdb986}

/* 玩家列表 */
.party-players{flex:0 0 auto;max-width:1220px;width:100%;margin:2px auto 12px;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}
.party-player{position:relative;min-width:0;height:52px;display:flex;align-items:center;gap:8px;padding:6px 9px;border:1px solid rgba(215,189,126,.12);background:rgba(255,255,255,.028);border-radius:4px;transition:border-color .25s ease,box-shadow .25s ease,opacity .25s ease}
.party-player.acting{border-color:rgba(226,190,102,.75);background:linear-gradient(150deg,rgba(196,148,60,.2),rgba(150,102,40,.08));animation:partyActing 1.9s ease-in-out infinite}
@keyframes partyActing{0%,100%{box-shadow:0 0 0 1px rgba(226,190,102,.35),0 0 14px rgba(210,174,90,.16)}50%{box-shadow:0 0 0 1px rgba(244,210,126,.7),0 0 26px rgba(222,186,102,.34)}}
.party-player.me{border-color:rgba(210,173,81,.48);background:rgba(186,145,49,.08)}
.party-player.me:after{content:"你";position:absolute;right:5px;top:-6px;background:#c3a35e;color:#15130f;border-radius:4px;padding:2px 4px;font:800 7px/1 var(--sans)}
.party-player.eliminated{filter:grayscale(1);opacity:.34}
.party-player.empty{justify-content:center;opacity:.4}
.party-player.empty>div{display:grid;place-items:center;width:32px;height:32px;border:1px dashed #8f887a;border-radius:50%;color:#8f887a}
.party-avatar{width:34px;height:34px;flex:0 0 34px;display:grid;place-items:center;border:1px solid rgba(222,195,139,.32);border-radius:50%;background:#302e2a;color:#cdbd9c;overflow:hidden}
.party-avatar img{width:100%;height:100%;object-fit:cover}
.party-avatar i{font:700 14px/1 Georgia,serif;font-style:normal}
.party-player>span{min-width:0;display:grid;gap:2px}
.party-player>span b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:#e4ddcf}
.party-player>span small{font-size:8px;color:#858075}
.party-player>span em{font:700 7px/1.2 var(--sans);font-style:normal;color:#ae9259;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.party-player mark{position:absolute;left:4px;top:-6px;border:0;border-radius:4px;padding:2px 4px;background:#a6863d;color:#111;font:800 6px/1 var(--sans)}
.party-player>button{position:absolute;right:3px;bottom:3px;width:17px;height:17px;border:0;border-radius:50%;background:#632c29;color:#e9bcb5;cursor:pointer;font-size:11px;line-height:1}

/* 三栏主区 */
.party-main{flex:1;min-height:0;max-width:1220px;width:100%;margin:0 auto;display:grid;grid-template-columns:minmax(175px,1fr) minmax(340px,1.7fr) minmax(175px,1fr);gap:26px;align-items:stretch}
.party-rules,.party-ledger{min-height:0;overflow:hidden;border-top:1px solid rgba(213,183,121,.25);padding-top:14px}
.party-rules>span,.party-ledger>span{font:800 8px/1 var(--sans);color:#967d4d;letter-spacing:.2em}
.party-rules h3{margin:13px 0;font:600 19px/1.4 var(--serif);color:#e4d8c3}
.party-rules ol{margin:0;padding:0 0 0 18px;display:grid;gap:8px;color:#979188;font-size:10px;line-height:1.45}
.party-rules p{margin:16px 0 0;padding:10px 0 0;border-top:1px solid rgba(255,255,255,.07);font-size:8px;color:#625f59}
.party-ledger>div{margin-top:11px;max-height:100%;overflow:auto;padding-right:6px}
.party-ledger p{display:grid;grid-template-columns:24px 1fr;gap:8px;margin:0;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.055);font:500 9px/1.45 var(--sans);color:#918b81}
.party-ledger p i{color:#655d4d;font-style:normal}
.party-stage{min-width:0;display:flex;flex-direction:column;gap:12px;justify-content:center;padding:14px;border:1px solid rgba(213,186,120,.16);border-radius:6px;background:rgba(0,0,0,.24);box-shadow:inset 0 0 55px rgba(0,0,0,.35),0 16px 36px rgba(0,0,0,.22);position:relative}
.party-stage:before{content:"";position:absolute;inset:7px;border:1px solid rgba(230,207,152,.12);pointer-events:none;border-radius:4px}

/* 底部控制区 */
.party-controls{flex:0 0 auto;max-width:760px;width:100%;margin:14px auto 0;min-height:64px;display:flex;justify-content:center;align-items:stretch}
.party-ready{width:100%;display:grid;grid-template-columns:1fr auto;grid-template-areas:"label btn" "title btn" "count btn";column-gap:20px;align-items:center;padding:12px 16px;border:1px solid rgba(211,182,111,.28);border-radius:10px;background:linear-gradient(135deg,rgba(10,36,24,.9),rgba(4,16,10,.92));box-shadow:0 12px 30px rgba(0,0,0,.35)}
.party-ready>span{grid-area:label;font:800 7px/1 var(--sans);letter-spacing:.16em;color:#9f8447}
.party-ready>b{grid-area:title;font:600 14px/1.4 var(--serif)}
.party-ready>small{grid-area:count;font-size:8px;color:#77736b}
.party-ready .ready-actions{grid-area:btn;display:flex;gap:8px;align-items:center}
.party-ready .ready-actions>button{border:1px solid #b3934c;border-radius:8px;background:#b59650;color:#17130b;padding:11px 18px;font:800 9px/1 var(--sans);cursor:pointer;transition:transform .18s ease,filter .18s ease}
.party-ready .ready-actions>button:not(:disabled):hover{transform:translateY(-1px);filter:brightness(1.08)}
.party-ready .ready-actions>button:disabled{opacity:.5;cursor:default}
.party-ready .cancel-ready{border:1px solid rgba(216,165,94,.5)!important;background:rgba(20,60,40,.35)!important;color:#e8cf9a!important}
.party-actions{width:100%}

/* —— 谁是卧底 —— */
.spy-word-card{flex:0 0 auto;display:grid;justify-items:center;gap:4px;padding:14px 18px 12px;border:1px solid rgba(213,186,120,.24);border-radius:8px;background:linear-gradient(160deg,rgba(56,70,100,.3),rgba(20,26,40,.5));text-align:center;transition:border-color .3s ease,box-shadow .3s ease}
.spy-word-card>span{font:800 7px/1 var(--sans);letter-spacing:.22em;color:#8ba0c4}
.spy-word-card>b{font:600 30px/1.2 var(--serif);color:#f2ead9;letter-spacing:.1em}
.spy-word-card>small{font-size:8px;color:#7d8699}
.spy-word-card.armed{border-color:rgba(150,180,225,.55);box-shadow:0 0 24px rgba(120,155,215,.18)}
.spy-word-card.armed>b{animation:spyWordIn .5s cubic-bezier(.2,1.4,.3,1)}
@keyframes spyWordIn{0%{transform:scale(.7);opacity:0}100%{transform:scale(1);opacity:1}}
.spy-speech-list{flex:1;min-height:0;overflow:auto;display:grid;gap:7px;align-content:start;padding-right:4px}
.spy-speech{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;padding:9px 11px;border:1px solid rgba(215,189,126,.12);background:rgba(255,255,255,.03);border-radius:6px;transition:.25s ease}
.spy-speech.acting{border-color:rgba(226,190,102,.6);background:rgba(186,145,49,.09)}
.spy-speech.speech-in{animation:speechIn .45s cubic-bezier(.2,.8,.3,1) both}
@keyframes speechIn{from{opacity:0;transform:translateX(-10px) scale(.98)}to{opacity:1;transform:none}}
.spy-speech.me{border-color:rgba(150,180,225,.4)}
.spy-speech.eliminated{opacity:.4;filter:grayscale(.7)}
.spy-speech>b{font:600 11px/1.2 var(--serif);color:#e4d8c3;white-space:nowrap}
.spy-speech>p{margin:0;font-size:10px;color:#a8a294;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.spy-speech>p i{color:#655f52;font-style:normal}
.spy-speech>span{display:flex;gap:5px;align-items:center}
.spy-speech em{font:800 7px/1 var(--sans);font-style:normal;border-radius:3px;padding:3px 5px;letter-spacing:.06em}
.spy-speech em.spy{background:rgba(138,58,58,.4);color:#e9a8a2;border:1px solid rgba(200,90,84,.4)}
.spy-speech em.civilian{background:rgba(58,109,90,.35);color:#a2d4bd;border:1px solid rgba(90,170,135,.35)}
.spy-speech em.out{background:rgba(90,86,76,.3);color:#8f8a80}
.spy-speech u{font:700 8px/1 var(--sans);text-decoration:none;color:#d5bb7b;background:rgba(160,124,52,.18);border-radius:3px;padding:3px 5px}
.spy-speech-empty{display:grid;place-items:center;min-height:80px;font-size:10px;color:#6b665c;border:1px dashed rgba(215,189,126,.18);border-radius:6px}
.spy-reveal{flex:0 0 auto;display:grid;justify-items:center;gap:4px;padding:13px 16px;border:1px solid rgba(150,180,225,.35);border-radius:8px;background:linear-gradient(160deg,rgba(56,70,100,.4),rgba(20,26,40,.6));text-align:center;animation:spyRevealIn .5s cubic-bezier(.2,1.4,.3,1)}
@keyframes spyRevealIn{0%{transform:scale(.85);opacity:0}100%{transform:scale(1);opacity:1}}
.spy-reveal>span{font:800 8px/1 var(--sans);letter-spacing:.2em;color:#a9c0e4}
.spy-reveal>b{font:600 13px/1.5 var(--serif);color:#f0e7d7}
.spy-reveal>small{font-size:8px;color:#8b96ab}
.spy-describe-box{display:grid;gap:8px;padding:14px 16px;border:1px solid rgba(150,180,225,.4);border-radius:10px;background:linear-gradient(135deg,rgba(30,40,60,.7),rgba(14,18,28,.85));box-shadow:0 0 30px rgba(110,145,205,.14)}
.spy-describe-box>span{font:800 7px/1 var(--sans);letter-spacing:.18em;color:#93a9cf}
.spy-describe-input{display:grid;grid-template-columns:1fr auto;gap:9px}
.spy-describe-input input{border:1px solid rgba(160,185,225,.3);border-radius:7px;background:rgba(8,12,20,.7);color:#e8e2d4;padding:11px 13px;font-size:12px}
.spy-describe-input input:focus{outline:none;border-color:rgba(170,200,240,.7);box-shadow:0 0 0 3px rgba(110,150,215,.16)}
.spy-describe-input button{border:1px solid #8ba3c9;border-radius:7px;background:#7d9ac4;color:#101722;padding:11px 18px;font:800 10px/1 var(--sans);cursor:pointer;transition:.18s ease}
.spy-describe-input button:hover{filter:brightness(1.12);transform:translateY(-1px)}
.spy-describe-box>small{font-size:8px;color:#7d8699}
.spy-vote-box{display:grid;gap:9px;padding:14px 16px;border:1px solid rgba(200,110,100,.4);border-radius:10px;background:linear-gradient(135deg,rgba(70,32,32,.55),rgba(30,14,14,.8))}
.spy-vote-box>span{font:800 7px/1 var(--sans);letter-spacing:.18em;color:#d4938a}
.spy-vote-targets{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:7px}
.spy-vote-targets button{display:grid;gap:3px;padding:10px 8px;border:1px solid rgba(216,140,128,.35);border-radius:7px;background:rgba(20,10,10,.5);color:#e8d5ce;cursor:pointer;transition:.18s ease}
.spy-vote-targets button b{font:600 12px/1.2 var(--serif)}
.spy-vote-targets button small{font-size:8px;color:#a08179}
.spy-vote-targets button:hover{border-color:#e09384;background:rgba(120,40,36,.4);transform:translateY(-2px)}
.spy-vote-box>small{font-size:8px;color:#a0847c}

/* —— 大话骰 —— */
.liar-bid-display{flex:0 0 auto;display:grid;justify-items:center;gap:3px;padding:13px 16px;border:1px solid rgba(213,186,120,.24);border-radius:8px;background:linear-gradient(160deg,rgba(90,70,110,.28),rgba(30,22,40,.5));text-align:center}
.liar-bid-display>span{font:800 7px/1 var(--sans);letter-spacing:.22em;color:#b194c9}
.liar-bid-display>b{font:600 26px/1.2 var(--serif);color:#f2ead9;letter-spacing:.06em;transition:.25s ease}
.liar-bid-display.live{border-color:rgba(190,150,220,.5)}
.liar-bid-display.live>b{color:#e4c9f5;text-shadow:0 0 18px rgba(190,140,235,.35)}
.liar-bid-display>small{font-size:8px;color:#8d7f9c}
.liar-cup{flex:0 0 auto;display:grid;gap:8px;padding:13px 16px;border:1px solid rgba(213,186,120,.2);border-radius:8px;background:linear-gradient(160deg,rgba(60,48,72,.32),rgba(22,17,30,.55)}
.liar-cup-head{display:flex;justify-content:space-between;align-items:center;font:800 7px/1 var(--sans);letter-spacing:.2em;color:#a88fbd}
.liar-cup-head em{font:700 9px/1 var(--sans);font-style:normal;color:#d9c8e8}
.liar-dice-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;min-height:44px;align-items:center}
.liar-no-dice{font-size:9px;color:#6f665c;font-style:normal}
.die{position:relative;width:40px;height:40px;border-radius:8px;background:linear-gradient(145deg,#f5efe0,#d8cfb8);box-shadow:inset 0 -3px 6px rgba(120,100,60,.3),0 4px 9px rgba(0,0,0,.45);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:5px;gap:1px}
.die i{border-radius:50%;background:transparent}
.die i.on{background:radial-gradient(circle at 38% 32%,#4a423a,#211d17 75%);box-shadow:inset 0 1px 2px rgba(0,0,0,.6)}
.liar-cup.shaking .die{animation:diceShake .5s ease-in-out infinite}
.liar-cup.shaking .die:nth-child(2n){animation-delay:.12s}
.liar-cup.shaking .die:nth-child(3n){animation-delay:.24s}
@keyframes diceShake{0%,100%{transform:rotate(0) translateY(0)}25%{transform:rotate(-7deg) translateY(-2px)}75%{transform:rotate(7deg) translateY(1px)}}
.liar-reveal{flex:0 0 auto;display:grid;gap:8px;padding:14px 16px;border:1px solid rgba(190,150,220,.4);border-radius:8px;background:linear-gradient(160deg,rgba(78,58,98,.4),rgba(26,19,36,.65));animation:liarRevealIn .45s cubic-bezier(.2,1.4,.3,1)}
@keyframes liarRevealIn{0%{transform:scale(.88);opacity:0}100%{transform:scale(1);opacity:1}}
.liar-reveal header{display:grid;gap:3px;text-align:center}
.liar-reveal header span{font:800 7px/1 var(--sans);letter-spacing:.18em;color:#c3a6da}
.liar-reveal header b{font:600 14px/1.4 var(--serif);color:#f0e7f7}
.liar-reveal-row{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:center;padding:6px 9px;border:1px solid rgba(215,189,126,.12);border-radius:5px;background:rgba(255,255,255,.03)}
.liar-reveal-row b{font-size:9px;color:#e0d6ea;white-space:nowrap}
.liar-reveal-row span{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.liar-reveal-row .die{width:26px;height:26px;border-radius:5px;padding:3px;animation:dicePop .42s cubic-bezier(.2,1.5,.3,1) both}
.liar-reveal-row .die:nth-child(2n){animation-delay:.06s}
.liar-reveal-row .die:nth-child(3n){animation-delay:.12s}
@keyframes dicePop{from{opacity:0;transform:scale(.4) rotate(-40deg)}to{opacity:1;transform:none}}
.liar-reveal-row.loser{border-color:rgba(226,110,96,.55);background:rgba(120,35,28,.22)}
.liar-reveal-row.loser b{color:#f0b3a9}
.liar-reveal footer{font-size:9px;color:#b39fc6;text-align:center;border-top:1px solid rgba(255,255,255,.08);padding-top:8px}
.liar-bid-console{display:grid;gap:10px;padding:15px 17px;border:1px solid rgba(190,150,220,.42);border-radius:10px;background:linear-gradient(135deg,rgba(58,42,74,.65),rgba(24,17,34,.85));box-shadow:0 0 30px rgba(150,105,195,.13)}
.liar-count-step{display:flex;align-items:center;justify-content:center;gap:13px}
.liar-count-step>span{font:800 7px/1 var(--sans);letter-spacing:.18em;color:#b194c9}
.liar-count-step button{width:34px;height:34px;border:1px solid rgba(200,165,230,.4);border-radius:50%;background:rgba(20,14,28,.6);color:#e0d0ee;font:700 16px/1 var(--sans);cursor:pointer;transition:.16s ease}
.liar-count-step button:not(:disabled):hover{background:rgba(140,95,185,.35)}
.liar-count-step button:disabled{opacity:.3;cursor:default}
.liar-count-step>b{min-width:52px;text-align:center;font:600 24px/1 var(--serif);color:#f0e4fa}
.liar-face-picker{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.liar-face-picker button{height:42px;border:1px solid rgba(200,165,230,.25);border-radius:7px;background:rgba(15,10,22,.55);color:#cbb8dc;font:700 16px/1 Georgia,serif;cursor:pointer;transition:.16s ease}
.liar-face-picker button:not(:disabled):hover{border-color:rgba(210,175,240,.55);transform:translateY(-2px)}
.liar-face-picker button.selected{border-color:#c79ae8;background:linear-gradient(160deg,rgba(150,100,200,.45),rgba(90,55,130,.5));color:#f6edfc;box-shadow:0 0 16px rgba(180,130,230,.3)}
.liar-face-picker button:disabled{opacity:.22;cursor:not-allowed}
.liar-bid-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.liar-bid-submit{border:1px solid #a97fd0;border-radius:8px;background:linear-gradient(160deg,#8d63b5,#5d3d80);color:#f4ebfa;padding:13px;font:800 11px/1 var(--sans);letter-spacing:.06em;cursor:pointer;transition:.18s ease}
.liar-bid-submit:not(:disabled):hover{filter:brightness(1.15);transform:translateY(-1px)}
.liar-bid-submit:disabled{opacity:.4;cursor:not-allowed}
.liar-challenge{border:1px solid #c46a5c;border-radius:8px;background:linear-gradient(160deg,#93392e,#5c2019);color:#fbe3da;padding:13px;font:800 11px/1 var(--sans);letter-spacing:.06em;cursor:pointer;transition:.18s ease}
.liar-challenge:not(:disabled):hover{filter:brightness(1.15);transform:translateY(-1px)}
.liar-challenge:disabled{opacity:.4;cursor:not-allowed}
.party-actions>small{display:block;margin-top:7px;text-align:center;font-size:8px;color:#8d7f9c}

/* —— 数字炸弹 —— */
.bomb-range-card{flex:0 0 auto;display:grid;gap:9px;padding:13px 16px;border:1px solid rgba(213,186,120,.22);border-radius:8px;background:linear-gradient(160deg,rgba(110,60,38,.3),rgba(40,22,14,.55))}
.bomb-range-card>span{font:800 7px/1 var(--sans);letter-spacing:.22em;color:#cf9a78}
.bomb-range-bar{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:center}
.bomb-range-bar>b{font:600 20px/1 Georgia,serif;color:#f5d9c4}
.bomb-range-bar>i{position:relative;height:10px;border-radius:6px;background:rgba(0,0,0,.5);border:1px solid rgba(220,150,110,.25);overflow:hidden}
.bomb-range-bar>u{position:absolute;inset:0 auto 0 0;width:100%;border-radius:6px;background:linear-gradient(90deg,rgba(150,80,45,.55),rgba(220,140,80,.75));transition:width .4s cubic-bezier(.2,.8,.3,1)}
.bomb-range-card>small{font-size:8px;color:#a3765d}
.bomb-core{flex:0 0 auto;display:grid;place-items:center;gap:5px;padding:22px 16px 18px;border:1px solid rgba(220,150,110,.3);border-radius:10px;background:radial-gradient(circle at 50% 30%,rgba(160,70,40,.24),rgba(24,12,8,.72));transition:.3s ease}
.bomb-core>i{font-size:42px;line-height:1;font-style:normal;filter:drop-shadow(0 4px 12px rgba(255,120,60,.35));transition:transform .3s ease}
.bomb-core>b{font:600 26px/1 var(--serif);color:#f5e3d3}
.bomb-core>span{font:800 7px/1 var(--sans);letter-spacing:.24em;color:#b07a5a}
.bomb-core.armed{border-color:rgba(255,150,90,.6);box-shadow:0 0 34px rgba(240,120,60,.22)}
.bomb-core.armed>i{animation:bombArmed 1.4s ease-in-out infinite}
@keyframes bombArmed{0%,100%{transform:scale(1)}50%{transform:scale(1.12) rotate(-4deg)}}
.bomb-core.hot{border-color:rgba(255,90,50,.85);background:radial-gradient(circle at 50% 30%,rgba(200,60,30,.4),rgba(30,10,6,.8));box-shadow:0 0 44px rgba(255,90,40,.35)}
.bomb-core.hot>i{animation-duration:.55s}
.bomb-history{flex:1;min-height:0;overflow:auto;display:grid;gap:5px;align-content:start;padding-right:4px}
.bomb-history-empty{display:grid;place-items:center;min-height:50px;font-size:9px;color:#6f5a4c;border:1px dashed rgba(220,150,110,.2);border-radius:6px}
.bomb-history-row{display:grid;grid-template-columns:1fr auto auto;gap:9px;align-items:center;padding:7px 10px;border:1px solid rgba(215,189,126,.1);border-radius:5px;background:rgba(255,255,255,.03);animation:bombRowIn .4s cubic-bezier(.2,.8,.3,1) both}
@keyframes bombRowIn{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}
.bomb-history-row b{font-size:9px;color:#e0d0c4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bomb-history-row span{font:700 13px/1 Georgia,serif;color:#d5bb7b}
.bomb-history-row em{font:800 7px/1 var(--sans);font-style:normal;color:#7fae8a}
.bomb-history-row.boom{border-color:rgba(240,90,50,.6);background:rgba(150,40,20,.24);animation:boomRow .5s cubic-bezier(.2,1.5,.3,1)}
.bomb-history-row.boom em{color:#ff9d7a}
@keyframes boomRow{0%{transform:scale(.85);opacity:0}100%{transform:scale(1);opacity:1}}
.bomb-boom{flex:0 0 auto;display:grid;justify-items:center;gap:5px;padding:18px 16px;border:1px solid rgba(255,110,60,.6);border-radius:10px;background:radial-gradient(circle at 50% 40%,rgba(200,60,25,.45),rgba(30,10,6,.85));animation:boomFlash .55s cubic-bezier(.2,1.2,.3,1)}
@keyframes boomFlash{0%{transform:scale(.7);opacity:0;filter:brightness(2)}60%{transform:scale(1.05)}100%{transform:scale(1);opacity:1;filter:brightness(1)}}
.bomb-boom>i{font-size:46px;line-height:1;font-style:normal;filter:drop-shadow(0 0 22px rgba(255,140,60,.65))}
.bomb-boom>b{font:600 16px/1.3 var(--serif);color:#ffd9c2}
.bomb-boom>span{font:800 8px/1 var(--sans);letter-spacing:.2em;color:#d88a60}
.bomb-shaking{animation:partyShake .55s cubic-bezier(.36,.07,.19,.97)}
@keyframes partyShake{10%,90%{transform:translate(-1px,1px)}20%,80%{transform:translate(2px,-1px)}30%,50%,70%{transform:translate(-3px,2px)}40%,60%{transform:translate(3px,-2px)}}
body.party-boom .party-view{animation:partyBoomShake .8s cubic-bezier(.36,.07,.19,.97)}
@keyframes partyBoomShake{0%,100%{transform:translate(0,0)}12%{transform:translate(-7px,4px)}24%{transform:translate(6px,-3px)}36%{transform:translate(-5px,-4px)}48%{transform:translate(4px,5px)}60%{transform:translate(-3px,2px)}72%{transform:translate(2px,-2px)}86%{transform:translate(-1px,1px)}}
body.party-boom::after{content:"";position:fixed;inset:0;z-index:120;background:radial-gradient(circle at 50% 45%,rgba(255,120,40,.28),rgba(120,20,5,.12) 55%,transparent 75%);animation:partyBoomFlash .85s ease-out both;pointer-events:none}
@keyframes partyBoomFlash{0%{opacity:0}14%{opacity:1}100%{opacity:0}}
.bomb-guess-console{display:grid;gap:11px;padding:15px 17px;border:1px solid rgba(255,140,90,.42);border-radius:10px;background:linear-gradient(135deg,rgba(96,44,26,.6),rgba(32,15,9,.85));box-shadow:0 0 30px rgba(230,110,55,.14)}
.bomb-guess-slider{display:grid;gap:7px}
.bomb-guess-slider input[type="range"]{-webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:5px;background:linear-gradient(90deg,rgba(150,80,45,.6),rgba(230,140,80,.7));outline:none;cursor:pointer}
.bomb-guess-slider input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#ffe4c8,#d4763e 60%,#8c3a1c);border:2px solid #ffdba8;box-shadow:0 3px 9px rgba(0,0,0,.55),0 0 14px rgba(255,140,70,.45);cursor:grab}
.bomb-guess-slider input[type="range"]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#ffe4c8,#d4763e 60%,#8c3a1c);border:2px solid #ffdba8;box-shadow:0 3px 9px rgba(0,0,0,.55);cursor:grab}
.bomb-guess-slider em{font-size:8px;color:#a3765d;font-style:normal;text-align:center}
.bomb-guess-input{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center}
.bomb-guess-input input{width:86px;border:1px solid rgba(255,170,120,.35);border-radius:7px;background:rgba(16,8,5,.7);color:#f5dcc8;padding:11px 10px;font:700 17px/1 Georgia,serif;text-align:center}
.bomb-guess-input input:focus{outline:none;border-color:rgba(255,190,140,.7);box-shadow:0 0 0 3px rgba(230,120,55,.18)}
.bomb-guess-input>span{font-size:9px;color:#a3765d}
.bomb-guess-input>button{border:1px solid #d4763e;border-radius:8px;background:linear-gradient(160deg,#b5522a,#7a2f14);color:#ffe6d2;padding:12px 20px;font:800 11px/1 var(--sans);letter-spacing:.06em;cursor:pointer;transition:.18s ease}
.bomb-guess-input>button:hover{filter:brightness(1.15);transform:translateY(-1px);box-shadow:0 0 18px rgba(240,120,55,.35)}

/* —— 团建视图：响应式 —— */
@media(max-width:1040px){.party-main{grid-template-columns:minmax(300px,.95fr) minmax(420px,1.3fr)}.party-ledger{display:none}.party-shell{overflow:auto}}
@media(max-width:900px){
  .party-toolbar{grid-template-columns:auto 1fr auto;height:58px;padding:0 11px}
  .party-room-id span,.party-tools .party-tools-refresh{display:none}
  .party-back{font-size:0;width:34px;height:34px;padding:0}
  .party-back:first-letter{font-size:16px}
  .party-tools button{padding:8px;font-size:8px}
  .party-status{height:auto;grid-template-columns:1fr auto;row-gap:3px}
  .party-status>strong{grid-column:1/3;grid-row:1;font-size:16px;text-align:left}
  .party-status>span{grid-row:2}.party-status>small{grid-row:2}
  .party-players{grid-template-columns:repeat(2,1fr);gap:6px}
  .party-main{grid-template-columns:1fr;gap:16px}
  .party-rules{display:none}
  .party-stage{order:1}
  .party-shell{overflow:auto}
}
@media(max-width:600px){
  .party-tools .music-toggle,.party-tools .tutorial-open{font-size:0;padding-inline:10px}
  .party-tools .music-toggle::before{content:"♫";font-size:14px}
  .spy-view .party-tools .tutorial-open::before{content:"谍";font-size:14px}
  .liar-view .party-tools .tutorial-open::before{content:"骰";font-size:14px}
  .bomb-view .party-tools .tutorial-open::before{content:"爆";font-size:14px}
  .party-tools .party-end,.party-tools .party-close{font-size:0;width:30px;height:30px;padding:0}
  .party-tools .party-end::before{content:"■";font-size:12px}
  .party-tools .party-close::before{content:"×";font-size:14px}
  .party-controls{flex-direction:column;align-items:stretch;gap:8px}
  .party-ready{grid-template-columns:1fr;grid-template-areas:"label" "title" "count" "btn";row-gap:5px}
  .party-ready .ready-actions{flex-direction:column;align-items:stretch}
  .party-ready .ready-actions>button{width:100%}
  .spy-describe-input{grid-template-columns:1fr}
  .liar-bid-buttons{grid-template-columns:1fr}
  .bomb-guess-input{grid-template-columns:86px 1fr}
  .bomb-guess-input>span{display:none}
  .bomb-guess-input>button{grid-column:1/3}
}
@media(prefers-reduced-motion:reduce){
  .party-player.acting,.spy-word-card.armed>b,.spy-reveal,.spy-speech.speech-in,.liar-cup.shaking .die,.liar-reveal,.liar-reveal-row .die,.bomb-core.armed>i,.bomb-history-row,.bomb-boom,.bomb-shaking,body.party-boom .party-view,body.party-boom::after{animation:none!important}
}
.party-view button:focus-visible{outline:2px solid rgba(232,196,120,.75);outline-offset:2px}
.party-ledger>div::-webkit-scrollbar,.spy-speech-list::-webkit-scrollbar,.bomb-history::-webkit-scrollbar{width:5px}
.party-ledger>div::-webkit-scrollbar-thumb,.spy-speech-list::-webkit-scrollbar-thumb,.bomb-history::-webkit-scrollbar-thumb{background:rgba(200,170,105,.28);border-radius:4px}

/* v19 · 管理员用户面板 */
.admin-modal{width:min(780px,96vw);border-radius:10px;padding:32px}
.admin-toolbar{display:flex;gap:9px;align-items:center;margin:16px 0 12px}
.admin-toolbar input{flex:1;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px 13px;outline:none;font:600 11px var(--sans)}
.admin-toolbar input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(168,131,63,.12)}
.admin-user-list{display:grid;gap:6px;max-height:52vh;overflow-y:auto;padding-right:4px}
.admin-user-list::-webkit-scrollbar{width:5px}
.admin-user-list::-webkit-scrollbar-thumb{background:rgba(200,170,105,.28);border-radius:4px}
.admin-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 13px;border:1px solid var(--line);border-radius:4px 14px 4px 14px;background:rgba(255,255,255,.5)}
.admin-row.is-admin{border-left:3px solid var(--gold);background:#f3ecd9}
.admin-identity{display:grid;gap:3px}
.admin-identity b{font-size:12px;display:flex;align-items:center;gap:6px}
.admin-identity b em{font-style:normal;background:var(--wine);color:#fff;border-radius:99px;padding:1px 7px;font-size:7px;letter-spacing:.5px}
.admin-identity small{font-size:8px;color:var(--muted)}
.admin-inroom{justify-self:start;font-style:normal;font-size:7px;color:#23754f;border:1px solid rgba(35,117,79,.35);border-radius:4px;padding:1px 5px;background:rgba(240,248,244,.7)}
.admin-stats{display:flex;gap:10px}
.admin-stats span{display:grid;text-align:center}
.admin-stats b{font-family:var(--serif);font-size:13px}
.admin-stats span{font-size:7px;color:var(--muted)}
.admin-actions{display:flex;gap:6px}
.admin-actions .soft-btn{padding:7px 11px;font-size:9px}
.soft-btn.danger{color:#8c2f28;border-color:rgba(140,47,40,.32)}
.soft-btn.danger:hover{background:rgba(163,63,58,.1);border-color:rgba(140,47,40,.55)}
.admin-user-form{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:16px}
.admin-user-form label{display:grid;gap:6px;font-size:9px;font-weight:800;color:var(--muted)}
.admin-user-form label small{font-weight:400;font-size:7px}
.admin-user-form input{border:1px solid var(--line);border-radius:7px;background:#fff;padding:11px 12px;outline:none;font:600 12px var(--sans)}
.admin-user-form input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(168,131,63,.1)}
.admin-user-form input:disabled{background:#ece7da;color:var(--muted)}
.admin-form-actions{grid-column:1/-1;display:flex;justify-content:space-between;margin-top:6px}
@media(max-width:720px){.admin-modal{padding:26px 16px}.admin-row{grid-template-columns:1fr;gap:8px}.admin-stats{justify-content:flex-start}.admin-user-form{grid-template-columns:1fr}}
