:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#eef8f1;background:#071b19;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 48% 14%,#17423a 0,#0a2421 40%,#071b19 75%)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.shell{max-width:1250px;min-height:100vh;margin:auto;padding:0 28px;display:flex;flex-direction:column}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff16}.brand{display:flex;align-items:center;gap:12px;font-size:18px;letter-spacing:.15em;font-weight:800}.brand b{color:#e8c68b}.brand-mark{display:grid;place-items:center;width:37px;height:37px;border:1px solid #dcb978;border-radius:50%;color:#e8c68b;font-size:25px}.topbar nav{display:flex;gap:28px;color:#b9cbc5;font-size:14px}.topbar nav a:hover{color:#e8c68b}main{flex:1;padding:50px 0 70px}footer{border-top:1px solid #ffffff16;padding:24px 0;color:#7c9c92;font-size:12px;text-align:center}
.eyebrow{color:#d3b479;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:800}.hero h1{font-size:clamp(34px,5vw,64px);line-height:1.08;max-width:800px;margin:16px 0 18px;letter-spacing:-.04em}.hero p{font-size:16px;line-height:1.7;color:#a9c4b8;max-width:640px;margin:0 0 30px}.hero{margin-bottom:34px}.hero.compact{margin-bottom:26px}.hero.compact h1{font-size:clamp(28px,4vw,44px);margin-bottom:10px}.hero.compact p{margin-bottom:0}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.panel{background:linear-gradient(145deg,#12372f,#0e2b27);border:1px solid #ffffff1a;border-radius:22px;box-shadow:0 20px 50px #0002;padding:28px}.panel h2{margin:0 0 18px;font-size:22px}.panel h3{margin:0 0 12px;font-size:16px}.panel p{color:#b8d0c5;line-height:1.6}.muted{color:#9cb8aa!important}.small{font-size:13px}.field{display:flex;flex-direction:column;gap:8px;margin:14px 0;color:#c8dcd2;font-size:13px;font-weight:700}.field input,.field select,.field textarea{width:100%;border:1px solid #ffffff30;border-radius:12px;background:#071e1b;color:#f3faf6;outline:none;padding:12px 14px}.field input:focus,.field select:focus,.field textarea:focus{border-color:#dcb978;box-shadow:0 0 0 3px #dcb97820}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row .field{flex:1;min-width:120px}.btn{border:1px solid #d4b77f;background:#d4b77f;color:#142d26;border-radius:11px;padding:11px 17px;font-weight:800;min-height:42px}.btn:hover{background:#f2d69b}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.secondary{background:#ffffff0c;color:#ecf7ee;border-color:#ffffff30}.btn.secondary:hover{background:#ffffff1c}.btn.danger{background:#4b2625;border-color:#bd7770;color:#fff}.btn.mini{padding:7px 10px;min-height:32px;font-size:12px}.notice{border:1px solid #cb9b5f70;background:#7f4e162d;color:#ffe5b2;padding:12px 14px;border-radius:11px;margin:16px 0;line-height:1.5}.notice.error{border-color:#c26767;background:#671f2440;color:#ffcece}.notice.ok{border-color:#5ea98b;background:#24725930;color:#d3f7e7}.hidden{display:none!important}.rule{height:1px;background:#ffffff1d;margin:24px 0}.statbar{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0}.pill{border:1px solid #ffffff30;background:#12382f;border-radius:999px;padding:8px 12px;color:#c4dacd;font-size:12px}.pill strong{color:#f4dbab}.room-item{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:15px 0;border-top:1px solid #ffffff1e}.room-item:first-child{border-top:0}.room-item-title{font-weight:800}.room-item p{font-size:12px;margin:6px 0 0}.mono{font-family:Consolas,monospace;word-break:break-all}
.table-wrap{border:1px solid #d9b78060;border-radius:32px;padding:26px;background:radial-gradient(ellipse at center,#1f5a45 0,#144737 57%,#0c2e28 100%);box-shadow:inset 0 0 0 14px #092b25,0 25px 60px #0006;min-height:425px}.table-top{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#d8e8d9;font-size:13px}.board{display:flex;gap:9px;justify-content:center;align-items:center;margin:46px 0 16px;min-height:90px}.playing-card{display:grid;place-items:center;width:60px;height:82px;border-radius:8px;background:#fffdf3;color:#162e28;font-family:Georgia,serif;font-size:23px;font-weight:800;box-shadow:0 4px 8px #0004;white-space:pre-line;text-align:center;line-height:1}.playing-card.red{color:#bd4241}.playing-card.back{background:repeating-linear-gradient(45deg,#234965,#234965 5px,#1d3a55 5px,#1d3a55 10px);border:3px solid #e9efee;color:#d9e6e0;font-size:21px}.playing-card.empty{background:#07271f70;color:#ffffff40;border:1px dashed #a6c6b650;box-shadow:none}.pot{text-align:center;color:#d4b77f;font-size:13px;letter-spacing:.1em;font-weight:800}.pot b{display:block;color:#f1e9d7;font-size:27px;margin-top:4px}.seats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:25px}.seat{background:#08251fe0;border:1px solid #ffffff27;border-radius:15px;padding:13px;min-height:116px}.seat.me{border-color:#dfc282}.seat.turn{box-shadow:0 0 0 2px #eac98390}.seat-head{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#b4cdbf}.seat-name{font-weight:800;color:#f4f5e9;margin:5px 0}.seat-chips{color:#dbbd81;font-size:12px}.seat-cards{display:flex;gap:5px;margin-top:8px}.seat-cards .playing-card{width:32px;height:44px;font-size:13px;border-radius:5px}.seat-cards .playing-card.back{font-size:10px;border-width:1px}.actions{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:18px}.actions .field{min-width:145px;max-width:200px;margin:0}.history-list{max-height:360px;overflow:auto}.history-row{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid #ffffff17;padding:12px 0;color:#cbded1;font-size:13px}.history-row:last-child{border:0}.tabs{display:flex;gap:8px;margin:20px 0}.tab{border:1px solid #ffffff2b;background:#ffffff0b;color:#d0e2d7;padding:10px 15px;border-radius:9px}.tab.active{background:#d4b77f;color:#173129;border-color:#d4b77f;font-weight:800}.room-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(290px,.8fr);gap:22px}.side-stack{display:grid;gap:22px;align-content:start}.empty-state{padding:28px 0;color:#a8c5b7;text-align:center}.right{margin-left:auto}
@media(max-width:850px){.room-layout,.grid{grid-template-columns:1fr}.table-wrap{min-height:370px}.board{margin:30px 0 12px}.seats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.shell{padding:0 14px}.topbar{height:68px}.brand{font-size:13px}.brand-mark{width:30px;height:30px;font-size:19px}.topbar nav{gap:11px;font-size:12px}main{padding:28px 0 45px}.panel{padding:20px}.table-wrap{padding:22px 15px;box-shadow:inset 0 0 0 7px #092b25,0 20px 45px #0005}.playing-card{width:47px;height:67px;font-size:18px}.board{gap:5px}.seats{gap:7px}.seat{padding:9px;min-height:104px}.actions .btn{flex:1}.actions .field{max-width:none;width:100%}.room-item{align-items:start;flex-direction:column}}

/* Private table: the players sit around the shared board. */
.shell{max-width:1580px}
.room-heading{display:flex;justify-content:space-between;align-items:end;gap:22px}
.room-identity{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#d9e9de;font-size:13px}
.room-identity span{border:1px solid #ffffff27;border-radius:999px;padding:8px 11px;background:#ffffff0b}
.room-layout{display:grid;grid-template-columns:minmax(190px,.72fr) minmax(620px,2.5fr) minmax(245px,.9fr);gap:17px;align-items:start}
.room-layout>.panel{padding:22px;min-width:0}
.table-column{min-width:0;display:grid;gap:17px}
.table-scroll{min-width:0;overflow-x:auto;padding:3px 0 12px}
.scroll-hint{display:none;margin:-11px 0 0;text-align:center;color:#a7c7b6;font-size:12px}
.table-wrap{position:relative;min-width:620px;height:540px;min-height:0;overflow:hidden;border:1px solid #8d795c;border-radius:34px;background:radial-gradient(ellipse at center,#173a31,#09231f 76%);box-shadow:0 22px 55px #0007;padding:0}
.table-felt{position:absolute;inset:7% 4%;border:14px solid #71523a;border-radius:50% / 47%;background:radial-gradient(ellipse at 45% 34%,#21664d,#10503d 59%,#0a3a2e);box-shadow:inset 0 0 0 3px #b59059,inset 0 0 55px #001b1780,0 7px 14px #0008}
.table-top{position:absolute;z-index:2;top:20px;left:28px;right:28px;font-weight:700;color:#e7e5d3}
.table-center{position:absolute;z-index:2;top:49%;left:50%;transform:translate(-50%,-50%);width:75%;display:grid;justify-items:center;gap:8px;pointer-events:none}
.board{margin:0;min-height:67px;gap:6px}
.board .playing-card{width:46px;height:64px;font-size:17px}
.pot{background:#09291fca;border:1px solid #d9bb7b77;border-radius:999px;padding:7px 20px;min-width:145px;color:#e0c78f;font-size:11px;letter-spacing:.06em}
.pot b{display:inline;margin:0 0 0 9px;font-size:18px;color:#fff5df}
.seats{display:block;margin:0}
.seat{position:absolute;z-index:3;transform:translate(-50%,-50%);width:132px;min-height:98px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:2px;padding:8px;border-radius:17px;border-color:#d0a86a76;background:#07241eea;box-shadow:0 7px 14px #0007}
.seat.me{border-color:#f3d48d;box-shadow:0 0 0 2px #f3d48d55,0 7px 14px #0007}
.seat.turn{box-shadow:0 0 0 3px #f3d48dc0,0 7px 14px #0007}
.seat-head{display:block;font-size:11px;color:#d8bd84}
.seat-name{font-size:13px;margin:1px 0;max-width:115px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seat-chips{font-size:11px;line-height:1.25}
.chips-compact{display:none}
.seat-cards{margin:2px 0 0;justify-content:center}
.seat-cards .playing-card{width:24px;height:32px;font-size:10px}
.empty-seat{background:#0a2b25dc;border:1px dashed #e1c68d8a}
.seat-plus{display:grid;place-items:center;width:30px;height:30px;margin:3px auto 0;border:1px solid #ddbf82;border-radius:50%;background:#d7b978;color:#173129;font-size:23px;line-height:1;font-weight:700}
.seat-plus:hover,.seat-plus:focus-visible{background:#ffe2a5;box-shadow:0 0 0 3px #ffe2a54d;outline:none}
.seat-plus:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}
.control-panel,.action-panel{padding:22px}
.control-header{display:flex;justify-content:space-between;gap:20px;align-items:start}
.control-header h2{margin-bottom:5px}
.control-header p{margin:0 0 12px}
.stack-number{text-align:right;white-space:nowrap;color:#a7c7b6;font-size:12px}
.stack-number strong{display:block;color:#f4d28f;font-size:29px}
.profit-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:11px 0;border-bottom:1px solid #ffffff18;font-size:13px}
.profit-row strong{font-variant-numeric:tabular-nums}.positive{color:#80dcb0}.negative{color:#ed9a91}
#spectator-list{font-size:13px;line-height:1.5;color:#c4dbc9;word-break:break-word}
.records-panel #history-content{max-height:710px;overflow:auto}
.record-item{border-bottom:1px solid #ffffff20;padding:11px 0;font-size:12px;line-height:1.5;color:#d4e5d8}
.record-item summary{cursor:pointer;font-weight:700}.record-item p{margin:8px 0}.record-item div{margin:4px 0}
.records-panel .field{margin-top:8px}.records-panel input[type=search]{width:100%}
@media(max-width:1250px){.room-layout{grid-template-columns:minmax(0,1fr) minmax(0,2.5fr);grid-template-areas:"profit table" "records table"}.profit-panel{grid-area:profit}.records-panel{grid-area:records}.table-column{grid-area:table}}
@media(max-width:900px){.room-layout{grid-template-columns:1fr;grid-template-areas:"table" "profit" "records"}.room-heading{align-items:start;flex-direction:column}.table-wrap{height:520px}.room-layout>.panel{padding:20px}.scroll-hint{display:block}}

.dealer-button{position:absolute;z-index:5;display:grid;place-items:center;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%;border:3px solid #f5e8c7;background:#fff7df;color:#1d4938;box-shadow:0 3px 10px #001a14b0;font-size:15px;font-weight:900;pointer-events:none}

@media(max-width:900px){
  main{padding-top:18px}
  .room-heading{gap:8px;margin-bottom:12px}
  .room-heading h1{font-size:28px;margin:5px 0}
  .room-heading p{font-size:12px;line-height:1.4}
  .room-identity{gap:6px}
  .room-identity span{padding:5px 8px}
  .room-identity .btn{min-height:28px;padding:5px 9px}
  .table-column{gap:12px}
  .table-scroll{overflow:visible;padding:0}
  .table-wrap{width:100%;max-width:430px;min-width:0;height:min(520px,calc(100svh - 230px));min-height:330px;margin:0 auto;border-radius:24px}
  .table-felt{inset:5% 4%;border-width:8px;border-radius:50% / 47%}
  .table-top{top:8px;left:10px;right:10px;font-size:10px}
  .table-center{top:50%;width:70%;gap:5px}
  .board{min-height:36px;gap:2px}
  .board .playing-card{width:24px;height:34px;border-radius:4px;font-size:11px}
  .pot{min-width:108px;padding:3px 9px;font-size:9px}
  .pot b{font-size:14px;margin-left:5px}
  .seat{width:22%;min-height:58px;padding:2px;border-radius:10px;gap:1px}
  .seat-head{font-size:9px}
  .seat-name{font-size:11px;max-width:100%}
  .seat-chips{font-size:8px;line-height:1;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .chips-long{display:none}
  .chips-compact{display:inline}
  .seat-cards{margin-top:1px;gap:2px}
  .seat-cards .playing-card{width:15px;height:20px;border-radius:3px;font-size:7px}
  .seat-plus{width:22px;height:22px;margin:1px auto 0;font-size:16px}
  .empty-seat .seat-name{font-size:9px}
  .dealer-button{width:23px;height:23px;border-width:2px;font-size:11px}
  .scroll-hint{display:none}
}

.ready-badge,.confirm-badge{position:absolute;right:-5px;display:inline-block;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:900;line-height:1.15;white-space:nowrap}
.ready-badge{top:-8px;background:#72d5a7;color:#083425}.confirm-badge{bottom:-8px;background:#ead096;color:#3c2810}
.ready-button,.confirm-button{box-shadow:0 0 0 3px #e5c57940}
.public-clock{width:min(230px,100%);padding:5px 9px;background:#06251fdc;border:1px solid #e5ce9577;border-radius:10px;text-align:center;color:#fff5dd;font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
.public-clock[hidden],.extend-button[hidden]{display:none}
.public-clock-track{width:100%;height:6px;border-radius:6px;background:#ffffff29;overflow:hidden;margin-top:4px}
.public-clock-track::before{content:"";display:block;width:var(--remaining,100%);height:100%;background:#76d8ab;transition:width .2s linear}
.public-clock-track.urgent::before{background:#f08473}
.extend-button{margin:10px 0;background:#f1a756;border-color:#ffce86;animation:extend-pulse 1s ease-in-out infinite alternate}
@keyframes extend-pulse{to{box-shadow:0 0 0 7px #f1a7563d}}
.second-board{display:flex;gap:3px;align-items:center;color:#fff3da}
.second-board .playing-card{width:26px;height:35px;font-size:11px}
.invite-input{display:block;width:100%;max-width:100%;margin:10px 0;padding:9px 12px;border:1px solid #ffffff30;border-radius:9px;background:#071e1b;color:#f3faf6}
.room-item>div:first-child{flex:1;min-width:0}
.admin-player-list{display:grid;gap:8px;margin:12px 0}
.admin-player-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px;border:1px solid #ffffff25;border-radius:10px;background:#071e1b70}
.admin-player-info{display:grid;gap:3px;min-width:0}
.admin-player-info strong{overflow:hidden;text-overflow:ellipsis}
.admin-pending{font-size:11px;color:#f2ce8e;font-weight:800}
.admin-events{margin-top:10px;color:#bcd4c7;font-size:12px}
.admin-events summary{cursor:pointer;margin-bottom:8px}
.admin-events div{padding:3px 0}
.recovery-panel{margin-top:20px;border-color:#e3c18380}
.pending-seat-badge{position:absolute;left:-5px;bottom:-8px;border-radius:999px;padding:2px 5px;background:#e8ab82;color:#342114;font-size:9px;font-weight:900;white-space:nowrap}
@media(max-width:900px){.admin-player-row{align-items:start;flex-direction:column}.pending-seat-badge{font-size:7px;padding:1px 3px}}
@media(max-width:900px){.public-clock{width:125px;font-size:8px;padding:3px 5px}.public-clock-track{height:4px;margin-top:2px}.ready-badge,.confirm-badge{font-size:7px;padding:1px 3px}.second-board .playing-card{width:16px;height:22px;font-size:7px}.second-board span{font-size:8px}}
