:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#f0f1f6;background:#10131b;color-scheme:dark;font-synthesis:none;--muted:#9399ab;--line:#2b3041;--accent:#a9a0ff}*{box-sizing:border-box}body{margin:0}header{max-width:1000px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:22px 24px;border-bottom:1px solid var(--line)}.brand{color:#f0f1f6;font-size:26px;font-weight:850;letter-spacing:-1px;text-decoration:none}.brand span{color:var(--accent);font-size:11px;margin-left:5px}#connection{font-size:12px;color:var(--muted)}main{max-width:1000px;padding:30px 24px 40px;margin:auto}h1{font-size:28px;letter-spacing:-1px;margin:0 0 24px;font-weight:750}h2{font-size:18px;margin:0;font-weight:700}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;user-select:none}button:disabled{opacity:.4;cursor:default}button:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input,select{width:100%;background:#151923;border:1px solid #383e52;border-radius:10px;color:#f0f1f6;padding:13px 14px;min-height:48px;font-size:16px;min-width:0}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:2px}label{display:block;font-size:13px;color:#c2c6d3;margin:20px 0 8px}.muted{color:var(--muted);font-size:12px}.entry{max-width:430px;margin:20px auto}.tabs{display:flex;background:#1b202d;border-radius:11px;padding:4px;gap:4px;margin-bottom:26px}.tabs button{width:50%;border:0;background:transparent;color:var(--muted);padding:12px;border-radius:8px;font-weight:650}.tabs .active{background:#35304d;color:#d9d2ff}.row{display:flex;gap:14px}.row>div{flex:1;min-width:0}.primary,.secondary{border:0;border-radius:10px;padding:13px 18px;min-height:46px;font-weight:700}.primary{background:#b9b0ff;color:#21193e;width:100%;margin-top:24px}.secondary{background:#242a39;color:#e4e6ee;border:1px solid #363d50;font-size:13px}.code-input{text-transform:uppercase;letter-spacing:5px;font-weight:700}.room-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.room-header h1{margin:5px 0 0;font-size:25px}.overline{color:var(--muted);font-size:12px}.room-code{letter-spacing:3px}.room-info{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--muted);font-size:12px;flex-wrap:wrap}.badge{background:#29263f;color:#c5bcff;border-radius:6px;padding:6px 10px}.choose{display:flex;gap:14px;align-items:center;margin:22px 0}.choose label{margin:0;white-space:nowrap}.choose select{max-width:260px}.lobby-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#1b2030;padding:16px;border-radius:12px;margin:0 0 20px;font-size:13px;color:#b6bdd0}.primary.compact{width:auto;flex-shrink:0;margin:0}.notice{padding:13px 16px;background:#27233c;color:#c6bdff;border:1px solid #49405d;border-radius:10px;margin-bottom:18px;font-size:14px}.notice.winner{color:#b4f0d9;border-color:#3a6a5b;background:#203b34}.score-grid,.life-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.score-grid.two,.life-grid.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.team-card{border:1px solid #363550;background:#1d2031;border-radius:16px;padding:20px;min-width:0;border-top:3px solid #aaa0ff}.team-card:nth-child(2n){border-color:#354859;border-top-color:#74c4e6;background:#192633}.team-card:nth-child(3n){border-top-color:#e8b379}.team-heading{display:flex;align-items:center;justify-content:space-between;gap:5px;margin-bottom:15px}.team-heading h2{overflow-wrap:anywhere}.icon{border:0;background:transparent;color:#acb2c5;padding:4px 8px;min-width:30px;min-height:32px;font-size:18px}.danger{color:#f2a6b5!important}.members{min-height:64px}.person{display:flex;align-items:center;gap:10px;margin:10px 0;min-width:0}.avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:9px;background:#ffffff12;flex-shrink:0;font-size:12px;color:#d3d6e6}.person-name{font-size:14px;min-width:0;flex:1;overflow-wrap:anywhere}.person-name small{display:block;color:#9ba3b7;font-size:10px;margin-top:3px}.person-name>small:first-child:not(:last-child){display:inline;margin-left:4px}.empty{color:#8b93a8;font-size:12px;padding:12px 0}.leader-label{font-size:11px;margin:12px 0 6px}.team-card select{font-size:13px;min-height:42px;padding:10px}.team-slots{font-size:12px;color:#959eb4;margin-top:18px;border-top:1px solid #ffffff12;padding-top:14px}.score-line{display:flex;justify-content:center;align-items:baseline;gap:10px;margin:18px 0 20px}.score{font-size:clamp(60px,10vw,108px);line-height:1;letter-spacing:-5px;font-weight:800;font-variant-numeric:tabular-nums}.goal{color:#9ba1b5;font-size:14px}.score-actions{display:flex;gap:8px;justify-content:center}.point{background:#ffffff0d;border:1px solid #ffffff22;border-radius:10px;color:#d9ddec;padding:13px 8px;min-height:46px;font-weight:700;font-size:18px;flex:1;max-width:100px}.point.add{background:#b6acff;color:#251b48;border-color:transparent}.team-card:nth-child(2n) .point.add{background:#8ed2ed;color:#143448}.more-points{text-align:center;font-size:11px;margin-top:14px;color:#a8b0c3}.more-points summary{list-style:none;cursor:pointer;padding:6px}.more-points .score-actions{margin-top:8px}.more-points .point{font-size:14px;padding:10px 6px}.read-only{text-align:center;color:#9099ad;font-size:12px;padding:12px}.toolbar{display:flex;gap:10px;margin:22px 0;flex-wrap:wrap}.list-section{border-top:1px solid var(--line);padding:18px 0;margin-top:16px}.list-section>h2{font-size:14px;margin-bottom:12px}.list-section>summary{font-size:14px;cursor:pointer;color:#bec4d5;padding:4px 0}.list-section .person{max-width:480px}.list-section ul{list-style:none;padding:0}.list-section li{font-size:13px;padding:10px 0;border-bottom:1px solid #242a38}.list-section li small{display:block;color:#8f98af;margin-top:4px;font-size:11px}.list-section select{max-width:380px}.bottom-actions{display:flex;gap:20px;flex-wrap:wrap;padding:22px 0}.text-button{background:none;border:0;color:#a5adc3;padding:8px 0;font-size:12px}.round-row{display:grid;grid-template-columns:1fr 85px 85px;gap:12px;align-items:center;margin:14px 0;font-size:13px}.round-row input{padding:10px}.eliminated{opacity:.5}.permission-note{margin-top:25px}#toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#d9d2ff;color:#21193e;padding:14px 20px;border-radius:12px;font-size:14px;box-shadow:0 5px 30px #0006;max-width:90%;display:none;z-index:10}@media(max-width:600px){header{padding:16px}main{padding:24px 14px 30px}.entry{margin:6px auto}h1{font-size:25px}.room-header h1{font-size:21px}.room-header .secondary{padding:11px;font-size:11px;min-height:42px}.room-code{letter-spacing:2px}.lobby-bar{gap:10px;padding:12px;font-size:12px}.primary.compact{font-size:12px;padding:12px}.score-grid,.life-grid{gap:10px;grid-template-columns:repeat(auto-fit,minmax(145px,1fr))}.team-card{padding:14px 10px;border-radius:12px}.team-heading{margin-bottom:10px}.team-heading h2{font-size:16px}.person{gap:6px}.person-name{font-size:12px}.avatar{width:24px;height:26px;font-size:10px;border-radius:6px}.icon{padding:3px;min-width:26px}.score{font-size:72px;letter-spacing:-4px}.goal{font-size:11px}.score-line{gap:7px;margin:22px 0}.score-actions{gap:5px}.point{font-size:17px;padding:12px 4px}.round-row{grid-template-columns:1fr 68px 68px;gap:9px}.bottom-actions{gap:18px}.team-card select{font-size:12px;padding:8px 4px}.choose select{max-width:none}}@media(max-width:350px){.score{font-size:58px}.team-card{padding:12px 8px}.avatar{display:none}.point{font-size:15px}.room-header{gap:8px}.room-header h1{font-size:19px}}
/* Mesa azul: fundo vetorial leve e equipes com cores distintas. */
:root{background:#080f20;--accent:#8db6ff;--line:#2a3952;--muted:#9caec6}
body{min-height:100vh;min-height:100svh;isolation:isolate}
body::before{content:"";position:fixed;inset:0;z-index:-2;background:#080f20 url('/assets/table.svg') center/cover no-repeat;pointer-events:none}
body::after{content:"";position:fixed;inset:0;z-index:-1;background:linear-gradient(0deg,#080f20d9,transparent 70%);pointer-events:none}
header{background:#0b1525a8;border-color:#3f587f45}.brand span{font-size:19px}.entry{background:#101c30f2;border:1px solid #30445f;border-radius:18px;padding:25px;box-shadow:0 18px 60px #0003}.tabs{background:#14243b}.tabs .active{background:#28446c;color:#d9e8ff}.primary,.point.add{background:#85b4ff;color:#0c2245}.secondary{background:#1b2c45;border-color:#3a5273;color:#dce9ff}.badge{background:#213a5b;color:#a7cbff}.lobby-bar{background:#14253c;color:#b6cbe5}input,select{background:#0e1b30;border-color:#314a6d}.notice{background:#172f4be8;border-color:#385d8c;color:#c9dfff}.notice.winner{background:#153d38;border-color:#38776b;color:#bdede2}.team-card{background:#13253deF;border-color:#35567d;border-top-color:#7aafff;box-shadow:0 12px 30px #0002}.team-card:nth-child(2n){background:#30263aef;border-color:#6c4b53;border-top-color:#ffb17c}.team-card:nth-child(2n) .point.add{background:#ffbb8e;color:#482712}.team-card:nth-child(3n){border-top-color:#b69cff}.person-name small,.goal{color:#9fb3cf}.point{color:#e2edff}.read-only,.more-points,.empty{color:#a5b8d2}.asset-credit{max-width:1000px;margin:0 auto;padding:0 24px 22px;text-align:right}.asset-credit a{color:#7890b1;font-size:10px;text-decoration:none}.credits{max-width:650px;line-height:1.8}.credits h1{margin-top:24px}.credits a{color:#aacbff}.header-actions{display:flex;gap:8px;align-items:center}.sound-toggle{font-size:11px;white-space:nowrap}.sound-toggle[aria-pressed=false]{opacity:.7}.list-section>summary{color:#b6c9e4}.list-section li{border-color:#2a3952}.text-button{color:#a9bfdd}#toast{background:#c8dfff;color:#10294d}
.join-team{width:100%;margin:0 0 12px;min-height:42px;padding:10px 8px;border-color:#5279ac;color:#c9e0ff;background:#203b5e;font-size:12px}.team-card:nth-child(2n) .join-team{color:#ffd2b2;border-color:#9b6b4c;background:#513c37}.my-team-badge{display:inline-block;padding:7px 10px;background:#7aaaff1a;color:#b3d3ff;border:1px solid #6fa5f549;border-radius:8px;font-size:11px;margin-bottom:8px}.team-card:nth-child(2n) .my-team-badge{color:#ffd0aa;background:#ffa96d18;border-color:#ffaa6e49}
button{transition:transform 140ms cubic-bezier(.23,1,.32,1),background-color 140ms ease,border-color 140ms ease,opacity 140ms ease,box-shadow 140ms ease}button:active:not(:disabled){transform:scale(.97)}
@media(hover:hover) and (pointer:fine){button:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 5px 14px #0003}.primary:hover,.point.add:hover{background:#a7caff}.team-card:nth-child(2n) .point.add:hover{background:#ffcdad}.secondary:hover,.point:not(.add):hover{background:#304d72;border-color:#88afe0}.team-card:nth-child(2n) .point:not(.add):hover,.team-card:nth-child(2n) .join-team:hover{background:#624741;border-color:#c99774}.tabs button:hover:not(.active){background:#213955;color:#e0edff}.icon:hover,.text-button:hover{color:#eef5ff;background:#a3c4ff15;border-radius:7px}.danger:hover{background:#e9a2b31a!important;color:#ffd1da!important}summary:hover{color:#edf6ff}.more-points summary:hover{background:#a8cbff0c;border-radius:6px}input:hover,select:hover{border-color:#6b95ce}.asset-credit a:hover{color:#d6e7ff}button:active:not(:disabled){transform:scale(.97)}}
@media(prefers-reduced-motion:reduce){button{transition:none}button:active:not(:disabled){transform:none}}@media(prefers-reduced-motion:reduce) and (hover:hover) and (pointer:fine){button:not(:disabled):hover{transform:none}}
.truco-bar:empty{display:none}.truco-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:18px;padding:16px;border:1px solid #54729f;background:#172b45f2;border-radius:13px}.request-truco.primary{width:100%;margin:0;background:#91bcff;font-size:16px;letter-spacing:.2px}.truco-info{display:flex;align-items:center;gap:12px}.truco-info strong{display:block;font-size:19px}.truco-info small{display:block;font-size:11px;color:#abc0dd;margin-top:4px}.truco-suit{font-size:32px;color:#94bfff}.truco-controls{display:flex;align-items:center;gap:14px}.hand-winners{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px;width:100%}.hand-win{text-align:center;font-size:13px}.hand-win strong{display:inline-block;margin-left:6px;color:#b4d4ff}.hand-win:nth-child(2n){background:#45313a;border-color:#8c6557}.hand-win:nth-child(2n) strong{color:#ffccab}
#confirm-dialog{background:#122039;color:#eef4ff;border:1px solid #456287;border-radius:20px;padding:26px;width:min(380px,calc(100% - 32px));box-shadow:0 30px 100px #0008}#confirm-dialog::backdrop{background:#030814bb;backdrop-filter:blur(4px)}.dialog-icon{width:40px;height:40px;border-radius:12px;background:#ffb78d18;color:#ffbd9a;display:grid;place-items:center;font-size:22px;font-weight:750;margin-bottom:18px}#confirm-dialog h2{font-size:22px;letter-spacing:-.5px}#confirm-message{color:#afc1dc;font-size:14px;line-height:1.6;margin:12px 0 24px;overflow-wrap:anywhere}.dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.dialog-actions .primary{margin:0;background:#ffbd9c;color:#462210}.dialog-actions button{width:100%;min-height:46px}
@media(max-width:600px){.entry{padding:20px 18px}.header-actions{gap:6px}.room-header .secondary{padding:10px 8px;font-size:10px}.room-header h1{font-size:19px}.room-code{letter-spacing:1px}.room-header{gap:8px}.asset-credit{padding-right:16px}.truco-bar{padding:12px;gap:12px}.truco-info strong{font-size:17px}.truco-controls .secondary{font-size:12px;padding:10px 12px;min-height:40px}.truco-controls{gap:10px}.hand-winners{gap:8px}.hand-win{padding:12px 8px;font-size:12px}.join-team{font-size:11px}.my-team-badge{font-size:10px}}
@media(max-width:350px){.header-actions{flex-direction:column;align-items:stretch}}
/* Espaços reservados mantêm o card estável com os atalhos abertos. */
.score-grid{grid-auto-rows:560px;align-items:stretch}
.score-grid>.team-card{height:560px;display:flex;flex-direction:column;overflow:hidden}
.score-grid .team-heading{flex:0 0 44px;margin:0;min-height:0;align-items:flex-start}
.score-grid .team-heading h2{line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.team-choice{flex:0 0 44px;min-height:0;display:flex;align-items:flex-start}
.team-choice .join-team{height:36px;min-height:36px;margin:0;padding:8px}
.team-choice .my-team-badge{height:32px;margin:0;white-space:nowrap}
.score-grid .members{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:auto;scrollbar-width:thin;padding-right:3px}
.score-grid .person:first-child{margin-top:2px}.score-grid .person:last-child{margin-bottom:2px}
.score-grid .score-line{flex:0 0 110px;min-height:110px;margin:0;align-items:center}
.score-grid .score{font-size:94px}.score-grid .goal{align-self:center;margin-top:45px}
.score-grid .team-card>.score-actions{flex:0 0 48px;height:48px;margin:0}
.score-grid .more-points{flex:0 0 84px;height:84px;min-height:84px;margin:0;padding-top:8px}
.score-grid .more-points summary{height:26px;padding:6px 0}
.score-grid .more-points .score-actions{height:44px;margin-top:6px}
.score-grid .more-points .point{min-height:44px;height:44px;padding:8px 5px}
.score-grid .read-only{flex:0 0 132px;height:132px;display:grid;place-items:start center;padding-top:16px}
.score-grid .leader-label{flex:0 0 20px;margin:12px 0 4px}.score-grid .team-card>select{flex:0 0 42px;height:42px}
.score-grid .team-slots{flex:0 0 36px;height:36px;margin-top:12px;padding-top:12px}
.life-grid{grid-auto-rows:330px}.life-grid>.team-card{height:330px;display:flex;flex-direction:column;overflow:hidden}.life-grid>.team-card>.person{max-height:82px;overflow:auto;flex:0 0 auto}.life-grid .score-line{margin:auto 0;flex:1;align-items:center}.life-grid .score-actions{flex:0 0 48px}
@media(max-width:600px){.score-grid{grid-auto-rows:540px}.score-grid>.team-card{height:540px}.score-grid .score-line{flex-basis:92px;min-height:92px}.score-grid .score{font-size:74px}.score-grid .goal{margin-top:35px}.life-grid{grid-auto-rows:310px}.life-grid>.team-card{height:310px}}

/* Na espera os cards acompanham os jogadores; o placar mantém a altura estável. */
.score-grid.waiting,.life-grid.waiting{grid-auto-rows:auto;align-items:start}
.score-grid.waiting>.team-card,.life-grid.waiting>.team-card{height:auto;min-height:0;display:flex;overflow:visible}
.score-grid.waiting .team-heading{flex:0 0 auto;min-height:32px;margin-bottom:10px}
.score-grid.waiting .team-choice{flex:0 0 auto;min-height:32px;margin-bottom:8px}
.score-grid.waiting .members{flex:0 0 auto;min-height:0;overflow:visible;padding:0}
.score-grid.waiting .team-slots{flex:0 0 auto;height:auto;min-height:28px;margin-top:12px;padding-top:10px}
.score-grid.waiting .leader-label{flex:0 0 auto;min-height:0;margin:14px 0 6px}
.score-grid.waiting .team-card>select{flex:0 0 auto}
.score-grid .members,.team-card{overscroll-behavior-y:auto;touch-action:pan-y pinch-zoom}
.life-grid.waiting>.team-card>.person{max-height:none;overflow:visible}

.roster-controls{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 18px}#offline-dialog{background:#122039;color:#eef4ff;border:1px solid #456287;border-radius:20px;padding:26px;width:min(380px,calc(100% - 32px));box-shadow:0 30px 100px #0008}#offline-dialog::backdrop{background:#030814bb;backdrop-filter:blur(4px)}#offline-dialog .dialog-actions{margin-top:24px}
