:root{--felt: #17603f;--felt-dark: #0f4a30;--panel: rgba(0, 0, 0, .28);--ink: #f3efe4;--muted: #b9cfc2;--accent: #f2c14e;--danger: #ff6b6b;--ok: #7bd88f;--tile-face: #f7f2e3;--tile-edge: #cbb98e;--tw: 44px}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang TC,Noto Sans TC,sans-serif;background:radial-gradient(ellipse at center,var(--felt) 0%,var(--felt-dark) 100%) fixed;color:var(--ink);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}:root{--vw: 100vw;--vh: 100vh;--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--sal: env(safe-area-inset-left, 0px);--sar: env(safe-area-inset-right, 0px)}html[data-rotated="1"]{--sat: 0px;--sab: 0px;--sal: env(safe-area-inset-top, 0px);--sar: env(safe-area-inset-bottom, 0px)}#app{min-height:var(--vh)}html[data-rotated="1"] body{position:fixed;top:0;left:0;width:var(--vw);height:var(--vh);transform:rotate(90deg) translateY(-100%);transform-origin:top left;overflow:hidden}html[data-rotated="1"] #app{position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto;min-height:0}.rotate-btn{position:fixed;top:calc(6px + var(--sat));right:calc(6px + var(--sar));z-index:60;min-height:32px;padding:4px 9px;font-size:13px;background:#00000073;border-color:#ffffff4d;border-radius:999px;opacity:.85}.rotate-btn.on{background:var(--accent);color:#2b2100;border-color:transparent}html[data-layout=desktop] .rotate-btn{display:none}button{font:inherit;color:var(--ink);background:#ffffff1f;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:8px 14px;cursor:pointer;min-height:40px}button:hover:not(:disabled){background:#fff3}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);color:#2b2100;border-color:transparent;font-weight:700}button.primary:hover:not(:disabled){background:#ffd36a}button.win{background:#d64545;border-color:transparent;font-weight:700}button.kong{background:#2f6fbd;border-color:transparent;font-weight:600}button.tiny{min-height:26px;padding:2px 8px;font-size:12px}input,select{font:inherit;color:var(--ink);background:#0000004d;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:8px 10px;min-height:40px}input#code{text-transform:uppercase;letter-spacing:3px;font-weight:700;width:160px}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}label .lbl{display:block}.row.nowrap{flex-wrap:nowrap}.row.nowrap input{flex:1;min-width:0}.muted{color:var(--muted)}.small{font-size:12px}.warn{color:var(--accent)}.pos{color:var(--ok)}.neg{color:var(--danger)}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.spread{justify-content:space-between}.screen{display:flex;justify-content:center;align-items:flex-start;min-height:var(--vh);padding:calc(24px + var(--sat)) calc(12px + var(--sar)) calc(24px + var(--sab)) calc(12px + var(--sal))}.card{width:100%;max-width:420px;background:var(--panel);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:22px;display:flex;flex-direction:column;gap:14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.card.wide{max-width:560px}h1{margin:0;font-size:34px;letter-spacing:2px}.brand{display:flex;align-items:center;gap:14px}.brand .logo{width:96px;height:96px;flex:0 0 auto;filter:drop-shadow(0 4px 10px rgba(0,0,0,.45))}.brand h1{font-size:30px}html[data-layout=portrait] .brand .logo{width:84px;height:84px}html[data-layout=portrait] .brand h1{font-size:26px}h1 span{display:block;font-size:14px;letter-spacing:1px;color:var(--muted);font-weight:500;margin-top:2px}h2{margin:0;font-size:26px}h2 span{font-size:16px;color:var(--muted);font-weight:500;margin-left:8px}h3{margin:6px 0 0;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.divider{text-align:center;color:var(--muted);font-size:12px}.room-head{display:flex;justify-content:space-between;align-items:center}.code{font-size:36px;font-weight:800;letter-spacing:6px;color:var(--accent)}.seats{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.seats li{display:flex;align-items:center;gap:8px;background:#0003;border-radius:10px;padding:8px 10px}.seats li.empty{opacity:.6}.seat-actions{margin-top:-4px}.seats .sname{flex:1;font-weight:600}.wind{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;background:#ffffff26;font-weight:700;font-size:15px}.wind.dealer{background:var(--accent);color:#2b2100}.badge{font-size:10px;text-transform:uppercase;letter-spacing:1px;padding:2px 6px;border-radius:999px;background:#ffffff2e}.badge.bot{background:#2f6fbd}.badge.off{background:var(--danger);color:#fff}.badge.you{background:var(--accent);color:#2b2100}.rules{display:grid;grid-template-columns:1fr 1fr;gap:10px}.rules label{min-width:0}.rules select{width:100%;min-width:0}html[data-layout=portrait] .rules{grid-template-columns:1fr}html[data-layout=portrait] .room-head{flex-wrap:nowrap;align-items:flex-start;gap:8px}html[data-layout=portrait] .room-head>div:first-child{min-width:0}html[data-layout=portrait] .room-head .code{font-size:28px;letter-spacing:4px}html[data-layout=portrait] .room-head .roomname{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html[data-layout=portrait] .room-head button{white-space:nowrap;padding:8px 10px}.standings{margin:0;padding-left:22px}.standings li{display:flex;justify-content:space-between;padding:4px 0;font-weight:600}.tile{width:var(--tw);aspect-ratio:40 / 56;border-radius:12%;background:var(--tile-face);box-shadow:0 2px 0 var(--tile-edge),0 3px 4px #00000059;flex:0 0 auto;position:relative;overflow:hidden;transition:transform .12s ease}.tile svg{width:100%;height:100%;display:block}.tile.back{background:linear-gradient(160deg,#3a8a5c,#1f5a3a);box-shadow:0 2px #123a26,0 2px 3px #00000059}.tile.lg{--tw: 46px}.tile.md{--tw: 30px}.tile.sm{--tw: 24px}.tile.xs{--tw: 14px;border-radius:3px}.tile.selectable{cursor:pointer}.tile.selectable:hover{transform:translateY(-6px)}.tile.selected{transform:translateY(-14px);outline:3px solid var(--accent)}.tile.last{outline:3px solid var(--accent);outline-offset:-1px}.tile.claimed{outline:2px solid var(--accent)}.meld{display:inline-flex;gap:2px;padding:3px;background:#0000002e;border-radius:6px}.meld.bonus{background:#ffd25a33}.melds,.my-melds{display:flex;flex-wrap:wrap;gap:6px}.discards{display:flex;flex-wrap:wrap;gap:3px;align-content:flex-start}.table{display:grid;min-height:var(--vh);gap:8px;padding:calc(8px + var(--sat)) calc(8px + var(--sar)) calc(8px + var(--sab)) calc(8px + var(--sal));grid-template-columns:minmax(170px,auto) minmax(0,1fr) minmax(170px,auto);grid-template-rows:auto minmax(120px,1fr) auto}.opp{background:var(--panel);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;min-width:0}.opp.top{grid-column:2;grid-row:1}.opp.left{grid-column:1;grid-row:1 / 3}.opp.right{grid-column:3;grid-row:1 / 3}.center{grid-column:2;grid-row:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.me{grid-column:1 / -1;grid-row:3;background:var(--panel);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:8px}.oppbody{display:flex;flex-direction:column;gap:6px}.opp,.me{transition:box-shadow .2s ease,background-color .2s ease}.opp.active,.me.active{background:#f2c14e24;box-shadow:0 0 0 2px var(--accent),0 0 22px #f2c14e59}.opp.deciding,.me.deciding{box-shadow:0 0 0 2px #f2c14e8c}.hidden-hand{display:flex;gap:1px;flex-wrap:wrap}html[data-layout=desktop] .table,html[data-layout=landscape] .table{align-items:stretch}html[data-layout=desktop] .opp.top .oppbody,html[data-layout=landscape] .opp.top .oppbody{flex-direction:column;align-items:center}html[data-layout=desktop] .opp.top .hidden-hand,html[data-layout=landscape] .opp.top .hidden-hand{justify-content:center;flex-wrap:nowrap}html[data-layout=desktop] .opp.top .melds,html[data-layout=landscape] .opp.top .melds{justify-content:center}html[data-layout=desktop] .opp.top .discards,html[data-layout=landscape] .opp.top .discards{display:grid;grid-template-columns:repeat(8,auto);direction:rtl;justify-content:center;gap:3px}html[data-layout=desktop] .opp.top .tile:not(.back) svg,html[data-layout=landscape] .opp.top .tile:not(.back) svg{transform:rotate(180deg)}html[data-layout=desktop] .opp.left .oppbody,html[data-layout=desktop] .opp.right .oppbody,html[data-layout=landscape] .opp.left .oppbody,html[data-layout=landscape] .opp.right .oppbody{flex-direction:row;align-items:flex-start;gap:8px;flex:1}html[data-layout=desktop] .opp.right .oppbody,html[data-layout=landscape] .opp.right .oppbody{flex-direction:row-reverse}html[data-layout=desktop] .opp.left .hidden-hand,html[data-layout=desktop] .opp.right .hidden-hand,html[data-layout=landscape] .opp.left .hidden-hand,html[data-layout=landscape] .opp.right .hidden-hand{flex-direction:column;flex-wrap:nowrap;gap:1px}html[data-layout=desktop] .opp.left .melds,html[data-layout=desktop] .opp.right .melds,html[data-layout=landscape] .opp.left .melds,html[data-layout=landscape] .opp.right .melds{flex-direction:column;gap:6px}html[data-layout=desktop] .opp.left .meld,html[data-layout=desktop] .opp.right .meld,html[data-layout=landscape] .opp.left .meld,html[data-layout=landscape] .opp.right .meld{flex-direction:column;gap:2px}html[data-layout=desktop] .opp.left .discards,html[data-layout=desktop] .opp.right .discards,html[data-layout=landscape] .opp.left .discards,html[data-layout=landscape] .opp.right .discards{display:grid;grid-auto-flow:column;grid-template-rows:repeat(6,auto);gap:3px;align-content:start}html[data-layout=desktop] .opp.right .discards,html[data-layout=landscape] .opp.right .discards{direction:rtl}html[data-layout=desktop] .opp.left .tile,html[data-layout=desktop] .opp.right .tile,html[data-layout=landscape] .opp.left .tile,html[data-layout=landscape] .opp.right .tile{--tw: 22px;width:calc(var(--tw) * 1.4);aspect-ratio:56 / 40}html[data-layout=desktop] .opp.left .hidden-hand .tile,html[data-layout=desktop] .opp.right .hidden-hand .tile,html[data-layout=landscape] .opp.left .hidden-hand .tile,html[data-layout=landscape] .opp.right .hidden-hand .tile{--tw: 13px;border-radius:3px}html[data-layout=desktop] .opp.left .tile svg,html[data-layout=desktop] .opp.right .tile svg,html[data-layout=landscape] .opp.left .tile svg,html[data-layout=landscape] .opp.right .tile svg{position:absolute;left:50%;top:50%;width:var(--tw);height:calc(var(--tw) * 1.4);transform:translate(-50%,-50%) rotate(90deg)}html[data-layout=desktop] .opp.right .tile svg,html[data-layout=landscape] .opp.right .tile svg{transform:translate(-50%,-50%) rotate(-90deg)}html[data-layout=desktop] .opp.left .tile.last,html[data-layout=desktop] .opp.right .tile.last,html[data-layout=desktop] .opp.top .tile.last,html[data-layout=landscape] .opp.left .tile.last,html[data-layout=landscape] .opp.right .tile.last,html[data-layout=landscape] .opp.top .tile.last{outline-offset:0}html[data-layout=desktop] .me .discards,html[data-layout=landscape] .me .discards{justify-content:center;max-width:min(70%,640px);margin:0 auto}html[data-layout=desktop] .me .my-melds,html[data-layout=landscape] .me .my-melds,html[data-layout=desktop] .me .hand,html[data-layout=landscape] .me .hand,html[data-layout=desktop] .me .actions,html[data-layout=landscape] .me .actions{justify-content:center}.phead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.phead .pname{font-weight:700}.phead .pscore{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:600}.phead.turn{box-shadow:inset 3px 0 0 var(--accent);padding-left:6px}.phead.pending .pname:after{content:" …";color:var(--accent)}.round .big{font-size:40px;font-weight:800}.round .wall{margin-top:6px;font-size:14px}.round .wall b{color:var(--accent)}.lastd{display:flex;flex-direction:column;align-items:center;gap:4px}.log{font-size:12px;color:var(--muted);max-width:420px}.center .leave{opacity:.6}.center .leave:hover{opacity:1}.hand{display:flex;align-items:flex-end;gap:4px;flex-wrap:wrap;padding:16px 4px 4px;min-height:84px}.hand.active{background:#ffffff0d;border-radius:10px}.drawn{margin-left:14px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:44px}.me-tools{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.me-tools button{white-space:nowrap}.hint{color:var(--muted);font-size:13px}.countdown{display:inline-block;min-width:1.6em;text-align:center;font-variant-numeric:tabular-nums}.countdown.pill{background:#00000059;border-radius:999px;padding:1px 8px;font-weight:700}.countdown.urgent{color:var(--danger)}.chow-options{display:flex;gap:6px;flex-wrap:wrap}.chow-opt{display:inline-flex;gap:2px;padding:4px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:12px;z-index:10}.modal{background:#123b28;border:1px solid rgba(255,255,255,.15);border-radius:16px;padding:20px;width:100%;max-width:560px;max-height:calc(var(--vh) * .92);overflow:auto;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px #00000080}.wintiles{display:flex;flex-wrap:wrap;gap:6px}table.faan,table.pay{width:100%;border-collapse:collapse;font-size:14px}table td{padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.08)}table .num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}table tr.total td{border-top:2px solid rgba(255,255,255,.3);border-bottom:none;font-weight:800;font-size:16px}.foot{margin-top:4px;position:sticky;bottom:-20px;background:#123b28;padding:8px 0 12px}.loadbar{position:fixed;top:var(--sat);left:0;right:0;height:3px;background:#ffffff1f;z-index:50;overflow:hidden;pointer-events:none}.loadbar div{position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(90deg,transparent,var(--accent),transparent);animation:loadbar 1.1s ease-in-out infinite}@keyframes loadbar{0%{left:-40%}to{left:100%}}.home-actions button{flex:1 1 auto;min-height:48px;font-size:16px}.modal.narrow input#code{width:100%;text-align:center;font-size:22px}.install{display:flex;flex-direction:column;gap:6px;align-items:center}.install-btn{width:100%;background:#7bd88f2e;border-color:#7bd88f80}.install-hint{text-align:center;margin:0}.gsi{display:flex;justify-content:center;min-height:44px}.account{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;background:#0003;border-radius:10px;padding:8px 10px}.account img,.account .avatar{width:34px;height:34px;border-radius:50%;flex:0 0 auto}.account .avatar{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#2b2100;font-weight:800}.account .avatar.guest{background:#ffffff40;color:var(--ink)}.account .acc-main{min-width:0}.account b,.account .email{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account .acc-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}html[data-layout=portrait] .account{grid-template-columns:auto minmax(0,1fr)}html[data-layout=portrait] .account .acc-actions{grid-column:1 / -1;justify-content:flex-start}.roomname{font-size:20px;font-weight:700;margin-bottom:4px}.mode-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mode-opt{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:10px 12px;border-radius:10px;background:#00000040;border:1px solid rgba(255,255,255,.18);color:var(--ink);cursor:pointer;min-height:0;font:inherit}.mode-opt input{position:absolute;opacity:0;pointer-events:none}.mode-opt.on,.mode-opt:hover{border-color:var(--accent);background:#f2c14e1f}.mode-opt b{font-size:15px}.mode-opt span{line-height:1.3}.badge.simple{background:#7bd88f4d;color:var(--ink)}html[data-layout=portrait] .mode-choice{grid-template-columns:1fr}label.check{flex-direction:row;align-items:center;gap:6px;color:var(--ink);font-size:14px;cursor:pointer}label.check input{min-height:0;width:18px;height:18px;accent-color:var(--accent)}.center-text{text-align:center}.roomlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:240px;overflow:auto}.roomlist li{display:flex;align-items:center;gap:10px;background:#0003;border-radius:10px;padding:8px 10px}.roomlist .rl-main{flex:1;min-width:0}.badge.pub{background:var(--ok);color:#0b2a18}.modal.narrow{max-width:420px}.overlay.confirm{z-index:25}.banner{background:#f2c14e26;border:1px solid rgba(242,193,78,.4);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;font-size:14px}.learn{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px}.learn button{min-width:0;padding:8px 6px}html[data-layout=portrait] .hide-mobile{display:none!important}.tut-panel{position:fixed;top:calc(10px + var(--sat));left:50%;transform:translate(-50%);width:min(560px,calc(var(--vw) - 20px));z-index:15;background:#123b28;border:1px solid rgba(242,193,78,.5);border-radius:14px;padding:12px 16px;box-shadow:0 16px 40px #00000080;display:flex;flex-direction:column;gap:6px;max-height:calc(var(--vh) * .6);overflow:auto}.tut-head{display:flex;justify-content:space-between;align-items:center}.tut-title{margin:0;font-size:18px;color:var(--accent);text-transform:none;letter-spacing:0}.tut-body p{margin:6px 0;font-size:14px;line-height:1.45}.tut-tiles{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0;align-items:center}.tut-actions{margin-top:4px;position:sticky;bottom:-12px;background:#123b28;padding:8px 0 10px}.tut-target{outline:3px solid var(--accent);outline-offset:2px;border-radius:10px;animation:tut-pulse 1.2s ease-in-out infinite}@keyframes tut-pulse{0%,to{box-shadow:0 0 #f2c14e8c}50%{box-shadow:0 0 0 10px #f2c14e00}}.table.local .countdown,.table.tutorial .modal .foot{display:none}.table.tutorial .overlay{align-items:flex-end;padding-bottom:24px}.guide-overlay{z-index:30}.modal.guide{max-width:640px}.modal.guide h3{margin-top:10px}.modal.guide p,.modal.guide li{font-size:14px;line-height:1.5}.modal.guide ul,.modal.guide ol{margin:4px 0;padding-left:20px}.center-buttons{justify-content:center}.chat{display:flex;flex-direction:column;gap:6px;background:#00000038;border-radius:12px;padding:10px}.chat.inline .chat-messages{max-height:180px}.chat.drawer{position:fixed;right:calc(10px + var(--sar));bottom:calc(10px + var(--sab));top:auto;width:min(360px,calc(var(--vw) - 20px));max-height:min(calc(var(--vh) * .7),560px);z-index:12;background:#123b28;border:1px solid rgba(255,255,255,.15);box-shadow:0 16px 40px #00000080;overflow:hidden}.chat.drawer .chat-messages{min-height:60px}.chat-form button[type=button]{padding:8px 12px}.chat-head{display:flex;flex-direction:column;gap:6px}.chat-head .row.spread{flex-wrap:nowrap}.chat-messages{overflow-y:auto;display:flex;flex-direction:column;gap:6px;min-height:80px;flex:1 1 auto;padding-right:2px}.chat-head,.chat-form{flex:0 0 auto}.turn-order{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;font-size:12px;color:var(--muted);max-width:520px}.to-label{margin-right:4px}.to-chip{padding:2px 9px;border-radius:999px;background:#00000047;color:var(--ink);white-space:nowrap}.to-chip small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.5px}.to-chip.me{box-shadow:inset 0 0 0 1px var(--accent)}.to-chip.now{background:var(--accent);color:#2b2100;font-weight:700}.to-chip.now small{color:#2b2100}.to-chip.pending:not(.now){box-shadow:inset 0 0 0 1px #f2c14e99}.to-arrow{color:var(--muted)}.msg{background:#ffffff12;border-radius:10px;padding:6px 8px;font-size:14px;max-width:92%;align-self:flex-start}.msg.mine{align-self:flex-end;background:#f2c14e2e}.msg .who{font-weight:700;margin-right:6px}.msg .when{color:var(--muted);font-size:11px}.msg .text{word-break:break-word}.msg.system{align-self:center;background:none;color:var(--muted);font-size:12px;font-style:italic}.chat-form{display:flex;gap:6px}.chat-form input{flex:1;min-width:0}.chat-toggle .unread{background:var(--danger);color:#fff;border-radius:999px;padding:0 6px;font-size:11px;font-weight:700}.badge.voice{background:#7bd88f40}button.live{background:#7bd88f40;border-color:var(--ok)}button.muted-btn{background:#ff6b6b40;border-color:var(--danger)}html[data-layout=portrait] .chat.drawer{right:0;left:0;bottom:0;width:auto;max-height:calc(var(--vh) * .6);border-radius:14px 14px 0 0;padding-bottom:calc(10px + var(--sab))}.admin-overlay{z-index:40}.modal.admin{max-width:1000px;width:100%}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.stats div{background:#00000040;border-radius:10px;padding:8px 10px;text-align:center}.stats b{display:block;font-size:20px;color:var(--accent)}.stats span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.tabs{gap:6px}.tablewrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th{text-align:left;color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:6px}.admin-table td{padding:6px;border-top:1px solid rgba(255,255,255,.08);vertical-align:top}.admin-table tr.banned td{opacity:.6}.admin-table tr.me-row td{background:#f2c14e1f}.actions-cell{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.logbar{gap:8px;flex-wrap:nowrap}.logbar select{flex:0 0 auto;min-width:0;padding:8px 6px}.logbar input{flex:1 1 60px;min-width:0}.logbar .check{flex:0 0 auto;white-space:nowrap}.logs{display:flex;flex-direction:column;gap:2px;max-height:calc(var(--vh) * .55);overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.logrow{display:grid;grid-template-columns:80px 48px 140px minmax(0,1fr);gap:8px;padding:4px 6px;border-radius:6px;align-items:start}.logrow:nth-child(odd){background:#0000002e}.logrow .lt{color:var(--muted)}.logrow .ll{font-weight:700;text-transform:uppercase;font-size:10px;padding-top:2px}.logrow.info .ll{color:var(--ok)}.logrow.warn .ll{color:var(--accent)}.logrow.error .ll{color:var(--danger)}.logrow .le{color:#9fd3ff}.logrow .lm{word-break:break-word}.logrow details{grid-column:1 / -1}.logrow summary{cursor:pointer;color:var(--muted)}.logrow pre{margin:4px 0 0;white-space:pre-wrap;word-break:break-word;font-size:11px}html[data-layout=portrait] .logrow{grid-template-columns:64px minmax(0,1fr)}html[data-layout=portrait] .logrow .ll,html[data-layout=portrait] .logrow .le{display:none}#toasts{position:fixed;left:50%;bottom:calc(18px + var(--sab));transform:translate(-50%);display:flex;flex-direction:column;gap:6px;z-index:20;pointer-events:none}.toast{background:#000000d9;color:#fff;padding:10px 16px;border-radius:10px;opacity:0;transform:translateY(8px);transition:all .25s ease;font-size:14px}.toast.show{opacity:1;transform:none}html[data-layout=portrait] .table{display:flex;flex-direction:column;gap:6px;min-height:var(--vh);padding:calc(6px + var(--sat)) calc(6px + var(--sar)) calc(6px + var(--sab)) calc(6px + var(--sal))}html[data-layout=portrait] .opp.top,html[data-layout=portrait] .opp.left,html[data-layout=portrait] .opp.right{grid-area:auto}html[data-layout=portrait] .opp .oppbody{flex-direction:row;align-items:flex-start;flex-wrap:wrap}html[data-layout=portrait] .opp .discards{flex:1 1 100%}html[data-layout=portrait] .tile.sm{--tw: 20px}html[data-layout=portrait] .tile.md{--tw: 26px}html[data-layout=portrait] .tile.xs{--tw: 9px;border-radius:2px}html[data-layout=portrait] .center{flex-direction:row;flex-wrap:wrap;justify-content:space-around;align-items:center;padding:6px 0;gap:8px 12px}html[data-layout=portrait] .center .center-buttons{flex:1 1 100%;justify-content:center;flex-wrap:nowrap}html[data-layout=portrait] .center .turn-order{flex:1 1 100%;order:-1;font-size:11px}html[data-layout=portrait] .to-chip{padding:2px 7px}html[data-layout=portrait] .center .center-buttons button{padding:4px 8px;white-space:nowrap}html[data-layout=portrait] .actions .hint{flex:1 1 100%}html[data-layout=portrait] .round .big{font-size:26px}html[data-layout=portrait] .log{display:none}html[data-layout=portrait] .me{position:sticky;bottom:0;background:#16452f;box-shadow:0 -6px 16px #00000059;padding-bottom:calc(10px + var(--sab))}html[data-layout=portrait] .tut-panel{top:calc(6px + var(--sat));max-height:calc(var(--vh) * .78);padding:10px 12px}html[data-layout=portrait] .tut-body p{font-size:13px}html[data-layout=portrait] .tut-tiles .tile.md{--tw: 24px}html[data-layout=portrait] .tut-tiles .tile.sm{--tw: 20px}html[data-layout=portrait] .hand{gap:2px;padding-top:14px}html[data-layout=portrait] .tile.lg{--tw: calc((var(--vw) - 52px) / 8)}html[data-layout=portrait] .drawn{margin-left:8px}html[data-layout=portrait] .hand{row-gap:8px}html[data-layout=portrait] .actions button{min-height:44px}html[data-layout=portrait] .tile.selected{transform:translateY(-10px)}html[data-layout=landscape] .table{display:grid;height:var(--vh);min-height:0;overflow:hidden;gap:4px;padding:calc(4px + var(--sat)) calc(4px + var(--sar)) calc(4px + var(--sab)) calc(4px + var(--sal));grid-template-columns:minmax(130px,auto) minmax(0,1fr) minmax(130px,auto);grid-template-rows:auto minmax(0,1fr) auto}html[data-layout=landscape] .opp{padding:4px 6px;gap:3px;min-height:0;overflow:hidden}html[data-layout=landscape] .opp.top{grid-column:2;grid-row:1}html[data-layout=landscape] .opp.left{grid-column:1;grid-row:1 / 3}html[data-layout=landscape] .opp.right{grid-column:3;grid-row:1 / 3}html[data-layout=landscape] .opp.top .oppbody{flex-direction:row;align-items:flex-start;justify-content:center;gap:10px}html[data-layout=landscape] .opp.top .discards{grid-template-columns:repeat(12,auto);gap:2px}html[data-layout=landscape] .opp.left .tile,html[data-layout=landscape] .opp.right .tile{--tw: 16px}html[data-layout=landscape] .opp.left .hidden-hand .tile,html[data-layout=landscape] .opp.right .hidden-hand .tile{--tw: 9px}html[data-layout=landscape] .opp.left .discards,html[data-layout=landscape] .opp.right .discards{grid-template-rows:repeat(6,auto);gap:2px}html[data-layout=landscape] .opp.top .tile.sm{--tw: 16px}html[data-layout=landscape] .me .discards{max-height:30px;overflow-y:auto;max-width:none}html[data-layout=landscape] .center{grid-column:2;grid-row:2;gap:2px;min-height:0}html[data-layout=landscape] .round .big{font-size:20px}html[data-layout=landscape] .round .small,html[data-layout=landscape] .log{display:none}html[data-layout=landscape] .round .wall{margin-top:0;font-size:12px}html[data-layout=landscape] .turn-order{font-size:11px}html[data-layout=landscape] .lastd .small{display:block}html[data-layout=landscape] .me{grid-column:1 / -1;grid-row:3;padding:4px 8px;gap:3px;position:static}html[data-layout=landscape] .me .discards .tile.md{--tw: 20px}html[data-layout=landscape] .hand{padding:8px 2px 2px;min-height:0;gap:3px;row-gap:3px}html[data-layout=landscape] .tile.lg{--tw: 38px}html[data-layout=landscape] .tile.md{--tw: 24px}html[data-layout=landscape] .tile.sm{--tw: 18px}html[data-layout=landscape] .tile.xs{--tw: 9px;border-radius:2px}html[data-layout=landscape] .tile.selected{transform:translateY(-8px)}html[data-layout=landscape] .actions{min-height:36px;gap:6px}html[data-layout=landscape] .actions button{min-height:34px;padding:4px 10px}html[data-layout=landscape] .hint{font-size:12px}html[data-layout=landscape] .modal{padding:12px;gap:8px}html[data-layout=landscape] .modal h2{font-size:20px}
