:root{--felt:#1e5631;--felt-dark:#163f24;--cream:#f5f1e6;--ink:#1a1a1a;--accent:#c99a2e;--danger:#b23b3b;--team-a:#c99a2e;--team-b:#5b9bd5}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:"Segoe UI",Arial,sans-serif;background:var(--felt-dark);color:var(--cream)}.app-shell{display:flex;flex-direction:column;min-height:100%}.topbar{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:10px 16px;background:#12291a;border-bottom:2px solid var(--accent)}.topbar-toggle{background:none;border:1px solid rgba(201,154,46,0.5);color:var(--cream);font-size:0.85rem;padding:6px 12px;border-radius:6px;cursor:pointer;flex:none}.topbar-toggle:hover{background:rgba(201,154,46,0.15)}.topbar-brand{color:inherit;text-decoration:none}.topbar-brand:hover{color:var(--accent)}.topbar-brand .brand-title{font-size:1.15rem;font-weight:bold;letter-spacing:1px}.topbar-brand .brand-tagline{font-size:0.72rem;opacity:0.7;margin-left:8px}.nav-auth{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.nav-auth-username{font-size:0.85rem;opacity:0.85}.nav-auth a,.nav-auth .nav-link-btn{display:inline-block;color:var(--cream);text-decoration:none;font-size:0.85rem;padding:6px 10px;border-radius:6px;opacity:0.85;background:none;border:none;cursor:pointer}.nav-auth a:hover,.nav-auth .nav-link-btn:hover{opacity:1;background:rgba(201,154,46,0.15)}.nav-panel{flex:none;background:#0e2015;border-bottom:1px solid rgba(201,154,46,0.4);padding:8px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:4px}.nav-panel a{display:inline-block;color:var(--cream);text-decoration:none;font-size:0.88rem;padding:7px 12px;border-radius:6px;opacity:0.85}.nav-panel a:hover{opacity:1;background:rgba(201,154,46,0.15)}.nav-panel a.active{opacity:1;color:var(--accent);font-weight:bold;background:rgba(201,154,46,0.12)}.app-shell.nav-collapsed .nav-panel{display:none}main{flex:1;min-width:0;max-width:1040px;margin:0 auto;padding:16px;width:100%}@media (max-width:480px){.nav-auth{margin-left:0;width:100%}.topbar-brand .brand-tagline{display:none}}.dashboard{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.dash-card{flex:1;min-width:130px;text-align:center;background:#000;border:1px solid #2f7a45;border-radius:10px;padding:12px 16px}.dash-label{font-size:0.75rem;opacity:0.8;text-transform:uppercase;letter-spacing:0.6px}.dash-value{font-size:1.8rem;font-weight:bold;color:var(--accent);margin-top:4px}.dashboard-actions{display:flex;justify-content:flex-end;margin:6px 0 16px}.dashboard-actions button{font-size:0.8rem;padding:4px 10px;opacity:0.8}.dashboard-actions button:hover{opacity:1}.messages{list-style:none;padding:0;margin:0 0 12px}.messages li{background:var(--danger);color:white;padding:8px 12px;border-radius:6px;margin-bottom:6px;font-size:0.9rem}.card{background:var(--felt);border:1px solid #2f7a45;border-radius:10px;padding:16px;margin-bottom:16px}.result-card{background:#2a1f0d;border:2px solid var(--accent);box-shadow:0 4px 14px rgba(0,0,0,0.5)}.result-card .big-message{font-size:1.5rem;font-weight:bold;margin:14px 0}.result-card .big-message.made{color:#7fd88f}.result-card .big-message.set{color:#e77b6b}.board{position:relative}.board{--table-side:clamp(84px,16vw,118px);--table-w:min(94vw,660px)}.table-wrap{display:grid;grid-template-columns:var(--table-side) 1fr var(--table-side);grid-template-rows:auto auto auto;align-items:center;justify-items:center;gap:8px;min-width:0}.table-meta{text-align:center;min-width:0;justify-self:stretch}.meta-tl{grid-column:1;grid-row:1}.meta-tr{grid-column:3;grid-row:1}.meta-bl{grid-column:1;grid-row:3}.meta-br{grid-column:3;grid-row:3}.seat-label{width:100%;min-width:0}.seat-label-inside{display:none}.label-top,.label-bottom{max-width:var(--table-w)}.label-top{grid-column:2;grid-row:1}.label-left{grid-column:1;grid-row:2}.label-right{grid-column:3;grid-row:2}.label-bottom{grid-column:2;grid-row:3}.table-felt-holder{grid-column:2;grid-row:2;width:100%;min-width:0;display:flex;justify-content:center}.seat{text-align:center;padding:6px;border-radius:8px;width:100%}.seat.is-turn{background:rgba(201,154,46,0.35);box-shadow:0 0 0 2px var(--accent)}.seat.is-dealer{box-shadow:0 0 0 2px var(--cream)}.seat.is-turn.is-dealer{box-shadow:0 0 0 2px var(--accent),0 0 0 4px var(--cream)}.seat .name{font-weight:bold;font-size:0.85rem}.seat .meta{font-size:0.7rem;opacity:0.85}.bid-badge{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:10px;font-size:1rem;font-weight:bold;background:rgba(201,154,46,0.25);color:var(--accent);border:1px solid rgba(201,154,46,0.6)}.bid-badge.is-pass{background:rgba(255,255,255,0.08);color:var(--cream);opacity:0.7;border-color:rgba(255,255,255,0.2)}.corner-badge{font-size:0.9rem;text-align:center;background:rgba(0,0,0,0.3);border:1px solid var(--accent);border-radius:8px;padding:6px 12px;width:100%;min-height:80px;display:flex;flex-direction:column;justify-content:center}.corner-badge .label{display:block;opacity:0.75;font-size:0.72rem;white-space:normal;overflow:visible;text-overflow:clip}.corner-badge .value{display:block;font-weight:bold;color:var(--accent)}.corner-badge .value.secondary{font-size:0.8rem;font-weight:normal;opacity:0.85;margin-top:2px}.side-scoreboard{display:none}.corner-badge-placeholder{display:none}.meta-tl .corner-badge .value,.meta-tr .corner-badge .value{font-size:1.7rem;margin-top:2px}.meta-tl .corner-badge .label,.meta-tr .corner-badge .label{font-size:0.85rem}.table-felt{display:grid;grid-template-columns:var(--table-side) 1fr var(--table-side);grid-template-rows:minmax(clamp(96px,20vw,150px),auto) 1fr minmax(clamp(96px,20vw,150px),auto);gap:4px;width:var(--table-w);flex-shrink:0;aspect-ratio:1 / 1;padding:10px;background:radial-gradient(ellipse at center,#226b3c 0%,var(--felt) 75%);border:8px solid #4a2f18;border-radius:18px;box-shadow:inset 0 0 40px rgba(0,0,0,0.45),0 8px 20px rgba(0,0,0,0.5)}.table-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:0}.table-corner-tl{grid-column:1;grid-row:1}.table-corner-tr{grid-column:3;grid-row:1}.table-corner-bl{grid-column:1;grid-row:3}.table-corner-br{grid-column:3;grid-row:3}.table-edge-top{grid-column:2;grid-row:1}.table-edge-left{grid-column:1;grid-row:2}.table-edge-right{grid-column:3;grid-row:2}.table-edge-bottom{grid-column:2;grid-row:3}.table-center{grid-column:2;grid-row:2;flex-direction:column;gap:6px}.trick-diamond{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:104px 64px 104px;gap:4px;justify-items:center;align-items:center;width:100%}.trick-play{text-align:center}.felt-you-inside{display:none}.back-row{display:flex;justify-content:center;gap:3px;flex-wrap:nowrap;margin-top:3px}.back-row .tile-back{width:40px;height:22px;border-radius:4px;flex:none}.tile-back-slot-empty{width:40px;height:22px;border-radius:4px;flex:none;border:1px dashed rgba(245,241,230,0.2)}.back-row .tile{width:40px;height:22px;border-radius:4px}.back-row .tile .tile-half{padding:2px;gap:1px}.back-row .tile .tile-divider{margin:3px 0}.back-row .tile .pip{width:3px;height:3px}.table-edge-left .back-rows,.table-edge-right .back-rows{display:flex;flex-direction:row;gap:5px;margin-top:0}@media (max-width:900px){.table-edge-top .back-rows,.table-edge-left .back-rows,.table-edge-right .back-rows{display:none}.seat-label-outside{display:none}.seat-label-inside{display:block}.board{--table-side:clamp(58px,15vw,100px)}.dashboard{flex-wrap:nowrap;gap:8px;margin-bottom:12px}.dash-card{min-width:0;padding:8px 4px}.dash-label{font-size:0.62rem}.dash-value{font-size:1.4rem}.table-wrap{grid-template-columns:1fr 1fr}.meta-tr,.meta-br{grid-column:2}.table-felt-holder{grid-column:1 / -1}.meta-tl{margin:0 4px 8px 0}.meta-tr{margin:0 0 8px 4px}.meta-bl{margin:8px 4px 0 0}.meta-br{margin:8px 0 0 4px}.label-bottom{display:none}.felt-you-inside{display:flex;grid-column:1 / -1;grid-row:5;margin:12px 6px 6px}.table-felt{grid-template-rows:minmax(clamp(58px,15vw,90px),auto) 1fr minmax(clamp(58px,15vw,90px),auto) auto;aspect-ratio:auto}.trick-diamond{grid-template-rows:60px 64px 60px}.table-edge-bottom{margin-top:16px}.table-center{min-height:196px}}.table-edge-left .back-row,.table-edge-right .back-row{flex-direction:column;margin-top:0;gap:3px}.table-edge-right .back-rows{flex-direction:row-reverse}.table-center .caption{font-size:0.8rem;opacity:0.85;text-align:center}.table-center .caption.led-suit{font-weight:bold;color:var(--accent);opacity:1}.table-center .empty{opacity:0.55;font-style:italic;font-size:0.85rem}.table-center .controls{margin:4px 0 0}.trump-picker form{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.no-trump-tile .tile-half{display:flex;align-items:center;justify-content:center;font-weight:bold;font-size:0.95rem;color:var(--ink)}.table-center .big-message{font-size:1.05rem;font-weight:bold;margin:0;text-align:center}.table-center .big-message.made{color:#7fd88f}.table-center .big-message.set{color:#e77b6b}.trick-play.position-top{grid-column:2;grid-row:1;align-self:start}.trick-play.position-left{grid-column:1;grid-row:2}.trick-play.position-right{grid-column:3;grid-row:2}.trick-play.position-bottom{grid-column:2;grid-row:3;align-self:end}.trick-diamond .center-caption{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;white-space:nowrap;padding:5px 10px;border-radius:6px;z-index:1}.trick-diamond .center-caption .caption{margin:0}.trick-diamond .center-caption .controls{margin:0}@media (max-width:900px){.trick-diamond .center-caption{max-width:92px;white-space:normal}}.tile-rotate{display:inline-flex;align-items:center;justify-content:center;flex:none}.tile-rotate.rotate-side>*{transform:rotate(90deg)}.back-row .tile-rotate{width:22px;height:40px}.trick-play .tile-rotate{width:32px;height:60px}.corner-stack{text-align:center;width:100%}.corner-stack .stack-rows{display:flex;flex-direction:column;gap:2px;align-items:center}.corner-stack .pile-row{display:flex;gap:2px;justify-content:center}.corner-stack .tile-vertical{width:22px;height:40px}.corner-stack .tile-vertical .tile-half{padding:2px;gap:1px}.corner-stack .tile-vertical .tile-divider{margin:0 3px}.corner-stack .tile-vertical .pip{width:3px;height:3px}.corner-stack .stack-top-row{display:flex;gap:2px;justify-content:center;position:relative}.corner-stack .stack-top-row.has-shadow{box-shadow:3px 3px 0 0 #b8ac8a,6px 6px 0 0 #8f8567}@media (max-width:900px){.table-corner-tr{align-items:flex-end;padding-right:4px}.table-corner-tr .corner-stack{width:max-content}.table-edge-top{padding:0 38px}.table-edge-top .seat .name,.table-edge-left .seat .name,.table-edge-right .seat .name{overflow-wrap:break-word;word-break:break-word}.dealer-suffix{white-space:nowrap}}@media (max-width:900px){.table-felt{grid-template-rows:minmax(clamp(58px,15vw,90px),auto) 1fr minmax(clamp(58px,15vw,90px),auto) auto auto}.table-corner-bl{grid-column:1;grid-row:4;align-items:flex-start;padding:4px 0 0 4px}.table-corner-bl .corner-stack{width:max-content}}.tile,.tile-back{display:inline-flex;flex-direction:row;width:60px;height:32px;background:var(--cream);border-radius:5px;border:1px solid #999;box-shadow:0 2px 3px rgba(0,0,0,0.4);flex:none}.tile-back{background:repeating-linear-gradient(45deg,#7a1f1f,#7a1f1f 4px,#931f1f 4px,#931f1f 8px);border-color:#4a1010}.tile-half{flex:1;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:3px;gap:1px}.tile-divider{width:1px;align-self:stretch;background:#999;margin:4px 0}.pip{border-radius:50%;align-self:center;justify-self:center;width:5px;height:5px}.pip.on{background:var(--ink)}.tile-vertical,.tile-back-vertical{flex-direction:column;width:32px;height:60px}.tile-vertical .tile-divider{width:auto;height:1px;align-self:stretch;margin:0 4px}.hand-grid{margin-top:10px}.table-edge-bottom .hand-grid{margin-top:0}.hand-row{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:6px}.table-edge-bottom .hand-row:first-child{margin-top:0}.tile-slot-empty{display:inline-block;width:60px;height:32px;border:1px dashed rgba(245,241,230,0.2);border-radius:5px;flex:none}.hand-row .tile,.hand-row .tile-slot-empty{width:75px;height:40px;border-radius:6px}.hand-row .tile .tile-half{padding:4px;gap:1px}.hand-row .tile .tile-divider{margin:5px 0}.hand-row .tile .pip{width:6px;height:6px}@media (max-width:900px){.table-edge-bottom{grid-column:1 / -1}.hand-row .tile,.hand-row .tile-back,.hand-row .tile-slot-empty{width:53px;height:29px;border-radius:5px}.hand-row .tile .tile-half{padding:3px;gap:1px}.hand-row .tile .tile-divider{margin:4px 0}.hand-row .tile .pip{width:4px;height:4px}}.tile-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:0;margin:0;cursor:pointer;border-radius:5px}.tile-button:hover .tile{transform:translateY(-4px);box-shadow:0 5px 6px rgba(0,0,0,0.5)}.tile-button .tile{transition:transform 0.1s;outline:2px solid var(--accent)}.tile.disabled{opacity:0.4;outline:none}.tile-button.selected .tile{transform:translateY(-8px);outline:3px solid #fff;box-shadow:0 7px 8px rgba(0,0,0,0.55)}.status-line{text-align:center;font-size:1rem;margin:10px 0;min-height:1.4em}.status-line.your-turn{color:var(--accent);font-weight:bold}form.inline-form{display:inline-flex;margin:0}.controls{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:10px;margin-bottom:16px}select,button,input[type="text"],input[type="password"],input[type="email"]{font-size:0.95rem;padding:6px 12px;border-radius:6px;border:1px solid #555;background:var(--cream);color:var(--ink);cursor:pointer}input[type="text"],input[type="password"],input[type="email"]{cursor:text}button:hover{background:var(--accent)}button.primary{background:var(--accent);font-weight:bold}button:disabled{opacity:0.4;cursor:not-allowed}button:disabled:hover{background:var(--cream)}button.danger{background:transparent;color:var(--danger);border-color:var(--danger)}button.danger:hover{background:var(--danger);color:white}.auth-form{display:flex;flex-direction:column;gap:10px;max-width:320px;margin:0 auto}.auth-form input[type="text"],.auth-form input[type="password"],.auth-form input[type="email"]{width:100%}.auth-form label{font-size:0.85rem;opacity:0.85;display:block;margin-bottom:3px}.auth-form .field-errors{color:#ff8a8a;font-size:0.8rem;margin:2px 0 0}.auth-form .helptext{font-size:0.75rem;opacity:0.65;display:block;margin-top:2px}.hp-field{position:absolute;left:-9999px;top:-9999px;height:0;width:0;overflow:hidden}.auth-switch{text-align:center;margin-top:14px;font-size:0.9rem;opacity:0.85}.create-table-form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;background:var(--felt-dark);border:1px solid #2f7a45;border-radius:8px;padding:14px}.create-table-form .field{display:flex;flex-direction:column;flex:1;min-width:160px}.create-table-form .field label{font-size:0.8rem;opacity:0.8;margin-bottom:3px}.create-table-form .field .optional-tag{opacity:0.6;font-weight:normal}.create-table-form input[type="text"],.create-table-form input[type="password"]{width:100%}.table-list-heading{font-size:1rem;margin:20px 0 10px;opacity:0.9}.table-list{display:flex;flex-direction:column;gap:10px}.table-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--felt-dark);border:1px solid #2f7a45;border-radius:8px;padding:10px 14px}.table-row .table-name{font-weight:bold}.table-row .table-meta{font-size:0.8rem;opacity:0.75;margin-top:2px}.table-row .lock-icon{opacity:0.8;margin-right:4px}.table-row-actions{display:flex;align-items:center;gap:8px;flex:none}.table-row-actions form{margin:0}.stats-table-wrap{overflow-x:auto}.stats-table{width:100%;border-collapse:collapse;font-size:0.9rem;white-space:nowrap}.stats-table th,.stats-table td{padding:8px 12px;text-align:right}.stats-table th:first-child,.stats-table td:first-child{text-align:left}.stats-table thead th{border-bottom:2px solid var(--accent);opacity:0.85;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.4px}.stats-table tbody tr:nth-child(odd){background:rgba(0,0,0,0.15)}.stats-table tbody tr:hover{background:rgba(201,154,46,0.12)}.stats-table td.stats-player{font-weight:bold}.stats-positive{color:#7fd88f}.stats-negative{color:#e77b6b}.table-header{display:flex;gap:24px;flex-wrap:wrap}.table-header-left{flex:1;min-width:200px}.table-header-right{flex:1.2;min-width:260px}.seat-list{display:flex;flex-direction:column;gap:10px}.seat-list-divider{height:4px}.seat-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--felt-dark);border:1px solid #2f7a45;border-left-width:5px;border-radius:6px;padding:12px 16px;font-size:0.95rem}.seat-row.team-a{border-left-color:var(--team-a)}.seat-row.team-b{border-left-color:var(--team-b)}.seat-row.is-ready{border-color:var(--accent)}.seat-row.team-a.is-ready{border-left-color:var(--team-a)}.seat-row.team-b.is-ready{border-left-color:var(--team-b)}.seat-row-main{flex:1;min-width:0}.seat-row-index{opacity:0.6;font-size:0.72rem;text-transform:uppercase;letter-spacing:0.5px;display:block}.seat-row-name{font-weight:bold;font-size:1.02rem}.seat-row-status{font-size:0.82rem;opacity:0.85}.seat-row-status.ready{color:#7fd88f;opacity:1}.seat-row-actions{display:flex;gap:4px}.seat-picker-heading{font-weight:bold;color:var(--accent);font-size:1.05rem}.seat-picker-active .seat-row.is-open{border-style:dashed;border-color:var(--accent)}button.sit-btn{padding:8px 16px;font-size:0.95rem}.spectator-hint{margin:0;align-self:center;opacity:0.8;font-style:italic}button.tiny{font-size:0.72rem;padding:2px 7px}button.btn-solid-danger{background:var(--danger);color:white}button.btn-solid-danger:hover{background:#8f2c2c}button.cancel-table-btn{font-size:0.9rem;padding:8px 18px;border-width:2px}.chat-panel{display:flex;flex-direction:column;height:320px}.chat-log{flex:1;overflow-y:auto;padding:10px 16px;display:flex;flex-direction:column;gap:6px}.chat-msg{font-size:0.88rem}.chat-msg .chat-author{font-weight:bold;color:var(--accent);margin-right:6px}.chat-msg.system{opacity:0.6;font-style:italic}.chat-form{display:flex;gap:8px;padding:10px 16px;border-top:1px solid rgba(201,154,46,0.3)}.chat-form input[type="text"]{flex:1}.log-panel{background:var(--felt-dark);padding:0;overflow:hidden;font-size:0.85rem}.log-panel-header{background:#12291a;padding:10px 16px;font-weight:bold;border-bottom:1px solid rgba(201,154,46,0.3);display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;border-left:none;border-right:none;border-top:none;border-radius:0;color:inherit;font-family:inherit;font-size:inherit;cursor:pointer}.log-panel-header:hover{background:#173321}.log-panel-toggle-icon{opacity:0.7;flex:none}.log-panel.collapsed ul{display:none}.log-panel.collapsed .log-panel-header{border-bottom:none}.log-panel ul{list-style:none;margin:0;padding:10px 16px;max-height:220px;overflow-y:auto}.log-panel li{padding:3px 0;border-bottom:1px solid rgba(255,255,255,0.08)}.log-panel li.log-event{padding-left:16px}.log-panel li.log-game{margin-top:14px;padding:2px 0 4px;color:var(--accent);font-weight:bold;font-size:0.95rem;text-transform:uppercase;letter-spacing:0.6px;border-bottom:2px solid var(--accent)}.log-panel li.log-hand{margin-top:8px;padding-top:4px;color:var(--accent);font-weight:bold;border-bottom:1px solid rgba(201,154,46,0.4)}.log-panel li.log-phase{margin-top:4px;padding-left:8px;font-weight:bold;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.4px;opacity:0.85}.log-panel li:first-child{margin-top:0}.big-message{text-align:center;font-size:1.3rem;margin:10px 0;color:var(--accent)}.welcome-intro{text-align:center;padding:36px 20px 28px}.welcome-intro h1{font-size:2rem;margin-bottom:4px}.welcome-intro p{max-width:480px;margin:10px auto 0;opacity:0.9}.welcome-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:16px}.welcome-option{text-align:center;margin-bottom:0}.welcome-option h2{margin-top:0}.welcome-option p{opacity:0.85;min-height:44px}.info-page{max-width:720px;margin:0 auto;line-height:1.6}.info-page h2{color:var(--accent);border-bottom:1px solid rgba(201,154,46,0.35);padding-bottom:6px;margin-top:28px}.info-page h3{color:var(--cream);margin-top:20px;font-size:1.05rem}.info-page p{margin:10px 0}.info-page ul,.info-page ol{margin:10px 0;padding-left:22px}.info-page li{margin:4px 0}.info-page table{border-collapse:collapse;width:100%;margin:12px 0;font-size:0.9rem}.info-page th,.info-page td{border:1px solid rgba(245,241,230,0.2);padding:6px 10px;text-align:left}.info-page th{background:rgba(0,0,0,0.2);color:var(--accent)}.info-page dt{font-weight:bold;color:var(--accent);margin-top:12px}.info-page dd{margin:2px 0 0;opacity:0.92}.info-page .intro{font-size:1.05rem;opacity:0.9}.info-page .note{background:rgba(201,154,46,0.1);border:1px solid rgba(201,154,46,0.35);border-radius:8px;padding:10px 14px;margin:14px 0;font-size:0.9rem}@media (orientation:landscape) and (max-height:500px){main{padding:0 8px}.dashboard-actions{margin:6px 0}.game-screen{--screen-h:100vh;--side:clamp(78px,12vw,120px);--seat:clamp(72px,11vw,110px);--hand-w:min(calc((100vw - 72px) / 7),120px);--hand-h:calc(var(--hand-w) / 1.875);--area-h:calc(var(--screen-h) - var(--hand-h) - 30px);--trick-h:min(calc(var(--area-h) * 0.7 / 4.1),62px);display:grid;grid-template-columns:var(--side) var(--side) var(--seat) minmax(0,1fr) var(--seat);grid-template-rows:repeat(10,minmax(0,1fr)) auto;gap:4px 6px;height:var(--screen-h);padding:6px 0}@supports (height:100dvh){.game-screen{--screen-h:100dvh}}.game-screen .board,.game-screen .board>.card,.game-screen .table-wrap,.game-screen .table-felt-holder,.game-screen .table-felt{display:contents}.game-screen .seat-label-outside,.game-screen .felt-you-inside,.game-screen .back-rows,.game-screen .table-corner-bl,.game-screen .table-corner-tr,.game-screen .table-corner-br,.game-screen>.card:not(.result-card){display:none}.game-screen .table-corner-tl{display:block;grid-column:3 / 6;grid-row:1 / 11;background:radial-gradient(ellipse at center,#226b3c 0%,var(--felt) 75%);border:6px solid #4a2f18;border-radius:16px;box-shadow:inset 0 0 40px rgba(0,0,0,0.45),0 6px 16px rgba(0,0,0,0.5)}.game-screen .meta-tl{grid-column:1;grid-row:1 / 4}.game-screen .meta-tr{grid-column:2;grid-row:1 / 4}.game-screen .label-bottom{display:block;grid-column:1 / 3;grid-row:9 / 11;max-width:none}.game-screen .table-meta{margin:0;display:flex;min-height:0}.game-screen .corner-badge-placeholder{display:flex;opacity:0.55}.game-screen .corner-badge{min-height:0;padding:4px}.game-screen .corner-badge .label{font-size:0.72rem}.game-screen .meta-tl .corner-badge .label,.game-screen .meta-tr .corner-badge .label{font-size:0.78rem;text-transform:uppercase;letter-spacing:0.5px}.game-screen .meta-tl .corner-badge .value,.game-screen .meta-tr .corner-badge .value{font-size:clamp(1.7rem,10vh,2.8rem);line-height:1.05}.game-screen .meta-tr .corner-badge .value.value-long{font-size:1.35rem}.game-screen>.dashboard,.game-screen .meta-bl,.game-screen .meta-br{display:none}.game-screen .side-scoreboard{display:grid;grid-column:1 / 3;grid-row:4 / 9;grid-template-columns:1fr auto 1fr;grid-template-rows:auto 1.5fr 1fr 1fr;column-gap:4px;min-height:0}.game-screen .side-scoreboard.is-marks{grid-template-rows:auto 1.5fr 1fr}.game-screen .sb-col{display:grid;grid-row:1 / -1;grid-template-rows:subgrid;min-height:0;border-radius:8px;text-align:center}.game-screen .sb-us{grid-column:1;background:rgba(201,154,46,0.14);border:1px solid rgba(201,154,46,0.6)}.game-screen .sb-labels{grid-column:2;padding:0 2px}.game-screen .sb-opp{grid-column:3;background:rgba(91,155,213,0.14);border:1px solid rgba(91,155,213,0.6)}.game-screen .sb-head,.game-screen .sb-cell,.game-screen .sb-stack{display:flex;align-items:center;justify-content:center;min-height:0}.game-screen .sb-head{font-size:0.8rem;font-weight:bold;text-transform:uppercase;letter-spacing:0.6px;padding:2px 0;border-radius:7px 7px 0 0}.game-screen .sb-us .sb-head{background:var(--team-a);color:var(--ink)}.game-screen .sb-opp .sb-head{background:var(--team-b);color:#0e1a26}.game-screen .sb-col .sb-cell + .sb-cell{border-top:1px solid rgba(245,241,230,0.1)}.game-screen .sb-us .sb-cell,.game-screen .sb-opp .sb-cell{font-size:1.15rem;font-weight:bold}.game-screen .sb-us .sb-cell{color:var(--accent)}.game-screen .sb-opp .sb-cell{color:#9cc7ee}.game-screen .sb-us .sb-marks,.game-screen .sb-opp .sb-marks{font-size:1.75rem;line-height:1}.game-screen .sb-labels{font-size:0.6rem;text-transform:uppercase;letter-spacing:0.3px;opacity:0.75}.game-screen .sb-labels .sb-head{font-weight:normal;letter-spacing:0;font-size:0.6rem}.game-screen .sb-labels .sb-cell + .sb-cell{border-top-color:transparent}.game-screen .side-scoreboard.is-marks{row-gap:4px}.game-screen .side-scoreboard.is-marks .sb-col{grid-row:1 / 3}.game-screen .sb-stack{grid-column:1 / 4;grid-row:3;gap:6px;font-size:1.1rem;font-weight:bold;background:rgba(0,0,0,0.3);border:1px solid rgba(245,241,230,0.25);border-radius:8px}.game-screen .sb-stack-label{font-size:0.6rem;font-weight:normal;text-transform:uppercase;letter-spacing:0.3px;opacity:0.75}.game-screen .label-bottom .seat{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,0.25);border-radius:8px}.game-screen .label-bottom .seat.is-turn{background:rgba(201,154,46,0.35)}.game-screen .seat-label-inside{display:block}.game-screen .table-edge-top{grid-column:3 / 6;grid-row:1 / 3;padding:8px 8px 0}.game-screen .table-edge-left{grid-column:3;grid-row:3 / 10;padding-left:6px}.game-screen .table-edge-right{grid-column:5;grid-row:3 / 10;padding-right:6px}.game-screen .table-center{grid-column:4;grid-row:3 / 10;min-height:0}.game-screen>.status-line{grid-column:3 / 6;grid-row:10;align-self:center;margin:0;padding:0 12px 6px;min-height:0;font-size:0.95rem;line-height:1.2}.game-screen .seat{padding:6px 4px}.game-screen .seat .name{font-size:1.05rem;overflow-wrap:break-word;word-break:normal}.game-screen .seat .meta{font-size:0.75rem}.game-screen .bid-badge{font-size:1.2rem;padding:2px 10px}.game-screen .dealer-suffix{white-space:nowrap}.game-screen .table-edge-top .seat{display:inline-flex;align-items:center;gap:10px;width:auto;padding:4px 14px}.game-screen .table-edge-top .bid-badge{margin-top:0}.game-screen .table-edge-top .seat-label-inside{display:flex;justify-content:center}.game-screen .trick-diamond{--th:var(--trick-h);grid-template-rows:var(--th) calc(var(--th) * 1.875) var(--th);gap:4px}.game-screen .trick-play .tile{width:calc(var(--th) * 1.875);height:var(--th);border-radius:6px}.game-screen .trick-play .tile-rotate{width:var(--th);height:calc(var(--th) * 1.875)}.game-screen .trick-diamond .center-caption{max-width:calc(var(--th) * 2.4);white-space:normal;background:rgba(0,0,0,0.35);gap:3px;padding:4px 8px}.game-screen .trick-diamond .center-caption .caption{font-size:0.85rem;line-height:1.1}.game-screen .trick-diamond .center-caption button{font-size:1rem;padding:4px 12px}.game-screen .table-center .caption{font-size:0.95rem;font-weight:bold;opacity:1}.game-screen .table-center .empty{font-size:1rem}.game-screen .table-center .big-message{font-size:1.3rem}.game-screen .table-center select,.game-screen .table-center button{font-size:1.1rem;padding:8px 14px}.game-screen .table-center .tile-button{padding:0}.game-screen .trump-picker form{gap:6px}.game-screen .trump-picker .tile-vertical{--th:calc(var(--trick-h) * 0.85);width:var(--th);height:calc(var(--th) * 1.875);border-radius:5px}.game-screen .trump-picker .tile-vertical .tile-half{padding:calc(var(--th) * 0.1);gap:1px}.game-screen .trump-picker .tile-vertical .pip{width:calc(var(--th) * 0.15);height:calc(var(--th) * 0.15)}.game-screen .trump-picker .no-trump-tile .tile-half{font-size:calc(var(--th) * 0.5)}.game-screen .table-edge-bottom{--th:var(--hand-h);grid-column:1 / -1;grid-row:11;margin:0;padding:4px 0 2px}.game-screen .table-edge-bottom .hand-grid{display:flex;justify-content:center;gap:8px;margin:0}.game-screen .table-edge-bottom .hand-row{margin-top:0;flex-wrap:nowrap;gap:8px}.game-screen .hand-row .tile,.game-screen .hand-row .tile-slot-empty{width:var(--hand-w);height:var(--hand-h);border-radius:7px}.game-screen .trick-play .tile .tile-half,.game-screen .hand-row .tile .tile-half{padding:calc(var(--th) * 0.1);gap:calc(var(--th) * 0.03)}.game-screen .trick-play .tile .tile-divider,.game-screen .hand-row .tile .tile-divider{margin:calc(var(--th) * 0.12) 0}.game-screen .trick-play .tile .pip,.game-screen .hand-row .tile .pip{width:calc(var(--th) * 0.14);height:calc(var(--th) * 0.14)}.game-screen>.result-card{grid-column:3 / 6;grid-row:1 / 11;position:relative;z-index:2;align-self:center;justify-self:center;margin:0}}