@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&family=Noto+Serif+TC:wght@700;900&display=swap');

:root{--bg:#06110d;--panel:#0d1d17;--panel-2:#12271f;--felt:#0d5a3d;--felt-dark:#083d2a;--gold:#e7c274;--gold-bright:#f6d992;--text:#f5f1e8;--muted:#9aada4;--line:rgba(231,194,116,.2);--danger:#d85c5c;--shadow:0 24px 80px rgba(0,0,0,.4);--legal-h:142px}
*{box-sizing:border-box}html{background:var(--bg);color:var(--text);font-family:'Noto Sans TC',sans-serif}body{display:flex;min-height:100vh;margin:0;flex-direction:column;background:radial-gradient(circle at 20% 0%,rgba(23,93,66,.25),transparent 35%),var(--bg)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}.hidden{display:none!important}.eyebrow{margin:0 0 .65rem;color:var(--gold);font-size:.78rem;font-weight:700;letter-spacing:.2em}.toast{position:fixed;z-index:100;top:20px;left:50%;transform:translate(-50%,-20px);padding:.85rem 1.25rem;border:1px solid var(--line);border-radius:99px;background:#18251f;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
.primary,.secondary,.ghost,.danger,.icon-button{border:0;border-radius:10px;padding:.75rem 1rem;color:var(--text);font-weight:700;transition:.18s}.primary{background:var(--gold);color:#211a0c;box-shadow:0 8px 24px rgba(231,194,116,.16)}.primary:hover{background:var(--gold-bright);transform:translateY(-1px)}.secondary{border:1px solid var(--line);background:rgba(255,255,255,.06)}.secondary:hover,.ghost:hover{background:rgba(255,255,255,.1)}.ghost{background:transparent;color:var(--muted)}.danger{background:rgba(216,92,92,.15);color:#ffabab;border:1px solid rgba(216,92,92,.28)}.danger.small{padding:.42rem .65rem;font-size:.75rem}.wide{display:flex;width:100%;align-items:center;justify-content:space-between;padding:1rem 1.1rem}.icon-button{background:transparent;color:var(--gold);font-size:1.4rem;padding:.25rem .6rem}

.auth-shell{min-height:calc(100vh - var(--legal-h));display:grid;grid-template-columns:1.1fr .9fr}.brand-panel{position:relative;display:flex;min-height:calc(100vh - var(--legal-h));flex-direction:column;justify-content:center;padding:8vw;overflow:hidden}.brand-panel:after{content:'♠';position:absolute;right:-6vw;bottom:-18vw;color:rgba(231,194,116,.045);font-family:serif;font-size:52vw;line-height:1}.brand-mark{display:grid;width:58px;height:58px;margin-bottom:2.5rem;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--gold);font-size:1.9rem}.brand-panel h1,.lobby-head h1{margin:0;font-family:'Noto Serif TC',serif;font-size:clamp(3rem,6vw,6rem);letter-spacing:-.06em;line-height:1}.suit-row{display:flex;margin-top:2rem;gap:1.2rem;color:rgba(255,255,255,.35);font-size:1.3rem}.suit-row .red{color:rgba(216,92,92,.7)}.auth-card{position:relative;display:flex;align-items:center;justify-content:center;padding:3rem;background:rgba(4,12,9,.55);border-left:1px solid rgba(255,255,255,.06)}.auth-card>form,.auth-tabs{width:min(400px,100%)}.auth-tabs{position:absolute;top:3rem;left:50%;display:flex;gap:1.7rem;transform:translateX(-50%)}.tab{padding:.4rem 0;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font-weight:700}.tab.active{border-color:var(--gold);color:var(--text)}.auth-card h2{margin:0 0 .6rem;font-family:'Noto Serif TC',serif;font-size:2rem}.auth-card form>p{margin:0 0 2rem;color:var(--muted)}label{display:grid;gap:.55rem;margin:1rem 0;color:#cad4cf;font-size:.9rem;font-weight:600}input,select{width:100%;border:1px solid rgba(255,255,255,.12);border-radius:9px;outline:none;background:rgba(255,255,255,.055);color:var(--text);padding:.85rem .95rem}input:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(231,194,116,.1)}select option{background:#14231d}

.app-shell{min-height:calc(100vh - var(--legal-h))}.topbar{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 5vw;border-bottom:1px solid rgba(255,255,255,.06)}.plain-back{color:var(--muted);text-decoration:none;font-size:.9rem}.plain-back:hover{color:var(--text)}.user-area{display:flex;align-items:center;gap:.75rem;color:var(--muted);font-size:.9rem}.lobby-head{display:flex;align-items:flex-end;justify-content:space-between;padding:4.5rem 7vw 3.5rem}.lobby-head h1{font-size:clamp(2.6rem,5vw,4.8rem)}.lobby-head>div>p:last-child{margin:1rem 0 0;color:var(--muted)}.room-section{padding:0 7vw 5rem}.section-title{display:flex;align-items:center;gap:.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.section-title h2{font-family:'Noto Serif TC',serif;font-size:1.25rem}.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:1rem;padding-top:1.25rem}.room-card{position:relative;padding:1.25rem;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.025));transition:.2s}.room-card:hover{border-color:var(--line);transform:translateY(-2px)}.room-card h3{margin:.2rem 0 .8rem;font-family:'Noto Serif TC',serif}.room-badges{display:flex;gap:.5rem;flex-wrap:wrap}.badge{padding:.3rem .6rem;border-radius:99px;background:rgba(255,255,255,.07);color:var(--muted);font-size:.78rem}.room-card button{width:100%;margin-top:1.25rem}.empty{text-align:center;padding:7rem 1rem;color:var(--muted)}.empty>div{color:var(--gold);font-size:3rem}.empty h3{margin:.8rem 0 .4rem;color:var(--text);font-family:'Noto Serif TC',serif}

dialog{width:min(500px,calc(100% - 2rem));max-height:88vh;border:1px solid var(--line);border-radius:16px;background:#102119;color:var(--text);box-shadow:var(--shadow)}dialog::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(5px)}.wide-dialog{width:min(680px,calc(100% - 2rem))}.dialog-form{padding:.8rem}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between}.dialog-heading h2{margin:0;font-family:'Noto Serif TC',serif}.close-button{border:0;background:none;color:var(--muted);font-size:1.8rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.dialog-note{color:var(--muted);font-size:.88rem;line-height:1.6}.manage-seats{display:grid;gap:.55rem;margin:1.25rem 0}.manage-seat{display:flex;align-items:center;justify-content:space-between;padding:.75rem .85rem;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(255,255,255,.035)}.manage-seat>div{display:grid;gap:.2rem}.manage-seat span{color:var(--muted);font-size:.78rem}.manage-seat em{color:var(--gold);font-size:.8rem;font-style:normal}.manage-actions{display:flex;gap:.6rem;flex-wrap:wrap;padding-top:.5rem}.manage-actions .danger{margin-left:auto}.hand-ranking{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:1.2rem 0;padding:0;counter-reset:rank}.hand-ranking li{counter-increment:rank;display:grid;grid-template-columns:1.5rem 1fr;gap:.1rem .55rem;padding:.65rem;border-radius:8px;background:rgba(255,255,255,.04);font-size:.85rem}.hand-ranking li:before{content:counter(rank);grid-row:1/3;color:var(--gold);font-weight:700}.hand-ranking span{color:var(--muted);font-size:.76rem}.rules-flow{display:grid;gap:.35rem;padding:1rem;border:1px solid var(--line);border-radius:10px}.rules-flow span{color:var(--muted);font-size:.85rem}

.game-shell{height:calc(100vh - var(--legal-h));min-height:690px;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden;background:radial-gradient(circle at 48% 50%,#143c2d 0%,#06110d 68%)}.game-header{z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:.8rem 1.2rem;border-bottom:1px solid rgba(255,255,255,.05)}.room-identity{text-align:center}.room-identity h1{margin:0;font-family:'Noto Serif TC',serif;font-size:1.18rem}.room-identity span{color:var(--muted);font-size:.78rem}.game-header-actions{display:flex;justify-content:flex-end;gap:.45rem}.game-header-actions button{padding:.6rem .75rem;font-size:.78rem}#togglePanel{display:none}.game-content{display:grid;grid-template-columns:minmax(0,1fr) 310px;min-height:0}.table-stage{position:relative;display:grid;place-items:center;padding:2rem 2.2rem 2.8rem;min-width:0;min-height:0}.turn-banner{position:absolute;z-index:4;top:.5rem;left:50%;transform:translateX(-50%);padding:.45rem .9rem;border:1px solid rgba(255,255,255,.1);border-radius:99px;background:rgba(5,16,12,.85);color:var(--muted);font-size:.82rem;white-space:nowrap}.turn-banner.active{border-color:var(--gold);color:var(--gold);box-shadow:0 0 24px rgba(231,194,116,.15)}.turn-banner.active:before{content:'';display:inline-block;width:7px;height:7px;margin-right:.45rem;border-radius:50%;background:var(--gold);animation:pulse 1.2s infinite}@keyframes pulse{50%{opacity:.35;transform:scale(.7)}}
.poker-table{position:relative;width:min(100%,960px);aspect-ratio:2/1;border:10px solid #231b13;border-radius:50%;background:radial-gradient(ellipse,#146847 0%,var(--felt) 50%,var(--felt-dark) 100%);box-shadow:inset 0 0 0 3px #a9793c,inset 0 0 45px rgba(0,0,0,.4),0 28px 80px rgba(0,0,0,.45)}.felt-line{position:absolute;inset:5%;border:1px solid rgba(231,194,116,.22);border-radius:50%}.table-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:.75rem}.table-center>p{max-width:70%;margin:0;color:rgba(255,255,255,.72);font-size:.88rem;text-align:center}.cards{display:flex;gap:.5rem}.card{display:grid;width:62px;aspect-ratio:.7;place-items:center;border-radius:8px;background:#faf7ed;color:#171713;font-family:Georgia,serif;font-size:1.35rem;font-weight:700;box-shadow:0 5px 13px rgba(0,0,0,.25)}.card.red{color:#c73535}.card.back{border:2px solid #d6b15f;background:repeating-linear-gradient(45deg,#18392d 0,#18392d 4px,#225241 4px,#225241 8px);color:transparent}.pot{display:flex;align-items:center;padding:.4rem .85rem;border-radius:99px;background:rgba(0,0,0,.28);font-size:.8rem;color:#d7e1dc}.pot strong{margin-left:.3rem;color:var(--gold)}.pot-chip{width:14px;height:14px;margin-right:.4rem;border:3px dashed #fff;border-radius:50%;background:#b94a4a;box-shadow:0 0 0 2px #b94a4a}
.seat{position:absolute;width:168px;transform:translate(-50%,-50%);text-align:center}.seat.position-0{left:50%;top:3%}.seat.position-1{left:91%;top:25%}.seat.position-2{left:86%;top:78%}.seat.position-3{left:50%;top:97%}.seat.position-4{left:14%;top:78%}.seat.position-5{left:9%;top:25%}.seat-box{position:relative;padding:.6rem .75rem;border:1px solid rgba(255,255,255,.13);border-radius:12px;background:rgba(5,16,12,.94);box-shadow:0 8px 25px rgba(0,0,0,.28)}.seat.current .seat-box{border-color:var(--gold);box-shadow:0 0 0 4px rgba(231,194,116,.17),0 8px 28px rgba(0,0,0,.35)}.seat.you .seat-box{background:#102b21}.seat.folded{opacity:.58}.turn-marker{position:absolute;left:50%;bottom:calc(100% + 5px);transform:translateX(-50%);padding:.22rem .55rem;border-radius:99px;background:var(--gold);color:#231b0d;font-size:.65rem;font-weight:800;white-space:nowrap}.seat-name{display:flex;align-items:center;justify-content:center;gap:.3rem;font-size:.84rem;font-weight:700;white-space:nowrap}.dealer-chip,.owner-chip,.bot-label{display:inline-grid;place-items:center;border-radius:99px;font-size:.58rem}.dealer-chip{width:18px;height:18px;background:#f0eadb;color:#222}.owner-chip{padding:.15rem .35rem;background:rgba(231,194,116,.16);color:var(--gold)}.bot-label{padding:.13rem .32rem;background:rgba(255,255,255,.08);color:var(--muted)}.online-dot{width:6px;height:6px;border-radius:50%;background:#52b788}.offline .online-dot{background:#646f69}.seat-chips{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-top:.25rem;color:var(--gold);font-size:.8rem}.seat-chips small{color:var(--muted);font-size:.65rem}.chip-stack{position:relative;width:21px;height:16px}.chip-stack i{position:absolute;left:0;bottom:calc(var(--chip) * 3px);width:19px;height:8px;border:2px dashed #fff;border-radius:50%;background:hsl(calc(8 + var(--chip) * 52),58%,45%);box-shadow:0 1px 0 rgba(0,0,0,.5)}.seat-action{position:absolute;left:50%;transform:translateX(-50%);margin-top:.28rem;padding:.22rem .48rem;border-radius:5px;background:rgba(0,0,0,.48);font-size:.68rem;white-space:nowrap}.hole-cards{position:absolute;left:50%;bottom:100%;display:flex;transform:translateX(-50%);margin-bottom:-5px}.hole-cards .card{width:44px;font-size:.95rem}.hole-cards .card+.card{margin-left:-8px;transform:rotate(4deg)}.seat.you .hole-cards{margin-bottom:0}.seat.you .hole-cards .card{width:60px;font-size:1.2rem}.seat.you .hole-cards .card+.card{margin-left:-10px}

.game-panel{display:grid;grid-template-rows:auto 1fr;min-height:0;border-left:1px solid rgba(255,255,255,.07);background:rgba(5,15,11,.78);backdrop-filter:blur(10px)}.panel-tabs{display:flex;border-bottom:1px solid rgba(255,255,255,.08)}.panel-tab{flex:1;padding:.85rem .4rem;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:.82rem;font-weight:700}.panel-tab.active{border-color:var(--gold);color:var(--text)}.panel-close{display:none;border:0;background:transparent;color:var(--muted);font-size:1.3rem}.panel-pane{min-height:0;overflow:hidden}.feed{height:100%;overflow:auto;padding:.8rem}.feed-item{display:grid;grid-template-columns:2.8rem 1fr;gap:.5rem;padding:.55rem 0;border-bottom:1px solid rgba(255,255,255,.055)}.feed-item time,.chat-item time{color:#63766c;font-size:.66rem}.feed-item p{margin:0;color:#c8d3cd;font-size:.78rem;line-height:1.45}.feed-item.round p,.feed-item.result p{color:var(--gold);font-weight:700}.feed-empty{color:var(--muted);font-size:.8rem;text-align:center}.chat-feed{height:calc(100% - 64px)}.chat-item{margin-bottom:.75rem}.chat-item>div{display:flex;justify-content:space-between}.chat-item strong{font-size:.74rem}.chat-item p{display:inline-block;margin:.25rem 0 0;padding:.5rem .65rem;border-radius:8px;background:rgba(255,255,255,.065);font-size:.8rem;line-height:1.45}.chat-item.mine{text-align:right}.chat-item.mine p{background:rgba(231,194,116,.13)}.chat-form{display:grid;grid-template-columns:1fr auto;gap:.45rem;padding:.55rem;border-top:1px solid rgba(255,255,255,.08)}.chat-form input{min-width:0;padding:.65rem .7rem}.chat-form button{padding:.6rem .75rem;font-size:.78rem}
.action-dock{z-index:4;display:flex;min-height:92px;align-items:center;justify-content:center;padding:1rem 2rem;border-top:1px solid rgba(255,255,255,.07);background:rgba(5,15,11,.9);backdrop-filter:blur(10px)}.waiting-actions,.turn-actions{display:flex;align-items:center;justify-content:center;gap:.8rem}.waiting-actions span{color:var(--muted);font-size:.88rem}.raise-control{display:grid;min-width:220px;gap:.25rem}.raise-control label{display:block;margin:0;font-size:.75rem}.raise-control input{padding:0;accent-color:var(--gold)}

.legal-footer{min-height:var(--legal-h);display:flex;align-items:center;justify-content:space-between;gap:3rem;margin-top:auto;padding:1.3rem 4vw 1.5rem;border-top:1px solid rgba(255,255,255,.1);background:#050d0a;color:#93a69c;font-size:.86rem;line-height:1.75}.legal-footer p{max-width:1120px;margin:0}.legal-footer p>span{color:#768a80}.version{flex:none;align-self:flex-end;color:var(--gold);font-family:monospace;font-size:.82rem}

@media(max-width:900px){:root{--legal-h:190px}.auth-shell{grid-template-columns:1fr}.brand-panel{min-height:auto;padding:3rem 1.5rem 2rem}.brand-panel h1{font-size:3.2rem}.auth-card{min-height:520px;padding:5rem 1.5rem 2rem;border-left:0;border-top:1px solid rgba(255,255,255,.06)}.auth-tabs{top:2rem}.lobby-head{align-items:flex-start;flex-direction:column;gap:2rem;padding:3.5rem 1.2rem 2rem}.room-section{padding:0 1.2rem 4rem}.game-shell{height:calc(100vh - var(--legal-h));min-height:720px}.game-header{grid-template-columns:auto 1fr auto;padding:.65rem}.room-identity{text-align:left}.room-identity span{display:none}.game-header-actions button{display:none}.game-header-actions #togglePanel,.game-header-actions #rulesButton{display:inline-flex}.game-content{display:block;position:relative;min-height:0}.table-stage{height:100%;padding:2.8rem .5rem 3.6rem}.poker-table{width:90vw;aspect-ratio:.78;border-width:7px;border-radius:43%}.seat{width:125px}.seat.position-0{left:50%;top:3%}.seat.position-1{left:85%;top:24%}.seat.position-2{left:83%;top:74%}.seat.position-3{left:50%;top:97%}.seat.position-4{left:17%;top:74%}.seat.position-5{left:15%;top:24%}.community .card{width:43px;font-size:.95rem}.seat-box{padding:.45rem}.seat-name{font-size:.72rem}.seat.you .hole-cards .card{width:52px}.game-panel{position:absolute;z-index:20;top:.5rem;right:.5rem;bottom:.5rem;width:min(86vw,330px);border:1px solid var(--line);border-radius:12px;transform:translateX(calc(100% + 1rem));transition:.22s;box-shadow:var(--shadow)}.game-panel.open{transform:translateX(0)}.panel-close{display:block}.turn-actions{width:100%;flex-wrap:wrap}.raise-control{order:-1;width:100%;min-width:100%}.action-dock{padding:.75rem}.form-row,.hand-ranking{grid-template-columns:1fr}.legal-footer{position:relative;min-height:var(--legal-h);align-items:flex-start;flex-direction:column;padding:1.1rem 1rem 2.5rem;font-size:.74rem}.version{position:absolute;right:1rem;bottom:.75rem}}
